深度学习优化器详解

深度学习优化器详解

第一阶段:基础优化器

1.1 动量优化器

动量优化器 - Momentum Optimizer - 无标准缩写 - /moʊˈmɛntəm ˈɒptɪmaɪzər/

直观理解:下坡的保龄球

想象一个保龄球从山坡滚下:

  • 普通梯度下降:像一个人小心翼翼下山
  • 动量法:像保龄球,有惯性,越滚越快
数学本质

核心思想:累积历史梯度信息

vt=γvt−1+η∇J(θt)θt+1=θt−vt \begin{aligned} v_t &= \gamma v_{t-1} + \eta \nabla J(\theta_t) \\ \theta_{t+1} &= \theta_t - v_t \end{aligned} vtθt+1=γvt−1+η∇J(θt)=θt−vt

其中:

  • vtv_tvt:当前速度(动量项)
  • γ\gammaγ:动量系数,通常 γ=0.9\gamma = 0.9γ=0.9
  • η\etaη:学习率
  • ∇J(θt)\nabla J(\theta_t)∇J(θt):当前梯度
优劣对比

优点

  • 加速收敛
  • 减少震荡
  • 有助于跳出局部最优

缺点

  • 可能越过全局最优
  • 需要调节动量系数

1.2 Nesterov加速梯度

Nesterov加速梯度 - Nesterov Accelerated Gradient - NAG - /ˈnɛstərɒv ækˈsɛləreɪtɪd ˈɡreɪdiənt/

直观理解:有预见的保龄球

球在滚动时会"向前看",根据前方地形调整方向

数学本质

前瞻性更新

vt=γvt−1+η∇J(θt−γvt−1)θt+1=θt−vt \begin{aligned} v_t &= \gamma v_{t-1} + \eta \nabla J(\theta_t - \gamma v_{t-1}) \\ \theta_{t+1} &= \theta_t - v_t \end{aligned} vtθt+1=γvt−1+η∇J(θt−γvt−1)=θt−vt

关键区别:梯度计算在 θt−γvt−1\theta_t - \gamma v_{t-1}θt−γvt−1(向前看的位置)

优劣对比

优点

  • 比标准动量收敛更快
  • 对凸函数有更好的理论保证
  • 减少震荡

缺点

  • 实现稍复杂
  • 计算成本略高

第二阶段:自适应学习率优化器

2.1 Adagrad

Adagrad - Adaptive Gradient Algorithm - 无缩写 - /ˈædəɡræd/

直观理解:个性化学习

为每个参数定制学习率:

  • 频繁更新的参数:小学习率(精细调整)
  • 不频繁更新的参数:大学习率(快速跟进)
数学本质

累积梯度平方

Gt=Gt−1+(∇J(θt))2θt+1=θt−ηGt+ϵ⋅∇J(θt) \begin{aligned} G_t &= G_{t-1} + (\nabla J(\theta_t))^2 \\ \theta_{t+1} &= \theta_t - \frac{\eta}{\sqrt{G_t} + \epsilon} \cdot \nabla J(\theta_t) \end{aligned} Gtθt+1=Gt−1+(∇J(θt))2=θt−Gt +ϵη⋅∇J(θt)

其中:

  • GtG_tGt:梯度平方累积
  • ϵ\epsilonϵ:小常数(通常 10−810^{-8}10−8)防止除零
优劣对比

优点

  • 适合稀疏数据
  • 自动调整学习率
  • 对特征频率敏感

缺点

  • 学习率单调递减 → 最终停止学习
  • 对深度网络效果不佳

2.2 Adadelta

Adadelta - Adaptive Delta - 无缩写 - /ə'dædeltə/

直观理解:自我调节的Adagrad

解决Adagrad学习率消失问题,不需要手动设置学习率

数学本质

滑动平均 + 自适应步长

E[g2]t=ρE[g2]t−1+(1−ρ)(∇J(θt))2Δθt=−E[Δθ2]t−1+ϵE[g2]t+ϵ∇J(θt)θt+1=θt+ΔθtE[Δθ2]t=ρE[Δθ2]t−1+(1−ρ)(Δθt)2 \begin{aligned} E[g^2]t &= \rho E[g^2]{t-1} + (1-\rho) (\nabla J(\theta_t))^2 \\ \Delta\theta_t &= - \frac{\sqrt{E[\Delta\theta^2]_{t-1} + \epsilon}}{\sqrt{E[g^2]t + \epsilon}} \nabla J(\theta_t) \\ \theta{t+1} &= \theta_t + \Delta\theta_t \\ E[\Delta\theta^2]t &= \rho E[\Delta\theta^2]{t-1} + (1-\rho) (\Delta\theta_t)^2 \end{aligned} E[g2]tΔθtθt+1E[Δθ2]t=ρE[g2]t−1+(1−ρ)(∇J(θt))2=−E[g2]t+ϵ E[Δθ2]t−1+ϵ ∇J(θt)=θt+Δθt=ρE[Δθ2]t−1+(1−ρ)(Δθt)2

