简介

动量梯度下降法是对梯度下降法的改良版本,通常来说优化效果好于梯度下降法。对梯度下降法不熟悉的可以参考梯度下降法,理解梯度下降法是理解动量梯度下降法的前提,除此之外要搞懂动量梯度下降法需要知道原始方法在实际应用中的不足之处,动量梯度下降法怎样改善了原来方法的不足以及其具体的实现算法。依次从以下几个方面进行说明:

  • 小批量梯度下降法(mini-batch gradient descent)
  • 指数加权平均(exponential weight averages)
  • 动量梯度下降法(gradient descent with momentum)

总结一下他们之间的关系:每次梯度下降都遍历整个数据集会耗费大量计算能力,而mini-batch梯度下降法通过从数据集抽取小批量的数据进行小批度梯度下降解决了这一问题。使用mini-batch会产生下降过程中左右振荡的现象。而动量梯度下降法通过减小振荡对算法进行优化。动量梯度下降法的核心便是对一系列梯度进行指数加权平均,下面时详细介绍。


1 mini-batch梯度下降法

在实际应用中,由于样本数量庞大,训练数据上百万是很常见的事。如果每执行一次梯度下降就遍历整个训练样本将会耗费大量的计算机资源。在所有样本中随机抽取一部分(mini-batch)样本,抽取的样本的分布规律与原样本基本相同,事实发现,实际训练中使用mini-batch梯度下降法可以大大加快训练速度。

1.1 实现方法

mini-batch梯度下降法的思想很简单,将样本总体分成多个mini-batch。例如100万的数据,分成10000份,每份包含100个数据的mini-batch-1到mini-batch-10000,每次梯度下降使用其中一个mini-batch进行训练,除此之外和梯度下降法没有任何区别。

1.2 直观体验

动量梯度下降(momentum)
由于mini-batch每次仅使用数据集中的一部分进行梯度下降,所以每次下降并不是严格按照朝最小方向下降,但是总体下降趋势是朝着最小方向,上图可以明显看出两者之间的区别。

对右边的图来说,动量梯度下降法并没有什么用处。梯度批量下降法主要是针对mini-batch梯度下降法进行优化,优化之后左右的摆动减小,从而提高效率。优化前后的对比如下图,可见动量梯度下降法的摆动明显减弱。
动量梯度下降(momentum)

2 指数加权平均

指数加权平均值又称指数加权移动平均值,局部平均值,移动平均值。加权平均这个概念都很熟悉,即根据各个元素所占权重计算平均值。指数加权平均中的指数表示各个元素所占权重呈指数分布。假设存在数列Q1,Q2,Q3,Q4...........{Q_1,Q_2,Q_3,Q_4...........}
令:V0=0V_0=0
V1=βV0+(1β)Q1V_1=βV_0+(1−β)Q_1
V2=βV1+(1β)Q2V_2=βV_1+(1−β)Q_2
V3=βV2+(1β)Q3V_3=βV_2+(1−β)Q_3

其中的V1,V2,V3V_1,V_2,V_3便称为该数列的指数加权平均。为了更好地理解指数两个字,我们展开V100V_{100}中的所有V(为了方便书写,令β=0.9,则1−β=0.1)得到:V100=0.1Q100+0.10.9Q99+0.10.92Q98+0.10.93Q97+......+0.10.999Q1V_{100}=0.1Q_{100}+0.1∗0.9Q_{99}+0.1∗0.92Q_{98}+0.1∗0.93Q_{97}+......+0.1∗0.999Q_1
​观察各项前面的系数不难得到从Q1Q_1Q100Q_{100}各数权重呈指数分布。其权重大小如下图:
动量梯度下降(momentum)
可以看出指数加权平均是有记忆平均,每一个V都包含了之前所有数据的信息。

3 动量梯度下降法

使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。
动量梯度下降(momentum)
如上图所示,黑色量和绿色量沿着上下方向的分量便可以部分抵消(我们想往右边的加号走),就能减小下一步的振荡幅度。

4 参考资料

相关文章:

  • 2022-12-23
  • 2021-08-25
  • 2022-01-04
  • 2021-08-03
  • 2021-05-25
  • 2021-06-25
  • 2022-02-27
猜你喜欢
  • 2021-11-07
  • 2021-10-10
  • 2022-12-23
  • 2021-12-27
  • 2022-01-02
  • 2021-09-15
  • 2021-09-10
相关资源
相似解决方案