news 2026/6/12 3:04:47

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/6/5 15:53:29

CoDeSys入门实战一起学习(二十):布尔、整型、实数、字符串、时间5大类标准数据类型详解(附实战案例)

写CoDeSys程序的第一步,必然是声明变量/常量,而所有声明都离不开数据类型。CoDeSys的标准数据类型完全遵循IEC61131-3标准,共分为布尔、整型、实数、字符串、时间5大类,是所有PLC程序的“基础积木”。很多新手容易踩坑&#xff1a…

作者头像 李华
网站建设 2026/6/8 10:28:49

KingbaseES数据库瓶颈排查实战指南:从实例到语句的全维度解析

在高并发、海量数据的业务场景下,数据库性能直接决定了应用系统的响应速度和稳定性,而瓶颈排查则是性能调优的核心前提——只有精准定位问题根源,才能避免盲目调参、优化无效的内耗。KingbaseES作为国产数据库中的优秀代表,在政务…

作者头像 李华
网站建设 2026/6/10 15:00:00

巡防勤务可视化管理

巡防勤务可视化管理 巡防勤务管理可视化系统,基于大数据平台的警务地理信息系统,可以实时查看警力在岗状态、警力分布、应急资源等。系统支持快速定位警员、车辆的位置,查看警力详细信息,调取监控视频画面,并进行单方…

作者头像 李华
网站建设 2026/5/29 7:40:40

想把网页保存成PDF文件,快速删掉侧边栏广告再打印

想要把网页保存成PDF文件的时候经常会有右侧左侧侧边栏挡住主要内容。怎么办呢? 打开 开发者模式 在 console 里粘贴以下,回车,就好了! // 隐藏所有可能包含侧边栏的常见元素 var style document.createElement(style); style.in…

作者头像 李华
网站建设 2026/6/11 4:57:47

深度学习之第八课迁移学习(残差网络ResNet)

目录 简介 一、迁移学习 1.什么是迁移学习 2. 迁移学习的步骤 二、残差网络ResNet 1.了解ResNet 2.ResNet网络—残差结构 三、代码分析 1. 导入必要的库 2. 模型准备(迁移学习) 3. 数据预处理 4. 自定义数据集类 5. 数据加载器 6. 设备配置 7. 训练函数 8. 测…

作者头像 李华
网站建设 2026/6/10 5:09:00

计算机视觉系列之opencv语法基础案例分析之银行卡号识别

简介 计算机视觉系列第一课opencv语法(一)保姆级教学 计算机视觉系列第一课opencv语法(二)保姆级教学 计算机视觉系列第一课opencv语法(三)保姆级教学 [计算机视觉第一课opencv(四)保姆级教学][opencv 3] 关于计算机视觉的基础内容我们之前已经说完了,今天我们就来用…

作者头像 李华