深度学习优化算法大全系列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=βVt−1+(1−β)gt2
通过以上改动,可以避免二阶动量一直累积单调递增,从而导致训练提前结束或者训练不充分的情况。
3.算法流程
假定初始参数为
θ
\\theta
θ, 初始全局学习率
ϵ
\\epsilon
ϵ,小常数
δ
\\delta
δ主要为了数值计算稳定,一般可以取
1
0
−
7
10^-7
10−7
算法步骤:
初始化梯度历史累积
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−β)g⊙g
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的主要内容,如果未能解决你的问题,请参考以下文章
Pytorh Note19 优化算法5 Adadelta算法
[人工智能-深度学习-15]:神经网络基础 - 常见优化器Optimizer及其算法 - 梯度下降法系列