2020-6-3 吴恩达-改善深层NN-w2 优化算法(2.8 Adam 优化算法--将Momentum和RMSprop结合在一起)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

2.8 Adam 优化算法 Adam optimization algorithm

在DL的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种NN,时间久了,DL圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。

不过RMSprop以及Adam优化算法,就是少有的经受住人们考验的两种算法,已被证明适用于不同的DL结构,很多人都试过,并且用它很好地解决了许多问题。

Adam优化算法基本上就是将Momentum和RMSprop结合在一起。

使用Adam算法步骤如下

step1
首先你要初始化, v d W = 0 v_{dW}=0 vdW=0 S d W = 0 S_{dW}=0 SdW=0 v d b = 0 v_{db}=0 vdb=0 S d b = 0 S_{db}=0 Sdb=0

step2
一般你会用mini-batch梯度下降法,在第 t t t 次迭代中,你要计算微分,用当前的mini-batch计算 d W dW dW d b db db

step3
接下来使用超参 β 1 \beta_1 β1 计算Momentum指数加权平均数

  • v d W = β 1 v d W + ( 1 − β 1 ) d W v_{dW}=\beta_1 v_{dW}+(1-\beta_1)dW vdW=β1vdW+(1β1)dW
  • v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db}=\beta_1 v_{db}+(1-\beta_1)db vdb=β1vdb+(1β1)db

step4
接着你用RMSprop进行更新,使用不同的超参数 β 2 \beta_2 β2

  • S d W = β 2 S d W + ( 1 − β 2 ) d W 2 S_{dW}=\beta_2 S_{dW}+(1-\beta_2)dW^2 SdW=β2SdW+(1β2)dW2
  • S d b = β 2 S d b + ( 1 − β 2 ) d b 2 S_{db}=\beta_2 S_{db}+(1-\beta_2)db^2 Sdb=β2Sdb+(1β2)db2

以上相当于Momentum更新了超参 β 1 \beta_1 β1,RMSprop更新了超参 β 2 \beta_2 β2

step5
一般使用Adam算法的时候,要计算偏差修正, v d W c o r r e c t e d v_{dW}^{corrected} vdWcorrected v d b c o r r e c t e d v_{db}^{corrected} vdbcorrected

  • 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 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

step6
最后更新权重,所以

  • 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 -\alpha \frac{v_{dW}^{corrected}}{\sqrt {S_{dW}^{corrected}}+\epsilon} W:=WαSdWcorrected +ϵvdWcorrected
  • 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 -\alpha \frac{v_{db}^{corrected}}{\sqrt {S_{db}^{corrected}}+\epsilon} b:=bαSdbcorrected +ϵvdbcorrected

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

Adam算法结合了Momentum和RMSprop梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同NN,适用于广泛的结构。

本算法中有很多超参

  • 学习率 α \alpha α 很重要,也经常需要调试,你可以尝试一系列值,然后看哪个有效。
  • β 1 \beta_1 β1 常用的缺省值为0.9,这是 d W dW dW 的移动平均数,或者说加权平均数,这是Momentum涉及的项。
  • β 2 \beta_2 β2 ,Adam论文作者,也就是Adam算法的发明者,推荐使用0.999,这是在计算 d W 2 dW^2 dW2 d b 2 db^2 db2 的移动加权平均值。
  • ϵ \epsilon ϵ,Adam论文的作者建议为 10-8,它并不会影响算法表现。

我觉得没人会去调整 ϵ \epsilon ϵ,但是会尝试不同的 α \alpha α值,看看哪个效果最好。你也可以调整 β 1 \beta_1 β1 β 2 \beta_2 β2,但我认识的业内人士很少这么干。

为什么这个算法叫做Adam?

Adam代表的是Adaptive Moment Estimation, β 1 \beta_1 β1 用于计算微分 d W dW dW,叫做第一矩。 β 2 \beta_2 β2 用来计算平方数的指数加权平均数 d W 2 dW^2 dW2,叫做第二矩。

Adam的名字由此而来,但是大家都简称Adam权威算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值