Dropout
概述
这是Hinton大神的原论文《Improving neural networks by preventing co-adaptation of feature Detectors》
从以往的神经网络来看,大规模的网络:
- 训练费时
- 易过拟合
这时候Dropout的出现很好的解决了其中的问题。
从原文来看大量的实验数据说明Dropout确实能够提高准确率。
下面简单说明一下Dropout的原理及作用:
Dropout是指在训练模型时随机让网络的某一些节点不工作,他们的权重得以保留(只是暂时不更新),下次可能又更新了。它是为了提高Deep Network的泛化能力,防止CNN的过拟合。
在训练开始时,我们随机地“删除”一半的隐藏单元,视它们为不存在。
这张图左边表示没有Dropout的普通2层全连接结构,用公式记做,其中的a为激活函数。
右图表示在第二个全连接层加入了Dropout的示意图,用公式记做,即在训练时随机(以概率1-p)使某些网络的结点不工作(将隐含的结点输出清0)。
其中v是n*1维的列向量,W是d*n维的矩阵,m是个d*1的01列向量,a(x)是一个满足a(0)=0的激活函数,这里的m和a(Wv)相乘是对应元素相乘。
它为什么有助于防止过拟合呢?可以简单地这样解释,运用了Dropout的训练过程,相当于训练了很多个只有半数隐层单元的神经网络(后面简称为“半数网络”),每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么少数的错误分类结果就不会对最终结果造成大的影响。
从实验结果来看,它会降低训练集的效果,但会提高验证集的效果。
右图是Dropout的一种延伸的方法DropConnect,用表达式描述为:
二者的区别很明显:Dropout是将随机输出置0,而DropConnect是将权重随机置0.与Dropout不同的是,这个不是随机将隐含层节点的输出清0,而是将节点中的每个与其相连的输入权值以1-p的概率清0。(一个是输出,一个是输入)
### 对于Dropout *Hintion给出的解释*: 1. 由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。 2. 可以将Dropout看作是模型平均的一种。对于每次输入到网络中的样本(可能是一个样本,也可能是一个Batch的样本),其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时share隐含节点的权值。这样不同的样本就对应不同的模型,是Bagging的一种极端情况。个人感觉这个解释稍微靠谱些,和Bagging,Boosting理论有点像,但又不完全相同。Bagging->一个特例是Dropout,Dropout->一个特例是Naive Bayes 3. Native Bayes是Dropout的一个特例。Native bayes有个错误的前提,即假设各个特征之间相互独立,这样在训练样本比较少的情况下,单独对每个特征进行学习,测试时将所有的特征都相乘,且在实际应用时效果还不错。而Droput每次不是训练一个特征,而是一部分隐含层特征。 4. 还有一个比较有意思的解释是,Dropout类似于性别在生物进化中的角色,物种为了使适应不断变化的环境,性别的出现有效的阻止了过拟合,即避免环境改变时物种可能面临的灭亡。
>这是原文:
Finally, there is an intriguing similarity between dropout and a recent theory of the role of sex in evolution (17). One possible interpretation of the theory of mixability articulated in (17) is that sex breaks up sets of co-adapted genes and this means that achieving a function by using a large set of co-adapted genes is not nearly as robust as achieving the same function, perhaps less than optimally, in multiple alternative ways, each of which only uses a small number of co-adapted genes. This allows evolution to avoid dead-ends in which improvements in fitness require co- ordinated changes to a large number of co-adapted genes. It also reduces the proba- bility that small changes in the environment will cause large decreases in fitness a phenomenon which is known as “overfitting” in the field of machine learning.
其他说明及资料
防止过拟合:
- 效果变差时提前终止训练
- L1和L2正则化
- 软权值共享
- Dropout
Dropout率的选择
- 隐含结点的Dropout率等于0.5的时候效果最好,原因是0.5的时候随机生成的网络结构最多
- Dropout也可以作为一种添加噪声的方法,直接对input进行操作。输出层设为更接近1的数。使得输入变化不会太大(0.8)
原文没有给出具体的数学原理
这里有一篇论文是用贝叶斯机率说明Dropout的原理:
Dropout as a Bayesian Approximation: Insights and ApplicationsAn empirical analysis of dropout in piecewise linear networks
参考文章
http://www.cnblogs.com/tornadomeet/p/3258122.html
http://blog.csdn.net/shuzfan/article/details/50580915
http://blog.csdn.net/u012162613/article/details/44261657
http://blog.csdn.net/stdcoutzyx/article/details/49022443