论文要解决的问题
参数数量庞大的深度神经网络(deep neural network)能力很强,但过拟合(overfitting)问题严重 [1]。所谓过拟合,是网络在训练数据上表现很好,遇到没见过的新数据却明显变差:它记住了训练集的细节,而没有学到能迁移到新样本的规律。
对抗过拟合的经典办法是集成(ensemble):分别训练许多个网络,再把它们的预测平均起来,单个网络的错误往往互相抵消。这个办法在大型网络上撞上一堵实际的墙——大型网络用起来慢,想在测试时靠组合许多大型网络的预测来控制过拟合,代价很高 [1]。集成的成员越多,训练和每次预测的开销就越大。
《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》于 2014 年发表在《Journal of Machine Learning Research》第 15 卷第 56 期,第 1929 至 1958 页。作者是 Nitish Srivastava、Geoffrey Hinton、Alex Krizhevsky、Ilya Sutskever 和 Ruslan Salakhutdinov [1]。
训练时随机丢弃
核心想法是在训练过程中随机丢弃网络里的一些单元,连同它们的连接一起去掉 [1]。每一步训练,每个单元都按一定概率被保留或被丢掉;被丢掉的单元不向外传递任何东西,这一步也不更新它的权重(weight)。
理由与「共适应」(co-adaptation)有关。在普通网络里,一个单元可能逐渐依赖另外某些单元总是存在且输出正确,于是靠一套脆弱的组合去拟合训练数据。丢弃单元可以阻止它们过度共适应 [1]:任何单元都不能指望某个固定搭档在场,只能去学在多种组合下都有用的特征。
每一种随机的丢弃方式,都对应一个与其他子网络共享权重的「变薄」子网络。于是训练时的 dropout 相当于从一个指数级数量的不同子网络中采样 [1]:n 个单元有 2 的 n 次方种取舍方式,一次训练走过的不是一个网络,而是一个规模极其庞大的网络家族。
测试时把集成收回来
预测时显然不可能真的把这么多子网络都用一遍。论文给出的办法很简洁:测试时使用一个不丢弃单元、但权重更小的完整网络,用它来近似对这些子网络预测取平均的效果 [1]。也就是说,所有单元都保留,同时把权重按比例缩小,以补偿测试时活跃的单元比训练时更多这件事。最终只有一个模型、一次前向计算,行为却接近被采样到的那些子网络的平均。
结果
作者报告,在视觉、语音识别、文档分类和计算生物学等领域的许多基准数据集(benchmark dataset)上取得了当时最好的结果 [1]。这个覆盖面本身就说明问题:dropout 并不绑定某一种网络结构或某一类数据。它改动的是训练过程,而不是网络的形状,也不改变网络在测试时能表示什么。
为什么重要
它的吸引力在于投入与收益的比例。模型本身不需要重新设计,训练流程只多了一个随机掩码和一个缩放系数。而通常要靠训练许多完整网络才能换来的集成效果,在这里由一次训练得到——这恰好就是论文一开始要为大型网络拆掉的那道障碍 [1]。
注释与来源
- Dropout: A Simple Way to Prevent Neural Networks from Overfittinghttps://jmlr.org/papers/v15/srivastava14a.html
引用本页: Dropout:一种防止神经网络过拟合的简单方法. TellWorld, https://www.tellworld.net/zh/papers/dropout-2014. 更新于 2026-11-07