Dropout做用html
在hinton的论文Improving neural networks by preventing coadaptation提出的,主要做用就是为了防止模型过拟合。当模型参数较多,训练数据较少时候,根据线性代数相关知识能够知道,当前模型能够很是完美的拟合咱们的曲线。但该模型对测试数据集可能就没有很好的表现了,也就是说训练出的模型泛化能力很弱,咱们称之为过拟合。从文章题目经过阻止特征检测器的共同做用来提升神经网络的性能能够看出,网络在提取训练集特征时,舍弃掉了一部分特征来提升网络的泛化能力。
Dropout用网络训练时工做变化来定义的话,是指在模型训练时随机让某些神经单元的权重中止本次更新,等下次训练时就有可能更新,对与一层中每一个神经单元来讲,它们更新的几率是相同的。 在hinton论文中没有数学公式,只是做者直观解释: 1. 网络中某层神经单元权值更新是等几率的,所以,不能保证相邻的神经单元每次都更新,直观解释就是有些特征没必要彻底依托于其余的特征。举个栗子:假若有5兄弟,老大和老二,老二和老3、、、相邻两我的才能完成一个任务,如今呢,咱们把5兄弟放在黑屋子里面,每次随机选择一个兄弟执行任务,若是完成不了就惩罚其余兄弟,同时被选中的大兄弟当面对本身此次没有完成任务来自我反思(权值更新),在咱们的逼迫下,进行了N次随机选择,发现5兄弟都能经过自我努力(权值更新)独立完成任务。 2. 论文讲,把dropout看做是,针对每次batch_size大的样本集训练,对应的网络结构是不一样的,可是呢,它们之间还能够共享权重,不一样的样本集合训练出了不一样的网络模型。最后,得出的网络模型是每次训练的模型的“平均模型”。这种解释仍是不错的^.^…… 3. 把dropout比做是贝叶斯,贝叶斯有个大前提(不必定对哈)全部的特征是相互独立的,训练样本较少时候,独立学习每一个特征,测试时候将全部的特征相乘。实际效果还不错。 4. 仿生物进化。适者生存,不断适应环境的变化。参考来源:
参考来源:
https://github.com/rasmusbergpalm/DeepLearnToolbox 【面向代码】学习 Deep Learning(一)Neural Network http://www.cnblogs.com/tornadomeet/p/3258122.html
http://blog.csdn.net/qq_25073253/article/details/72457840
https://github.com/rasmusbergpalm/DeepLearnToolbox 【面向代码】学习 Deep Learning(一)Neural Network http://www.cnblogs.com/tornadomeet/p/3258122.html
http://blog.csdn.net/qq_25073253/article/details/72457840