训练与优化 / 训练目标与正则化 原理笔记入门 3 分钟阅读 查看源文件 ↗

Dropout:随机屏蔽激活怎样参与训练#

TL;DR#

本页内容7 个部分

1. 背景与问题#

网络可能依赖某些固定的激活组合拟合训练数据。Dropout 在训练时随机屏蔽部分激活,让后续计算不能总依赖同一组输入;评测时则使用确定的网络。要把这两种计算方式连接起来,先需说明随机 mask 与缩放的关系。[1]

2. 目标与定义#

设某层激活为 hh,丢弃概率为 p∈[0,1)p\in[0,1),保留 mask 为 mi∼Bernoulli(1−p)m_i\sim\mathrm{Bernoulli}(1-p)。现代常用 inverted dropout:

h~i=mi1−phi.\tilde h_i=\frac{m_i}{1-p}h_i.

训练目标对数据和 mask 同时取平均:E(x,y),m[ℓ(fθ,m(x),y)]\mathbb E_{(x,y),m}[\ell(f_{\theta,m}(x),y)]。它改变了训练时的随机计算,不等于直接给 loss 增加一个固定 L2 项。

3. 方法与推导#

3.1 为什么训练时除以保留概率#

固定当前激活 hih_i,由于 E[mi]=1−p\mathbb E[m_i]=1-p:

E[h~i∣hi]=hi1−pE[mi]=hi.\mathbb E[\tilde h_i\mid h_i]=\frac{h_i}{1-p}\mathbb E[m_i]=h_i.

因此评测时可直接使用 hih_i,无需额外缩放。传统写法在训练时不除 1−p1-p,而在评测时乘 1−p1-p;两者的缩放约定不同。

3.2 随机性还改变了什么#

用 mi2=mim_i^2=m_i 可得 E[h~i2∣hi]=hi2/(1−p)\mathbb E[\tilde h_i^2\mid h_i]=h_i^2/(1-p),从而:

Var⁡(h~i∣hi)=p1−phi2.\operatorname{Var}(\tilde h_i\mid h_i)=\frac{p}{1-p}h_i^2.

期望保持不变,但随机波动随丢弃率增大。后续存在非线性时,E[f(h~)]\mathbb E[f(\tilde h)] 一般不等于 f(E[h~])f(\mathbb E[\tilde h]);确定性评测网络不能严格当作所有子网络预测的算术平均。

4. 计算过程#

设 h=(2,1,3,0.5)h=(2,1,3,0.5)、p=0.5p=0.5,本次 mask 为 (1,0,1,0)(1,0,1,0)。先置零,再把保留项除以 0.5,得到 h~=(4,0,6,0)\tilde h=(4,0,6,0)。

单看第一个坐标,它以一半概率取 4、一半概率取 0,平均为 2,方差为 0.5(4−2)2+0.5(0−2)2=40.5(4-2)^2+0.5(0-2)^2=4,恰好等于 ph12/(1−p)p h_1^2/(1-p)。评测时直接使用原激活 2。

训练中本次梯度只经保留位置传播,并包含同样的 1/(1−p)1/(1-p) 因子;下一次前向重新采 mask。这是随机计算例子,不是泛化实验。

5. 比较与边界#

方法 随机处理的对象 典型粒度
Dropout 激活 元素
DropPath / stochastic depth 残差分支 样本对应的分支
DropConnect 权重连接 权重

这些机制不能只按概率数字互换。Dropout 概率还要结合数据量、结构和训练预算选择;模型进入 eval 模式时需关闭相应随机分支。激活重算若含 Dropout,还应核对随机状态的一致性,见重算篇。

参考资料#

  1. Dropout: A Simple Way to Prevent Neural Networks from Overfitting(JMLR 2014). 原文:随机屏蔽、共适应与子网络解释;条件均值与方差由本文直接计算。

相关阅读路线

完成一次训练更新 ↗