设待优化参数为
ω
\omega
ω,目标函数为
f
ω
f{\omega}
fω,初始化学习率为:
l
r
lr
lr。对于每个epoch
t
t
t:
计算目标梯度关于当前参数的梯度:
g
t
=
▽
f
(
ω
t
)
g_t = \bigtriangledown f(\omega_t)
gt=▽f(ωt)
根据历史梯度计算一阶动量和二阶动量:
m
t
=
ϕ
(
g
1
,
g
2
,
.
.
.
g
t
)
;
V
t
=
φ
(
g
1
,
g
2
,
.
.
.
,
g
t
)
m_t=\phi(g_1, g2_,...g_t); V_t=\varphi(g_1, g_2, ..., g_t)
mt=ϕ(g1,g2,...gt);Vt=φ(g1,g2,...,gt)
计算当前时刻下降梯度:
η
=
a
∗
m
t
V
t
\eta=a*\frac{m_t}{\sqrt{V_t}}
η=a∗Vtmt
根据下降梯度进行更新:
ω
t
+
1
=
ω
t
−
η
t
\omega_{t+1} = \omega_t-\eta_t
ωt+1=ωt−ηt