不妨设神经网络的优化目标为:
那么,优化算法SGD可以写成:
SGD +Momentum(动量)可以写成:
这里, 经验值为 。
首先,分析 :
将 中所有权重梯度矩阵 的系数相加,由数学归纳法易得:
所以,SGD + Momentum可以理解为,利用历史权重梯度矩阵 和当前权重梯度矩阵 的加权平均和,来更新权重矩阵 。由于 ,所以随着 的增大和 的减小, 会减小,历史权重梯度矩阵 会逐渐减小。通俗来讲,会逐渐遗忘越旧的权重梯度矩阵。
由于 ,所以当 较小时, 会与当前权重梯度矩阵 有较大的偏差,所以会通过如下公式修正:
随着 的增大, 会逐渐减小,所以该偏差修正对前期更新影响大,后期影响逐渐减小。但该方法用得较少。
还是由于 ,那么当 较小时, 会与当前权重梯度矩阵 有较大的偏差,以及更加凸显当前权重梯度矩阵的重要性,所以SGD +Momentum往往写成:
同样,可得:
由于 ,所以有 ,所以学习率 有时也会进行修正,即 。
为了更加直观地理解,不妨设优化函数为:
其中, 。那么有:
取一个很小区域 ,假设优化函数 在这个定义域可以看成单调的,因此有:
易证:
推出:
推导穷:
在相同学习率 ,使用Momentum加速的SGD优化算法能以更大步长进行更新。
在相同学习率 和相同更新时间内,Momentum加速能行驶更多路程,为越过不那么好的极小值点提供可能性。
当然,这是非常感性的分析了,严谨的数学证明,远不是笔者能胜任的。