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

PyTorch torch.optim 优化器介绍与论文

目录

    • 概述
    • 常用优化器
      • 1. **SGD** (Stochastic Gradient Descent) - 随机梯度下降
      • 2. **Adam** (Adaptive Moment Estimation) ⭐ 最常用
      • 3. **AdamW** (Adam with Weight Decay) ⭐ PI0.5 使用
      • 4. **RMSprop** (Root Mean Square Propagation)
      • 5. **Adagrad** (Adaptive Gradient)
      • 6. **Adadelta**
      • 7. **Adamax**
      • 8. **RAdam** (Rectified Adam)
      • 9. **LBFGS** (Limited-memory BFGS)
    • 优化器对比表
    • 在 LeRobot 中的使用
      • PI0.5 配置
    • 选择建议
      • 推荐使用
      • 特殊场景
    • 关键论文总结
    • 参考资料
    • 总结

概述

torch.optim是 PyTorch 提供的优化器模块,包含多种梯度下降优化算法。

常用优化器

1.SGD(Stochastic Gradient Descent) - 随机梯度下降

简介:最基础的优化算法,使用固定学习率更新参数。

公式

v_t = momentum × v_{t-1} + g_t θ_t = θ_{t-1} - lr × v_t

特点

  • 简单稳定
  • 收敛速度较慢
  • 适合凸优化问题

论文

  • 原始 SGD

    • Stochastic Approximation
    • 链接:https://projecteuclid.org/journals/annals-of-mathematical-statistics/volume-22/issue-3/Stochastic-approximation/10.1214/aoms/1177729586.full
    • 作者:Herbert Robbins, Sutton Monro
    • 年份:1951
  • Momentum SGD

    • On the importance of initialization and momentum in deep learning
    • 链接:https://proceedings.mlr.press/v28/sutskever13.html
    • 作者:Ilya Sutskever, et al.
    • 年份:2013

使用示例

optimizer=torch.optim.SGD(model.parameters(),lr=0.01,momentum=0.9)

2.Adam(Adaptive Moment Estimation) ⭐ 最常用

简介:自适应学习率优化器,结合了动量和自适应学习率。

公式

m_t = β₁ × m_{t-1} + (1 - β₁) × g_t # 一阶矩估计 v_t = β₂ × v_{t-1} + (1 - β₂) × g_t² # 二阶矩估计 m̂_t = m_t / (1 - β₁^t) # 偏差修正 v̂_t = v_t / (1 - β₂^t) θ_t = θ_{t-1} - lr × m̂_t / (√v̂_t + ε)

特点

  • ✅ 自适应学习率
  • ✅ 收敛速度快
  • ✅ 对超参数不敏感
  • ✅ 适合大多数深度学习任务

论文

  • Adam: A Method for Stochastic Optimization
    • 链接:https://arxiv.org/abs/1412.6980
    • 作者:Diederik P. Kingma, Jimmy Ba
    • 年份:2014
    • 引用:~100,000+

使用示例

optimizer=torch.optim.Adam(model.parameters(),lr=0.001,betas=(0.9,0.999))

3.AdamW(Adam with Weight Decay) ⭐ PI0.5 使用

简介:Adam 的改进版本,修正了权重衰减的实现。

关键改进

  • 将权重衰减从梯度中分离
  • 更正确的 L2 正则化实现
  • 通常比 Adam 效果更好

公式

m_t = β₁ × m_{t-1} + (1 - β₁) × g_t v_t = β₂ × v_{t-1} + (1 - β₂) × g_t² m̂_t = m_t / (1 - β₁^t) v̂_t = v_t / (1 - β₂^t) θ_t = θ_{t-1} - lr × [m̂_t / (√v̂_t + ε) + weight_decay × θ_{t-1}]

特点

  • ✅ 修正了 Adam 的权重衰减问题
  • ✅ 更好的泛化性能
  • ✅ 适合 Transformer 等大模型

论文

  • Decoupled Weight Decay Regularization
    • 链接:https://arxiv.org/abs/1711.05101
    • 作者:Ilya Loshchilov, Frank Hutter
    • 年份:2017
    • 会议:ICLR 2019

使用示例

optimizer=torch.optim.AdamW(model.parameters(),lr=2.5e-5,betas=(0.9,0.95),weight_decay=0.01)

4.RMSprop(Root Mean Square Propagation)

简介:自适应学习率优化器,使用梯度平方的移动平均。

公式

