动量梯度下降法、RMSprop、Adam 优化算法

1.1 动量梯度下降法(Gradient descent with Momentum)

优化成本函数J,还有一种算法叫做 Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重。

使用动量梯度下降法,你需要做的是,在每次迭代中,确切来说在第t次迭代的过程中,需要计算微分dw,db,用现有的 mini-batch 计算dw,db,vdw=βvdw+(1-β)dw,接着同样地计算vdb ,vdb=βvdb+(1-β)db,然后重新赋值权重,w: = w − avdw,同样b: =a−avdb,这样就可以减缓梯度下降的幅度。所以有两个超参数,学习率α以及参数β,β控制着指数加权平均数,β最常用的值是0.9,我们之前平均了过去十天的温度,所以现在是平均了前十次迭代的梯度,vdw初始值是 0,要注意到这是和dw拥有相同维数的零矩阵,也就是跟w拥有相同的维数,vdb的初始值也是向量零,所以和db拥有相同的维数,也就是和b是同一维数,这个算法要好于没有 Momentum 的梯度下降算法。

1.2 RMSprop

 

动量(Momentum)可以加快梯度下降,还有一个叫做 RMSprop 的算法,全称是 root mean square prop 算法,它也可以加速梯度下降,减缓b方向的学习,即纵轴方向,同时加快横轴方向的学习,RMSprop 算法可以实现这一点。

 

在第t次迭代中,该算法会照常计算当下 mini-batch 的微分dw,db,所以我会保留这个指数加权平均数,我们用到新符号Sdw,因此Sdw=βSdw+(1-β)dw2,同样Sdb=βSdb+(1-β)db2,接着 RMSprop 会这样更新参数值:动量梯度下降法、RMSprop、Adam 优化算法,在横轴方向或者在例子中的w方向,我们希望学习速度快,而在垂直方向,也就是例子中的b方向,我们希望减缓纵轴上的摆动,所以有了Sdw和Sdb,RMSprop 的影响就是你的更新最后会变成纵轴方向上摆动较小,而横轴方向继续推进。

1.3 Adam 优化算法(Adam optimization algorithm)

 

Adam 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起,使用 Adam 算法,首先你要初始化,vdw= 0,Sdw= 0,vdb= 0,Sdb= 0,在第t次迭代中,你要计算微分,用当前的 mini-batch 计算dw,db;接下来计算 Momentum 指数加权平均数,所以:vdw1vdw+(1-β1)dw (使用β1,这样就不会跟超参数β2混淆,因为后面 RMSprop 要用到β2),同样:vdwb1vdb+(1-β1)db ;接着你用 RMSprop 进行更新,即用不同的超参数β2,Sdw2Sdw+(1-β2)dw2,Sdb2Sdb+(1-β2)db2。相当于 Momentum 更新了超参数β1,RMSprop 更新了超参数β2,一般使用 Adam 算法的时候,要计算偏差修正动量梯度下降法、RMSprop、Adam 优化算法动量梯度下降法、RMSprop、Adam 优化算法,同样,动量梯度下降法、RMSprop、Adam 优化算法 ,S也使用偏差修正,也就是:动量梯度下降法、RMSprop、Adam 优化算法动量梯度下降法、RMSprop、Adam 优化算法,,最后更新权重,所以w更新后是动量梯度下降法、RMSprop、Adam 优化算法,根据类似的公式更新b值动量梯度下降法、RMSprop、Adam 优化算法

Adam 算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。β1常用的缺省值为 0.9,这是 dW 的移动平均数,也就是dW 的加权平均数,这是 Momentum 涉及的项;超参数β2推荐使用 0.999,这是在计算(dw)2以及(db)2的移动加权平均值,动量梯度下降法、RMSprop、Adam 优化算法的取值建议为10-8,但你并不需要设置它,因为它并不会影响算法表现。

 

 

 

 

 

 

 

 

 

 

 

上一篇:深度学习中momentum的作用


下一篇:吴恩达-梯度下降