链接: https://arxiv.org/abs/1912.03194v1
本文解释了为什么 Adam 优化方法比 SGD 要更有效, 简单说是因为 SGD 中的梯度范数的偏差太大导致的, 也就是说梯度向量的范数或者某些分量过大. 基于这个分析提出一个新的梯度裁剪方法, 效果比 Adam 还要好.
相关的工作
随机梯度下降 (SGD) 是用于训练神经网络的规范算法 (Robbins & Monro, 1951). 然而 SGD 算法存在的很多缺点, 例如容易产生病态曲率问题. Adam (Kingma & Ba, 2014) 是一种自适应算法, 目前非常常用, 在许多重要的机器学习任务中表现非常好.
本文的改进
假设一个模型为
f
(
x
)
=
E
ξ
[
f
(
x
,
ξ
)
]
f(x)=\mathbb{E}_{\xi}[f(x, \xi)]
f(x)=Eξ[f(x,ξ)]
其中
f
f
f 可以看成一个神经网络的损失函数,
x
x
x 是网络权重,
ξ
\xi
ξ 是样本, 目标是通过调整网络权重
x
x
x 来使得期望误差最小. 注意到
f
(
x
)
f(x)
f(x) 很有可能是一个非凸的函数. 更多理论分析部分请参考原文.
由于梯度的某个分量可能非常大, 这对优化产生不利的影响, 一个常用的方法是梯度裁剪, 它通用的框架如下:
其中
g
k
g_k
gk 代表当前迭代中权重的梯度, 总共迭代次数为
T
T
T ,
m
k
m_k
mk 为加权后的梯度. 关于第四行梯度裁剪, 自然地有两个方案, 分别是对梯度的范数进行裁剪 (Global CLIPping, GClip) 和按照梯度分量进行裁剪 (Coordinate-wise CLIPping, CClip), 二者的具体定义如下:
GClip
(
τ
k
,
m
k
)
=
min
{
τ
k
∥
m
k
∥
,
1
}
m
k
,
for
τ
k
∈
R
≥
0
or
CClip
(
τ
k
,
m
k
)
=
min
{
τ
k
∣
m
k
∣
,
1
}
m
k
,
for
τ
k
∈
R
≥
0
d
.
\begin{aligned} &\operatorname{GClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left\|m_{k}\right\|}, 1\right\} m_{k}, \text { for } \tau_{k} \in \mathbb{R}_{\geq 0} \text { or }\\ &\operatorname{CClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left|m_{k}\right|}, 1\right\} m_{k}, \text { for } \tau_{k} \in \mathbb{R}_{\geq 0}^{d}. \end{aligned}
GClip(τk,mk)=min{∥mk∥τk,1}mk, for τk∈R≥0 or CClip(τk,mk)=min{∣mk∣τk,1}mk, for τk∈R≥0d.
其中
min
{
}
\min \{\}
min{} 可以简单理解为一种梯度的缩放系数, 可以针对整个梯度向量, 也可以针对梯度分量.
τ
k
\tau_k
τk 是一个阈值参数.
如果噪声分布是重尾的(或变化很大), 则可以通过选择较小的阈值来进行裁剪. 有关 GClip 的理论处理,请参见定理1和2. GClip 会保留更新方向并仅缩放其大小, 而 CClip 会分别缩放每个坐标, 并且可能不会保留方向. 但是, 如果噪声分布在坐标上有很大变化,则 CClip 可以利用这一点, 并且仅剪切那些较重的尾部并因此收敛更快 (请参见定理3).
但是, 要最佳地执行这种方法, 将需要调整所有 τ d \tau_d τd 阈值, 在深度学习中这个参数量可能非常大. 难以手动调整. 即使调整是可行的, 梯度噪声分布也可能是不稳定的, 并且会随着训练的进行而显着变化 (请参见图5).
为了解决以上问题, 本文提出自适应的梯度裁剪算法 (Adaptive Coordinate-wise CLIPping, ACClip):
ACClip
(
τ
k
,
m
k
)
=
min
{
τ
k
∣
m
k
∣
+
ϵ
,
1
}
m
k
,
τ
k
α
=
β
2
τ
k
−
1
α
+
(
1
−
β
2
)
∣
g
k
∣
α
.
\operatorname{ACClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left|m_{k}\right|+\epsilon}, 1\right\} m_{k}, \quad \tau_{k}^{\alpha}=\beta_{2} \tau_{k-1}^{\alpha}+\left(1-\beta_{2}\right)\left|g_{k}\right|^{\alpha}.
ACClip(τk,mk)=min{∣mk∣+ϵτk,1}mk,τkα=β2τk−1α+(1−β2)∣gk∣α.
它能够自适应的调整每个阈值
τ
k
\tau_k
τk.
参考
- H. Robbins and S. Monro. A stochastic approximation method. Annals of Mathematical Statistics, 22:400–407, 1951.
- Diederik P Kingma and Jimmy Ba. ADAM: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014.
补充
强凸函数, L-smooth 函数:
https://blog.fangzhou.me/posts/20190217-convex-function-lipschitz-smooth-strongly-convex/