模型有时会过度拟合训练数据,捕捉到训练数据中的噪声和特定模式,而这些模式在通用的数据集中并不存在。这种现象被称为过拟合 (overfitting),它会削弱模型对新数据的泛化能力。权重 (weight)正则化 (regularization)通过控制模型本身的复杂度,提供了一种直接解决该问题的方法。直觉上这很容易理解:过度复杂的模型通常依赖非常大的权重值来精确拟合训练样本(包括噪声)。通过抑制大权重,我们可以促使模型变得更简单。
L2 正则化是权重正则化中最常见的形式,它通过在模型的损失函数 (loss function)中添加一个惩罚项来实现这一想法。这个惩罚项与网络中所有权重的平方和成正比。虽然它经常与权重衰减 (Weight Decay) 一词互换使用,但从技术层面讲,两者是不同的定义,仅在特定的优化条件下才具有等价性。
L2 正则化 (regularization)如何起作用
让我们观察一个标准的损失函数 (loss function),例如均方误差 (MSE) 或交叉熵,我们将其表示为 Loriginal(W),其中 W 代表网络中的所有权重 (weight)。L2 正则化通过添加一个惩罚项来修改此目标:
Ltotal(W)=Loriginal(W)+2λi∑wi2
这里:
- wi 代表网络中的单个权重。
- ∑iwi2 是所有权重的平方和。这是权重向量 (vector)的平方 L2 范数,常写作 ∣∣W∣∣22。
- λ (lambda) 是一个超参数 (parameter) (hyperparameter),用于控制正则化的强度。它决定了我们对大权重的惩罚程度。λ 越大,正则化越强。引入因子 21 主要是为了数学计算上的方便,以便在求导时简化结果。
对训练的影响:L2 正则化 (regularization) vs 权重 (weight)衰减
这个新的损失函数 (loss function)如何改变训练过程?在反向传播 (backpropagation)期间,我们计算损失函数相对于权重的梯度,以便使用优化器更新权重。现在,总损失 Ltotal 相对于特定权重 wj 的梯度包含了一个源自正则化惩罚的额外项:
∂wj∂Ltotal=∂wj∂Loriginal+λwj
当我们使用标准随机梯度下降 (gradient descent) (SGD) 以学习率 η (eta) 更新权重 wj 时,更新规则变为:
wj←wj−η(∂wj∂Loriginal+λwj)
稍微重新排列一下:
wj←wj−η∂wj∂Loriginal−ηλwj
wj←(1−ηλ)wj−η∂wj∂Loriginal
在这种特定情况下,L2 正则化导致了权重衰减。在每个更新步骤中,在减去原始梯度分量 (η∂wj∂Loriginal) 之前,权重 wj 会先乘以 (1−ηλ)。由于学习率 η 和正则化强度 λ 都是正数,因此这个因子略小于 1。这意味着在每次更新中,每个权重都会被有效地“缩小”或“衰减”趋向于零。
值得注意的是,虽然 L2 正则化(在损失中添加惩罚)和权重衰减(在更新中收缩权重)对于 SGD 是等同的,但在使用 Adam 等自适应优化器时,两者会有所不同。在这些情况下,L2 惩罚项会受到自适应学习率的影响,而真正的权重衰减则是独立于梯度更新而应用的。
效果:更平滑的模型
这种机制的实际结果是,优化过程更倾向于权重 (weight)数值较小且分布更均匀的解。它阻止了任何单个权重变得过大。权重较小的模型往往表现出更平滑的行为。想象一下为数据点拟合曲线:权重很大的模型可能会产生一条非常“扭曲”的曲线,虽然完美通过了每个训练点,但在其他地方的表现却很乱。使用 L2 正则化 (regularization)训练的模型则倾向于选择一条捕捉总体趋势的更平滑曲线,即便它不能精确拟合每个训练点。这种平滑性通常能让模型在面对未见过的数据时具备更好的表现。
这种效果的强度由超参数 (parameter) (hyperparameter) λ 控制:
- 如果 λ=0,则没有正则化,模型回到原始损失函数 (loss function)。
- 如果 λ 非常大,惩罚项将占据主导地位,迫使权重非常接近零,这可能导致欠拟合 (underfitting)(模型变得过于简单)。
- 选择合适的 λ(通常通过实验或交叉验证等方式)对于平衡拟合训练数据与保持模型简洁性非常实用。
总之,L2 正则化通过修改损失函数来惩罚较大的权重平方值。对于标准 SGD,这在数学上等同于权重衰减,使权重在训练过程中向零收缩,从而产生更简单、更平滑且不易过拟合 (overfitting)的模型。