动量梯度下降法、RMSprop、Adam 优化算法
2021/7/25 20:35:47
本文主要是介绍动量梯度下降法、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 会这样更新参数值:,在横轴方向或者在例子中的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 指数加权平均数,所以:vdw=β1vdw+(1-β1)dw (使用β1,这样就不会跟超参数β2混淆,因为后面 RMSprop 要用到β2),同样:vdwb=β1vdb+(1-β1)db ;接着你用 RMSprop 进行更新,即用不同的超参数β2,Sdw=β2Sdw+(1-β2)dw2,Sdb=β2Sdb+(1-β2)db2。相当于 Momentum 更新了超参数β1,RMSprop 更新了超参数β2,一般使用 Adam 算法的时候,要计算偏差修正,,同样, ,S也使用偏差修正,也就是:,,,最后更新权重,所以w更新后是,根据类似的公式更新b值。
Adam 算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。β1常用的缺省值为 0.9,这是 dW 的移动平均数,也就是dW 的加权平均数,这是 Momentum 涉及的项;超参数β2推荐使用 0.999,这是在计算(dw)2以及(db)2的移动加权平均值,的取值建议为10-8,但你并不需要设置它,因为它并不会影响算法表现。
这篇关于动量梯度下降法、RMSprop、Adam 优化算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南
- 2024-12-21功能权限实战:新手入门指南