loss 不再下降不代表处在较小的 gradient。梯度下降的锯齿现象。会发生震荡,因此卡住的原因不是 critical point。

当用 gradient descent 做 optimization 的时候,往往卡住的不是 critical point,而是其他的原因。

怎么调整?

如果在某一个方向上非常的陡峭,那么可以调小一些;某一个反向比较平缓,可以调大一些。

$\sigma$ 是对前面 gradient 的 Root Mean Square,例如计算第二次:

$$ \theta^2_i \leftarrow \theta^1_i - \frac{\eta}{\sigma^1_i}g^1_i,\: \sigma^1_i=\sqrt{\frac{1}{2}[(g^0_i)^2 + (g^1_i)^2]} $$

于是有:

$$ \theta^{t+1}i \leftarrow \theta^t_i - \frac{\eta}{\sigma^t_i}g^t_i,\: \sigma^t_i=\sqrt{\frac{1}{t+1}[\sum^{t}{j=0}(g^j_i)^2]} $$

这个还可以改进,因为有的时候当前位置的 gradient 更重要,如果采用上述算法,“反应”会比较慢。

RMSProp

Learning Rate Scheduling