2.8 Adam 优化算法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
2.7 RMSprop回到目录2.9 学习率衰减

Adam优化算法 (Adam Optimization Algorithm)

在深度学习的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种神经网络,时间久了,深度学习圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。所以RMSprop以及Adam优化算法(Adam优化算法也是本视频的内容),就是少有的经受住人们考验的两种算法,已被证明适用于不同的深度学习结构,这个算法我会毫不犹豫地推荐给你,因为很多人都试过,并且用它很好地解决了许多问题。

Adam优化算法基本上就是将MomentumRMSprop结合在一起,那么来看看如何使用Adam算法。

在这里插入图片描述

使用Adam算法,首先你要初始化, v d W = 0 , S d W = 0 , v d b = 0 , S d b = 0 v_{dW}=0,S_{dW}=0,v_{db}=0,S_{db}=0 vdW=0SdW=0vdb=0Sdb=0 ,在第 t t t 次迭代中,你要计算微分,用当前的mini-batch计算 d W , d b dW,db dWdb ,一般你会用mini-batch梯度下降法。接下来计算Momentum指数加权平均数,所以 v d W = β 1 v d W + ( 1 − β 1 ) d W v_{dW}=\beta_1v_{dW}+(1-\beta_1)dW vdW=β1vdW+(1β1)dW (使用 β 1 \beta_1 β1 ,这样就不会跟超参数 β 2 \beta_2 β2 混淆,因为后面RMSprop要用到 β 2 \beta_2 β2 ),使用Momentum时我们肯定会用这个公式,但现在不叫它 β \beta β ,而叫它 β 1 \beta_1 β1 。同样 v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db}=\beta_1v_{db}+(1-\beta_1)db vdb=β1vdb+(1β1)db

接着你用RMSprop进行更新,即用不同的超参数 β 2 \beta_2 β2 S d W = β 2 S d W + ( 1 − β 2 ) ( d W ) 2 S_{dW}=\beta_2S_{dW}+(1-\beta_2)(dW)^2 SdW=β2SdW+(1β2)(dW)2 ,再说一次,这里是对整个微分 d W dW dW 进行平方处理, S d b = β 2 S d b + ( 1 − β 2 ) ( d b ) 2 S_{db}=\beta_2S_{db}+(1-\beta_2)(db)^2 Sdb=β2Sdb+(1β2)(db)2

相当于Momentum更新了超参数 β 1 \beta_1 β1RMSprop更新了超参数 β 2 \beta_2 β2 。一般使用Adam算法的时候,要计算偏差修正, v d W c o r r e c t e d v_{dW}^{corrected} vdWcorrected ,修正也就是在偏差修正之后,

v d W c o r r e c t e d = v d W 1 − β 1 t , v_{dW}^{corrected}=\frac{v_{dW}}{1-\beta_1^t}, vdWcorrected=1β1tvdW

同样,

v d b c o r r e c t e d = v d b 1 − β 1 t , v_{db}^{corrected}=\frac{v_{db}}{1-\beta_1^t}, vdbcorrected=1β1tvdb

S S S 也使用偏差修正,也就是

S d W c o r r e c t e d = S d W 1 − β 2 t , , S_{dW}^{corrected}=\frac{S_{dW}}{1-\beta_2^t},, SdWcorrected=1β2tSdW

S d b c o r r e c t e d = S d b 1 − β 2 t , 。 S_{db}^{corrected}=\frac{S_{db}}{1-\beta_2^t},。 Sdbcorrected=1β2tSdb

最后更新权重,所以 W W W 更新后是

W : = W − α v d W c o r r e c t e d S d W c o r r e c t e d + ϵ W:=W-\frac{\alpha v_{dW}^{corrected}}{\sqrt{S_{dW}^{corrected}}+\epsilon} W:=WSdWcorrected +ϵαvdWcorrected

(如果你只是用Momentum,使用 v d W v_{dW} vdW 或者修正后的 v d W v_{dW} vdW ,但现在我们加入了RMSprop的部分,所以我们要除以修正后 S d W S_{dW} SdW 的平方根加上 ϵ \epsilon ϵ )。

根据类似的公式更新 b b b 值,

b : = b − α v d b c o r r e c t e d S d b c o r r e c t e d + ϵ 。 b:=b-\frac{\alpha v_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+\epsilon}。 b:=bSdbcorrected +ϵαvdbcorrected

所以Adam算法结合了MomentumRMSprop梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。

在这里插入图片描述

本算法中有很多超参数,超参数学习率 α \alpha α 很重要,也经常需要调试,你可以尝试一系列值,然后看哪个有效。 β 1 \beta_1 β1 常用的缺省值为0.9,这是 d W dW dW 的移动平均数,也就是 d W dW dW 的加权平均数,这是Momentum涉及的项。至于超参数 β 2 \beta_2 β2Adam论文作者,也就是Adam算法的发明者,推荐使用0.999,这是在计算 ( d W ) 2 (dW)^2 (dW)2 以及 ( d b ) 2 (db)^2 (db)2 的移动加权平均值,关于 ϵ \epsilon ϵ 的选择其实没那么重要,Adam论文的作者建议 ϵ \epsilon ϵ 1 0 − 8 10^{-8} 108 ,但你并不需要设置它,因为它并不会影响算法表现。但是在使用Adam的时候,人们往往使用缺省值即可, β 1 , β 2 \beta_1,\beta_2 β1β2 ϵ \epsilon ϵ 都是如此,我觉得没人会去调整 ϵ \epsilon ϵ ,然后尝试不同的 α \alpha α 值,看看哪个效果最好。你也可以调整 β 1 \beta_1 β1 β 2 \beta_2 β2 ,但我认识的业内人士很少这么干。

为什么这个算法叫做AdamAdam代表的是Adaptive Moment Estimation β 1 \beta_1 β1 用于计算这个微分( d W dW dW ),叫做第一矩, β 2 \beta_2 β2 用来计算平方数的指数加权平均数( ( d W ) 2 (dW)^2 (dW)2 ),叫做第二矩,所以Adam的名字由此而来,但是大家都简称Adam权威算法。

顺便提一下,我有一个老朋友兼合作伙伴叫做Adam Coates。据我所知,他跟Adam算法没有任何关系,不过我觉得他偶尔会用到这个算法,不过有时有人会问我这个问题,我想你可能也有相同的疑惑。

在这里插入图片描述

这就是关于Adam优化算法的全部内容,有了它,你可以更加快速地训练神经网络,在结束本周课程之前,我们还要讲一下超参数调整,以及更好地理解神经网络的优化问题有哪些。下个视频中,我们将讲讲学习率衰减。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
2.7 RMSprop回到目录2.9 学习率衰减

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值