是什么
Dropout 是人工神经网络的一种正则化(regularisation)技术。训练时,它随机把一部分神经元的输入或输出置零。[1] 目的是不让神经元之间发展出对训练数据的复杂共适应(co-adaptation),从而减轻过拟合。[1] 通俗地说:一个把训练集背下来的网络,靠的往往是某些单元「一起亮起」这种非常具体的组合;如果其中任何一个随时可能消失,这种依赖就不再可靠,网络于是被推向那些单独拿出来也有用的特征。
它属于约束网络、让它泛化而非死记的一类手段,与 L1、L2、maxnorm 等正则化同列。CS231n 把它描述为对 L1、L2 和 maxnorm 正则化的补充。[2]
怎么工作
训练时,dropout 以概率 p 让一个神经元保持激活,否则把它置零。[2] 这个选择是随机的,每一次都重新抽,所以网络不能指望某个单元一定在场。
可以这样想象:某一层里有几个单元各自负责识别一个模式的某个片段,它们上面有一个单元只在其中两个同时出现时才激活。没有 dropout 时,这种搭配是稳定的信号,上层单元即使单独看毫无用处也不碍事。有了 dropout,两个伙伴谁都不保证在场,上层单元就必须学会在缺一个的情况下仍然有效,下层单元也必须自己就有用,而不能只在「配合」时才有用。
训练时的 dropout 还可以理解为:在完整网络内部采样出一个子网络,只更新这个被采样到的子网络的参数。[2] 权重在这些采样之间共享,因此同一套参数实际上是被许多个「变瘦」的网络版本共同训练出来的。
保持概率 p 需要人来定。CS231n 指出 p = 0.5 是一个合理的默认值,但可以在验证集上调整。[2]
测试时
Dropout 在推理(inference)阶段通常关闭。[1] 测试时不丢弃任何单元。[2] 训练与测试的做法不同,尺度上就要对齐;推荐的 inverted dropout 做法把缩放放在训练阶段完成,测试时的前向传播不需要任何改动。[2]
由来
Geoffrey Hinton 与同事在 2012 年以 dropout 之名提出这项技术,论文题为《Improving neural networks by preventing co-adaptation of feature detectors》。[1] 更早的一个相关想法叫稀释(dilution),出现在 Hertz、Krogh 和 Palmer 1991 年的《Introduction to the Theory of Neural Computation》一书中。[1] CS231n 则把这项技术归到 Srivastava 等人与论文《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》名下。[2]
Google 持有这项技术的专利 US 9406017B2,不过由于上述更早的工作,其有效性存疑。[1]
在方法中的位置
Dropout 是众多工具中的一种,而不是其余手段的替代品。CS231n 把它当作 L1、L2、maxnorm 正则化的补充,而保持概率是要在验证数据上敲定的超参数,不能事先拍定。[2] 训练时丢弃单元、评估时一个都不丢,这种训练与测试行为上的差别是它通常实现方式的一部分。[1][2] 历史脉络也影响人们对它的归属:一个 2012 年才有的名字,一个早得多就发表的相关想法,以及一项因这份更早的工作而在有效性上存疑的专利。[1]
注释与来源
- Dropout (neural networks)https://en.wikipedia.org/wiki/Dropout_(neural_networks)
- CS231n: Neural Networks Part 2 - Setting up the Data and the Losshttps://cs231n.github.io/neural-networks-2/
引用本页: Dropout(随机失活). TellWorld, https://www.tellworld.net/zh/learn/dropout. 更新于 2026-11-07