Dropout

什么是Dropout

Dropout方法,中文名称为丢弃法、暂退法。顾名思义,这个方法会选择丢弃一部分的神经元,从而达到减轻过拟合的目的。

Dropout一般用于全连接层部分。

Dropout为什么能缓解过拟合

Dropout是一种常用的深度学习正则化技术,可以有效缓解过拟合问题。其基本思想是在训练过程中随机地“丢弃”(即暂时移除)神经网络中的一部分单元(神经元),以减少模型对特定神经元的依赖,从而提高模型的泛化能力。

  1. 注入噪声:

一个好的模型不应该对输入的微小变化敏感,也就是不能对噪声数据敏感。因此,我们可以通过给数据添加一定的噪声再训练模型,让神经网络“知道”噪声不应该影响它的判断。1995年,克里斯托弗·毕晓普证明了具有输入噪声的训练等价于Tikhonov正则化。这项工作用数学证实了“要求函数光滑”和“要求函数对输入的随机噪声具有适应性”之间的联系。

对于神经网络的每一层,它前一层的输出就是该层的输入,可以看成是输入的特征数据,我们可以对其添加一定量的噪声,从而实现正则化。对每一层的输入都添加一定的噪声,从而让每一层的神经元都不对上一层的微小变化敏感。

注入噪声的方式应该是无偏向(unbiased)的,也就是注入噪声后的期望值等于没有噪声时的值。

对于一层的神经元,如果一个神经元被丢弃的概率为\(p\),未被丢弃的概率为\(1-p\),设该层神经元输出的数据为随机变量为\(x\),期望为\(E(x) = h\),以概率\(p\)丢弃一部分数据后,期望变味了\(E(x') = (1-p)h\)\(x'\)表示使用了丢弃法后的神经元输出的随机变量

为了使得期望不变,需要对未被丢弃的神经网络的输出值进行改变, \[ x' = \left\{\begin{aligned} &0\quad&概率为p\\ &\frac{x}{1-p}\quad&其他情况 \end{aligned} \right. \] 从而\(E(x') = h\)

  1. 避免特征共适应

在没有Dropout的情况下,神经网络中的神经元可能会相互适应(神经网络每一层都依赖于前一层激活值),形成对特定训练样本的过度特化。这种特征共适应可能导致模型在新的、未见过的数据上表现不佳。Dropout通过打破这种共适应,迫使神经元学习更加鲁棒的特征。

  1. 类似于集成学习

Dropout可以看作是一种集成学习方法的简化版。在每次训练中,网络结构都略有不同,这相当于训练了多个不同的模型。最终,这些模型的平均效果作为最终模型的输出,这有助于提高泛化能力。

Dropout的使用

在训练时,对于一层神经网络,以概率\(p\)丢弃其中部分神经元,使得这些神经元的输出为零,对于未被丢弃的神经元,其输出值乘上\(\frac{1}{1-p}\),使得该层神经元输出的值与未使用dropout输出的值的期望值相同。由于丢弃是随机的,每一次迭代时该层神经元被丢弃的神经元都可能不同。对每层的丢弃概率\(p\)都可以设成不同的值。梯度下降时,被丢弃的神经元参数值不更新。

未丢弃前
丢弃后

对每层可以设置不同的概率\(p\)

不同的层可以有不同的丢弃概率

比如上图,隐藏层2的\(W^{[2]}\)拥有最大参数集,即\(7\times7\),为了预防矩阵的过拟合,这层的丢弃概率可以相对较高。对于其它层,过拟合的程度可能没有那么严重,\(p\)的值可以相对低一些。

在推理时,无需再使用丢弃法,直接用整个神经网络进行推理(正因为丢弃法让数据有无偏性,推理时才能使用所有的神经网络)

当然也有一些例外,一些研究人员在推理测试时使用dropout,用于估计神经网络预测的“不稳定性”:如果通过许多不同的暂退法遮盖后得到的预测结果都是一致的(\(x=\mathrm{dropout}(x)\)),那么我们可以说网络发挥更稳定


Dropout
https://blog.shinebook.net/2025/03/15/人工智能/理论基础/深度学习/Dropout/
作者
X
发布于
2025年3月15日
许可协议