深度学习优化器详解

深度学习优化器详解

第一阶段:基础优化器

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
  • 始终配合适当的学习率调度
  • 监控训练过程,根据任务特性调整优化器

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

相关推荐
锋行天下21 小时前
公司内网部署大模型的探索之路
前端·人工智能·后端
背心2块钱包邮1 天前
第7节——积分技巧(Integration Techniques)-代换积分法
人工智能·python·深度学习·matplotlib
无心水1 天前
【分布式利器:大厂技术】4、字节跳动高性能架构:Kitex+Hertz+BytePS,实时流与AI的极致优化
人工智能·分布式·架构·kitex·分布式利器·字节跳动分布式·byteps
阿正的梦工坊1 天前
DreamGym:通过经验合成实现代理学习的可扩展化
人工智能·算法·大模型·llm
PixelMind1 天前
【超分辨率专题】FlashVSR:单步Diffusion的再次提速,实时视频超分不是梦!
深度学习·音视频·超分辨率·vsr
湘-枫叶情缘1 天前
人脑生物芯片作为“数字修炼世界”终极载体的技术前景、伦理挑战与实现路径
人工智能
噜~噜~噜~1 天前
偏导数和全导数的个人理解
深度学习·偏导数·梯度·全导数
Aaron15881 天前
侦察、测向、识别、干扰一体化平台系统技术实现
人工智能·fpga开发·硬件架构·边缘计算·信息与通信·射频工程·基带工程
维维180-3121-14551 天前
作物模型的未来:DSSAT与机器学习、遥感及多尺度模拟的融合
人工智能·生态学·农业遥感·作物模型·地理学·农学
lx7416026981 天前
change-detection关于llm方向的任务与优化
深度学习