Skip to content

权重衰减(L2正则化)

在深度学习和机器学习模型训练中,我们常常面临 过拟合(Overfitting) 的问题。

为了提高模型在未见数据上的泛化能力,正则化(Regularization) 技术应运而生。

其中,最常用的一种正则化方法就是——权重衰减(Weight Decay) 。权重衰减会在优化过程中不断“拉回”权重,防止它们无限制地增大,从而控制模型复杂度。

什么是权重衰减(Weight Decay)?

权重衰减,又叫作 L2正则化,本质上是在原始损失函数(Loss)中,添加一项关于模型参数(权重)大小的惩罚项。

简单来说,除了最小化预测误差之外,还希望模型的参数(即权重)本身不要太大。

具体来说,假设原始损失函数为 ,模型参数为 ,则添加了权重衰减后的损失函数为:

  • 原始损失函数
  • 是一个超参数,用于控制正则化的强度。正则化系数,控制惩罚项的强度
    • 较大的 会导致更强的正则化效果,即模型的参数会更加平滑。
    • 通常是一个很小的数,例如 0.001
  • 权重向量的L2范数的平方

权重衰减会在优化过程中不断“拉回”权重,防止它们无限制地增大,从而控制模型复杂度。

权重衰减的作用

  • 防止过拟合 减小权重,降低模型复杂度,使模型更好地在测试集上泛化。
  • 提高数值稳定性 权重值过大容易导致梯度爆炸,权重衰减可以有效缓解这种情况。
  • 提升训练速度 较小的权重可以让梯度下降法更快收敛。
  • 提高模型鲁棒性 权重较小的模型通常对输入噪声更加不敏感,表现更稳健。

和其他正则化对比

项目权重衰减(L2正则化)L1正则化
惩罚项形式
权重效果让权重接近0但不为0让权重稀疏(部分变为0)
应用场景防止过拟合,控制模型复杂度特征选择,提升模型可解释性
总结想让参数都尽量小:用L2正则化(权重衰减)想让部分参数直接归零:用L1正则化

PyTorch 中使用权重衰减

在 PyTorch 中,只需要在优化器中设置 weight_decay 参数:

python
import torch.optim as optim

optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-4)

京ICP备2024093538号-1