/ wzp's garden / Momentum方法

Momentum方法

2015-09-28 posted in [学习]

#Momentum方法

Momentum是在梯度下降时使用的一个trick,有下面优点:

  1. 帮助避免陷入局部最优
  2. 当梯度一直指向同一个方向时,可以增大梯度下降的步长,加快训练速度。
  3. 当梯度一直改变方向时,可以减小步长从而使方差减小,从而使振荡平滑,更快地往最优值方向靠近 直接看Momentum的公式来解释上面的优点:

\[ V_{t+1} = \mu V_{t} + \alpha \frac{\partial{\mathbf{J}}}{\partial \theta} \]

\[ W_{t+1} = W_{t} - V_{t+1} \]

上述公式中,取值为(0, 1),是momentum方法中新引入的参数。

从公式中可以看出,当梯度一直指向同一个方向时,由于当前的下降梯度会加上上一次的梯度(乘以权重),因此会增加步长;当梯度一直改变方向时,上一次梯度就和这次抵消一部分,因此可以减小步长使振荡更平滑.

加个对比图直观地解释一下,左图没有使用Momentum方法,会一直在局部振荡,很缓慢地靠近最优解;而右图使得振荡的方差减小,更快地靠近最优解。

momentum pic

Note:

  1. 取值很大时(接近1),应该调小学习率,防止一次步长过大而跳过最优值.
  2. 通常情况下,先设为0.5, 当训练稳定后调整到0.9.