深度学习中的优化器之RAdam(Rectified Adam)算法原理与自适应动量校正机制
题目描述
RAdam(Rectified Adam)是一种自适应学习率优化算法,旨在解决Adam等优化器在训练初期由于方差自适应学习率的不稳定而导致的收敛性问题。RAdam通过动态校正自适应学习率的方差,在训练早期使用更保守的更新策略,后期逐渐过渡到标准的Adam更新,从而提升训练的稳定性和最终性能。本题目将详细讲解RAdam的动机、数学推导、算法步骤及其核心的方差校正机制。
1. 问题背景:Adam的早期训练不稳定性
Adam优化器结合了动量(一阶矩估计)和自适应学习率(二阶矩估计),其更新规则为:
- 计算梯度的一阶矩(均值)\(m_t\) 和二阶矩(方差)\(v_t\):
\[ m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \]
\[ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \]
- 偏差校正后更新参数:
\[ \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \]
\[ \theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \]
问题:在训练初期(\(t\) 较小时),二阶矩估计 \(\hat{v}_t\) 的方差较大,导致自适应学习率 \(\alpha / \sqrt{\hat{v}_t}\) 不稳定,可能使参数更新方向震荡,影响收敛。
2. RAdam的核心思想:方差校正
RAdam的关键改进在于分析自适应学习率的方差,并设计一个校正项(rectification)来稳定早期训练。具体步骤:
步骤1:自适应学习率的方差分析
考虑Adam的参数更新项:
\[\Delta_t = \frac{\hat{m}_t}{\sqrt{\hat{v}_t}} \]
在训练初期,\(\hat{v}_t\) 是梯度二阶矩的指数移动平均,其估计可能不准确。RAdam从理论上推导了 \(\Delta_t\) 的方差近似公式,并发现其与一个校正因子 \(\rho_t\) 相关。
步骤2:校正因子 \(\rho_t\) 的计算
定义:
\[\rho_\infty = \frac{2}{1 - \beta_2} - 1 \]
在时间步 \(t\),计算:
\[\rho_t = \rho_\infty - \frac{2t \beta_2^t}{1 - \beta_2^t} \]
- \(\rho_\infty\) 是 \(t \to \infty\) 时的极限值(例如若 \(\beta_2 = 0.999\),则 \(\rho_\infty \approx 1999\))。
- \(\rho_t\) 随 \(t\) 增大而单调递增,在 \(t\) 较小时值较小。
步骤3:方差校正条件
RAdam比较 \(\rho_t\) 与一个阈值(通常为4):
- 如果 \(\rho_t > 4\):认为自适应学习率的方差已稳定,采用标准Adam更新。
- 如果 \(\rho_t \le 4\):认为方差较大,使用校正后的自适应学习率,并退化为带动量的SGD形式。
3. RAdam的算法流程
-
初始化:
- 参数 \(\theta_0\),一阶矩 \(m_0 = 0\),二阶矩 \(v_0 = 0\)。
- 超参数:学习率 \(\alpha\),动量系数 \(\beta_1, \beta_2\),常数 \(\epsilon\)。
-
循环更新(每一步 \(t\)):
(1) 计算梯度 \(g_t = \nabla_\theta L(\theta_{t-1})\)。
(2) 更新一阶矩和二阶矩:
\[ m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \]
\[ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \]
(3) 计算偏差校正:
\[ \hat{m}_t = \frac{m_t}{1 - \beta_1^t} \]
(4) 计算校正因子 \(\rho_t\):
\[ \rho_t = \rho_\infty - \frac{2t \beta_2^t}{1 - \beta_2^t} \]
(5) 判断是否校正:
- 如果 \(\rho_t > 4\):
- 计算校正后的自适应学习率长度:
\[ l_t = \sqrt{ \frac{(1 - \beta_2^t)}{\sqrt{v_t} + \epsilon} \cdot \frac{\rho_t - 4}{\rho_\infty - 4} \cdot \frac{\rho_t}{\rho_\infty} } \]
- 参数更新:
\[ \theta_t = \theta_{t-1} - \alpha \cdot \hat{m}_t \cdot l_t \]
- 否则($ \rho_t \le 4 $):
- 退化为带动量的SGD:
\[ \theta_t = \theta_{t-1} - \alpha \cdot \hat{m}_t \]
4. 算法细节解释
-
校正因子 \(\rho_t\) 的作用:
- \(\rho_t\) 反映了二阶矩估计 \(v_t\) 的可靠性。当 \(\rho_t\) 较小时,说明 \(v_t\) 的方差大,此时避免使用自适应学习率,直接用一阶矩(动量)更新。
- 随着 \(t\) 增大,\(\rho_t\) 超过阈值4,逐渐启用校正后的自适应学习率,平滑过渡到Adam。
-
校正项 \(l_t\) 的设计:
- 公式中的 \(\frac{(1 - \beta_2^t)}{\sqrt{v_t} + \epsilon}\) 对应Adam的自适应学习率部分。
- 乘以 \(\frac{\rho_t - 4}{\rho_\infty - 4} \cdot \frac{\rho_t}{\rho_\infty}\) 是为了在 \(\rho_t\) 刚超过4时,逐步增加自适应学习率的权重,避免突变。
-
退化为动量SGD的意义:
- 在训练早期(\(\rho_t \le 4\)),RAdam忽略二阶矩,直接使用 \(\hat{m}_t\) 更新,相当于带动量的SGD。这避免了早期因自适应学习率不稳定导致的震荡。
5. 算法优势总结
- 稳定早期训练:通过方差校正,减少初始阶段的学习率波动。
- 自适应过渡:随着训练进行,平滑切换到标准Adam,兼顾收敛速度与稳定性。
- 无需手动调整:超参数与Adam相同(\(\alpha, \beta_1, \beta_2\)),无需额外调参。
RAdam在多种任务(如图像分类、语言建模)中表现优于Adam,尤其在训练初期损失下降更稳定,最终精度更高。