深度学习优化算法大全系列5:AdaDelta,RMSProp

1.AdaGrad的缺点

前面在讲到AdaGrad的时候,我们也提到了他的缺点:其梯度累积的历史是单调递增的,导致训练越往后期学习率越小,学习率是一个单调递减不可逆的过程。因此我们可以只关注一段时间内梯度的累积,而不用关心历史所有时间梯度的累积,这样可以使得学习率不会一直保持单调递减,也是AdaDelta算法中Delta的由来。

2.AdaDelta/RMSProp优化

AdaDelta/RMSProp算法,主要是通过一个衰减系数,来控制历史梯度对当前的影响。而指数移动的平均值,差不多是过去一段时间的平均值。因此二阶动量一段时间内的累积可以采用如下类似方式:
V t = β V t − 1 + ( 1 − β ) g t 2 V_t = \beta V_{t-1} + (1- \beta) g_t ^ 2 Vt=βVt1+(1β)gt2

通过以上改动,可以避免二阶动量一直累积单调递增,从而导致训练提前结束或者训练不充分的情况。

3.算法流程

假定初始参数为 θ \theta θ, 初始全局学习率 ϵ \epsilon ϵ,小常数 δ \delta δ主要为了数值计算稳定,一般可以取 1 0 − 7 10^{-7} 107
算法步骤:
初始化梯度历史累积 r = 0 r=0 r=0
如果不满足终止条件,如下步骤循环:
1.从训练集中采样m个样本 x ( 1 ) x^{(1)} x(1), x ( 2 ) x^{(2)} x(2)…, x ( m ) x^{(m)} x(m),对应的标签为 y ( i ) y^{(i)} y(i)
2.计算当前梯度: g = ▽ θ ∑ i L ( f ( x ( i ) ; θ ) , y ( i ) ) g = \bigtriangledown_\theta \sum_i L(f(x^{(i)}; \theta), y^{(i)}) g=θiL(f(x(i);θ),y(i))
3.累积历史梯度的平方和: r = β r + ( 1 − β ) g ⊙ g r = \beta r + (1-\beta)g \odot g r=βr+(1β)gg
4.计算梯度更新: Δ θ = ϵ δ + r ⊙ g \Delta \theta = \frac {\epsilon}{\delta + \sqrt r} \odot g Δθ=δ+r ϵg
5.更新参数: θ = θ − Δ θ \theta = \theta - \Delta \theta θ=θΔθ

从上面的算法流程不难看出,AdaDelta/RMSProp与AdaGrad的区别,其实就在第三步累积历史梯度的平方和,此时多了一个超参数 β \beta β,用来控制历史累积梯度对当前的影响程度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值