RAdam/zh
| Article | |
|---|---|
| Topic area | Optimization |
| Prerequisites | Stochastic gradient descent, Gradient descent |
概述
Rectified Adam(RAdam)是一种自适应的随机优化算法,它通过在自适应学习率上添加一个闭式修正项来改进流行的 Adam 优化器。该修正纠正了在前几个训练步中第二矩估计的高且未定义的方差,这正是从业者传统上通过手动学习率预热(warmup)来解决的不稳定性的根本原因。通过解析地推导自适应学习率的方差并引入乘性修正,RAdam 旨在从第一步开始就提供稳定的更新,而无需对预热调度进行调参。它由 Liu 等人于 2019 年提出,被广泛用作 Adam 的直接替代品,应用于计算机视觉、语言建模和强化学习等任务。[1]
动机
标准的 Adam 维护一个梯度平方的指数移动平均 $ v_t $,并在每次更新的分母中使用 $ \sqrt{\hat{v}_t} $。在训练初期,累积的梯度样本非常少,因此 $ \hat{v}_t $ 是真实第二矩的高方差估计量。除以一个有噪声的估计会产生不可靠且往往过大的步长,从而可能在矩估计稳定之前就将参数推入损失面的不利区域。
深度学习社区中出现的经验性变通方法是学习率预热(warmup):以较小的学习率开始,并在数百或数千次迭代内将其逐步提升。预热虽然有效,但引入了额外的超参数(预热长度、预热调度形状),它们与基础学习率、批大小和数据集之间的交互方式难以预测。RAdam 的动机在于观察到:预热只是一个启发式的补丁,而其所针对的问题其实可以解析地刻画并以闭式方式加以修正。
自适应学习率的方差
RAdam 论文的核心推导将自适应缩放项的逆 $ 1/\sqrt{\hat{v}_t} $ 的方差计算为 $ t $ 和第二矩衰减率 $ \beta_2 $ 的函数。在关于梯度分布的简化假设下,可以证明该方差在 $ t $ 较小时无界,随后随着 $ t \to \infty $ 单调递减至一个有限的渐近值。作者用近似简单移动平均的长度(SMA)来近似有效样本量:
$ {\displaystyle \rho_t = \rho_\infty - \frac{2 t \, \beta_2^t}{1 - \beta_2^t}, \qquad \rho_\infty = \frac{2}{1 - \beta_2} - 1.} $
对于典型值 $ \beta_2 = 0.999 $,有 $ \rho_\infty \approx 1999 $;$ \rho_t $ 的值从零开始增长,并随着训练的进行接近 $ \rho_\infty $。自适应分母的方差因此可以用 $ \rho_t $ 以闭式方式表示,从而可以对更新进行修正,使其方差与长期阶段的方差相匹配。
算法
设 $ \alpha $ 为基础学习率,$ (\beta_1, \beta_2) $ 为矩的衰减率,$ \theta_{t-1} $ 为第 $ t $ 步之前的参数。给定梯度 $ g_t $,RAdam 与 Adam 完全相同地更新各阶矩:
$ {\displaystyle m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t, \qquad v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2,} $
然后计算经偏差校正的一阶矩 $ \hat{m}_t = m_t / (1 - \beta_1^t) $ 以及 SMA 长度 $ \rho_t $。决策规则根据自适应项的方差是否可处理而分两种情况:
- 若 $ \rho_t > 4 $:计算经偏差校正的二阶矩分母 $ \hat{v}_t = \sqrt{v_t / (1-\beta_2^t)} $ 和修正因子
$ {\displaystyle r_t = \sqrt{\frac{(\rho_t - 4)(\rho_t - 2) \rho_\infty}{(\rho_\infty - 4)(\rho_\infty - 2) \rho_t}},} $
然后执行修正后的 Adam 更新步骤 $ \theta_t = \theta_{t-1} - \alpha \, r_t \, \hat{m}_t / \hat{v}_t $。
- 否则(在方差不可处理的早期迭代阶段):执行仅使用动量的步骤 $ \theta_t = \theta_{t-1} - \alpha \, \hat{m}_t $,等价于带动量的随机梯度下降。
阈值 $ \rho_t > 4 $ 是使修正分母 $ (\rho_\infty - 4)(\rho_\infty - 2)\rho_t $ 保持良好定义的最小整数;低于该阈值时,闭式方差修正未定义,RAdam 退化为更简单的带动量SGD更新。
实践中的行为
修正因子 $ r_t $ 关于 $ \rho_t $ 单调递增,在 $ \rho_t $ 较小时远低于 1,并在 $ \rho_t \to \rho_\infty $ 时趋近于 1。因此,作为训练步的函数,RAdam 表现为三个阶段:
- 阶段一($ \rho_t \le 4 $):纯粹的带动量 SGD,完全不进行自适应缩放。在默认 $ \beta_2 = 0.999 $ 下,这一阶段通常只持续少数迭代。
- 阶段二($ \rho_t > 4 $,但仍较小):以 $ r_t \ll 1 $ 进行修正后的更新,使得有效学习率远低于 $ \alpha $。这就是隐式的预热(warmup)。
- 阶段三($ \rho_t \to \rho_\infty $):$ r_t \to 1 $,算法等同于经偏差校正的 Adam。
各阶段之间的过渡是平滑的,且仅取决于 $ t $ 和 $ \beta_2 $,而不依赖于梯度的统计特性。这使得预热调度与数据无关,并将预热长度从超参数列表中移除。
与相关优化器的比较
- Adam。当 $ t \to \infty $ 且 $ r_t \to 1 $ 时,RAdam 退化为 Adam。两者仅在早期阶段不同:RAdam 在该阶段乘以 $ r_t < 1 $,或者完全跳过自适应分母。
- 带预热的 Adam(warmup)。标准的线性预热调度是一种手动启发式方法,它在固定的步数内将基础学习率从零线性提升到 $ \alpha $。RAdam 用一个仅依赖于 $ \beta_2 $ 的解析推导的调度替换了这一启发式方法。
- AdamW。AdamW 修正了 Adam 将权重衰减与自适应分母耦合的方式。AdamW 和 RAdam 是正交的修改,有时会被组合为 RAdamW。
- 带动量的 SGD。RAdam 的阶段一恰好就是带动量的 SGD,且共享相同的 $ \beta_1 $。在许多视觉任务中,SGD 的泛化能力优于 Adam;RAdam 仅能在最初的极少数迭代中继承这一性质,之后便转变为一种自适应方法。
- LookAhead。LookAhead 是一种包装器,它周期性地在快速的内部优化器和慢速的权重集合之间进行插值。它同样与 RAdam 正交,且二者的组合 "Ranger"(RAdam 加 LookAhead)在计算机视觉实践中是一种流行的选择。
超参数与默认值
RAdam 保留了 Adam 的接口。推荐的默认值为 $ \alpha = 10^{-3} $(或针对具体任务调整)、$ \beta_1 = 0.9 $、$ \beta_2 = 0.999 $ 和 $ \epsilon = 10^{-8} $。关键的实际差异在于:预热(warmup)长度这一超参数被移除;预热调度现在隐含于 $ \beta_2 $ 的选择之中。从 "Adam 加预热" 配方迁移过来的从业者通常会发现,手动的预热步骤可以删除而不损失最终准确率,并且常常在稳定性上略有提升。
局限性
方差的推导假设梯度样本是平稳的且各步之间近似独立,这在实践中并不完全成立(小批量之间存在相关性,学习率衰减也会改变梯度分布)。从经验上看,即便在这些假设被违反时,RAdam 仍然表现良好,但其理论保证比公式的简洁性所暗示的要弱。RAdam 还继承了 Adam 在某些图像分类基准上相对于精调过的 SGD 较差的泛化性能;修正解决的是早期的不稳定性,而不是更广泛的泛化差距。最后,该修正只提供了一个固定形态的类预热(warmup)调度;那些受益于更长或特定形状预热的任务(非常大的神经网络、极端批大小)在 RAdam 之上可能仍需额外调参。