Dropout正则化(Dropout Regularization)是一个消除数据过拟合情况的工具,与L2正则化所最终的效果差不都,只不过dropout方式更暴力一些。总体来说dropout方式是随机减少每层的神经元来实现的

实现方式

  1. 生成一个随机向量d\pmb{d},其形状(shape)与当层的神经元的数量一致,其值是随机生成的(范围0-1)。以上图layer1为例,所以向量的形状为(4,1)(4, 1)
  2. 指定一个参数keep-prob(kp),如果变量d\pmb{d}的变量小于kp则保留(变为1),如果大于kp则移除(变为0),结合步骤3就能在一层中随机的移除一些节点。
  3. 执行a=ad\pmb{a} = \pmb{a} * \pmb{d},因为向量d\pmb{d}的值变为了0和1,所以各个元素相乘之后就可以实现随机移除神经元。
  4. 执行a/=kp\pmb{a} /= kp,由于在步骤3中我们随机的移除了一些节点,这样最终的预测值会发生改变,所以在这一步骤中对期望值进行补偿。

应当注意的是在测试集中不需要使用dropout。

直观理解

由于一个神经元的输入被随机清除,这样一个单元所拥有的特征权重就会变小,防止任何一个输入中加入太多的权重。dropout会产生收缩权重的平方范数(shrink the squared norm of the weights)的效果,也就是压缩权重。

一些经验

由于每层都可以赋值一个kp值,所以可以根据每层的实际需要改变kp值:

  • 如果你认为某层可能存在过拟合的行为(一般来说在NN中参数矩阵较大时),则kp应该调小一些;
  • 在输入层通常不是用dropout,或者kp值非常大。

总结

Dropout主要用于计算机视觉(computer vision)相关领域中,原因是没有足够的训练数据,并且出现了过拟合的情况。如果不是这种情况尽量不要使用,因为这样会导致cost function意义不明,很难做复查。