权重衰减 学习笔记

2025-10-31 13:51:58

权重衰减 学习笔记

在探讨优化器在PyTorch中的实现时,我发现PyTorch允许优化器接受一个权重衰减参数(Weight decay),用以防止模型过拟合。于是我深入了解这方面的内容,形成学习笔记一篇。

基本介绍

权重衰减是一个经典的正则化技术,目的是减轻模型的过拟合现象。

正则化是一种改善模型的泛化能力的技术,可以防止过拟合。正则化包括数据正则化,结构正则化和标签正则化。除了在损失函数中引入L1范数或L2范数进行正则化外,也可以采用诸如Dropout 技术进行。

在深度学习中,模型训练通常采用梯度下降法来最小化损失函数,梯度下降法的目标是找到损失函数的局部最小值,使模型有最好的的预测能力。但是,如果模型的参数足够多,模型就更可能识别出训练集数据的特征,缺失了对数据的泛化性,造成过拟合的问题。即使模型在训练集上表现很好,但在测试集或真是数据上表现就会下降。

技术方法

权重衰减通过在损失函数的值中引入正则化项来解决问题。在PyTorch的实现中,正则化项在优化器中被直接添加到梯度上(AdamW的改进则是直接将正则化项放到最后进行添加,使正则化的作用能直接作用于参数,免于被动量等其他优化器措施影响)。正则化项通常采用的是L1范数或L2范数。

采用L2范数的正则化是指将模型的权重的平方和添加到损失函数中,乘以一个较小的正则化参数

λ

\lambda

λ。 在训练过程中,梯度下降法将计算损失函数值和每个参数的梯度,权重衰减的正则化项将被添加到梯度中,从而导致权重往小的方向发展。

模型权重数值越小,模型的复杂度越低。

模型的复杂度低,就不容易识别到数据个体的特征,学习到的是数据的共通特征,也就是具有了良好的泛化性。

假设损失函数

L

(

w

,

b

)

L(w,b)

L(w,b),其中,

w

w

w和

b

b

b分别代表模型的权重和偏置,则权重衰减的实现为:

L

(

w

,

b

)

=

L

(

w

,

b

)

+

λ

w

2

L'(w,b)=L(w,b)+\lambda\cdot||w||^2

L′(w,b)=L(w,b)+λ⋅∣∣w∣∣2 其中

w

2

||w||^2

∣∣w∣∣2表示参数向量的L2范数的平方和

L1范数指向量各元素的绝对值之和,该范数被称为曼哈顿范数,计算出来的距离也被称为曼哈顿距离

L2范数指向量各元素的平方和开方,该范数被称为欧几里得范数,在欧几里得空间内计算出来的距离为长度

需要注意的是,正则化参数$ \lambda

的选择对模型的性能有重要影响。较小的

的选择对模型的性能有重要影响。较小的

的选择对模型的性能有重要影响。较小的\lambda

值会导致较强的正则化效果,可能会使模型欠拟合。而较大的

值会导致较强的正则化效果,可能会使模型欠拟合。而较大的

值会导致较强的正则化效果,可能会使模型欠拟合。而较大的\lambda$值可能会减少正则化效果,使模型过拟合。因此,选择合适的正则化参数是权衡模型复杂度和泛化能力的关键。

图像解释

如下图,假设绿色部分Loss均为2,是图中的Loss最低点,而我们的目标是让模型的权重更小,因此我们希望两个权重都能更接近坐标原点。

画出L2范数,

L

2

=

w

1

2

+

w

2

2

L2=w_1^2+w_2^2

L2=w12​+w22​,越靠近坐标原点L2范数越小。如下图所示:

可以看到,模型使用梯度下降进行学习,有往绿环偏移的趋势,而L2范数则会使模型参数变小。两者共同作用,将会是模型权重停留在A点,这也是满足Loss最小化和参数最小化的点,带有该参数的模型对问题既有良好的准确性,也有良好的泛化性。

L1范数

L1 范数的可视化图像可见下图的左图部分。它可以产生稀疏解,即让部分参数为零,从而实现特征选择。L2正则化不会产生稀疏解,但可以让参数更小,更平滑。为了达成使模型总体最小的目标,权重衰减使用了L2 范数。

但根据使用目标的不同,L1 范数仍然具有它的优点:

L1正则化是对模型参数的绝对值求和,也称为L1范数。L2正则化是对模型参数的平方求和,再开平方,也称为L2范数或欧几里得范数。L1正则化可以产生稀疏解,即让部分参数为零,从而实现特征选择。L2正则化不会产生稀疏解,但可以让参数更小,更平滑。L1正则化的优点是可以减少无关特征的影响,降低模型的维度,提高模型的可解释性。L1正则化的缺点是可能会损失一些重要特征,导致欠拟合,而且不太容易优化。L2正则化的优点是可以防止模型过拟合,提高模型的稳定性,而且容易优化。L2正则化的缺点是不能实现特征选择,降低模型的可解释性,而且可能会引入一些噪声特征。L1损失测量的是预测值和实际值之间的绝对差值,而MSE损失测量的是预测值和实际值之间的平方差值。这意味着L1损失对离群值更加稳健,因为绝对值函数对所有的错误都一视同仁,而L2(MSE)损失由于是平方运算,对较大的错误给予更多的权重。L1正则化和L2正则化可以结合起来使用,称为弹性网络(Elastic Net)。弹性网络可以兼顾稀疏性和平滑性,同时避免L1正则化和L2正则化各自的缺陷。

损失函数

L1范数和L2范数既可以用在对Loss函数进行处理上(权重衰减),也可以直接当作损失函数,用以衡量模型的优劣。L1损失和MSE损失是衡量回归问题中预测值和实际值之间误差的两种不同方式,L1损失对离群值更加稳健,L2(MSE)损失对较大的误差给予更多的权重。

这里只是简单的介绍权重衰减的应用与作用,关于其原理,包括为什么模型权重数值越小,模型的复杂度越低及不使用其他范数进行正则化,可以参考以下文章。

参考

权重衰减weight_decay参数从入门到精通

什么是范数(Norm),其具有哪些性质

权重衰减(Weight Decay)

超级干货 | 用万字文章总结25种正则化方法(值得收藏)

L1 Loss VS L2 loss(MSE Loss)对比

【深度学习】最全的十九种损失函数汇总

Copyright © 2022 世界杯奖杯_男足世界杯预选赛 - cbatop.com All Rights Reserved.