一、介绍
? ? 在深度学习中,Momentum(动量)优化算法是对梯度下降法的一种优化, 它在原理上模拟了物理学中的动量,已成为目前非常流行的深度学习优化算法之一。在介绍动量优化算法前,需要对?指数加权平均法?有所了解,它是动量优化算法的理论基础,可参见本人另外一篇博文:深度学习: 指数加权平均。
物理学中动量的定义:?设物体的质量为?,速度为?,则动量?。Momentum算法模拟了动量,但是其核心公式和动量一点关系都没有。
?
二、背景
? ? 下图表明了传统的梯度下降法会存在的问题,即训练轨迹会呈现锯齿状,这无疑会大大延长训练时间。同时,由于存在摆动现象,学习率只能设置的较小,才不会因为步伐太大而偏离最小值。
?
出现锯齿状的原因是:?
1、每一轮迭代使用的训练数据一般是小批量的,没有使用全部的训练数据,因此更新方向会发生锯齿状甚至随机震荡状;
2、某些梯度分量的值比另外一些分量的值要大的多,导致个别分量主导了梯度的更新方向,而期望的梯度更新方向却行进的非常缓慢,这正是Momentum算法要解决的问题。
?
三、优化思路
? ? ?一个很朴素的想法便是让纵向的摆动尽量小,同时保持横向的运动方向比较平稳。为此,需要知道梯度在过去的一段时间内的大致走向,以消除当前轮迭代梯度向量存在的方向抖动。
? ? 设第 ?轮迭代的梯度向量为?,可以简单的通过对每个分量的历史取值进行加和来实现该目的,并将 ?作为新的梯度更新方向。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 这种方法很简单,但每一轮梯度的计算权重相同,这会存在几点问题:
1、较早的梯度对梯度的大致走向预测几乎失去了作用;
2、较早的梯度抖动的较为严重,最近的梯度抖动要弱一些,如果权重都相同,梯度的大致走向预测可能不精确;
3、在梯度下降的后期,参数的搜索空间基本上处于一个凸集上,梯度的每个分量的大小和方向基本固定,不断的将大小和方向基本固定的分量做累加,梯度会变得非常大,造成无法收敛到局部最优。
? ? 这个时候指数加权平均开始派上用场了。将上式的加和平均变成指数移动加权平均,并加入衰减率?,并将??作为梯度的更新方向。这样较早的梯度权重几乎为 0,最近的梯度权重接近1。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ?通过指数加权平均,纵向的分量基本可以抵消,原因是锯齿状存在一上一下的配对向量,方向基本反向。因为从长期的一段时间来看,梯度优化的大方向始终指向最小值,因此,横向的更新方向基本稳定。新的梯度更新的轨迹如下图所示。
?
?
四、基于Momentum的梯度更新
? ? ?基本的梯度更新规则如下,其中??表示学习率。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ?根据上述分析,引入指数加权平均后,??的更新规则为:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ?新的梯度更新规则变为
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ?关于摩擦系数?:
1、为 0 时,退化为未优化前的梯度更新;
2、为 1 时, 表示完全没有摩擦,如前所述,这样会存在大的问题;
3、取 0.9 是一个较好的选择。可能是 0.9 的 60 次方约等于 0.001,相当仅考虑最近的60轮迭代所产生的的梯度,这个数值看起来相对适中合理。
? ? ?注: 两个方向大致一致的向量??和 ?相加,其相加后的向量 ?的方向介于两个向量之间,但范数要大于任何其中一个向量的范数。
?
五、Momentum算法的本质
? ? 该算法将一段时间内的梯度向量进行了加权平均,分别计算得到梯度更新过程中??和??的大致走向,一定程度上消除了更新过程中的不确定性因素(如摆动现象),使得梯度更新朝着一个越来越明确的方向前进。