赞
踩
首先要清楚这俩概念的区别和联系:
权重衰减是优化器中做的一种具体策略,其目的是让网络参数(权重)得到不同程度的衰减。具体来说,权重越大,希望衰减地越快。
L2正则是数学上 对最优化式的一种约束手段,采用L2范数对变量进行约束,可以达到一些想要的效果。
二者的联系:(下面会证明)
在不引入动量的SGD系优化器中,权重衰减完全等价于L2正则。
对于引入动量的SGD优化器中,权重衰减约等于L2正则,其差别实际可忽略不计。
而对于Adam系优化器,权重衰减不能认为等价于L2正则。
我们要对原优化式做L2正则,则一定要把原来的梯度改写成(1-1)这样带L2正则的梯度:
L
′
(
x
,
θ
t
)
T
=
L
(
x
,
θ
t
)
T
+
ω
2
∣
∣
θ
t
∣
∣
2
2
对
θ
求偏导得:
∇
θ
t
L
′
(
x
,
θ
t
)
T
=
∇
θ
t
L
(
x
,
θ
t
)
T
+
ω
θ
t
(1-1)
L^{'}(x,θ_t )^T=L(x,θ_t )^T+\frac{\omega}{2}||θ_t||_2^2\\ \tag{1-1} 对θ求偏导得:\\ ∇_{θ_t}L^{'}(x,θ_t )^T=∇_{θ_t}L(x,θ_t )^T+\omegaθ_t
L′(x,θt)T=L(x,θt)T+2ω∣∣θt∣∣22对θ求偏导得:∇θtL′(x,θt)T=∇θtL(x,θt)T+ωθt(1-1)
之后我们把带有L2正则的梯度代入原梯度下降优化式中:
θ
t
+
1
=
θ
t
−
α
∇
θ
t
L
′
(
x
,
θ
t
)
T
θ
t
+
1
=
θ
t
−
α
∇
θ
t
L
(
x
,
θ
t
)
T
−
α
ω
θ
t
=
(
1
−
ω
α
)
θ
t
−
α
∇
θ
t
L
(
x
,
θ
t
)
T
(1-2)
θ_{t+1}=θ_t-α∇_{θ_t}L^{'}(x,θ_t )^T\tag{1-2}\\ θ_{t+1}=θ_t-α∇_{θ_t}L(x,θ_t )^T-α\omegaθ_t\\ =(1-\omegaα)θ_t-α∇_{θ_t}L(x,θ_t )^T
θt+1=θt−α∇θtL′(x,θt)Tθt+1=θt−α∇θtL(x,θt)T−αωθt=(1−ωα)θt−α∇θtL(x,θt)T(1-2)
至此 我们发现,其实L2正则在求导之后其实就是这样(1-2)嘛。。。也很容易实现,那我们就把(1-2)叫做权重衰减,各种框架的优化器中也是这么实现权重衰减。
因此,容易证明,对于不带动量的SGD系优化,L2正则和权重衰减是等价的。
根据(1-1)和引入动量的SGD优化器迭代式,很容易推出加入L2正则化和动量的SGD表达式:
引入
L
2
正则的动量
S
G
D
:
v
t
′
=
β
v
t
−
1
′
+
g
t
′
θ
t
+
1
=
θ
t
−
α
v
t
′
展开
v
t
′
的递推公式:
v
t
′
=
β
1
g
1
′
+
β
2
g
2
′
+
.
.
.
+
β
t
−
1
g
t
−
1
′
+
g
t
′
=
β
1
(
g
1
+
ω
θ
t
)
+
β
2
(
g
2
+
ω
θ
t
)
+
.
.
.
+
β
t
−
1
(
g
t
−
1
+
ω
θ
t
)
+
g
t
+
ω
θ
t
=
β
v
t
−
1
+
g
t
+
(
1
+
β
1
+
β
2
+
.
.
.
+
β
t
−
1
)
ω
θ
t
=
v
t
+
(
1
+
β
1
+
β
2
+
.
.
.
+
β
t
−
1
)
ω
θ
t
把推理后的
v
t
′
代入参数更新公式:
θ
t
+
1
=
θ
t
−
α
[
v
t
+
(
1
+
β
1
+
β
2
+
.
.
.
+
β
t
−
1
)
ω
θ
t
]
=
[
1
−
(
1
+
β
1
+
β
2
+
.
.
.
+
β
t
−
1
)
ω
α
]
θ
t
−
α
v
t
(1-3)
引入L2正则的动量SGD:\\ v_t^{'}=βv_{t-1}^{'}+g_{t}^{'} \\ θ_{t+1}=θ_t-αv_t^{'}\tag{1-3}\\ 展开v_t^{'}的递推公式:\\ v_t^{'}=β^{1}g_{1}^{'}+β^{2}g_{2}^{'}+...+β^{t-1}g_{t-1}^{'}+g_{t}^{'}\\ =β^{1}(g_{1}+\omegaθ_t)+β^{2}(g_{2}+\omegaθ_t)+...+β^{t-1}(g_{t-1}+\omegaθ_t)+g_{t}+\omegaθ_t\\ =βv_{t-1}+g_{t}+(1+β^{1}+β^{2}+...+β^{t-1})\omegaθ_t\\ =v_t+(1+β^{1}+β^{2}+...+β^{t-1})\omegaθ_t\\ 把推理后的v_t^{'}代入参数更新公式:\\ θ_{t+1}=θ_t-α[v_t+(1+β^{1}+β^{2}+...+β^{t-1})\omegaθ_t]\\ =[1-(1+β^{1}+β^{2}+...+β^{t-1})\omegaα]θ_t-αv_t
引入L2正则的动量SGD:vt′=βvt−1′+gt′θt+1=θt−αvt′展开vt′的递推公式:vt′=β1g1′+β2g2′+...+βt−1gt−1′+gt′=β1(g1+ωθt)+β2(g2+ωθt)+...+βt−1(gt−1+ωθt)+gt+ωθt=βvt−1+gt+(1+β1+β2+...+βt−1)ωθt=vt+(1+β1+β2+...+βt−1)ωθt把推理后的vt′代入参数更新公式:θt+1=θt−α[vt+(1+β1+β2+...+βt−1)ωθt]=[1−(1+β1+β2+...+βt−1)ωα]θt−αvt(1-3)
**(1-3)就是引入L2正则的动量优化器准确权重更新式,**其与(1-2)的区别就是衰减权重从ω变成了(1+…)ω。对于动量法,ω一般取0.9,当更新次数足够多时衰减权重约等于不变。所以认为,如果用(1-2)式替代(1-3)来对动量优化器进行权重衰减和L2正则化区别不大。
Adam优化器的权重迭代公式:
v
t
=
β
1
v
t
−
1
+
(
1
−
β
1
)
g
t
s
t
=
β
2
s
t
−
1
+
(
1
−
β
2
)
g
t
2
v
t
^
=
v
t
1
−
β
1
s
t
^
=
s
t
1
−
β
2
θ
t
=
θ
t
−
1
−
α
v
t
^
s
t
^
+
ε
.
g
t
(1-4)
v_t=\beta_1 v_{t-1}+(1-\beta_1)g_t\\ s_t=\beta_2 s_{t-1}+(1-\beta_2)g_t^2 \\ \widehat{v_t}=\frac{v_t}{1-\beta_1}\\ \widehat{s_t}=\frac{s_t}{1-\beta_2}\\ θ_{t}=θ_{t-1}-\frac{α\widehat{v_t}}{\sqrt{\widehat{s_t}}+\varepsilon}. g_t\tag{1-4}
vt=β1vt−1+(1−β1)gtst=β2st−1+(1−β2)gt2vt
=1−β1vtst
=1−β2stθt=θt−1−st
+εαvt
.gt(1-4)
按照上面的思路,把gt换成gt’,想象一下最后的更新公式会是啥样。反正和【权重衰减】差挺多的应该…
数学不好,时间有限,咱就不推了哈,逃~
证明推理不是重点,关键是要记住:L2正则化和权重衰减不一定等价!L2正则化就是(1-1)式,权重衰减就是指(1-2)式。
只是恰好对于无动量的SGD来说二者是严格等价的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。