QUESTION

梯度平方丢失方向后,Adam怎样同时决定方向和步长?

A

Adam用m保存带符号的梯度平均,用v保存梯度平方平均,两份状态各司其职。

DETAILED ANSWER

直接结论

梯度平方后确实会丢失正负号,所以Adam不会依靠平方项v判断方向。它同时维护另一份保留正负号的梯度平均mm负责主要往哪边走,v负责把这一步缩放到多大。

第一本账:m保留方向

m_t = β1 m_(t-1) + (1−β1)g_t

g_t没有平方,正负号被保留下来。如果过去多轮梯度大多为正,即使当前出现一次较小的负梯度,m_t也可能仍为正,因此更新不会因为单次波动立即调头。

这对应Momentum的思想:平滑历史方向,减少震荡。

第二本账:v只记录大小

v_t = β2 v_(t-1) + (1−β2)g_t²

平方后v_t不区分正负,只描述这个参数近期的梯度尺度。梯度长期较大,v_t就大,更新时分母变大,该参数的步长会被缩小。

这对应RMSProp的思想:根据近期梯度大小调节步长。

两本账怎样合在一起

Adam在进行偏差修正后,更新可以简化理解为:

新w = 旧w − η × m_hat / (sqrt(v_hat) + ε)

从这个式子可以直接看出:

  • m_hat在分子并保留正负号,决定更新方向;
  • sqrt(v_hat)在分母并始终非负,决定更新被缩小多少;
  • η仍然是人工设置的基础学习率。

为什么需要偏差修正

mv通常从0开始,训练最初几轮的指数平均会天然偏小。Adam用1−β1^t1−β2^t进行修正,使早期估计更接近真实的梯度平均与平方平均。

偏差修正不是第三本历史记录,也不负责决定方向;它只是修正从0初始化造成的早期低估。

最容易混淆的一句话

RMSProp的平方状态没有方向,但RMSProp仍用当前梯度决定本轮方向;Adam则额外用m平滑历史方向,再用v调整步长。