天天看点

L1和L2正则

文章目录

  • ​​正则化​​
  • ​​L1正则​​
  • ​​L2正则​​
  • ​​区别​​
  • ​​为什么​​
  • ​​权值衰减​​

正则化

L1正则

L1正则化是所有参数的绝对值之和,这就要求所有参数的绝对值之和最小,求导,导数可能为1或-1,而绝对值的取值是大于等于0的,那么就可能导致某些参数在更新的时候趋于0

L2正则

L2正则化是所有参数平方和,导数为,每个参数更新的量与参数本身相关,在更新时,会逐渐变慢,逐渐变小趋于0,而不会变为0。

区别

L0和L1的区别:

  • L0范数是指向量中非0的元素的个数,如果我们用L0范数来规则化一个参数矩阵W的话,希望W的大部分元素都是0。
  • L0范数很难优化求解(NP问题)。
  • L1范数是L0范数的最优凸近似,而且它比L0范数更容易优化求解。L1范数和L0范数可以实现稀疏,L1因具有比L0范数更好的优化求解特性而广泛应用。

L1和L2的区别:

  • L1会趋向于产生少量的特征,而其他的特征都为0,L2会选择更多的特征,这些特征都趋于0。
  • 使用L1可以得到稀疏的权值,用L2可以得到平滑的权值。

为什么

更小的权值,表示网络的复杂度更低,对数据的拟合刚刚好(奥卡姆剃刀法则)。设想一个线性回归模型,如果参数很大,只要数据偏移一点点,就会对结果产生很大的影响;但如果参数足够小,数据偏移的多一点不会对结果造成什么影响,也就是抗扰动能力强。

过拟合的时候,拟合函数的系数往往非常大,因为拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈,这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量可大可小,所以只有系数足够大,导数值才能很大。

权值衰减

L2正则又被称为权值衰减

当loss不包含正则项是:

当使用L2正则时:

其中,,所以具有权值衰减的作用。

在 PyTorch 中,L2 正则项是在优化器中 ( torch.optim ) 实现的,在构造优化器时可以传入 weight decay 参数,对应的是公式中的。

继续阅读