随机梯度下降(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)。
3. 参数更新使用动量而非原始梯度:
\[\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。
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(二阶矩估计),并添加偏差校正。
- 计算一阶矩(动量):
\[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\)。
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} \]
- 更新参数:
\[\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微调以获得更好泛化性能。