Dropout:随机丢弃神经元,防止网络过拟合
Dropout: A Simple Way to Prevent Neural Networks from Overfitting
- 作者
- Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov
- 30u30 单元
- 12_dropout(讲解、实现与练习请到原仓库查看,本站不翻译、不改编,见导读)
本页目录(17)
一句话总结#
训练时随机“关掉”一部分神经元,让每个神经元都不能指望别的神经元替它纠错;测试时用一个缩小了权重的完整网络,近似指数多个子网络的平均预测。
解决什么问题#
参数很多的深度网络表达能力强,但训练数据有限时,很多学到的复杂关系其实只是采样噪声,换到测试数据上就不成立,这就是过拟合。
论文从“模型组合”的角度看这个问题:
- 理想的正则化是对所有参数取值按后验概率加权平均(贝叶斯做法),但对大网络算不起。
- 把很多独立训练的大网络平均起来几乎总能提高效果,但每个网络都要单独调参、单独训练,测试时还要全部跑一遍,对需要快速响应的应用不现实。
Dropout 想同时解决这两点:既防止过拟合,又能高效地近似组合指数多个不同结构的网络。
核心思想#
1. 训练时:采样“稀疏网络”#
每个单元(隐藏层和输入层都可以)以固定概率 p 保留,否则连同它的进出连接一起临时删掉。论文的默认值是隐藏单元 p = 0.5,作者说它在很多网络和任务上都接近最优;输入单元的最佳保留概率通常更接近 1(实验里常用 0.8)。
一个有 n 个单元的网络可以看成 2^n 个可能的稀疏网络(thinned network)的集合。它们共享权重,所以参数总量不变。每个训练样本每次出现都会抽一个新的稀疏网络来训练,很多子网络一次都训练不到。
2. 测试时:权重乘以 p#
测试时不可能真去平均指数多个模型。论文的近似办法:用一个不做 dropout 的完整网络,把每个单元的输出权重乘以 p。这样每个隐藏单元在测试时的实际输出,等于训练时在丢弃分布下的期望输出。
论文在 MNIST 上比较了这种权重缩放和真正的蒙特卡洛平均(每个测试样本采样 k 个子网络再平均):k 约 50 时两者效果持平,之后蒙特卡洛略好一些,但差距在一个标准差以内。
3. 为什么有效:打破共适应#
论文的解释是共适应(co-adaptation):普通反向传播中,每个参数的梯度都是在“其他单元保持现状”的前提下算出来的,单元之间会形成互相弥补错误的复杂配合,这种配合在训练集上管用,换到新数据上就失效。Dropout 让任何一个单元的存在都不可靠,每个单元只能学一些自己单独也有用的特征。
作者给了两个类比:一是有性繁殖打散了“抱团”的基因组合,使基因必须能和随机的伙伴配合;二是十个五人小阴谋比一个五十人的大阴谋更容易在环境变化时得逞。
论文用实验支持了这个解释:在 MNIST 上训练单隐层自编码器,不加 dropout 的特征单独看没有明确含义,加了 dropout(p = 0.5)的特征则像在检测边缘、笔画和斑点。附带的效果是激活变得稀疏:隐藏单元的平均激活从约 2.0 降到约 0.7。
关键公式或机制#
前向计算#
对第 l 层的输出 y^(l):
r_j^(l) ~ Bernoulli(p)ỹ^(l) = r^(l) ∗ y^(l)(∗ 是逐元素乘)z_i^(l+1) = w_i^(l+1) · ỹ^(l) + b_i^(l+1),y_i^(l+1) = f(z_i^(l+1))
测试时:W_test^(l) = p · W^(l)。
论文第 10 节还指出一个等价写法:训练时把保留下来的激活乘以 1/p,测试时权重不动(配合相应调整学习率和初始化)。这就是后来常说的“反向缩放”做法。
搭配 max-norm 约束#
作者发现 dropout 和 max-norm 正则化特别搭:限制每个隐藏单元输入权重向量的范数 ‖w‖₂ ≤ c,超出就投影回半径为 c 的球面。这样可以放心使用很大的学习率而不怕权重爆炸,dropout 的噪声则帮助在权重空间里探索;学习率逐渐衰减后再收敛。
线性回归中的解析形式#
对输入做 dropout 的线性回归,把噪声边缘化后等价于一种岭回归:
minimize ‖y − pXw‖² + p(1 − p)‖Γw‖²,其中 Γ = (diag(XᵀX))^{1/2}。
也就是说,某一维数据方差越大,它的权重受到的惩罚越重;p 越小(丢得越多),正则化越强。
几个实验数字(摘自论文)#
- MNIST(不做数据增强、不利用图像结构的设定):普通网络约 1.60%,加 dropout 1.35%,换成 ReLU 1.25%,再加 max-norm 1.06%;2 层、每层 8192 单元的网络降到 0.95%。这个网络有 6500 多万参数,训练集只有 6 万张图。
- 保留概率 p 的影响:结构固定时,测试误差在 0.4 ≤ p ≤ 0.8 区间基本平坦。
- 数据量的影响:训练集只有 100 或 500 个样本时 dropout 没有帮助;随数据量增加,收益先增大后减小,作者称之为存在一个“最佳区间”。
- 代价:dropout 网络的训练时间通常是同结构普通网络的 2–3 倍,主要原因是每个样本都在训练不同的随机结构,梯度噪声大。
图解#
flowchart LR
subgraph 训练
A["完整网络(n 个单元)"] --> B["每个单元以概率 p 保留"]
B --> C["本次样本的稀疏网络"]
C --> D["只在稀疏网络上前向和反向传播"]
end
subgraph 测试
E["不做 dropout 的完整网络"] --> F["权重乘以 p"]
F --> G["近似 2^n 个稀疏网络的平均预测"]
end
D -.共享同一组权重.-> E
图解:训练时每个样本都在一个随机抽出的稀疏网络上更新,所有稀疏网络共享同一组权重;测试时用完整网络并把权重乘以 p,近似对这些稀疏网络做平均。
关键原话#
“The key idea is to randomly drop units (along with their connections) from the neural network during training.”
和 Anthropic 笔记的对应#
Dropout 是训练正则化技术,Anthropic 工程博客的笔记没有直接讨论它。下面是类比:
| Anthropic 笔记 | 对得上的地方 |
|---|---|
| 多智能体研究系统 | Dropout 的出发点是“组合多个模型几乎总能更好,但成本太高”,于是用共享参数的方式廉价地近似组合。多智能体系统同样在用更多算力换取多路并行探索的收益,也同样要面对成本问题。只是类比。 |
| 揭秘 AI 智能体评测 | 过拟合就是在训练集上的表现不能迁移到新数据。评测设计同样要防止针对某一套题“调”出好分数,需要看能否泛化到没见过的任务。 |
读的时候要注意#
- p 的含义:本文的 p 是保留概率。很多深度学习框架里的参数表示丢弃概率,正好相反,读代码时要注意。
- 权重缩放只是近似:对非线性网络,乘以 p 并不严格等于对所有子网络取平均;论文用 MNIST 实验说明近似效果不错,没有给出一般性的理论保证。
- 动机是类比,不是证明:有性繁殖和阴谋的类比是作者的直觉解释,论文的证据主要来自实验和特征可视化。
- RNN 要另外处理:本文讨论的是前馈网络和受限玻尔兹曼机。直接用在循环连接上效果不好,见 Day 3。
- 数字以论文表格为准:各数据集的详细结果(SVHN、CIFAR、ImageNet、TIMIT、Reuters、基因剪接)在论文第 6 节和附录 B,本笔记只摘录了 MNIST 的一部分。
30u30 对应单元#
- 30u30 的 Day 12 单元↗(仓库采用 CC BY-NC-ND 4.0,本笔记没有使用其内容)。
- 路线位置:30u30 导读 的补完段,单元 2 视觉(Day 8 → 9 → 10 → 11 → 12)。
延伸阅读#
- Day 3:循环神经网络的正则化:怎样把 dropout 用到 LSTM 上。
- Day 8:AlexNet:dropout 较早的一次大规模应用,用在全连接层上。
- Day 4:用最小描述长度让神经网络保持简单:Hinton 早年同样用“给权重加噪声”的思路来控制模型复杂度。
本笔记依据 2026-10-18 抓取的在线原文撰写,仅为导读与总结。原文:Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan Salakhutdinov,《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》, JMLR 15(56):1929–1958, 2014。