2.6 动量梯度下降法(Gradient descent with Momentum )

动量梯度下降算法速度比传统的梯度下降算法快很多。做法是在每次训练时,对梯度进行指数加权平均处理,然后用得到的梯度值更新权重WW和常数项bb

原始的梯度下降算法如上图蓝色折线所示。在梯度下降过程中,梯度下降的振荡较大,尤其对于WWbb之间数值范围差别较大的情况。此时每一点处的梯度只与当前方向有关,产生类似折线的效果,前进缓慢。而如果对梯度进行指数加权平均,使当前梯度不仅与当前方向有关,还与之前的方向有关,在纵轴方向, 平均过程中,正负数相互抵消,所以平均值接近于零。但在横轴方向,所 有的微分都指向横轴方向,因此横轴方向的平均值仍然较大,用算法几次迭代后,最终纵轴方向的摆动变小了,横轴方向运动更快,因此算法走了一 条更加直接的路径,在抵达最小值的路上减少了摆动,这样处理让梯度前进方向更加平滑,减少振荡,能够更快地到达最小值处

权重WW和常数项bb的指数加权平均表达式如下:

VdW=βVdW+(1β)dWV_{dW}=\beta\cdot V_{dW}+(1-\beta)\cdot dW
Vdb=βVdb+(1β)dbV_{db}=\beta\cdot V_{db}+(1-\beta)\cdot db

动量的角度来看,以权重WW为例,VdWV_{dW}可以理解成速度VVdWdW可以看成是加速度aa。指数加权平均实际上是计算当前的速度,当前速度由之前的速度和现在的加速度共同影响。而β<1\beta<1又能限制速度VdWV_{dW}过大。即当前的速度是渐变的,而不是瞬变的,是动量的过程。保证了梯度下降的平稳性和准确性,减少振荡,较快地达到最小值处

动量梯度下降算法的过程如下:

On iteration t:On\ iteration\ t:

    Compute dW, db on the current minibatch\ \ \ \ Compute\ dW,\ db\ on\ the\ current\ mini-batch
    VdW=βVdW+(1β)dW\ \ \ \ V_{dW}=\beta V_{dW}+(1-\beta)dW
    Vdb=βVdb+(1β)db\ \ \ \ V_{db}=\beta V_{db}+(1-\beta)db
    W=WαVdW, b=bαVdb\ \ \ \ W=W-\alpha V_{dW},\ b=b-\alpha V_{db}

初始时,令VdW=0,Vdb=0V_{dW}=0,V_{db}=0。一般设置β=0.9\beta=0.9,即指数加权平均前10次的数据,实际应用效果较好。

偏移校正可以不使用。因为经过10次迭代后,随着滑动平均的过程,偏移情况会逐渐消失

Last updated