深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

在深度学习中,优化器是其重要组成部分,本文来介绍一下常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码并对他们进行对比。

1. SGD

SGD的伪代码如下:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

SGD的梯度更新公式简单,采样用的是小样本,训练速度快,但由于是成之字形下降,在一些情况下效率很低。

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

2. (SGD with) Momentum

伪代码如下:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

和SGD相比,带动量的SGD主要是借助物理学中动量的概念,在下降时保留一部分之前的方向和速度,以此来抑制震荡。若当前的梯度方向与累积的历史梯度方向一致,当前梯度就会被加强,使得这一步的下降幅度变大,反之也成立。具体到代码,就是新引入了一个变量v,这个v就是累计的历史梯度,以这个作为参数更新的值。下图就是一个带动量的SGD的梯度下降示意图:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

3. Nesterov Momentum

对于带动量的SGD,我们可以想象成是一个小球沿着斜坡左歪右撞地盲目滚下,如果想让这个小球变得不那么盲目一点,Nesterov Momentum应运而生。

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

对比于带动量的SGD,该方法加了一个校正因子,在求梯度的时候,考虑进了预估的下一个位置,如下图所示:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

4. AdaGrad:

之前的几种方法的学习率是始终不变的,以下的几种方法主要是通过更新学习率来起到优化的目的。AdaGrad的伪代码如下:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

相比于前面的优化方法,AdaGrad的改动主要是在标绿部分。我们知道,学习率小的时候下降的步子小,学习率大的时候下降的步子大, AdaGrad引入了累计因子r,用平方梯度来作累积,并将它的开根号作为学习率的除数,这么做的目的是为了在梯度较为平缓的时候(此时平方梯度较小),可以获得比较大的学习率,走的快一些,以此来提高效率,但是在日常使用中,会发现这种方法有的时候会使得学习率在一段时间的迭代后变得过小,因此还需要继续改进。

5. The RMS Prop Algorithm

伪代码如下:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

针对AdaGrad中提到的问题,RMS Prop进行了划绿处的改进,通过添加一个衰减系数,来控制历史信息获得的多少,从而使得学习率的减小变得可控。

此外,还可以将RMS Prop和Nesterov Momentum结合起来,伪代码如下图:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

6. Adam

Adam类似于将RMSprop和momentum相结合,利用了二者的优点,伪代码如下:

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

其中标绿处为相比之前有改动的地方,Adam属于一个比较成熟的优化器,在很多情况下都可以适用。

版权声明:本文为博主ZhuojunChen原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_39332551/article/details/123440318

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月14日 下午12:55
下一篇 2022年3月14日 下午1:17

相关推荐