深度学习中的优化器之Yogi算法原理与自适应学习率机制
字数 2834 2025-12-15 20:05:26

深度学习中的优化器之Yogi算法原理与自适应学习率机制

题目描述
Yogi优化器是Adam类自适应学习率算法的一个改进变体,专门针对Adam在某些情况下可能出现的收敛问题而设计。它通过修改二阶矩估计的更新方式,在梯度稀疏或噪声较大的场景下表现更稳定。需要你理解Yogi的核心思想、数学更新规则、与Adam的区别,以及其自适应学习率机制如何提升训练稳定性。


解题过程

第一步:回顾Adam优化器的基本框架
Adam结合了动量(一阶矩估计)和自适应学习率(二阶矩估计)两大思想:

  1. 一阶矩估计(动量):
    \(m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t\)
    其中 \(g_t\) 为当前梯度,\(\beta_1\) 通常取0.9,用于平滑梯度方向。
  2. 二阶矩估计(自适应学习率):
    \(v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2\)
    其中 \(\beta_2\) 通常取0.999,用于估计梯度的平方(即方差)。
  3. 偏差校正
    由于初始时刻 \(m_0 = 0, v_0 = 0\),需要校正:
    \(\hat{m}_t = \frac{m_t}{1-\beta_1^t}\), \(\hat{v}_t = \frac{v_t}{1-\beta_2^t}\)
  4. 参数更新
    \(\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t\)
    其中 \(\eta\) 为学习率,\(\epsilon\) 为小常数(如1e-8)防止除零。

Adam的问题在于:当梯度 \(g_t\) 突然变大时,二阶矩估计 \(v_t\) 可能急剧增加,导致学习率过度下降,使得参数更新停滞。


第二步:理解Yogi对二阶矩估计的改进
Yogi的核心创新是修改二阶矩估计的更新公式,将Adam中的“指数移动平均”改为“自适应增量更新”。原始Adam的二阶矩更新为:
\(v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2\)
Yogi将其替换为:
\(v_t = v_{t-1} - (1-\beta_2) \cdot \text{sign}(v_{t-1} - g_t^2) \cdot g_t^2\)

更常用的等价写法(论文中形式):
\(v_t = v_{t-1} - (1-\beta_2) \cdot v_{t-1} + (1-\beta_2) \cdot g_t^2 \quad \text{(当 \( g_t^2 < v_{t-1}\) 时)} \)
\(v_t = v_{t-1} \quad \text{(当 \( g_t^2 \ge v_{t-1}\) 时)} \)

实际简化后的统一公式为:
\(v_t = v_{t-1} + (1-\beta_2) \cdot (g_t^2 - v_{t-1} \cdot \text{sign}(g_t^2 - v_{t-1}))\)

物理意义

  • \(g_t^2\)(当前梯度平方)大于历史估计 \(v_{t-1}\) 时,Yogi仅增加少量到 \(v_t\)(更新幅度受限)。
  • \(g_t^2\) 小于历史估计时,Yogi会减少 \(v_t\),但减少幅度也受限制。
    这样,Yogi避免了Adam中因 \(g_t^2\) 突增导致 \(v_t\) 剧增的问题,使学习率变化更平缓。

第三步:Yogi的完整算法步骤

  1. 初始化:参数 \(\theta_0\),一阶矩 \(m_0 = 0\),二阶矩 \(v_0 = 0\),超参数 \(\beta_1, \beta_2 \in (0,1)\),学习率 \(\eta\),常数 \(\epsilon\)
  2. 循环迭代(对于第 \(t\) 步):
    a. 计算当前梯度 \(g_t = \nabla_\theta L(\theta_{t-1})\)
    b. 更新一阶矩(与Adam相同):
    \(m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t\)
    c. 更新二阶矩(Yogi特有):
    \(v_t = v_{t-1} + (1-\beta_2) \cdot (g_t^2 - v_{t-1} \cdot \text{sign}(g_t^2 - v_{t-1}))\)
    d. 偏差校正:
    \(\hat{m}_t = \frac{m_t}{1-\beta_1^t}\), \(\hat{v}_t = \frac{v_t}{1-\beta_2^t}\)
    e. 参数更新:
    \(\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t\)

