评估协议与可复现性
RL 实验对随机种子、实现细节、超参极其敏感,同一算法在不同代码库中的表现差异可以超过算法之间的差异。本章给出报告结果的规范(多种子、置信区间、IQM)、常用基准套件,以及"代码级优化"对结论的影响。
为什么 RL 结果难以复现
Section titled “为什么 RL 结果难以复现”2018 年 Henderson 等人在《Deep Reinforcement Learning that Matters》中系统测量了这个问题:同一算法(如 PPO)在不同代码库、不同超参、不同随机种子下的学习曲线差异,可以大到超过算法之间的差异。原因有几个来源:
- 随机性来源多:网络初始化、环境初始状态、动作采样、数据顺序,每个都引入方差,且学习曲线对早期方差极其敏感(早期领先者未必最终领先)。
- 实现细节是算法的一部分:PPO 的知名例子是 "The 37 Implementation Details of PPO"——优势归一化、价值裁剪、学习率退火、梯度裁剪等细节,每一个都能显著改变结果,但论文通常不写(→ TRPO 与 PPO)。
- 超参敏感且互相耦合:学习率、奖励尺度、网络大小之间没有独立的影响,一组超参在任务 A 上最优、在任务 B 上可能失效。
结论是:RL 论文里"算法"与"实现"不可分割,单条曲线不能作为证据。
报告结果的规范
Section titled “报告结果的规范”Agarwal 等人在《Deep Reinforcement Learning at the Edge of the Statistical Precipice》(2021) 给出了已被广泛接受的规范:
- 多种子:至少 5–10 个随机种子;报告分布,而不是"最好的一次"或单条平均曲线。
- 性能曲线下的区间估计:报告分层自举置信区间(stratified bootstrap CI),而不是逐点误差棒。
- IQM(四分位均值):用截掉最低 25% 与最高 25% 后的均值代替中位数或朴素均值,兼顾稳健性与统计效率。中位数会忽略尾部成功案例(对稀有成功不敏感),朴素均值则被单个崩溃种子支配。
- 性能曲线图(performance profiles):在任务分布上画出"达到归一化分数 的运行占比",一眼看出稳定性与上限。
- 与基线比"概率改进":报告算法超过基线的运行概率(probability of improvement),而非只比均值。
常用基准套件
Section titled “常用基准套件”| 套件 | 设定 | 特点 |
|---|---|---|
| Atari (ALE) | 像素输入、离散动作 | 经典但高方差,RAM 版本不可比 |
| Atari 100k | 同上,限 10 万步 | 考察样本效率,常配 DreamerV3/EfficientZero |
| Gymnasium / MuJoCo | 连续控制、状态输入 | 运动控制标准;版本变迁导致跨论文不可比 |
| DeepMind Control (DMC) | 连续控制 | 更干净的奖励设计 |
| ProcGen | 程序化生成关卡 | 考察泛化而非记忆(→ 泛化、过拟合与 Sim-to-Real) |
| D4RL / Minari | 离线 RL 数据集 | 见离线 RL 基准与评估 |
代码级优化的影响
Section titled “代码级优化的影响”"代码级优化"(code-level optimizations)指不改变算法描述、但改变实现的工程选择:观测归一化的方式、网络初始化、正交初始化与否、价值损失系数、奖励裁剪等。实证研究反复发现:这些细节对结果的影响经常超过换一个算法。对读论文的人,这意味着结论的可信度取决于开源实现是否公开;对做研究的人,这意味着对比实验必须用同一套代码骨架,只改算法本体。
工程侧的系统化讨论见超参数、稳定性与调试清单与库与框架对比。
- 至少 5–10 个种子并报告区间,而不是最好的一次
- Agarwal et al. (2021) 建议用 IQM 与性能曲线
- PPO 的 37 个实现细节