理解Dropout

前言

Dropout是一种通过在训练神经网络过程中随机“取消”神经元以达到减少“co-adaption”的一种算法。

引入

前向传播中,神经网络采用非线性的中间隐藏层对输入输出值进行拟合;通过调整隐藏层内的参数来达到预测的目的。如果输入和输出间的关系很复杂,而且网络中拥有足够多的隐藏层单元来精确建模,那么通常会有许多参数可以对训练集完美建模,于有限数量的标记训练集尤甚。
这些参数每一个都会对测试集做出不同的预测,并且表现很差,其原因与各特征检测单元过度协同于训练集有关。

可以通过Dropout来减少过拟合的情况。

简介

论文1中所展示的每个测试用例中,每个隐藏层神经元都以的概率在网络中随机隐藏。在每一次训练过程中都如同训练一个新的网络结构,因此一个神经元不能过度依赖于其他神经元。测试效果可以通过对大量使用dropout方法的神经网络预测平均值判断。

测试

论文在小批量样本上使用标准的随机梯度下降训练dropout网络,存在一些细节:

  • 没有对全体参数向量使用正则化方式来避免参数过大的问题,而是分别对每一个神经元的参数向量范数设置了一个上限,如果更新后的参数超出限制,则通过除法将其归一化。约束范围可以防止参数变化巨大,也因此可以设置较大的学习率
  • 测试时,由于所有的神经元数目是实际活动数量的一倍,因此通过将每个隐藏神经元参数减半以补偿,称之为“均值网络”。
  • 如果每次dropout网络不会全部做出正确的预测,则均值网络保证预测正确值的对数概率高于单个dropout网络正确概率的平均值。

测试过程:

  1. 最初采用MNIST进行基准测试,当不通过一些技术对数据集进行处理时,标准前反馈神经网络在测试集上的错误数量为160;通过0.5隐藏概率的dropout网络和范数约束下错误可减少到130,再加上通过随机丢弃20%像素的步骤进一步减少至110。

1:Hinton, Geoffrey E., et al. “Improving neural networks by preventing co-adaptation of feature detectors.” arXiv preprint arXiv:1207.0580 (2012).