momentum(动量)的概念源自于物理学,可理解为惯性,那么它是如何帮助我们寻找最优解的呢?

如果把梯度下降法比作是一个小球从山坡到山谷的过程,那么它具体的过程是这样的:从起始点A开始,计算当前A的坡度,沿着坡度最大的方向滑一段路,停下到B,再从B看一看周围的坡度,沿坡度最大的方向再滑一段路,再停下,重复这样的操作,直至到达山谷。但是真正的小球是这样运动的吗?真正的小球从A点滚动到B点的时候,小球带有一定的加速度,一般是不会停下来的,小球会越滚越快,更快的奔向谷底。momentum就是模拟这一过程来加速神经网络优化的。下图直观的解释了momentum的全部内容

zkz^kzk表示之前所有步骤所累积的动量和,β\betaβ是一个使得梯度衰减的系数,这样的做法可以让早期的梯度对当前梯度的影响越来越小,如果没有衰减值,模型往往会震荡难以收敛,甚至发散,所以新的参数更新公式变为

w^{k+1}=w^{k}-z^{k+1}

下图是没有设置momentum的时候,网络仅仅只是更新到局部最优解就停止了,而且我们看最开始几次迭代的方向非常random,因为它更新方向仅取决于当前位置的梯度方向