初见dropout

1. 初见dropout

Dropout是2012年深度学习视觉领域的开山之作paper:《ImageNet Classification with Deep Convolutional》所提到的算法,用于防止过拟合。

基本思想

Dropout是指在深度学习网络训练的过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,对于随机梯度下降算法来说,由于是随机丢弃,所以每个mini-batch都在训练不同的网络。

大规模神经网络的缺点:

训练费时间

容易产生过拟合

过拟合是很多机器学习的通病,为了解决过拟合问题,我们可能会想到L2正则化、或者减小网络规模。Dropout很好的解决了这个问题。

因而对于一个有N个节点的神经网络,有了dropout后,就可以看做是2^n个模型的集合了,但是需要训练的参数数目依然不变,这就解脱了费时的问题。

2. 深入了解dropout2.1 dropout是怎么工作的?

Dropout就是我们让它在前向传播的时候,让某个神经元的激活值以一定的概率P,让他停止工作。

以前我们网络的计算公式是:

采用dropout后变成如下公式:

再详细点的解释就是:我们要让某个神经元以概率P停止工作(也就是将这个神经元的激活值变为0), 那么这个概率怎么产生呢?答案就是伯努利分布,我们用伯努利函数,以概率P随机生成一个0、1的向量, 也就是上述公式中的r。

源码实现如下

函数中,x是本层网络的激活值。Level就是dropout就是每个神经元要被丢弃的概率。

2.2 rescale

经过上面的屏蔽,使部分激活值变为0以后,我们还需要对向量进行rescale,也就是乘以 1/(1-p).

我们前面说过,其实Dropout是类似于平均网络模型。我们可以这么理解,我们在训练阶段训练了1000个网络,每个网络生成的概率为Pi,然后我们在测试阶段的时候,我们肯定要把这1000个网络的输出结果都计算一遍,然后用这1000个输出,乘以各自网络的概率Pi,求得的期望值就是我们最后的平均结果。

参考文献

1. http://blog.csdn.net/hjimce/article/details/50413257

2. http://blog.csdn.net/stdcoutzyx/article/details/49022443

3.《ImageNet Classification with Deep Convolutional》

4.《Improving neural networks by preventing co-adaptation of feature detectors》

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180120G0G37O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券