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

时间:2021-07-25
本文章向大家介绍动量梯度下降法、RMSprop、Adam 优化算法,主要包括动量梯度下降法、RMSprop、Adam 优化算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

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

1.2 RMSprop

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

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

1.3 Adam 优化算法(Adam optimization algorithm)

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

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

本文来自博客园,作者:zhang-X,转载请注明原文链接:https://www.cnblogs.com/YY-zhang/p/15058850.html

原文地址:https://www.cnblogs.com/YY-zhang/p/15058850.html