在上一章中,我们看到模型有时会过度拟合训练数据,捕捉到训练数据中的噪声和特定模式,而这些在更广的数据集中并不存在。过拟合会损害模型的泛化能力。权重正则化提供了一种直接方法来解决此问题,即通过控制模型本身的复杂度。基本思路很简单:过度复杂的模型通常依赖非常大的权重值来精确拟合训练样本,包括其中的噪声。通过抑制大权重,我们鼓励得到更简单的模型。
L2正则化,作为一种常见的权重正则化形式,其目的在于通过控制模型复杂度来防止过拟合。它通过在模型的损失函数中添加一个惩罚项来实现这一目的。这个惩罚项与网络中所有权重的平方和成比例。它也常被称为 权重衰减。
L2正则化如何起作用
让我们考虑一个标准损失函数,例如均方误差 (MSE) 或交叉熵,我们将其表示为 Loriginal(W),其中 W 代表网络中的所有权重。L2正则化通过添加一个惩罚项来修改这个目标:
Ltotal(W)=Loriginal(W)+2λi∑wi2
这里:
- wi 代表网络中的一个单独权重。
- ∑iwi2 是所有权重的平方和。这是权重向量的平方L2范数,常写作 ∣∣W∣∣22。
- λ (lambda) 是一个超参数,用于控制正则化的强度。它决定了我们对大权重的惩罚程度。较高的 λ 意味着更强的正则化。包含因子 21 主要为了数学上的便利,可以简化导数。
对训练的影响:权重衰减
这个新的损失函数如何改变训练过程?在反向传播过程中,我们计算损失函数相对于权重的梯度,然后使用像SGD这样的优化器来更新它们。现在,总损失 Ltotal 相对于特定权重 wj 的梯度包含一个额外的项,它来自正则化惩罚:
∂wj∂Ltotal=∂wj∂Loriginal+λwj
仔细看第二个项,λwj。当我们使用学习率 η (eta) 的梯度下降来更新权重 wj 时,更新规则变为:
wj←wj−η(∂wj∂Loriginal+λwj)
稍微重新排列一下可以得到:
wj←wj−η∂wj∂Loriginal−ηλwj
wj←(1−ηλ)wj−η∂wj∂Loriginal
这种最终形式解释了为什么L2正则化被称为 权重衰减。在每次更新步骤中,在减去原始梯度分量 (η∂wj∂Loriginal) 之前,权重 wj 会乘以 (1−ηλ)。由于学习率 η 和正则化强度 λ 都为正,这个因子会略小于1。因此,每个权重在每次更新时都会有效地 缩小 或 衰减 趋向于零,同时还会根据原始损失梯度进行调整。
效果:更平滑的模型
这种权重衰减的实际结果是,优化过程偏向于权重幅度较小且分布更均匀的解。它阻止任何单个权重变得过大。权重较小的模型通常表现出更平滑的行为。想象将一条曲线拟合到数据点;具有大权重的模型可能会产生一条非常“弯曲”的曲线,完美地穿过每个训练点,但在其他地方表现不稳定。经过L2正则化训练的模型会偏爱捕捉总体趋势的更平滑曲线,即使它不能精确拟合每个训练点。这种平滑性通常直接转化为在未见数据上更好的泛化能力。
这种效果的强度由超参数 λ 控制。
- 如果 λ=0,则没有正则化,我们回到原始损失函数。
- 如果 λ 非常大,惩罚项将占据主导,迫使权重非常接近零,可能导致欠拟合(模型变得过于简单)。
- 选择合适的 λ(通常通过实验或交叉验证等技术,稍后会介绍)对于平衡好训练数据与保持模型足够简单以进行泛化之间的权衡很重要。
总之,L2正则化(权重衰减)修改了损失函数,以惩罚大的平方权重。这改变了梯度更新规则,导致权重在训练期间向零收缩,从而得到更简单、更平滑且不易过拟合的模型。