神经网络正则化三重奏:Weight Decay, Dropout, 和LayerNorm
正则化是机器学习中防止模型过拟合、提升泛化能力的核心技术。Weight Decay、Dropout和LayerNorm是三种最常用的方法,但它们的工作原理和首要目标截然不同。下面的流程图揭示了它们的核心区别与联系:
尽管目标有交叉,但三者的工作原理截然不同。下面我们进行详细的解析。
1. Weight Decay (权重衰减) - 模型复杂度的约束者
- 要解决的核心问题: 模型过于复杂,学习到了数据中的噪声和异常点,导致泛化能力差。
- 工作原理: 它是一种显式正则化方法,通过直接修改损失函数来工作。它在原始损失函数(如交叉熵)上增加了一个惩罚项(通常是所有权重的平方和,即L2范数),鼓励模型参数趋向于更小的值。
- 最终损失函数:L′(θ)=L(θ)+λ2∥θ∥22L'(\theta) = L(\theta) + \frac{\lambda}{2} \|\theta\|_2^2L′(θ)=L(θ)+2λ∥θ∥22
- 其中,λ\lambdaλ 是超参数,控制惩罚力度。λ\lambdaλ 越大,模型越简单。
- 效果: 约束了模型的函数空间,迫使模型学习更平滑、更简单的函数,从而有效防止过拟合。
- 实践提示:
- 在优化器中(如SGD、AdamW)直接设置
weight_decay
参数。 - 注意: 对于Adam优化器,应使用 AdamW 来实现真正的权重衰减,否则效果可能不理想。
- 常见值范围在
1e-2
到1e-5
之间,需要仔细调优。
- 在优化器中(如SGD、AdamW)直接设置
2. Dropout (随机失活) - 神经元共适应的破坏者
- 要解决的核心问题: 神经元之间的“共适应”(Co-adaptation),即某些神经元过度依赖于其他特定神经元的存在,导致模型过于脆弱和 specialized,泛化能力弱。
- 工作原理: 它是一种隐式正则化方法,在训练阶段的每次前向传播中,随机将一层中一定比例(如50%)的神经元输出置零(“丢弃”)。每次迭代都丢弃不同的神经元子集。
- 训练时: 激活值需要除以保留概率(如
/0.8
),以确保数据尺度大致不变( inverted dropout)。 - 测试时: 不使用Dropout,所有神经元都参与计算,无需缩放。
- 训练时: 激活值需要除以保留概率(如
- 效果:
- 防止过拟合: 打破神经元间的复杂依赖关系,迫使每个神经元都能独立地学到有用的特征。
- 模型集成: 相当于训练了指数多个共享参数的子网络,并在测试时将这些“模型”集成为一个强大的预测模型。
- 实践提示:
- 通常作为一层网络添加在激活函数之后(如
nn.Dropout(p=0.5)
)。 - 丢弃率
p
是超参数,隐藏层通常从0.5
开始尝试,输入层可以更低(如0.1
或0.2
)。 - 在模型容量大、数据量小的情况下效果尤其明显。
- 通常作为一层网络添加在激活函数之后(如
3. Layer Normalization (层归一化) - 训练过程的稳定器
- 要解决的核心问题: 内部协变量偏移(Internal Covariate Shift, ICS)——由于前面层参数的更新,导致当前层输入数据的分布发生剧烈变化,使得训练变得困难,需要更小的学习率和谨慎的参数初始化。
- 工作原理: 它不改变损失函数,也不改变网络结构,而是改变数据的分布。它对单个样本在某一层的所有神经元激活值进行标准化,使其均值为0,方差为1,然后再进行缩放和平移。
- 公式:对于输入 xxx,计算 μ=1H∑i=1Hxi\mu = \frac{1}{H}\sum_{i=1}^{H} x_iμ=H1∑i=1Hxi, σ=1H∑i=1H(xi−μ)2+ϵ\sigma = \sqrt{\frac{1}{H}\sum_{i=1}^{H} (x_i - \mu)^2 + \epsilon}σ=H1∑i=1H(xi−μ)2+ϵ
- 标准化和变换:yi=γxi−μσ+βy_i = \gamma \frac{x_i - \mu}{\sigma} + \betayi=γσxi−μ+β
- 其中 γ\gammaγ 和 β\betaβ 是可学习的参数,用于恢复模型的表达能力。
- 效果:
- 稳定训练,加速收敛: 大大减轻了ICS问题,允许使用更大的学习率。
- 改善梯度流动: 缓解梯度消失/爆炸问题。
- 对批次大小不敏感: 其计算不依赖批次内其他样本,因此在NLP(序列长度不一)、小批次等场景中表现稳定,这是它相对于BatchNorm的巨大优势。
- 间接正则化: 其带来的训练稳定性间接有助于模型找到更优的解,但正则化效果是其副作用,并非主要目的。
- 实践提示:
- 在Transformer和RNN中无处不在。
- 通常放在残差连接之前(Pre-LN:
LayerNorm -> Sublayer -> Add
)或之后(Post-LN),Pre-LN通常是更稳定、更主流的现代选择。
总结与协同使用
特性 | Weight Decay | Dropout | LayerNorm |
---|---|---|---|
核心角色 | 约束者 | 破坏者 | 稳定器 |
主要目标 | 降低模型复杂度 | 打破神经元共适应 | 稳定训练,加速收敛 |
工作阶段 | 训练与测试 | 仅训练 | 训练与测试 |
机制 | 修改损失函数 | 随机丢弃神经元 | 标准化激活值 |
超参数 | 衰减系数 λ\lambdaλ | 丢弃率 p | 通常无需调参 |
在现代深度架构(如Transformer)中,三者完美协同:
- LayerNorm 是每个子层(自注意力、前馈网络)的基石,用于稳定训练。
- Dropout 被广泛添加在注意力权重计算后、前馈网络的激活函数后,用于防止过拟合。
- Weight Decay (通常通过AdamW优化器) 在整个训练过程中约束所有参数,确保模型的简洁性。
它们从不同维度共同作用,造就了强大、稳定且泛化能力极强的现代深度学习模型。