优劣对比

优点

  • 无需设置学习率
  • 解决Adagrad学习率消失问题
  • 对初始学习率不敏感

缺点

  • 早期训练可能不稳定
  • 超参数 ρ\rhoρ 需要调节

2.3 RMSProp

RMSProp - Root Mean Square Propagation - 无缩写 - /ɑːr em es prɒp/

直观理解:Adagrad的改进版

使用指数移动平均代替累积求和。通过引入一个衰减系数,让每回合都衰减一定的比例。

数学本质

梯度平方的指数平均

E[g2]t=γE[g2]t−1+(1−γ)(∇J(θt))2θt+1=θt−ηE[g2]t+ϵ∇J(θt) \begin{aligned} E[g^2]t &= \gamma E[g^2]{t-1} + (1-\gamma) (\nabla J(\theta_t))^2 \\ \theta_{t+1} &= \theta_t - \frac{\eta}{\sqrt{E[g^2]_t} + \epsilon} \nabla J(\theta_t) \end{aligned} E[g2]tθt+1=γE[g2]t−1+(1−γ)(∇J(θt))2=θt−E[g2]t +ϵη∇J(θt)

优劣对比

优点

  • 解决Adagrad学习率衰减问题
  • 在非平稳目标上表现良好
  • 适合RNN训练

缺点

  • 仍然需要设置学习率
  • 学习率可能仍然衰减过快

第三阶段:组合优化器

3.1 Adam

Adam - Adaptive Moment Estimation - 无缩写 - /ˈædəm/

直观理解:动量 + RMSProp

结合了一阶矩估计(动量)和二阶矩估计(自适应学习率)

数学本质

动量 + 自适应学习率

mt=β1mt−1+(1−β1)∇J(θt)vt=β2vt−1+(1−β2)(∇J(θt))2m^t=mt1−β1tv^t=vt1−β2tθt+1=θt−ηv^t+ϵm^t \begin{aligned} m_t &= \beta_1 m_{t-1} + (1-\beta_1) \nabla J(\theta_t) \\ v_t &= \beta_2 v_{t-1} + (1-\beta_2) (\nabla J(\theta_t))^2 \\ \hat{m}_t &= \frac{m_t}{1-\beta_1^t} \\ \hat{v}t &= \frac{v_t}{1-\beta_2^t} \\ \theta{t+1} &= \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \end{aligned} mtvtm^tv^tθt+1=β1mt−1+(1−β1)∇J(θt)=β2vt−1+(1−β2)(∇J(θt))2=1−β1tmt=1−β2tvt=θt−v^t +ϵηm^t

默认参数:β1=0.9\beta_1=0.9β1=0.9, β2=0.999\beta_2=0.999β2=0.999, ϵ=10−8\epsilon=10^{-8}ϵ=10−8

优劣对比

优点

  • 收敛快速稳定
  • 对超参数相对鲁棒
  • 适合大多数深度学习任务

缺点

  • 可能在某些任务上泛化不如SGD
  • 内存占用较大

3.2 AdaMax

AdaMax - Adaptive Moment Estimation with Infinity Norm - 无缩写 - /ˈeɪdəmæks/

直观理解:Adam的无穷范数版本

使用 L∞L_\inftyL∞ 范数代替 L2L_2L2 范数

数学本质

基于无穷范数的自适应

mt=β1mt−1+(1−β1)∇J(θt)ut=max⁡(β2ut−1,∣∇J(θt)∣)m^t=mt1−β1tθt+1=θt−ηutm^t \begin{aligned} m_t &= \beta_1 m_{t-1} + (1-\beta_1) \nabla J(\theta_t) \\ u_t &= \max(\beta_2 u_{t-1}, |\nabla J(\theta_t)|) \\ \hat{m}t &= \frac{m_t}{1-\beta_1^t} \\ \theta{t+1} &= \theta_t - \frac{\eta}{u_t} \hat{m}_t \end{aligned} mtutm^tθt+1=β1mt−1+(1−β1)∇J(θt)=max(β2ut−1,∣∇J(θt)∣)=1−β1tmt=θt−utηm^t

优劣对比

优点

  • 数值稳定性更好
  • 在某些任务上比Adam更稳定
  • 理论性质更优雅

缺点

  • 实践中不一定优于Adam
  • 较少被采用

3.3 Nadam

Nadam - Nesterov-accelerated Adaptive Moment Estimation - 无缩写 - /ˈnædəm/

