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

深度强化学习落地调参技巧

转载文章,学习一下强化学习.

天下苦深度强化学习久矣,这有一份训练与调参技巧手册

https://geek.csdn.net/65d5ab8ab8e5f01e1e460619.html
©作者 | 申岳
单位 | 北京邮电大学
研究方向 | 机器人学习

使用RL的建议

太长不看版

  1. 学习 RL 和 Stable Baselines3
  2. 如有必要,进行定量的实验和超参数调整
  3. 使用单独的测试环境评估效果(记得要检查 wrappers!)
  4. 想要更好的效果,就增加训练预算

目前RL的局限

  1. Sample Inefficient:Model-free RL 算法通常需要大量样本(有时需要上百万次交互)才能学到有用的信息。
  2. 对超参数和随机种子敏感:RL 的结果可能因超参数或随机种子的不同而变化。
  3. Reward Function Design:设计良好的奖励函数需要专业知识和多次迭代。

如何评估RL算法?

  • 使用独立的测试环境评估算法,建议每交互 N 次后测试 n 个 episodes,取平均值作为单个 episode 的 reward。
  • 在测试时,对于 A2C、PPO 等算法,调用 .predict() 时应设置 deterministic=True
  • 查看 training curve 是一种不错的方式,但可能会低估 agent 的真实表现。

我该使用哪种算法?

  • 离散动作空间:DQN
  • 连续动作空间:SAC
  • 扩展版本:DQN 的连续版本 NAF,SAC 的离散版本 SAC-Discrete
  • 并行训练:A2C 和 PPO 适合并行训练,可参考 Vectorized Environment。

创建自定义环境的Tips和Tricks

  • Normalization:尽量对 observation space 和 action space 进行归一化。
  • Reward Shaping:从 shaped reward 开始,简化问题。
  • 测试环境:使用随机动作测试环境是否正常。

示例代码:检查自定义环境是否正常

from stable_baselines3.common.env_checker import check_env

env = CustomEnv(arg1, ...)
check_env(env)  # 检查自定义环境并输出警告

示例代码:使用随机动作测试环境

env = YourEnv()
obs = env.reset()
n_steps = 10
for _ in range(n_steps):
    action = env.action_space.sample()
    obs, reward, done, info = env.step(action)
    if done:
        obs = env.reset()

实现RL算法的Tips和Tricks

  • 步骤
    1. 多次阅读原始论文。
    2. 查看现有实现。
    3. 在简单环境中测试算法。
    4. 在更复杂的环境中运行算法,并进行调参。

个人心得

  • Normalization:对于机械臂的末端位置,建议使用相对工具系的归一化,增强泛化能力。
  • Reward Engineering:先进行 reward shaping,再考虑 sparse reward。
  • 网络结构:向量输入时,通常 2~3 层隐藏层(每层 128 或 256 节点)即可。

其他资源

  • 深度强化学习调参技巧:知乎专栏
  • 深度强化学习落地指南:知乎专栏
  • 知乎问题:深度学习调参有哪些技巧?
  • **原文参考 **: 知乎

参考文献

  1. Stable Baselines3 文档
  2. RL Tips and Tricks
  3. RL 教程
  4. RL 教程代码
  5. RL Zoo
  6. RL 的困难
  7. ANYmal 机器人
  8. Deep Mimic
  9. Evaluation 模块
  10. Callbacks 模块
  11. Deep Reinforcement Learning that Matters
  12. Cédric Colas 的博客
  13. Stable Baselines Issues
  14. NAF 算法
  15. SAC-Discrete 算法
  16. Vectorized Environment
  17. Ape-X 算法
  18. Stable Baselines3 Pull Request
  19. RL 算法指南
  20. HER 算法
  21. 自定义环境指南
  22. Colab Notebook 示例
  23. Stable Baselines Issues
  24. Stable Baselines Issues
  25. RL 研究的 Nuts and Bolts
  26. RL 研究视频
  27. Spinning Up
  28. 机械臂环境
  29. Spinning Up 代码

缘起

随着这波人工智能浪潮的兴起,强化学习(Reinforcement Learning,RL)这坛陈年老酒也借势找到了深度学习这个新瓶子,重新吸引了学术界、工业界乃至吃瓜群众的注意力。对于很多人来说,AI闯入他们视野的标志性事件不是2012年AlexNet的横空出世,而是AlphaGo击败李世石引起的轩然大波。可以这样说,深度强化学习(DRL)不仅点燃了世人对AI的热情,而随着CV方向性能瓶颈的出现,作为一个缺点多多、槽点满满的算法框架,DRL正在吸引越来越多的学者前来填坑,从各大AI顶会RL方向文章数量的逐年上升可见一斑。

算法工作者的“知行合一”

如今网上关于DRL的科普文可谓汗牛充栋,图文与公式并茂,paper与代码齐飞。我自知水平有限,无意在DRL科普界班门弄斧。另一方面我认为算法工作者不应只局限在原理层面,看懂很多公式不代表拥有动手能力;也不应满足于跑通toy tasks的demo,知其然不知其所以然,面对实际问题时可能依旧一头雾水。算法工作者的“知行合一”,需要经历从抽象算法原理到广泛动手实践再上升到统一方法论这三个必要阶段,唯有如此才算真正掌握了知识。

相关文章:

  • 企业之IT安全管控概览和实践案例
  • Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上
  • 新版本的idea用不习惯,怎么还原为之前版本的UI界面?idea界面还原,idea新版本ui设置
  • 一文了解Java中的虚拟线程新特性
  • linux内核驱动:I2C子系统笔记
  • Android 10.0 Settings中系统菜单去掉备份二级菜单
  • 数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用
  • Java数组学习
  • 初识JavaFX-IDEA中创建第一个JavaFX项目
  • mysql中的计算日期函数 理解、用法
  • 从0-1学习Mysql第六章: 缓存与性能优化
  • Windows提权之基本流程(二)
  • SIM盾构建安全底座的障碍
  • 穿越AI边界:深度集成DeepSeek API与云平台的实践之路
  • seacmsv9报错注入
  • Pytorch使用手册-使用Wav2Vec2进行强制对齐(专题二十五)
  • 排查和解决线程池瓶颈问题案例
  • 【Veristand】Veristand 预编写教程目录
  • 3-提前结束训练
  • 大模型应用: 多模态交互
  • 鸿海下调全年营收展望:AI服务器业务强劲,预计今年营收增超50%
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 特朗普访问卡塔尔,两国签署多项合作协议
  • 黄仕忠丨戏曲文献研究之回顾与展望
  • “典孝急乐批麻蚌赢”:互联网“八字真言”与当代赛博赢学
  • 北京今日白天超30℃晚间下冰雹,市民称“没见过这么大颗的”