链接: 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}

探讨了Adam优化器相较于SGD的优势,并提出了一种新的自适应梯度裁剪算法ACClip,该算法能有效解决梯度噪声问题,进一步提升模型优化效率。
559

被折叠的 条评论
为什么被折叠?



