一阶动量和二阶动量及Adam等优化算法笔记

就按照

从动量和矩的角度探讨优化理论的内涵(以动量法、AdaGrad和Adam举例) - 知乎

的讲解学习,讲的挺细的。这里补充一些笔记方便以后自己复习用。

1.AdaGrad算法

其中说到了“如果目标函数有关自变量中某个元素的偏导数一直都较大,那么该元素的学习率讲下降较快;反之,如果目标函数有关自变量中某个元素的偏导数一直都较少,那么该元素的学习率将下降较慢”。我认为这是站在SGD的角度来看的。

SGD的梯度更新如下

\alpha\cdot g_t

对于SGD来说,其学习率一直是\alpha,然后相较之下AdaGrad算法的学习率:

\frac{\alpha }{\sqrt{\sum_{i}^{t}{g_i^2}}}

这样看AdaGrad算法的学习率确实非递增。而且,偏导越大学习率下降就越快,偏导越小学习率下降就越慢。

2.Adam算法

对于文中说的一阶动量和二阶动量,我算了一下,没对上,可能是作者笔误或我疏忽了。

根据文中说的:

我这边按照上面两个公式算的是:

m_t=\sum_{i=1}^{t}{\beta_{1}^{t-i}(1-\beta_{1})g_{i}}

V_t=\sum_{i=1}^{t}{\beta_{2}^{t-i}(1-\beta_{2})(g_{i}\odot g_{i}) }

这样的话,系数求和就是等比数列求和:

(1-\beta_{1})\frac{1(1-\beta_{1}^{t})}{1-\beta_{1}}

这样除以(1-\beta_{1}^{t})就变成1了。

其次就有期望:

E(m_{t})=E\left ( \sum_{i=1}^{t}{\beta_{1}^{t-i}(1-\beta_{1})g_{i}} \right )

然后这里把g_{i}看成独立同分布,就有:

E\left ( g_{i} \right )= E(g) \, \, \, \, \, \, \, \, \, \, \, \, \, \, \! \! \: \: (1\leq i \leq t)

然后所有g_{i}的期望就都一样了,带入求和,用等比数列求和得:

E(m_{t})=E\left ( g \right )(1-\beta_{1}^{t})

这样E(m_{t})除以(1-\beta_{1}^{t})就等于E(g)了。

E(V_{t})同理。