Adam优化算法

转载请注明出处,原文地址

前言

Adam 优化算法是随机梯度下降算法的优化,近来其广泛用于深度学习应用中,尤其是计算机视觉和自然语言处理等任务,该算法是Momentum算法与RMSprop算法的结合。动量梯度下降法Momentum我们之前已经讲解过,本文将会先介绍下RMSprop算法,再讲解Adam。

RMSprop(均方根)

在这里插入图片描述

在图中这样的情况时,梯度下降在横轴方向前进,在纵轴方向却会有大幅度的抖动。我们把横轴代表参数 w 1 w1 w1,把纵轴代表参数 w 2 w2 w2。注意,作为例子我们此处只引入了2个参数,实际情况会复杂很多。这里我们依然会使用指数加权平均数,如果你不了解指数加权平均数,请先阅览动量梯度下降法Momentum
S d w 1 = β S d w 1 + ( 1 − β ) ( d W 1 ) 2 S_{dw1} = \beta S_{dw1} + (1-\beta)(dW_1)^2 Sdw1=βSdw1+(1β)(dW1)2
S d w 2 = β S d w 2 + ( 1 − β ) ( d W 2 ) 2 S_{dw2} = \beta S_{dw2} + (1-\beta)(dW_2)^2 Sdw2=βSdw2+(1β)(dW2)2

这里我们最后乘的是 ( d W ) 2 (dW)^2 (dW)2而不是 d W dW dW,计算出指数加权平均数之后,我们开始更新参数

W 1 = W 1 − α d W 1 S d w 1 + ϵ W_1 = W_1 - \alpha \frac{dW_1}{ \sqrt[]{S_{dw1}+\epsilon}} W1=W1αSdw1+ϵ dW1
W 2 = W 2 − α d W 2 S d w 2 + ϵ W_2 = W_2 - \alpha \frac{dW_2}{ \sqrt[]{S_{dw2}+\epsilon}} W2=W2αSdw2+ϵ dW2

此处的 ϵ \epsilon ϵ是为了防止分母为0

横轴 w 1 w1 w1因为抖动小,所以 d W 1 dW_1 dW1的值很小, S d w 1 S_{dw1} Sdw1的值很小,最终与 α \alpha α相乘的值就会很大, W 1 W1 W1抖动变动大,在横轴就会前进的更快。

纵轴 w 2 w2 w2因为抖动大,所以 d W 2 dW_2 dW2的值很大, S d w 1 S_{dw1} Sdw1的值很大,最终与 α \alpha α相乘的值就会很小, w 2 w2 w2抖动变小,纵向的变化相对平缓。

Adam算法

当把Momentum与RMSprop算法结合在一起时,就是Adam算法。

首先还是计算指数加权平均数,我们令 V d W = 0 V_{dW}=0 VdW=0 V d b = 0 V_{db}=0 Vdb=0 S d W = 0 S_{dW}=0 SdW=0 S d b = 0 S_{db}=0 Sdb=0

接下来计算Momentum的指数加权平均数,注意超参数这里是 β 1 \beta_1 β1

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

再计算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)(dW)2

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)(db)2

接下来进行参数修正,参数修正可以防止在迭代次数较少的时候,计算出来的指数加权平均数较小

V d w c o r r e c t = V d w 1 − β 1 t V_{dw}^{correct} = \frac{V_{dw}}{1- \beta_1^t} Vdwcorrect=1β1tVdw

V d b c o r r e c t = V d b 1 − β 1 t V_{db}^{correct} = \frac{V_{db}}{1- \beta_1^t} Vdbcorrect=1β1tVdb

S d w c o r r e c t = S d w 1 − β 2 t S_{dw}^{correct} = \frac{S_{dw}}{1- \beta_2^t} Sdwcorrect=1β2tSdw

S d w c o r r e c t = S d w 1 − β 2 t S_{dw}^{correct} = \frac{S_{dw}}{1- \beta_2^t} Sdwcorrect=1β2tSdw

最后更新参数

W = W − α V d w c o r r e c t S d w c o r r e c t + ϵ W = W - \alpha \frac{V_{dw}^{correct}}{\sqrt[]{S_{dw}^{correct}+\epsilon}} W=WαSdwcorrect+ϵ Vdwcorrect

b = b − α V d b c o r r e c t S d b c o r r e c t + ϵ b = b - \alpha \frac{V_{db}^{correct}}{\sqrt[]{S_{db}^{correct}+\epsilon}} b=bαSdbcorrect+ϵ Vdbcorrect

  • β 1 \beta_1 β1常用的缺省值是0.9
  • β 2 \beta_2 β2 Adam的发明者推荐使用的数值是0.999
  • ϵ \epsilon ϵ的取值没有那么重要,Adam论文的作者建议为 ϵ = 1 0 − 8 \epsilon=10^{−8} ϵ=108
  • 在实际使用中, β 1 , β 2 , ϵ \beta_1,\beta_2,\epsilon β1,β2,ϵ都是使用的推荐的缺省值,需要调整的是学习率 α \alpha α

在这里插入图片描述

这是Adam 优化算法和其他优化算法在多层感知机模型中的对比,可见其收敛的速度较快,效果明显,并且Adam 算法很容易实现,有很高的计算效率和较低的内存需求。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值