直观理解:Adam + Nesterov动量

结合了Adam的自适应学习率和Nesterov的前瞻性

数学本质

Nesterov动量的Adam

mt=β1mt−1+(1−β1)∇J(θt)vt=β2vt−1+(1−β2)(∇J(θt))2m^t=mt1−β1t+(1−β1)∇J(θt)1−β1tv^t=vt1−β2tθt+1=θt−ηv^t+ϵm^t \begin{aligned} m_t &= \beta_1 m_{t-1} + (1-\beta_1) \nabla J(\theta_t) \\ v_t &= \beta_2 v_{t-1} + (1-\beta_2) (\nabla J(\theta_t))^2 \\ \hat{m}_t &= \frac{m_t}{1-\beta_1^t} + \frac{(1-\beta_1) \nabla J(\theta_t)}{1-\beta_1^t} \\ \hat{v}t &= \frac{v_t}{1-\beta_2^t} \\ \theta{t+1} &= \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \end{aligned} mtvtm^tv^tθt+1=β1mt−1+(1−β1)∇J(θt)=β2vt−1+(1−β2)(∇J(θt))2=1−β1tmt+1−β1t(1−β1)∇J(θt)=1−β2tvt=θt−v^t +ϵηm^t

优劣对比

优点

  • 结合Nesterov和Adam的优点
  • 通常比Adam收敛更快
  • 对某些问题有更好的理论保证

缺点

  • 实现更复杂
  • 超参数调节更敏感

第四阶段:总结对比与实战应用

4.1 优化器对比总结

优化器 中文名 核心思想 优点 缺点 适用场景
Momentum 动量优化器 惯性加速 减少震荡,加速收敛 可能越过最优 一般优化问题
NAG Nesterov加速梯度 前瞻性动量 收敛更快,更稳定 实现复杂 理论要求高的问题
Adagrad 自适应梯度 个性化学习率 适合稀疏数据 学习率消失 稀疏特征学习
Adadelta Adadelta 自适应步长 无需学习率 早期不稳定 自动调节需求
RMSProp RMSProp 指数平均梯度 解决学习率消失 仍需学习率 RNN,非平稳目标
Adam Adam 动量+自适应 快速稳定,鲁棒 泛化可能稍差 深度学习默认
AdaMax AdaMax 无穷范数Adam 数值稳定 不常用 特定理论需求
Nadam Nadam Nesterov+Adam 收敛最快 超参数敏感 追求极致性能

4.2 实战应用指南

超参数默认值
python 复制代码
# 常用优化器配置
optimizers = {
    'SGD': {'lr': 0.01, 'momentum': 0.9},
    'Adam': {'lr': 0.001, 'betas': (0.9, 0.999)},
    'RMSprop': {'lr': 0.001, 'alpha': 0.9},
    'Adagrad': {'lr': 0.01},
    'Adadelta': {'rho': 0.95}
}
选择策略
  1. 默认选择:Adam(大多数深度学习任务)
  2. 计算机视觉:SGD + Momentum(可能获得更好泛化)
  3. 自然语言处理:Adam或AdamW(带权重衰减)
  4. 强化学习:RMSProp或Adam
  5. 稀疏数据:Adagrad或FTRL
学习率调度配合
python 复制代码
# 结合学习率调度器
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)

4.3 现代最佳实践

  1. AdamW:Adam + 正确的权重衰减
  2. Lookahead:包装任何优化器提升稳定性
  3. RAdam:Rectified Adam,解决早期方差问题
  4. LAMB:Layer-wise Adaptive Moments,适合大batch训练

总结

通过从直观理解到数学本质的递进讲解,我们掌握了:

  • 基础优化器:Momentum、NAG - 解决梯度下降的震荡问题
  • 自适应优化器:Adagrad、Adadelta、RMSProp - 自动调整学习率
  • 组合优化器:Adam、AdaMax、Nadam - 结合动量和自适应学习率

实践建议

  • 从Adam开始,它适合大多数深度学习任务
  • 如果需要更好泛化,尝试SGD + Momentum
  • 始终配合适当的学习率调度
  • 监控训练过程,根据任务特性调整优化器

理解这些优化器的原理和特性,能够帮助我们在实际项目中做出更明智的选择和调优。

相关推荐
Shawn_Shawn4 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
33三 三like6 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a6 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
腾讯云开发者8 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗8 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
yLDeveloper8 小时前
从模型评估、梯度难题到科学初始化:一步步解析深度学习的训练问题
深度学习
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
啊森要自信8 小时前
CANN ops-cv:面向计算机视觉的 AI 硬件端高效算子库核心架构与开发逻辑
人工智能·计算机视觉·架构·cann
2401_836235868 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活