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

Posted bitcarmanlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习优化算法大全系列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 β,用来控制历史累积梯度对当前的影响程度。

以上是关于深度学习优化算法大全系列5:AdaDelta,RMSProp的主要内容,如果未能解决你的问题,请参考以下文章

深度学习优化算法大全系列7:NAdam,算法选择,调参

深度学习优化算法大全系列6:Adam

Pytorh Note19 优化算法5 Adadelta算法

[人工智能-深度学习-15]:神经网络基础 - 常见优化器Optimizer及其算法 - 梯度下降法系列

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析

深度学习笔记:SGDMomentumRMSpropAdam优化算法解析