Tianshou强化学习框架在MuJoCo环境中的基准测试与分析
前言
Tianshou作为一个模块化强化学习框架,提供了多种经典算法的实现。本文将重点分析Tianshou在MuJoCo连续控制任务上的表现,帮助读者理解不同算法在各类环境中的性能特点,并为实际应用提供调参建议。
测试环境与方法
测试环境概述
测试覆盖了MuJoCo Gym任务套件中的9个连续控制环境,包括:
- Ant:六足机器人行走
- HalfCheetah:两足机器人快速奔跑
- Hopper:单足跳跃
- Walker2d:双足行走
- Swimmer:蛇形机器人游泳
- Humanoid:类人机器人行走
- Reacher:机械臂到达目标
- InvertedPendulum:倒立摆平衡
- InvertedDoublePendulum:双倒立摆平衡
测试方法
- 基准配置:为每个算法提供默认超参数和复现脚本
- 性能对比:与其他开源实现和经典论文结果进行横向比较
- 结果呈现:提供训练曲线、原始数据、预训练模型等完整结果
- 调参建议:基于实验结果的实用调参技巧
离线策略算法表现
算法概述
离线策略算法包括:
- DDPG(深度确定性策略梯度)
- TD3(双延迟DDPG)
- SAC(柔性演员-评论家)
这些算法共同特点是能够重用历史经验数据进行训练。
性能对比
DDPG表现
| 环境 | Tianshou(1M) | 对比结果 | |------|-------------|----------| | Ant | 990.4±4.3 | 优于SpinningUp(~840) | | HalfCheetah | 11718.7±465.6 | 显著优于文献结果 | | Hopper | 2197.0±971.6 | 与TD3论文结果相当 |
TD3表现
| 环境 | Tianshou(1M) | 对比结果 | |------|-------------|----------| | Ant | 5116.4±799.9 | 优于SpinningUp(~3800) | | HalfCheetah | 10201.2±772.8 | 优于文献结果(9637.0) | | Hopper | 3472.2±116.8 | 接近文献最佳(3564.1) |
SAC表现
| 环境 | Tianshou(1M) | 对比结果 | |------|-------------|----------| | Ant | 5850.2±475.7 | 显著优于SpinningUp(~3980) | | HalfCheetah | 12138.8±1049.3 | 优于文献结果(~10400) | | Hopper | 3542.2±51.5 | 优于文献结果(~3370) |
调参建议
-
学习率选择:
- TD3使用3e-4,而DDPG/SAC使用1e-3
- 可尝试调整学习率以获得更好性能
-
网络结构:
- SAC中两个评论家网络不应共享参数
- 高斯策略的σ应基于输入条件化
-
评估技巧:
- 确定性评估能显著提升性能
在线策略算法表现
算法概述
在线策略算法包括:
- REINFORCE
- A2C(优势演员评论家)
- PPO(近端策略优化)
这些算法需要当前策略生成的数据进行训练。
性能对比
REINFORCE表现
| 环境 | Tianshou(10M) | Tianshou(3M) | SpinningUp(3M) | |------|--------------|-------------|---------------| | Ant | 1108.1±323.1 | 474.9±133.5 | ~5 | | HalfCheetah | 1138.8±104.7 | 884.0±41.0 | ~600 | | Hopper | 416.0±104.7 | 395.8±64.5 | ~800 |
A2C表现
A2C在多数环境中表现优于基线实现,特别是在Humanoid环境中展现出明显优势。
调参建议
-
网络初始化:
- 策略网络最后一层缩小0.01倍
- 使用正交初始化
-
动作处理:
- 使用tanh函数将动作压缩到[-1,1]范围
- 优于常用的裁剪方法
-
归一化技巧:
- 使用全局观测归一化
- 使用全局回报归一化
-
学习率策略:
- 初始学习率建议1e-3
- 训练后期线性衰减到0
实验工具与流程
环境加速
推荐使用envpool替代标准Gym环境,可获得2-3倍的速度提升。安装简单:
pip install envpool
实验流程
- 单次训练:
python mujoco_sac.py --task Ant-v3
- 批量实验(10个随机种子):
./run_experiments.sh Ant-v3 sac
- 结果分析:
# 生成CSV
./tools.py --root-dir ./results/Ant-v3/sac
# 绘制曲线
./plotter.py --root-dir ./results/Ant-v3
# 数值分析
./analysis.py --root-dir ./results --norm
结论
Tianshou实现的强化学习算法在MuJoCo环境中展现出与或优于现有最佳实现的性能。本文提供的基准结果和调参建议可作为相关研究和应用的参考。特别值得注意的是:
- 离线策略算法中,SAC在多数环境中表现最佳
- 在线策略算法通过适当的调参可以获得比基线更好的性能
- 使用envpool可以显著提升训练效率
读者可以根据具体任务需求选择合适的算法,并参考本文的调参建议进行优化。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考