第四步:分析Yogi的自适应学习率机制

  • 学习率调整:更新步长为 \(\frac{\eta}{\sqrt{\hat{v}_t} + \epsilon}\)。由于Yogi限制了 \(v_t\) 的突变,使得 \(\sqrt{\hat{v}_t}\) 变化更平滑,从而学习率不会因单个大梯度而骤降。
  • 与Adam对比
    • Adam中,\(v_t\) 可能因 \(g_t^2\) 突增而快速上升,导致后续学习率过小,收敛变慢。
    • Yogi通过 \(\text{sign}(g_t^2 - v_{t-1})\) 控制更新方向,当 \(g_t^2\) 大于 \(v_{t-1}\) 时仅增加少量,防止 \(v_t\) 膨胀过快。
  • 适用场景:Yogi在梯度稀疏(如自然语言处理任务)或噪声较大的优化问题中表现更好,因为其能稳定学习率调整。

第五步:总结Yogi的优势与局限
优势

  1. 对异常梯度更鲁棒,避免学习率过早衰减。
  2. 在非凸优化中常达到比Adam更稳定的收敛。
  3. 超参数设置与Adam相似(通常 \(\beta_1=0.9, \beta_2=0.999\)),易于使用。

局限

  1. 计算稍复杂于Adam,但实际开销可忽略。
  2. 在某些平滑梯度问题上,性能与Adam相当,优势不明显。

实践建议:当使用Adam出现训练不稳定或收敛缓慢时,可尝试替换为Yogi,尤其适用于推荐系统、Transformer等梯度分布不均匀的模型。

