news 2026/4/18 11:02:01

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:10:43

2026现在这个时代,C语言真的不行了吗?

C语言在2026年(以及可预见的未来)绝对没有“不行了”,它依然至关重要且不可替代。 那些宣称C语言“不行”或“过时”的说法,往往忽略了它在现代计算基础设施中扮演的核心、底层、高性能角色。C语言在2026年依然强大且不可或缺的原…

作者头像 李华
网站建设 2026/4/18 10:50:36

人工智能治安管控系统

人工智能治安管控系统 基于大数据平台的人工智能治安管控系统,实现人脸识别和视频行为分析功能。通过人脸识别技术,实现实时监控、路人抓拍、人脸库检索、重点人员布控、路人检索、报警信息查询;采用视频行为分析技术,对非法闯入、…

作者头像 李华
网站建设 2026/4/18 7:57:57

互补自激多谐震荡电路(非稳态)

目录 0 概述 1 互补自激多谐震荡电路(非稳态)原理分析 1.1 不考虑电容 1.2 过程1 1.3 过程2 1.4 Multisim仿真分析 摘要 互补自激多谐振荡电路采用NPN+PNP三极管推挽结构,通过电容充放电实现无稳态翻转输出方波。该电路具有结构简单(仅需2个三极管和RC元件)、带载能…

作者头像 李华
网站建设 2026/4/17 18:01:49

基于五维几何不变性特征融合的机械故障诊断方法(Python)

代码实现了一个基于五维几何理论融合的机械故障诊断模型。 首先系统从振动信号文件中加载数据,对原始振动信号进行去直流分量和标准化预处理,然后将长信号分割成固定长度的样本段。核心创新在于同时运用五种不同的几何理论(仿射几何、共形几…

作者头像 李华
网站建设 2026/4/18 7:51:56

【Java 新手必看】逻辑运算符:从原理到实战,附可运行代码案例

逻辑运算符是 Java 实现 “条件判断、逻辑组合” 的核心工具,也是 if/else、while 等流程控制语句的基础。新手常混淆 “短路与 / 或” 和 “非短路” 的区别,这篇笔记结合可直接运行的代码案例,从概念、用法到避坑指南,帮你彻底吃…

作者头像 李华
网站建设 2026/4/17 16:02:23

测试OK的Android 8.0开机启动方案汇总

测试OK的Android 8.0开机启动方案汇总 在Android 8.0系统中实现自定义脚本的开机自动执行,是嵌入式开发、设备定制和自动化运维中的常见需求。但很多开发者会发现:脚本明明写对了,手动执行也没问题,一到开机就静默失败——背后往…

作者头像 李华