权重衰减 学习笔记

权重衰减 学习笔记

在探讨优化器在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)+λ∣∣w2
其中 ∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w2表示参数向量的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)对比

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

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值