Benchmarking Deep Reinforcement Learning for Continuous Control
连续控制深度强化学习的基准测试(rllab)
arXiv: 1604.06778 | ICML 2016
作者: Yan Duan, Xi Chen, Rein Houthooft, John Schulman, Pieter Abbeel
机构: UC Berkeley / 根特大学 / OpenAI
代码: https://github.com/rllab/rllab
核心问题是什么?
目的
深度强化学习在 Atari 游戏(离散动作)领域已有 ALE 等标准化基准,但在连续控制领域缺乏公认的基准,导致:
- 不同工作间难以公平比较
- 进展量化困难,实现细节不透明
- 可重复性差,超参数调优标准不统一
本文目标:建立连续动作空间强化学习的标准化评测套件,系统评估主流算法性能。
现有方法及局限性
| 已有基准 | 局限 |
|---|---|
| ALE (Atari) | 仅支持离散动作空间 |
| RLLib / MMLF | 任务简单,不含高维机器人任务 |
| Tdlearn / PyBrain | 任务类型单一,无标准化评估流程 |
本文方法
提出 rllab 基准套件,包含 31 个连续控制任务,分为 4 大类:
- 基础任务(5 个):Cart-Pole、Mountain Car、Acrobot 等经典控制
- 运动任务(7 个):Swimmer、Hopper、Walker、Ant、Humanoid 等
- 部分可观测任务(15 个 = 5×3 变体):限传感器/观测噪声/系统辨识
- 分层任务(4 个):迷宫导航 + 运动控制的层次组合
基于 Box2D(2D)和 MuJoCo(3D 物理仿真)实现,全部开源。
效果
- TRPO / TNPG 在大多数任务上表现最优
- 所有算法在分层任务上均失败(重要的 open problem)
- Hopper / Ant / Humanoid 等任务成为此后 10 年的标准评测集
核心贡献是什么?
- 标准化基准套件:31 个连续控制任务,覆盖从简单到极高维度
- 系统算法对比:实现并评估 7 种 RL 算法(REINFORCE、TNPG、TRPO、RWR、REPS、CEM、CMA-ES、DDPG)
- 标准化超参搜索流程:网格搜索 + 5 随机种子 + $\mu - \sigma$ 选优,保证公平性
- 全部开源:代码、环境、参考实现一并发布,保证可重复性
- 揭示分层任务难题:所有算法失败,指出需要新算法的方向
大致方法是什么?
任务设计
运动任务奖励通用形式:
$$r = v_x - 0.005|a|^2 + (\text{存活奖励})$$
部分可观测 3 种变体(每个运动任务各有):
- LS(Limited Sensors):仅提供位置,不提供速度
- NO(Noisy Obs):高斯噪声 $\sigma=0.1$ + 动作延迟
- SI(System Identification):物理参数在不同 episode 随机变化
评估方法
性能指标为平均累积回报(未折扣):
$$\text{Performance} = \frac{1}{\sum_i N_i} \sum_i \sum_n R_{in}$$
网络架构
批处理算法策略网络:
- 3 隐藏层:100 → 50 → 25 单元,tanh 激活
- 输出高斯分布均值,对数标准差为全局参数
DDPG:
- 2 隐藏层:400 → 300,ReLU 激活
部分可观测任务:LSTM,32 隐藏单元
训练
数据集
无监督数据集,基于物理仿真(MuJoCo / Box2D)在线采集轨迹。
每次迭代采集 50,000 步,训练 500 次迭代(POMDP 任务 300 次,分层任务 500 次)。
loss
各算法优化目标:
- REINFORCE: $\nabla_\theta \eta(\pi_\theta) \approx \frac{1}{NT} \sum \nabla_\theta \log \pi(a_t|s_t;\theta)(R_t - b_t)$
- TNPG / TRPO: 约束 KL 散度下的自然梯度上升
- DDPG: Actor-Critic,Bellman 方程 + 确定性策略梯度
训练策略
- 超参搜索:每类别选 2 个代表任务,网格搜索,5 随机种子取 $\mu - \sigma$ 最优
- 基线函数(REINFORCE/TNPG/TRPO):线性基线 $\phi_{s,t} = [s, s \odot s, 0.01t, (0.01t)^2, (0.01t)^3, 1]$
- 折扣因子 $\gamma = 0.99$,视界 $T = 500$
实验与结论
算法对比总结
| 算法 | 基础任务 | 运动任务 | POMDP(循环) | 分层任务 | 核心问题 |
|---|---|---|---|---|---|
| TRPO | ✅ 最优 | ✅ 最优 | 需要循环 | ❌ 全失败 | 计算开销略高 |
| TNPG | ✅ 次优 | ✅ 次优 | — | ❌ | 步长控制不如 TRPO |
| DDPG | ✅ 快速收敛 | 中等 | — | ❌ | 不稳定,可能退化 |
| REINFORCE | 中等 | 中等 | — | ❌ | 局部最优 |
| RWR | 简单任务 OK | ❌ 复杂失败 | — | ❌ | 高维退化 |
| REPS | ❌ 早熟 | ❌ | — | ❌ | 非平稳分布敏感 |
| CEM/CMA-ES | 简单任务强 | ❌ 维度灾难 | — | ❌ | 高维内存不足 |
关键发现
- 约束策略变化是关键:TRPO / TNPG 通过 KL 约束保证稳定学习,远优于普通梯度法
- DDPG 样本高效但不稳定:适合 sample-limited 场景,但对奖励缩放敏感(实验用 0.1×)
- 循环策略在 POMDP 上有效:但训练难度高于前馈,梯度消失是主要挑战
- 分层任务是所有算法的死穴:500 轮迭代、大量超参搜索,全部失败 → 明确指向需要自动发现分层结构的新算法
- 进化方法在高维失效:CMA-ES 在 Full Humanoid(高维)上 OOM
局限性
- 仿真到现实的 gap:全在 MuJoCo 仿真中测试,未验证真实机器人迁移
- 任务设计局限:奖励函数手工设计,缺乏稀疏奖励任务
- 分层任务失败:未提出解法,只是揭示了问题
- 算法覆盖不全:无 model-based 方法,无现代 off-policy 算法(SAC 等当时未发表)
启发
- 约束策略更新步长是连续控制的核心:TRPO 的核心思路(信任域约束)后来影响了 PPO(简化版的 TRPO,工程上更实用)
- 标准化 locomotion 任务的价值:Hopper/Ant/Humanoid 成为 SAC、PPO、TD3 等算法的标准测试床,被引用数千次
- 分层结构需要专门设计:单纯增加 RL 算法能力不能解决分层任务,后续 DeepLoco、Option Framework 等都在这个方向上努力
- 样本效率 vs 稳定性的权衡:DDPG 代表"快但不稳",TRPO 代表"稳但慢",这一 trade-off 在 SAC(解决稳定性)出现前一直是核心矛盾
遗留问题
- 如何自动发现任务中的分层结构?(后续: FeUdal Networks, HIRO 等)
- 如何让 DDPG 类方法更稳定?(后续: TD3, SAC)
- 如何在部分可观测任务中更有效地训练循环策略?
- 基准任务是否足够多样,是否覆盖真实机器人场景?(后续 OpenAI Gym 的设计很大程度受此影响)
- 仿真 gap:MuJoCo 学到的策略能直接迁移到真实机器人吗?
参考材料
- 论文:https://arxiv.org/abs/1604.06778
- 代码:https://github.com/rllab/rllab
- 相关:PPO(TRPO 的简化版)、SAC(解决 DDPG 不稳定性)、TD3(DDPG 改进版)
- 后续基准:OpenAI Gym、dm_control、MuJoCo locomotion suite