深度学习中的Momentum算法原理

一、介绍

    在深度学习中,Momentum(动量)算法是对梯度下降法的一种优化, 它将物理学中物体的运动理论和梯度下降相结合,其特点是直观易懂,已成为目前非常流行的深度学习优化算法之一。

    在介绍动量优化算法前,需要对 指数加权平均法 有所了解,它是动量优化算法的理论基础,可参见本人另外一篇博文:深度学习: 指数加权平均;其次,需要对物理运动理论稍有了解,以便在直观层面更好的理解该算法。

 

二、背景

    下图表明了传统的梯度下降法会存在的问题,即训练轨迹会呈现锯齿状,这无疑会大大延长训练时间。同时,由于存在摆动现象,学习率只能设置的较小,才不会因为步伐太大而偏离最小值。

  

深度学习中的Momentum算法原理_第1张图片

 

三、优化思路

     一方面,由于存在锯齿摆动现象,另一方面学习率又不能设置的稍大,使得收敛速度非常慢。其实,一个很朴素的想法便是让纵向的摆动尽量小,同时保持横向的大方向不变,适当提高横向运动的速率。

     这个时候便是指数加权平均派上用场的时候了! 每一次的梯度更新对应一个向量,通过指数加权平均,纵向的分量基本可以抵消,原因是锯齿状存在一上一下的配对向量,方向是基本反向的。而横向的方向基本没有变化,因为从长期的一段时间来看,大方向始终指向最小值。通过指数加权平均优化后,我们期望训练的轨迹将会如下图所示。

 

深度学习中的Momentum算法原理_第2张图片

 

    这样一来,收敛速度将会提高很多。因为纵向的摆动通过加权平均基本消失,此时,我们可以适当增大学习率,使得横向的运动稍微提高一点。

 

四、新的梯度更新规则

    有了上面的分析后,我们先来看看如何更新梯度。首先给出未优化前的梯度更新规则,其中 \eta 表示学习率。

                                                                              w\rightarrow w^{'}=w-\eta\frac{\partial C}{\partial w}

                                                                              b\rightarrow b^{'}=b-\eta\frac{\partial C}{\partial b}

     可以把梯度的更新想象成一个球从某个点开始向下运动。结合指数加权平均,引入平均速度 v,只不过这个速度是有方向的,它在梯度下降中就表示平均梯度。我们希望通过 v 来更新当前的速度,同时引入摩擦系数 \beta,可以设为 0.9。那么,根据指数加权平均, v 的更新规则为

                                                                             v_w\rightarrow v^{'}_w=\beta v_w+\left ( 1-\beta \right ) \frac{\partial C}{\partial w}

                                                                             v_b\rightarrow v^{'}_b=\beta v_b+\left ( 1-\beta \right ) \frac{\partial C}{\partial b}

     其中,第一项可以理解为历史平均速度,第二项可以理解为当前的加速度,两者相加表示当前的平均速度。根据  v 的更新规则,梯度的更新规则变为

                                                                             w\rightarrow w^{'}=w-\eta v_w

                                                                             b\rightarrow b^{'}=b-\eta v_b

     我们发现,当 \beta 为 0 时,上述规则退化为未优化前的规则,当 \beta 为 1 时, 表示没有摩擦,速度将保持不变,这在梯度下降的过程中可能会造成越过最优值。在实际开发中,\beta 可以设定在 0 和 1 之间的某个值,一般取 0.9 是一个较好的选择。

 

五、Momentum算法的本质

    该算法将一段时间内的梯度向量进行了加权平均,分别计算得到梯度更新过程中 w 和 b 的大致走向,一定程度上消除了更新过程中的不确定性因素(如摆动现象),使得梯度更新朝着一个越来越明确的方向前进。

你可能感兴趣的:(神经网络,概率与统计)