随机梯度下降(SGD)算法中Momentum、RMSProp、Adam三种优化器的详细数学推导与对比
字数 2685 2025-12-11 14:07:33

随机梯度下降(SGD)算法中Momentum、RMSProp、Adam三种优化器的详细数学推导与对比


题目描述

随机梯度下降(SGD)是训练神经网络的常用优化方法,但基础的SGD在复杂非凸优化中常面临收敛慢、震荡剧烈等问题。为此,研究者提出了多种自适应优化器,其中Momentum、RMSProp、Adam 最为经典。
本题要求:

  1. 从SGD的更新规则出发,逐步推导Momentum、RMSProp、Adam的数学形式。
  2. 解释每种方法的核心思想(如动量、自适应学习率等)。
  3. 对比三者的优缺点及适用场景。

解题过程

步骤1:基础SGD的更新规则

设损失函数为 \(L(\theta)\),其中 \(\theta\) 是模型参数。SGD每次随机采样一个样本(或小批量),计算梯度 \(g_t = \nabla_\theta L(\theta_t)\),更新规则为:

\[\theta_{t+1} = \theta_t - \eta \cdot g_t \]

其中 \(\eta\) 是固定学习率。
问题:梯度方向可能震荡,尤其在高曲率区域,导致收敛缓慢。


步骤2:Momentum(动量法)的推导

核心思想:引入“动量”模拟物理惯性,累积历史梯度方向,平滑更新路径。

  1. 定义动量变量 \(m_t\),初始 \(m_0 = 0\)
  2. 每次迭代用指数加权平均更新动量:

\[m_t = \beta m_{t-1} + (1 - \beta) g_t \]

其中 \(\beta \in [0,1)\) 是动量衰减系数(通常取0.9)。
3. 参数更新使用动量而非原始梯度:

\[\theta_{t+1} = \theta_t - \eta \cdot m_t \]

物理意义

  • 当梯度方向一致时,动量累积加速收敛。
  • 当梯度方向变化时,动量减少震荡。

步骤3:RMSProp的推导

核心思想:自适应调整每个参数的学习率,根据历史梯度平方的指数平均调整步长。

  1. 定义梯度平方的指数加权平均 \(v_t\)(初始 \(v_0 = 0\)):

\[v_t = \gamma v_{t-1} + (1 - \gamma) g_t^2 \]

其中 \(g_t^2\) 表示逐元素平方,\(\gamma \in [0,1)\) 通常取0.9。
2. 参数更新时,用 \(\sqrt{v_t}\) 归一化学习率:

\[\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{v_t + \epsilon}} \cdot g_t \]

其中 \(\epsilon\) 是为数值稳定性添加的小常数(如 \(10^{-8}\))。
作用

  • 梯度较大的参数,其 \(v_t\) 较大,从而减小步长;梯度较小的参数则增大步长。
  • 适用于稀疏梯度或非平稳目标问题(如RNN训练)。

步骤4:Adam的推导

核心思想:结合动量法(一阶矩估计)和RMSProp(二阶矩估计),并添加偏差校正。

  1. 计算一阶矩(动量)

\[m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \]

  1. 计算二阶矩(梯度平方的指数平均)

\[v_t = \beta_2 v_{t-2} + (1 - \beta_2) g_t^2 \]

通常 \(\beta_1=0.9, \beta_2=0.999\)
3. 偏差校正:由于 \(m_t, v_t\) 初始为0,训练初期会偏向0,需校正:

\[\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \]

  1. 更新参数

\[\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \cdot \hat{m}_t \]

优势

  • 兼顾动量加速和自适应学习率。
  • 偏差校正使初期更新更稳定。

步骤5:三种优化器的对比

优化器 核心机制 优点 缺点 适用场景
Momentum 累积历史梯度方向 加速收敛,减少震荡 学习率仍需手动调节 梯度方向较一致的优化问题
RMSProp 按梯度平方调整学习率 自适应学习率,适合非平稳目标 缺少动量,可能困于局部最优点 RNN、稀疏梯度任务
Adam 动量 + 自适应学习率 + 偏差校正 通常收敛快,对超参数鲁棒 可能在某些任务上泛化性能略差 大多数深度学习任务(默认选择)

关键区别

  1. 动量法仅调整更新方向,不调整步长大小。
  2. RMSProp 自适应调整步长,但未利用历史梯度方向。
  3. Adam 综合两者,且通过偏差校正改善初期稳定性。

总结

  • Momentum 可视为“带动量的SGD”,主要解决梯度震荡。
  • RMSProp 源于AdaGrad,通过梯度平方的指数平均调整学习率。
  • Adam 是Momentum与RMSProp的结合,并加入偏差校正,成为目前最常用的优化器之一。

实际应用中,可先用Adam快速收敛,再用SGD或Momentum微调以获得更好泛化性能。