深度学习中的优化器之Yogi算法原理与自适应学习率机制 题目描述 Yogi优化器是Adam类自适应学习率算法的一个改进变体,专门针对Adam在某些情况下可能出现的收敛问题而设计。它通过修改二阶矩估计的更新方式,在梯度稀疏或噪声较大的场景下表现更稳定。需要你理解Yogi的核心思想、数学更新规则、与Adam的区别,以及其自适应学习率机制如何提升训练稳定性。 解题过程 第一步:回顾Adam优化器的基本框架 Adam结合了动量(一阶矩估计)和自适应学习率(二阶矩估计)两大思想: 一阶矩估计 (动量): \( m_ t = \beta_ 1 m_ {t-1} + (1-\beta_ 1) g_ t \) 其中 \( g_ t \) 为当前梯度,\( \beta_ 1 \) 通常取0.9,用于平滑梯度方向。 二阶矩估计 (自适应学习率): \( v_ t = \beta_ 2 v_ {t-1} + (1-\beta_ 2) g_ t^2 \) 其中 \( \beta_ 2 \) 通常取0.999,用于估计梯度的平方(即方差)。 偏差校正 : 由于初始时刻 \( m_ 0 = 0, v_ 0 = 0 \),需要校正: \( \hat{m}_ t = \frac{m_ t}{1-\beta_ 1^t} \), \( \hat{v}_ t = \frac{v_ t}{1-\beta_ 2^t} \)。 参数更新 : \( \theta_ t = \theta_ {t-1} - \frac{\eta}{\sqrt{\hat{v}_ t} + \epsilon} \hat{m}_ t \) 其中 \( \eta \) 为学习率,\( \epsilon \) 为小常数(如1e-8)防止除零。 Adam的问题在于:当梯度 \( g_ t \) 突然变大时,二阶矩估计 \( v_ t \) 可能急剧增加,导致学习率过度下降,使得参数更新停滞。 第二步:理解Yogi对二阶矩估计的改进 Yogi的核心创新是修改二阶矩估计的更新公式,将Adam中的“指数移动平均”改为“自适应增量更新”。原始Adam的二阶矩更新为: \( v_ t = \beta_ 2 v_ {t-1} + (1-\beta_ 2) g_ t^2 \) Yogi将其替换为: \( v_ t = v_ {t-1} - (1-\beta_ 2) \cdot \text{sign}(v_ {t-1} - g_ t^2) \cdot g_ t^2 \) 更常用的等价写法(论文中形式): \( v_ t = v_ {t-1} - (1-\beta_ 2) \cdot v_ {t-1} + (1-\beta_ 2) \cdot g_ t^2 \quad \text{(当 \( g_ t^2 < v_ {t-1} \) 时)} \) \( v_ t = v_ {t-1} \quad \text{(当 \( g_ t^2 \ge v_ {t-1} \) 时)} \) 实际简化后的统一公式为: \( v_ t = v_ {t-1} + (1-\beta_ 2) \cdot (g_ t^2 - v_ {t-1} \cdot \text{sign}(g_ t^2 - v_ {t-1})) \) 物理意义 : 当 \( g_ t^2 \)(当前梯度平方)大于历史估计 \( v_ {t-1} \) 时,Yogi仅增加少量到 \( v_ t \)(更新幅度受限)。 当 \( g_ t^2 \) 小于历史估计时,Yogi会减少 \( v_ t \),但减少幅度也受限制。 这样,Yogi避免了Adam中因 \( g_ t^2 \) 突增导致 \( v_ t \) 剧增的问题,使学习率变化更平缓。 第三步:Yogi的完整算法步骤 初始化 :参数 \( \theta_ 0 \),一阶矩 \( m_ 0 = 0 \),二阶矩 \( v_ 0 = 0 \),超参数 \( \beta_ 1, \beta_ 2 \in (0,1) \),学习率 \( \eta \),常数 \( \epsilon \)。 循环迭代 (对于第 \( t \) 步): a. 计算当前梯度 \( g_ t = \nabla_ \theta L(\theta_ {t-1}) \)。 b. 更新一阶矩(与Adam相同): \( m_ t = \beta_ 1 m_ {t-1} + (1-\beta_ 1) g_ t \)。 c. 更新二阶矩(Yogi特有): \( v_ t = v_ {t-1} + (1-\beta_ 2) \cdot (g_ t^2 - v_ {t-1} \cdot \text{sign}(g_ t^2 - v_ {t-1})) \)。 d. 偏差校正: \( \hat{m}_ t = \frac{m_ t}{1-\beta_ 1^t} \), \( \hat{v} t = \frac{v_ t}{1-\beta_ 2^t} \)。 e. 参数更新: \( \theta_ t = \theta {t-1} - \frac{\eta}{\sqrt{\hat{v}_ t} + \epsilon} \hat{m}_ t \)。 第四步:分析Yogi的自适应学习率机制 学习率调整 :更新步长为 \( \frac{\eta}{\sqrt{\hat{v}_ t} + \epsilon} \)。由于Yogi限制了 \( v_ t \) 的突变,使得 \( \sqrt{\hat{v}_ t} \) 变化更平滑,从而学习率不会因单个大梯度而骤降。 与Adam对比 : Adam中,\( v_ t \) 可能因 \( g_ t^2 \) 突增而快速上升,导致后续学习率过小,收敛变慢。 Yogi通过 \(\text{sign}(g_ t^2 - v_ {t-1})\) 控制更新方向,当 \( g_ t^2 \) 大于 \( v_ {t-1} \) 时仅增加少量,防止 \( v_ t \) 膨胀过快。 适用场景 :Yogi在梯度稀疏(如自然语言处理任务)或噪声较大的优化问题中表现更好,因为其能稳定学习率调整。 第五步:总结Yogi的优势与局限 优势 : 对异常梯度更鲁棒,避免学习率过早衰减。 在非凸优化中常达到比Adam更稳定的收敛。 超参数设置与Adam相似(通常 \( \beta_ 1=0.9, \beta_ 2=0.999 \)),易于使用。 局限 : 计算稍复杂于Adam,但实际开销可忽略。 在某些平滑梯度问题上,性能与Adam相当,优势不明显。 实践建议 :当使用Adam出现训练不稳定或收敛缓慢时,可尝试替换为Yogi,尤其适用于推荐系统、Transformer等梯度分布不均匀的模型。