L2 正则化(权重衰减)
params['weight_decay'] = 5e-4
是一个用于控制 L2 正则化(也叫做权重衰减)的参数。具体来说,weight_decay
影响优化器在更新模型参数时是否对权重进行惩罚,以防止模型过拟合。
1. L2 正则化(权重衰减)概述
L2 正则化通过在损失函数中加入一个与模型权重大小相关的惩罚项,来鼓励模型学习到较小的权重。这种方式有助于减少过拟合,避免模型在训练数据上表现过好但在新数据上表现不佳。
L2 正则化的惩罚项是权重向量的 平方范数,它的数学形式为:
L 2 penalty = λ ∑ i w i 2 L2 \, \text{penalty} = \lambda \sum_{i} w_i^2 L2penalty=λ∑iwi2
其中:
- w i w_i wi 是模型中第 i i i 个权重。
-
λ
\lambda
λ 是正则化系数(在这里是
params['weight_decay']
,即5e-4
),它控制正则化的强度。
在优化过程中,L2 正则化会在原始损失函数中加入一个额外的惩罚项,使得总损失函数变为:
L total = L original + λ ∑ i w i 2 L_{\text{total}} = L_{\text{original}} + \lambda \sum_{i} w_i^2 Ltotal=Loriginal+λ∑iwi2
- L original L_{\text{original}} Loriginal 是原始的损失函数(例如交叉熵或均方误差)。
- λ ∑ i w i 2 \lambda \sum_{i} w_i^2 λ∑iwi2 是正则化项,它促使优化器在更新权重时考虑到权重的大小。
2. 作用与效果
- 控制模型复杂度:
weight_decay
控制模型中参数的大小。较大的weight_decay
会使得模型的权重更小,从而避免过拟合(尤其是在数据量小的情况下)。相反,较小的weight_decay
则会允许模型有较大的权重,从而可能导致过拟合。 - 防止过拟合: 在训练过程中,模型会试图最小化原始损失函数和正则化项的和。较小的权重有助于提高模型的泛化能力,防止它在训练数据上过拟合。
- 影响训练过程: 权重衰减使得优化器不仅仅关注最小化训练数据上的损失,还要确保学习到的权重尽可能小。这样可以有效避免某些权重过大而主导模型的训练,导致对某些特征过度依赖。
3. 如何影响模型训练
- 如果
params['weight_decay']
设置为0
,即没有正则化,模型的训练将仅依赖于原始损失函数。模型可能会有较大权重,这会导致训练过程中发生过拟合,尤其是在数据量较小或模型较复杂时。 - 如果
params['weight_decay']
设置为较大的值,例如5e-4
,正则化项将对模型权重施加更强的限制,从而迫使模型权重变小,降低模型过拟合的风险。
4. 在优化器中的作用
在优化器(如 Adam
)中,weight_decay
作为一个参数直接影响梯度更新规则。当优化器计算每个参数的梯度时,L2 正则化项会直接加到梯度上,造成模型参数的更新不仅依赖于损失函数,还受到权重的影响。具体来说,Adam 优化器中的更新规则会包含以下项:
θ = θ − η ( ∂ L original ∂ θ + λ θ ) \theta = \theta - \eta \left( \frac{\partial L_{\text{original}}}{\partial \theta} + \lambda \theta \right) θ=θ−η(∂θ∂Loriginal+λθ)
其中:
- θ \theta θ 是模型参数(权重)。
- η \eta η 是学习率。
- ∂ L original ∂ θ \frac{\partial L_{\text{original}}}{\partial \theta} ∂θ∂Loriginal 是损失函数的梯度。
- λ θ \lambda \theta λθ 是正则化项。