跳转到内容

评估协议与可复现性

RL 实验对随机种子、实现细节、超参极其敏感,同一算法在不同代码库中的表现差异可以超过算法之间的差异。本章给出报告结果的规范(多种子、置信区间、IQM)、常用基准套件,以及"代码级优化"对结论的影响。

2018 年 Henderson 等人在《Deep Reinforcement Learning that Matters》中系统测量了这个问题:同一算法(如 PPO)在不同代码库、不同超参、不同随机种子下的学习曲线差异,可以大到超过算法之间的差异。原因有几个来源:

  • 随机性来源多:网络初始化、环境初始状态、动作采样、数据顺序,每个都引入方差,且学习曲线对早期方差极其敏感(早期领先者未必最终领先)。
  • 实现细节是算法的一部分:PPO 的知名例子是 "The 37 Implementation Details of PPO"——优势归一化、价值裁剪、学习率退火、梯度裁剪等细节,每一个都能显著改变结果,但论文通常不写(→ TRPO 与 PPO)。
  • 超参敏感且互相耦合:学习率、奖励尺度、网络大小之间没有独立的影响,一组超参在任务 A 上最优、在任务 B 上可能失效。

结论是:RL 论文里"算法"与"实现"不可分割,单条曲线不能作为证据。

Agarwal 等人在《Deep Reinforcement Learning at the Edge of the Statistical Precipice》(2021) 给出了已被广泛接受的规范:

  • 多种子:至少 5–10 个随机种子;报告分布,而不是"最好的一次"或单条平均曲线。
  • 性能曲线下的区间估计:报告分层自举置信区间(stratified bootstrap CI),而不是逐点误差棒。
  • IQM(四分位均值):用截掉最低 25% 与最高 25% 后的均值代替中位数或朴素均值,兼顾稳健性与统计效率。中位数会忽略尾部成功案例(对稀有成功不敏感),朴素均值则被单个崩溃种子支配。
  • 性能曲线图(performance profiles):在任务分布上画出"达到归一化分数 xx 的运行占比",一眼看出稳定性与上限。
  • 与基线比"概率改进":报告算法超过基线的运行概率(probability of improvement),而非只比均值。
套件设定特点
Atari (ALE)像素输入、离散动作经典但高方差,RAM 版本不可比
Atari 100k同上,限 10 万步考察样本效率,常配 DreamerV3/EfficientZero
Gymnasium / MuJoCo连续控制、状态输入运动控制标准;版本变迁导致跨论文不可比
DeepMind Control (DMC)连续控制更干净的奖励设计
ProcGen程序化生成关卡考察泛化而非记忆(→ 泛化、过拟合与 Sim-to-Real)
D4RL / Minari离线 RL 数据集见离线 RL 基准与评估

"代码级优化"(code-level optimizations)指不改变算法描述、但改变实现的工程选择:观测归一化的方式、网络初始化、正交初始化与否、价值损失系数、奖励裁剪等。实证研究反复发现:这些细节对结果的影响经常超过换一个算法。对读论文的人,这意味着结论的可信度取决于开源实现是否公开;对做研究的人,这意味着对比实验必须用同一套代码骨架,只改算法本体。

工程侧的系统化讨论见超参数、稳定性与调试清单与库与框架对比。

  • 至少 5–10 个种子并报告区间,而不是最好的一次
  • Agarwal et al. (2021) 建议用 IQM 与性能曲线
  • PPO 的 37 个实现细节