当前位置: 首页 > news >正文

深度学习优化器详解

深度学习优化器详解

第一阶段:基础优化器

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=γvt1+ηJ(θt)=θtvt

其中:

  • 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=γvt1+ηJ(θtγvt1)=θtvt

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

优劣对比

优点

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

缺点

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

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

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=Gt1+(J(θt))2=θtGt+ϵηJ(θt)

其中:

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

优点

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

缺点

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

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]t1+(1ρ)(J(θt))2=E[g2]t+ϵE[Δθ2]t1+ϵJ(θt)=θt+Δθt=ρE[Δθ2]t1+(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]t1+(1γ)(J(θt))2=θtE[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=β1mt1+(1β1)J(θt)=β2vt1+(1β2)(J(θt))2=1β1tmt=1β2tvt=θtv^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}ϵ=108

优劣对比

优点

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

缺点

  • 可能在某些任务上泛化不如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=β1mt1+(1β1)J(θt)=max(β2ut1,∣∇J(θt))=1β1tmt=θtutη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=β1mt1+(1β1)J(θt)=β2vt1+(1β2)(J(θt))2=1β1tmt+1β1t(1β1)J(θt)=1β2tvt=θtv^t+ϵηm^t

优劣对比

优点

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

缺点

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

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

4.1 优化器对比总结

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

4.2 实战应用指南

超参数默认值
# 常用优化器配置
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
学习率调度配合
# 结合学习率调度器
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
  • 始终配合适当的学习率调度
  • 监控训练过程,根据任务特性调整优化器

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

http://www.dtcms.com/a/532490.html

相关文章:

  • 做企业公示的数字证书网站wordpress有识图接口吗
  • 中国商标注册申请官网百度蜘蛛池自动收录seo
  • GitHub 热榜项目 - 日榜(2025-10-26)
  • 数据分析:指标拆解、异动归因类题目
  • 做网站需要那些软件设计建网站
  • Gorm(十二)乐观锁和悲观锁
  • neo4j图数据库笔记
  • 网页网站设计公司有哪些网站排名有什么用
  • 泉州做网站优化哪家好微信推广平台哪里找
  • 如何制作收费网站百度收录个人网站是什么怎么做
  • VsCode + Wsl:终极开发环境搭建指南
  • 深度学习——Logistic回归中的梯度下降法
  • 中国住房和城乡建设网网站学习网站大全
  • 【Android】ViewPager2实现手/自动轮播图
  • 产品营销网站可以做英语翻译兼职的网站
  • jQuery Mobile 图标:全面解析与应用指南
  • Java(File)
  • AI 翻译入门指南:机器如何理解语言
  • 怎样上传网站程序网站数据库怎么配置
  • MySQL相关知识查询表中的内容(第三次作业)
  • h5游戏免费下载:过马路小游戏
  • 昆山建设局网站深圳企业有限公司
  • LangGraph 官方教程:聊天机器人之三
  • Anaconda的常用指令
  • 广州白云区网站开发做网站的公司叫什么名字好
  • 大兴安岭网站建设兼职有哪些网站可以做ppt
  • dfs:选数
  • 2.2.1.3 大数据方法论与实践指南-文档管理规范
  • 【智能制造工厂工业资料集】流程制造智能工厂总体架构及建设路线规划方案(PPT)
  • MFC简单入门学习