v_t = α × v_{t-1} + (1 - α) × g_t² θ_t = θ_{t-1} - lr × g_t / (√v_t + ε)

特点

  • ✅ 自适应学习率
  • ✅ 适合非平稳目标
  • ✅ RNN 训练效果好

论文

  • Neural Networks for Machine Learning Lecture 6
    • 链接:https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
    • 作者:Geoffrey Hinton
    • 年份:2012

使用示例

optimizer=torch.optim.RMSprop(model.parameters(),lr=0.01,alpha=0.99)

5.Adagrad(Adaptive Gradient)

简介:自适应学习率优化器,累积历史梯度平方。

公式

G_t = G_{t-1} + g_t² θ_t = θ_{t-1} - lr × g_t / (√G_t + ε)

特点

  • ✅ 自动降低学习率
  • ⚠️ 学习率可能过小
  • ⚠️ 适合稀疏梯度

论文

  • Adaptive Subgradient Methods for Online Learning and Stochastic Optimization
    • 链接:https://jmlr.org/papers/v12/duchi11a.html
    • 作者:John Duchi, Elad Hazan, Yoram Singer
    • 年份:2011
    • 会议:JMLR

使用示例

optimizer=torch.optim.Adagrad(model.parameters(),lr=0.01)

6.Adadelta

简介:Adagrad 的改进版本,解决学习率衰减过快的问题。

公式

E[g²]_t = ρ × E[g²]_{t-1} + (1 - ρ) × g_t² Δθ_t = -√(E[Δθ²]_{t-1} + ε) / √(E[g²]_t + ε) × g_t E[Δθ²]_t = ρ × E[Δθ²]_{t-1} + (1 - ρ) × Δθ_t² θ_t = θ_{t-1} + Δθ_t

特点

  • ✅ 不需要手动设置学习率
  • ✅ 解决 Adagrad 学习率衰减问题

论文

  • ADADELTA: An Adaptive Learning Rate Method
    • 链接:https://arxiv.org/abs/1212.5701
    • 作者:Matthew D. Zeiler
    • 年份:2012

使用示例

optimizer=torch.optim.Adadelta(model.parameters(),rho=0.9)

7.Adamax

简介:Adam 的变体,使用无穷范数代替 L2 范数。

公式

m_t = β₁ × m_{t-1} + (1 - β₁) × g_t u_t = max(β₂ × u_{t-1}, |g_t|) θ_t = θ_{t-1} - lr × m_t / (u_t + ε)

特点

  • ✅ 在某些情况下比 Adam 更稳定
  • ✅ 适合稀疏梯度

论文

  • Adam: A Method for Stochastic Optimization(与 Adam 同一篇)
    • 链接:https://arxiv.org/abs/1412.6980
    • 作者:Diederik P. Kingma, Jimmy Ba
    • 年份:2014

使用示例

optimizer=torch.optim.Adamax(model.parameters(),lr=0.002,betas=(0.9,0.999))

8.RAdam(Rectified Adam)

简介:修正 Adam 的方差问题,在训练初期更稳定。

特点

  • ✅ 修正 Adam 的方差问题
  • ✅ 训练初期更稳定
  • ✅ 自适应切换到 SGD

论文

  • On the Variance of the Adaptive Learning Rate and Beyond
    • 链接:https://arxiv.org/abs/1908.03265
    • 作者:Liyuan Liu, et al.
    • 年份:2019
    • 会议:ICLR 2020

注意:PyTorch 原生不支持,需要第三方库。


9.LBFGS(Limited-memory BFGS)

简介:拟牛顿法,使用二阶导数信息。

特点

  • ✅ 收敛速度快(接近二阶方法)
  • ⚠️ 内存占用大
  • ⚠️ 不适合大规模模型

论文

  • Updating Quasi-Newton Matrices with Limited Storage
    • 链接:https://link.springer.com/article/10.1007/BF01589116
    • 作者:Jorge Nocedal
    • 年份:1980

使用示例

optimizer=torch.optim.LBFGS(model.parameters(),lr=1,max_iter=20)

优化器对比表

优化器学习率动量自适应收敛速度推荐度
SGD固定可选⭐⭐
Adam自适应⭐⭐⭐⭐⭐
AdamW自适应⭐⭐⭐⭐⭐
RMSprop自适应⭐⭐⭐
Adagrad自适应⭐⭐
Adadelta自适应⭐⭐⭐

在 LeRobot 中的使用

PI0.5 配置

