3. Adaptive Learning Rate - Variants of SGD

       在讲动量法的时候,我们看到当不同方向上的梯度相差较大时,会出现振荡的情况。动量法依赖指数加权平均使得自变量的更新方向更加一致,从而降低loss divergence的情况。
       其它调整学习率的算法,如AdaGrad, Adam和RMSProp。
  \space  
Method 1: Adaptive Gradient(AdaGrad):

       它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习难以适应所有维度的问题。
s t = s t − 1 + g t ∗ g t , s_t=s_{t-1}+g_t*g_t, st=st1+gtgt, x t = x t − 1 − η s t + ϵ ∗ g t x_t=x_{t-1}-\frac{\eta}{\sqrt{s_t+\epsilon}}*g_t xt=xt1st+ϵ ηgt
              (i) “*” is element-wise multiplication
              (ii) ϵ \epsilon ϵ is a small number, like 1 0 − 6 10^{-6} 106 to make sure the denominator > 0

       解释:
       1. 小批量随机梯度按元素平方的累加变量 s t s_t st出现在学习率的分母项。

       2. 因此,如果目标函数有关自变量中某个元素的偏导数一直都较大,那么该元素的学习率将下降较快;反之,如果目标函数有关自变量中某个元素的偏导数一直都较小,那么该元素的学习率将下降较慢。

        3. 然而,由于 s t s_t st一直在累加按元素平方的梯度,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)

       缺点:当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。
  \space  

Method 2: RMSProp (AdaGrad + Moving Average): 解决AdaGrad的问题

       不同于AdaGrad算法里状态变量 s t s_t st是截止时间t所有小批量随机梯度 g t g_t gt的平方和,RMSProp算法将这些梯度按元素平方做指数加权移动平均。
s t = γ s t − 1 + ( 1 − γ ) g t ∗ g t ,    γ ∈ [ 0 , 1 ) s_t=\gamma s_{t-1}+(1-\gamma)g_t*g_t, \space\space\gamma\in[0,1) st=γst1+(1γ)gtgt,  γ[0,1) x t = x t − 1 − η s t + ϵ ∗ g t x_t=x_{t-1}-\frac{\eta}{\sqrt{s_t+\epsilon}}*g_t xt=xt1st+ϵ ηgt
              解释:
              1. s t s_t st是对平方项 g t ∗ g t g_t*g_t gtgt的指数加权移动平均,所以可以看作最近 1 1 − γ \frac{1}{1-\gamma} 1γ1个时间步的小批量随机梯度平方项的加权平均。

              2. 如此一来,自变量每个元素的学习率在迭代过程中就不再一直降低(或不变)。
  \space  
Method 3: AdaDelta: 也对AdaGrad在迭代后期可能较难找到最优解的问题做了改进。但AdaDelta算法没有学习率这个超参数

  1. 与RMSProp算法一样,使用了 g t g_t gt平方和的指数加权移动平均
    s t = γ s t − 1 + ( 1 − γ ) g t ∗ g t s_t=\gamma s_{t-1}+(1-\gamma)g_t*g_t st=γst1+(1γ)gtgt

  2. 与RMSProp不同的是,AdaDelta算法还储存了一个额外的状态变量 Δ x t \Delta x_t Δxt,其元素在时间t=0时被初始化为0
    g t ′ = Δ x t − 1 + ϵ s t + ϵ ∗ g t g_t'=\sqrt{\frac{\Delta x_{t-1}+\epsilon}{s_t+\epsilon}}*g_t gt=st+ϵΔxt1+ϵ gt x t = x t − 1 − g t ′ x_t=x_{t-1}-g_t' xt=xt1gt

  3. 最后,使用 Δ x t \Delta x_t Δxt来记录自变量变化量 g t ′ g_t' gt按元素平方和的指数加权移动平均:
    Δ x t = γ Δ x t − 1 + ( 1 − γ ) g t ′ ∗ g t ′ \Delta x_t=\gamma \Delta x_{t-1}+(1-\gamma)g_t'*g_t' Δxt=γΔxt1+(1γ)gtgt
    可以看到,在不考虑 ϵ \epsilon ϵ的影响下,AdaDelta算法跟RMSProp算法的不同指出在于使用 Δ x t − 1 \sqrt{\Delta x_{t-1}} Δxt1 来替代学习率 η \eta η

  \space  
Method 4: Adam: 在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。

  1. 动量法中的动量 v t , v 0 = 0 v_t, v_0=0 vtv0=0
    v t = β 1 v t − 1 + ( 1 − β 1 ) g t ,    β 1 ∈ [ 0 , 1 ) ,   ( 算 法 作 者 建 议 设 为 0.9 ) v_t=\beta_1 v_{t-1}+(1-\beta_1)g_t, \space\space \beta_1\in[0, 1),\space (算法作者建议设为0.9) vt=β1vt1+(1β1)gt,  β1[0,1), (0.9

  2. RMSProp中的 s t , s 0 = 0 s_t, s_0=0 sts0=0:
    s t = β 2 s t − 1 + ( 1 − β 2 ) g t ∗ g t ,    β 2 ∈ [ 0 , 1 )   ( 算 法 作 者 建 议 设 为 0.999 ) s_t=\beta_2 s_{t-1}+(1-\beta_2)g_t*g_t,\space\space\beta_2\in[0, 1)\space(算法作者建议设为0.999) st=β2st1+(1β2)gtgt,  β2[0,1) 0.999

  3. 偏差修正:
           由于 v 0 , s 0 v_0, s_0 v0,s0的元素都初始化为0,在时间步t,我们得到 v t = ( 1 − β 1 ) ∑ i = 1 t β 1 t − i g i v_t=(1-\beta_1)\sum_{i=1}^t\beta_1^{t-i}g_i vt=(1β1)i=1tβ1tigi。将过去各时间步内小批量随机梯度的权重相加,得到 ( 1 − β 1 ) ∑ i = 1 t β 1 t − i = 1 − β 1 t (1-\beta_1)\sum_{i=1}^t\beta_1^{t-i}=1-\beta_1^t (1β1)i=1tβ1ti=1β1t

                需要注意的是,当t较小时,过去各时间步小批量随机梯度权重之和会较小。比如,当 β 1 = 0.9 \beta_1=0.9 β1=0.9时, v 1 = 0.1 g 1 v_1=0.1g_1 v1=0.1g1。为了消除初期的这种影响,对于任意时间步t,我们可以将 v t v_t vt除以 1 − β 1 t 1-\beta_1^t 1β1t,从而使过去各时间步小批量随机梯度权重之和为1。
v t ^ = v t 1 − β 1 t \hat{v_t}=\frac{v_t}{1-\beta_1^t} vt^=1β1tvt s t ^ = s t 1 − β 2 t \hat{s_t}=\frac{s_t}{1-\beta_2^t} st^=1β2tst

  1. 重新调整 g t g_t gt:
    g t ′ = η s t ^ + ϵ v t ^ g_t'=\frac{\eta}{\sqrt{\hat{s_t}}+\epsilon} \hat{v_t} gt=st^ +ϵηvt^
  2. 自变量更新:
    x t = x t − 1 − g t ′ x_t=x_{t-1}-g_t' xt=xt1gt

所以,Adam算法可以看作是RMSProp算法与动量法的结合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值