赞
踩
L1正则化是所有参数的绝对值之和,这就要求所有参数的绝对值之和最小,求导,导数可能为1或-1,而绝对值的取值是大于等于0的,那么就可能导致某些参数在更新的时候趋于0
L2正则化是所有参数平方和,导数为 2 w 2w 2w,每个参数更新的量与参数 w w w本身相关, w w w在更新时,会逐渐变慢, w w w逐渐变小趋于0,而不会变为0。
L0和L1的区别:
L1和L2的区别:
更小的权值
w
w
w,表示网络的复杂度更低,对数据的拟合刚刚好(奥卡姆剃刀法则)。设想一个线性回归模型,如果参数很大,只要数据偏移一点点,就会对结果产生很大的影响;但如果参数足够小,数据偏移的多一点不会对结果造成什么影响,也就是抗扰动能力强。
过拟合的时候,拟合函数的系数往往非常大,因为拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈,这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量可大可小,所以只有系数足够大,导数值才能很大。
L2正则又被称为权值衰减
当loss不包含正则项是:
O
b
j
=
L
o
s
s
w
i
+
1
=
w
i
−
∂
o
b
j
∂
w
i
=
w
i
−
∂
L
o
s
s
∂
w
i
Obj=Loss\\ w_{i+1}=w_i-\frac{\partial_{obj}}{\partial_{w_i}}=w_i-\frac{\partial_{Loss}}{\partial_{w_i}}
Obj=Losswi+1=wi−∂wi∂obj=wi−∂wi∂Loss
当使用L2正则时:
O
b
j
=
L
o
s
s
+
λ
2
∗
∑
i
N
w
i
2
w
i
+
1
=
w
i
−
∂
o
b
j
∂
w
i
=
w
i
−
(
∂
L
o
s
s
∂
w
i
+
λ
∗
w
i
)
=
w
i
(
1
−
λ
)
−
∂
L
o
s
s
∂
w
i
Obj=Loss+\frac{\lambda}{2}*\sum_i^Nw_i^2\\ w_{i+1}=w_i-\frac{\partial_{obj}}{\partial_{w_i}}=w_i-(\frac{\partial_{Loss}}{\partial_{w_i}}+\lambda*w_i)=w_i(1-\lambda)-\frac{\partial_{Loss}}{\partial_{w_i}}
Obj=Loss+2λ∗∑iNwi2wi+1=wi−∂wi∂obj=wi−(∂wi∂Loss+λ∗wi)=wi(1−λ)−∂wi∂Loss
其中,
0
<
λ
<
1
0<\lambda<1
0<λ<1,所以具有权值衰减的作用。
在 PyTorch 中,L2 正则项是在优化器中 ( torch.optim ) 实现的,在构造优化器时可以传入 weight decay 参数,对应的是公式中的
λ
\lambda
λ。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。