文件policies/pi05/configuration_pi05.py

optimizer_lr:float=2.5e-5optimizer_betas:tuple[float,float]=(0.9,0.95)optimizer_eps:float=1e-8optimizer_weight_decay:float=0.01

实际使用

optimizer=torch.optim.AdamW(params,lr=2.5e-5,betas=(0.9,0.95),eps=1e-8,weight_decay=0.01)

选择建议

推荐使用

  1. AdamW⭐⭐⭐⭐⭐

    • 大多数深度学习任务
    • Transformer 模型
    • 大模型微调
  2. Adam⭐⭐⭐⭐

    • 通用深度学习
    • 快速原型开发
  3. SGD + Momentum⭐⭐⭐

    • 凸优化问题
    • 需要稳定训练时

特殊场景

  • RNN/LSTM:RMSprop
  • 稀疏梯度:Adagrad, Adamax
  • 小规模模型:LBFGS

关键论文总结

优化器核心论文年份作者
SGDStochastic Approximation1951Robbins & Monro
MomentumOn the importance of initialization and momentum2013Sutskever et al.
AdamAdam: A Method for Stochastic Optimization2014Kingma & Ba
AdamWDecoupled Weight Decay Regularization2017Loshchilov & Hutter
RMSpropNeural Networks Lecture 62012Hinton
AdagradAdaptive Subgradient Methods2011Duchi et al.
AdadeltaADADELTA: An Adaptive Learning Rate Method2012Zeiler
RAdamOn the Variance of the Adaptive Learning Rate2019Liu et al.

参考资料

  • PyTorch 文档:https://pytorch.org/docs/stable/optim.html
  • 优化器可视化:https://ruder.io/optimizing-gradient-descent/
  • Adam 论文:https://arxiv.org/abs/1412.6980
  • AdamW 论文:https://arxiv.org/abs/1711.05101

总结

最推荐AdamW- 修正了 Adam 的权重衰减问题,效果更好

PI0.5 使用AdamW- 配置为lr=2.5e-5, betas=(0.9, 0.95), weight_decay=0.01

http://www.jsqmd.com/news/311202/

相关文章:

  • 基于SpringBoot+Vue的文理医院预约挂号系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 2026年口碑好的事业单位考试公司选哪家
  • QT安装完出现“无法找到执行档,请指定一个。”
  • 金仓数据库KingbaseES无缝替代MongoDB,实现核心业务系统平稳迁移
  • 对象存储oss
  • CoDeSys入门实战一起学习(二十):布尔、整型、实数、字符串、时间5大类标准数据类型详解(附实战案例)
  • CoDeSys入门实战一起学习(二十一):联合体、长时间、宽字符串、引用、指针5种标准扩展类型,解决复杂编程问题
  • CoDeSys入门实战一起学习(二十二):自定义数据类型!数组+结构体+枚举,让程序结构更清晰
  • 2026漯河全屋定制施工队盘点:性价比与口碑兼具的5大选择
  • AI Ping实测:一站式大模型API评测+调用,开发者选型对接效率翻倍
  • 2026年1月漯河装修施工队综合评测与TOP5推荐
  • 2026年评价高的东莞至上饶物流专线口碑排行榜
  • 2026年合肥地区矿山安全检测检验机构专业评选与推荐
  • 合肥矿山地下运矿车安全检测检验服务公司推荐
  • 2026年评价高的大连考研复试班学员信赖榜
  • 在Cursor中使用Anthropic的Skills
  • 2026年至今,这三家自助入住系统服务商凭何赢得市场口碑?
  • 2026年当下合肥有实力的无卡取电系统企业
  • 2026年矿用设备安全检测检验实力企业盘点与推荐
  • 2026年比较好的大连考公省考/大连考公考编实力优选榜
  • centos7-nvidia驱动安装及简单测试
  • 2026年至今高评价PMS服务商深度评测与精选推荐
  • set和map
  • SQL注入知识要点总结
  • 杂记:程序员必知的“大脑奖赏机制”:如何利用及时反馈,像沉迷游戏一样爱上学习和工作?
  • 【大数据毕设选题推荐】Spark+Django实战:癌症数据分析与可视化系统全流程 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 【Python大数据选题】基于Hadoop+Spark奥运会金牌榜可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • Java Web 工作流程管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 【毕业设计】SpringBoot+Vue+MySQL 医药管理系统平台源码+数据库+论文+部署文档
  • RabbitMQ学习笔记