随机梯度下降(SGD)算法中Momentum、RMSProp、Adam三种优化器的详细数学推导与对比 题目描述 随机梯度下降(SGD)是训练神经网络的常用优化方法,但基础的SGD在复杂非凸优化中常面临收敛慢、震荡剧烈等问题。为此,研究者提出了多种自适应优化器,其中 Momentum、RMSProp、Adam 最为经典。 本题要求: 从SGD的更新规则出发,逐步推导Momentum、RMSProp、Adam的数学形式。 解释每种方法的核心思想(如动量、自适应学习率等)。 对比三者的优缺点及适用场景。 解题过程 步骤1:基础SGD的更新规则 设损失函数为 \( L(\theta) \),其中 \( \theta \) 是模型参数。SGD每次随机采样一个样本(或小批量),计算梯度 \( g_ t = \nabla_ \theta L(\theta_ t) \),更新规则为: \[ \theta_ {t+1} = \theta_ t - \eta \cdot g_ t \] 其中 \( \eta \) 是固定学习率。 问题 :梯度方向可能震荡,尤其在高曲率区域,导致收敛缓慢。 步骤2:Momentum(动量法)的推导 核心思想 :引入“动量”模拟物理惯性,累积历史梯度方向,平滑更新路径。 定义动量变量 \( m_ t \),初始 \( m_ 0 = 0 \)。 每次迭代用指数加权平均更新动量: \[ m_ t = \beta m_ {t-1} + (1 - \beta) g_ t \] 其中 \( \beta \in [ 0,1) \) 是动量衰减系数(通常取0.9)。 参数更新使用动量而非原始梯度: \[ \theta_ {t+1} = \theta_ t - \eta \cdot m_ t \] 物理意义 : 当梯度方向一致时,动量累积加速收敛。 当梯度方向变化时,动量减少震荡。 步骤3:RMSProp的推导 核心思想 :自适应调整每个参数的学习率,根据历史梯度平方的指数平均调整步长。 定义梯度平方的指数加权平均 \( v_ t \)(初始 \( v_ 0 = 0 \)): \[ v_ t = \gamma v_ {t-1} + (1 - \gamma) g_ t^2 \] 其中 \( g_ t^2 \) 表示逐元素平方,\( \gamma \in [ 0,1) \) 通常取0.9。 参数更新时,用 \( \sqrt{v_ t} \) 归一化学习率: \[ \theta_ {t+1} = \theta_ t - \frac{\eta}{\sqrt{v_ t + \epsilon}} \cdot g_ t \] 其中 \( \epsilon \) 是为数值稳定性添加的小常数(如 \( 10^{-8} \))。 作用 : 梯度较大的参数,其 \( v_ t \) 较大,从而减小步长;梯度较小的参数则增大步长。 适用于稀疏梯度或非平稳目标问题(如RNN训练)。 步骤4:Adam的推导 核心思想 :结合动量法(一阶矩估计)和RMSProp(二阶矩估计),并添加偏差校正。 计算一阶矩(动量) : \[ m_ t = \beta_ 1 m_ {t-1} + (1 - \beta_ 1) g_ t \] 计算二阶矩(梯度平方的指数平均) : \[ v_ t = \beta_ 2 v_ {t-2} + (1 - \beta_ 2) g_ t^2 \] 通常 \( \beta_ 1=0.9, \beta_ 2=0.999 \)。 偏差校正 :由于 \( m_ t, v_ t \) 初始为0,训练初期会偏向0,需校正: \[ \hat{m}_ t = \frac{m_ t}{1 - \beta_ 1^t}, \quad \hat{v}_ t = \frac{v_ t}{1 - \beta_ 2^t} \] 更新参数 : \[ \theta_ {t+1} = \theta_ t - \frac{\eta}{\sqrt{\hat{v}_ t} + \epsilon} \cdot \hat{m}_ t \] 优势 : 兼顾动量加速和自适应学习率。 偏差校正使初期更新更稳定。 步骤5:三种优化器的对比 | 优化器 | 核心机制 | 优点 | 缺点 | 适用场景 | |--------------|-----------------------------------|------------------------------------------|---------------------------------------|------------------------| | Momentum | 累积历史梯度方向 | 加速收敛,减少震荡 | 学习率仍需手动调节 | 梯度方向较一致的优化问题 | | RMSProp | 按梯度平方调整学习率 | 自适应学习率,适合非平稳目标 | 缺少动量,可能困于局部最优点 | RNN、稀疏梯度任务 | | Adam | 动量 + 自适应学习率 + 偏差校正 | 通常收敛快,对超参数鲁棒 | 可能在某些任务上泛化性能略差 | 大多数深度学习任务(默认选择) | 关键区别 : 动量法 仅调整更新方向,不调整步长大小。 RMSProp 自适应调整步长,但未利用历史梯度方向。 Adam 综合两者,且通过偏差校正改善初期稳定性。 总结 Momentum 可视为“带动量的SGD”,主要解决梯度震荡。 RMSProp 源于AdaGrad,通过梯度平方的指数平均调整学习率。 Adam 是Momentum与RMSProp的结合,并加入偏差校正,成为目前最常用的优化器之一。 实际应用中,可先用Adam快速收敛,再用SGD或Momentum微调以获得更好泛化性能。