强化学习参考资料
引言
本文汇总强化学习(Reinforcement Learning, RL)领域的核心参考资料,包括教科书、重要论文、主流库和工具、仿真环境、算法选择指南以及符号约定,为读者提供系统化的学习和查阅入口。
经典教科书
| 书名 |
作者 |
出版年 |
特点 |
| Reinforcement Learning: An Introduction |
Sutton, Barto |
2018 (2nd) |
RL 圣经,理论全面 |
| Algorithms for Reinforcement Learning |
Szepesvári |
2010 |
精炼数学推导 |
| Deep Reinforcement Learning Hands-On |
Lapan |
2020 (2nd) |
实践导向,PyTorch 代码 |
| Spinning Up in Deep RL |
OpenAI |
在线 |
入门友好,有配套代码 |
| 动手学强化学习 |
张伟楠等 |
2023 |
中文教材,适合国内读者 |
| Decision Making Under Uncertainty |
Kochenderfer |
2015 |
偏规划与决策理论 |
里程碑论文
值函数方法
| 论文 |
年份 |
贡献 |
| Playing Atari with Deep RL (DQN) |
2013 |
深度 RL 开山之作 |
| Human-level Control (Nature DQN) |
2015 |
经验回放 + 目标网络 |
| Double DQN |
2016 |
解决 Q 值过估计 |
| Dueling DQN |
2016 |
V/A 分离架构 |
| Rainbow |
2018 |
六种 DQN 改进集成 |
策略优化方法
| 论文 |
年份 |
贡献 |
| TRPO |
2015 |
信任域策略优化 |
| PPO |
2017 |
简化 TRPO,裁剪目标 |
| SAC |
2018 |
最大熵框架,自动温度调节 |
| TD3 |
2018 |
双 Critic + 延迟更新 |
| DDPG |
2016 |
连续控制 Actor-Critic |
进阶方向
| 论文 |
年份 |
贡献 |
| DreamerV3 |
2023 |
通用世界模型 |
| Decision Transformer |
2021 |
序列建模视角的 RL |
| CQL |
2020 |
保守离线 Q 学习 |
| GAIL |
2016 |
生成对抗模仿学习 |
| Eureka |
2023 |
LLM 自动设计奖励函数 |
主流 RL 库对比
| 库名 |
语言 |
特点 |
适用场景 |
| Stable-Baselines3 (SB3) |
Python/PyTorch |
接口简洁,文档完善,单机训练 |
研究原型、教学 |
| RLlib (Ray) |
Python/PyTorch |
分布式训练,多智能体支持 |
大规模训练、工业部署 |
| CleanRL |
Python/PyTorch |
单文件实现,代码透明 |
学习算法细节、快速实验 |
| TorchRL |
Python/PyTorch |
PyTorch 官方,模块化设计 |
自定义算法开发 |
| Tianshou |
Python/PyTorch |
中文社区活跃,API 现代化 |
中文用户、研究 |
| Sample Factory |
Python/PyTorch |
极高吞吐量,异步采样 |
大规模仿真训练 |
安装示例
# Stable-Baselines3
pip install stable-baselines3[extra]
# CleanRL
pip install cleanrl
# RLlib
pip install "ray[rllib]"
仿真环境
通用 RL 环境
| 环境 |
类型 |
动作空间 |
特点 |
| Gymnasium (Atari) |
像素游戏 |
离散 |
经典基准 |
| Gymnasium (MuJoCo) |
连续控制 |
连续 |
标准运动控制基准 |
| DMControl Suite |
连续控制 |
连续 |
DeepMind 维护 |
| Minigrid |
网格世界 |
离散 |
轻量级测试 |
| Procgen |
程序生成游戏 |
离散 |
泛化能力测试 |
机器人 RL 环境
| 环境 |
模拟器 |
适用任务 |
| Isaac Gym / Isaac Lab |
PhysX |
高并行机器人训练 |
| MuJoCo Menagerie |
MuJoCo |
真实机器人模型集合 |
| PyBullet Envs |
Bullet |
运动控制、操作 |
| Robosuite |
MuJoCo |
机械臂操作 |
| SAPIEN / ManiSkill |
PhysX |
灵巧操作、物体交互 |
| Gymnasium-Robotics |
MuJoCo |
Fetch、Shadow Hand 任务 |
多智能体环境
| 环境 |
类型 |
智能体数 |
| PettingZoo |
通用接口 |
可变 |
| SMAC |
StarCraft 微操 |
2-27 |
| MPE |
粒子环境 |
2-10 |
| Google Research Football |
足球 |
2-22 |
算法选择指南
任务类型判断
├── 离散动作空间
│ ├── 在线学习 → DQN / Rainbow
│ └── 离线数据 → CQL (离散版)
├── 连续动作空间
│ ├── 在线学习
│ │ ├── 仿真采样充裕 → PPO
│ │ ├── 采样受限 → SAC / TD3
│ │ └── 需要世界模型 → Dreamer / MBPO
│ └── 离线数据
│ ├── 数据量大 → CQL / IQL
│ └── 序列决策 → Decision Transformer
├── 多智能体合作
│ ├── 值分解 → QMIX / MAPPO
│ └── 通信学习 → CommNet / TarMAC
└── 模仿学习
├── 有奖励信号 → GAIL
└── 纯行为克隆 → BC / DAgger
符号约定
本系列文章采用如下统一符号:
| 符号 |
含义 |
|
|
当前状态、下一状态 |
|
|
动作 |
|
|
即时奖励 |
|
|
折扣因子 |
|
|
策略(给定状态的动作分布) |
|
|
状态价值函数 |
|
|
动作价值函数 |
|
|
优势函数
|
|
|
策略网络参数 |
|
|
价值网络参数 |
|
|
轨迹
|
|
|
经验回放缓冲区 / 数据集 |
|
|
温度参数(SAC) |
|
|
裁剪范围(PPO)或探索率 |
学习路径推荐
初学者
- 阅读 Spinning Up in Deep RL 在线教程
- 使用 CleanRL 理解单文件算法实现
- 在 CartPole、LunarLander 等简单环境上实验
- 用 SB3 快速验证各算法效果
进阶研究者
- 精读 Sutton & Barto 教材的数学推导
- 复现 PPO / SAC 论文,对比 CleanRL 实现
- 尝试 MuJoCo / Isaac Gym 机器人任务
- 探索离线 RL、MARL 等进阶方向
工程部署
- 学习 SB3 的 callback 和日志系统
- 掌握 ONNX 导出和 TensorRT 优化
- 熟悉 ROS 2 集成方案
- 了解安全约束和域随机化技术
常用在线资源
参考资料