文章目录
- 正则化
- 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 参数,对应的是公式中的。
深度学习如何防止过拟合weight decay 和 dropout