动量梯度下降
Gradient Descent with Momentum
先上公式:
在
每
一
个
时
刻
t
的
m
i
n
i
−
b
a
t
c
h
迭
代
中
1
)
计
算
d
W
,
d
b
2
)
V
d
W
=
β
V
d
W
+
(
1
−
β
)
d
W
3
)
V
d
b
=
β
V
d
b
+
(
1
−
β
)
d
b
4
)
W
:
=
W
−
α
V
d
W
5
)
b
:
=
b
−
α
V
d
b
\begin{aligned} &在每一个时刻t的mini-batch迭代中\\ &1)计算dW,db\\ &2)V_{dW} = \beta V_{dW}+(1-\beta)dW\\ &3)V_{db} = \beta V_{db}+(1-\beta)db\\ &4)W := W - \alpha V_{dW} \\ &5)b := b - \alpha V_{db} \end{aligned}
在每一个时刻t的mini−batch迭代中1)计算dW,db2)VdW=βVdW+(1−β)dW3)Vdb=βVdb+(1−β)db4)W:=W−αVdW5)b:=b−αVdb
在上面公式中展示的超参数由α(学习率)和β,在公式中,会引入动量的维度,V_dW是之前的历史梯度信息。如果我们设置β=0.9,这意味着我们要考虑最近 10 次迭代的梯度来更新参数。每一次梯度更新,都会考虑到上两次梯度更新的情况。
RMS-PROP
先上公式:
在
每
一
个
时
刻
t
的
m
i
n
i
−
b
a
t
c
h
迭
代
中
1
)
计
算
d
W
,
d
b
2
)
S
d
W
=
β
S
d
W
+
(
1
−
β
)
(
d
W
)
2
3
)
S
d
b
=
β
S
d
b
+
(
1
−
β
)
(
d
b
)
2
4
)
W
:
=
W
−
α
d
W
S
d
W
+
ε
5
)
b
:
=
b
−
α
d
b
S
d
b
+
ε
\begin{aligned} &在每一个时刻t的mini-batch迭代中\\ &1)计算dW,db\\ &2)S_{dW} = \beta S_{dW}+(1-\beta)(dW)^2\\ &3)S_{db} = \beta S_{db}+(1-\beta)(db)^2\\ &4)W := W - \alpha \frac{dW}{\sqrt {S_{dW}}+\varepsilon} \\ &5)b := b - \alpha \frac{db}{\sqrt {S_{db}}+\varepsilon} \end{aligned}
在每一个时刻t的mini−batch迭代中1)计算dW,db2)SdW=βSdW+(1−β)(dW)23)Sdb=βSdb+(1−β)(db)24)W:=W−αSdW+εdW5)b:=b−αSdb+εdb
RMS-PROP会根据上一步梯度更新的情况,改变当前梯度更新的步子Step的大小
Adam ( Momentum + RMSprop )
先上公式:
V
d
w
t
=
β
1
V
d
w
t
−
1
+
(
1
−
β
1
)
d
W
t
V
d
b
t
=
β
1
V
d
b
t
−
1
+
(
1
−
β
1
)
d
b
t
S
d
w
t
=
β
2
S
d
w
t
−
1
+
(
1
−
β
2
)
∣
∣
d
w
t
∣
∣
2
S
d
b
t
=
β
2
S
d
b
t
−
1
+
(
1
−
β
2
)
∣
∣
d
b
t
∣
∣
2
V
d
w
c
o
r
r
e
c
t
e
d
=
V
d
w
1
−
β
1
t
V
d
b
c
o
r
r
e
c
t
e
d
=
V
d
b
1
−
β
1
t
S
d
w
c
o
r
r
e
c
t
e
d
=
S
d
w
1
−
β
2
t
S
d
b
c
o
r
r
e
c
t
e
d
=
S
d
b
1
−
β
2
t
W
=
w
−
α
V
d
w
c
o
r
r
e
c
t
e
d
S
d
w
c
o
r
r
e
c
t
e
d
+
ϵ
b
=
b
−
α
V
d
b
c
o
r
r
e
c
t
e
d
S
d
b
c
o
r
r
e
c
t
e
d
+
ϵ
\begin{aligned} &V_{dw}^t = \beta_1V_{dw}^{t-1}+(1-\beta_1)dW^{t}\\ &V_{db}^t = \beta_1V_{db}^{t-1}+(1-\beta_1)db^{t}\\ &S_{dw}^t = \beta_2S_{dw}^{t-1} + (1-\beta_2)||dw^{t}||^2\\ &S_{db}^t = \beta_2S_{db}^{t-1} + (1-\beta_2)||db^{t}||^2\\ &V^{corrected}_{dw} = \frac{V_{dw}}{1-\beta_1^{t}}\\ &V^{corrected}_{db} = \frac{V_{db}}{1-\beta_1^{t}}\\ &S^{corrected}_{dw} = \frac{S_{dw}}{1-\beta_2^{t}}\\ &S^{corrected}_{db} = \frac{S_{db}}{1-\beta_2^{t}}\\ &W = w-\alpha\frac{V^{corrected}_{dw}}{\sqrt{S^{corrected}_{dw}}+\epsilon}\\ &b = b-\alpha\frac{V^{corrected}_{db}}{\sqrt{S^{corrected}_{db}}+\epsilon} \end{aligned}
Vdwt=β1Vdwt−1+(1−β1)dWtVdbt=β1Vdbt−1+(1−β1)dbtSdwt=β2Sdwt−1+(1−β2)∣∣dwt∣∣2Sdbt=β2Sdbt−1+(1−β2)∣∣dbt∣∣2Vdwcorrected=1−β1tVdwVdbcorrected=1−β1tVdbSdwcorrected=1−β2tSdwSdbcorrected=1−β2tSdbW=w−αSdwcorrected+ϵVdwcorrectedb=b−αSdbcorrected+ϵVdbcorrected
Adam会引入动量和方向这两个维度,根据上一步梯度更新的情况,改变当前梯度更新的步子Step的大小和步子变化方向V