
具有大量参数的深度神经网络是非常强大的机器学习算法。但是,过度拟合是这种网络中的严重问题。大型网络也是使用缓慢,通过结合许多预测很难处理过度拟合测试时不同的大型神经网络。当训练数据比较少的时候,可能是数据采样噪声的原因导致在训练集上表现比较好,但是在测试集上表现不好,造成过拟合的现象.
基于上述问题,Dropout是用于防止过拟合和提供一种有效近似联结指数级不同神经网络结构的方法。如下图所示,dropout中的drop指随机“丢弃”网络层中的某些节点,一种简单的实现方式是每一个节点都有 p 概率被保留。对一个网络使用dropout相当于从网络中采样一个“变薄”的网络,这个变薄的网络包含所有节点(不管是存活还是被丢弃)。因此,一个有n个节点的网络可以看作拥有2^n个“变薄”的网络的集合,这些网络共享权值,因此总的参数量还是O(n^2)或者更少。对于每一个训练样本,都有一个“薄网络”被采样训练,因此训练一个使用dropout的网络可以看成是在训练权值共享的2^n个“薄网络”的集合。

左边是正常神经网络隐藏层的神经元,右图是使用了Dropout的隐藏层神经元,虚线部分是随机隐藏了的神经元.
对于如下网络的训练流程一般是:把输入x通过网络前向传播然后把误差反向传播,网络进行学习后输出y。

对于使用了dropout的网络如下:

显式地将训练中指数级的“薄网络”中求平均是不现实的。实践中的思路是这样:在测试时使用一个不使用dropout的网络,该网络的权值是训练时的网络权值的缩小版,即,如果一个隐层单元在训练过程中以概率p被保留,那么该单元的输出权重在测试时乘以p(如下图所示)。这样共享权值的2^n个训练网络就可以在测试时近似联结成一个网络,因此能有效降低泛化误差。


考虑一个拥有L层隐层的神经网络,

为隐层的索引,

表示l层 的输入向量,

表示 l 层的输出(y(0)=x 为输入),

分别为 l 层的权值和偏置。标准的神经网络的前向传播可以描述为如下(对于

和任意隐层单元i):

KaTeX parse error: Can't use function '$' in math mode at position 30: …f(z_i^{(l+1)}) $̲$ 其中$f$ 为任意激活函数…

KaTeX parse error: Can't use function '$' in math mode at position 30: …f(z_i^{(l+1)}) $̲$ 其中∗代表element-…