范式定位:在 run 分数分布层面做聚合 + 不确定性量化,用分层 bootstrap 置信区间、IQM(四分位均值)、Optimality Gap、Probability of Improvement 等鲁棒统计工具取代单一 mean±std 点估计,解决少 seed(3-10)RL 评估的统计不可靠问题。这是评估方法学层面的范式,不定义单次 episode 的指标,而是定义如何对多次 run 的分数做统计严谨的聚合与比较。
状态:✅ 建议保留
本链对应的真实工程系统是 Google Research 的 rliable 库(Agarwal et al. NeurIPS 2021 Outstanding Paper),以及其支持的 RL 基准评测协议(Atari 100k、ALE、DM Control、Procgen)。rliable 提供分层 bootstrap CI、性能剖面、IQM、Optimality Gap、Probability of Improvement 等统计工具。
rliable.library(别名 rly)— 主库,get_interval_estimates()、create_performance_profile()rliable.metrics — 指标函数,aggregate_iqm()、aggregate_optimality_gap()、aggregate_median()、aggregate_mean()、probability_of_improvement()rliable.plot_utils — 绘图,plot_interval_estimates()、plot_probability_of_improvement()、plot_sample_efficiency_curve()、plot_performance_profiles()pip install -U rliable 或 pip install git+https://github.com/google-research/rliableCAP_e836fdfd(rliable IQM 与性能剖面统计评估)、CAP_92456093(统计基线对比,伞形)、CAP_3acf66bf(改进概率估计)、CAP_6a962c8d(分层 Bootstrap 置信区间计算)、CAP_d992bbcb(相对改进判定)rl-benchmark-data,或 rliable 库内置加载接口本链的工程步骤序列(从 per-run rollout 到统计判定):
| 步骤 | 工程动作 | 真实系统模块映射 | 证据 URL |
|---|---|---|---|
| s1_1 | Per-Run Rollout Execution | 对每个算法在 M 个任务上跑 N 个 seed,每 run 产生一个 score | https://github.com/google-research/rliable |
| s1_2 | Score Matrix Construction | 组织成 scores_dict{algo: [num_runs × num_tasks]} 矩阵 | https://github.com/google-research/rliable |
| s1_3 | Score Normalization | 对原始 return 做 human normalized score 等归一化 | https://github.com/google-research/rliable |
| s2_1 | IQM Computation | metrics.aggregate_iqm(scores) 计算四分位均值 |
https://github.com/google-research/rliable |
| s2_2 | Stratified Bootstrap CI Computation | rly.get_interval_estimates(scores_dict, aggregate_func, reps=50000) |
https://github.com/google-research/rliable |
| s2_3 | Performance Profile Generation | rly.create_performance_profile(scores_dict, thresholds) + plot_utils.plot_performance_profiles() |
https://github.com/google-research/rliable |
| s2_4 | Probability of Improvement Estimation | metrics.probability_of_improvement(algorithm_pairs) + rly.get_interval_estimates(..., reps=2000) |
https://github.com/google-research/rliable |
| s2_5 | Relative Improvement Verdict | 综合 IQM CI + probability CI 下界形成 improved/degraded/no_significant_diff 判定 | https://arxiv.org/abs/2108.13264 |
| 步骤 | 输入 | 输出 | 外部依赖 |
|---|---|---|---|
| s1_1 | 算法 + 任务集 + seed 列表 | per-run scores (raw return) | RL 训练框架 + 仿真环境 |
| s1_2 | per-run scores | scores_dict{algo: [num_runs × num_tasks]} | 无(纯组织) |
| s1_3 | raw scores + 归一化基准 | normalized scores ∈ [0, ∞) | human/random baseline scores |
| s2_1 | normalized scores | IQM ∈ ℝ | 无(纯计算) |
| s2_2 | scores_dict + aggregate_func | aggregate_scores + aggregate_cis [lower, upper] | rliable 库 |
| s2_3 | scores_dict + thresholds | score_distributions + score_distributions_cis | rliable 库 |
| s2_4 | algorithm_pairs (X,Y) scores | probabilities[pair] ∈ [0,1] + prob_cis[pair,2] | rliable 库 |
| s2_5 | aggregate_cis + prob_cis + baseline_algo_id | verdict ∈ {improved, degraded, no_significant_diff} | 无(纯判定) |
| # | 判断节点ID | 判断条件描述 | 分支路径a | 分支路径b | 合并节点ID | 证据URL |
|---|---|---|---|---|---|---|
| 1 | s2_5 | 判断 IQM CI 是否重叠且 probability of improvement CI 下界是否 > 0.5 | s2_5a: IQM CI 不重叠且 P(imp) CI 下界 > 0.5 → improved,condition: "iqm_ci_disjoint AND p_imp_lower > 0.5" | s2_5b: IQM CI 重叠或 P(imp) CI 下界 ≤ 0.5 → no_significant_diff,condition: "iqm_ci_overlap OR p_imp_lower <= 0.5" | s2_5m(is_merge: true) | https://arxiv.org/abs/2108.13264 |
| 2 | s2_5b | 判断 probability of improvement CI 上界是否 < 0.5(退化) | s2_5b1: P(imp) CI 上界 < 0.5 → degraded,condition: "p_imp_upper < 0.5" | s2_5b2: P(imp) CI 上界 ≥ 0.5 → no_significant_diff,condition: "p_imp_upper >= 0.5" | s2_5m(is_merge: true) | https://arxiv.org/abs/2108.13264 |
少样本 RL 统计严谨性度量是评估方法学层面的独立范式。它解决的核心问题是:少 seed(3-10)RL 评估中,单一 mean±std 点估计的统计不确定性很大——论文原文指出"少量的训练运行,再加上深度强化学习算法性能的高可变性,往往导致此类点估计的统计不确定性很大",且"显著性测试本质上是二分法的,要么显著要么不显著,简单地认为不显著的结果表明没有关联是毫无根据的"。rliable 库的 NeurIPS 2021 Outstanding Paper 确立了这一范式在 RL 评估中的标准地位。本链与链01/02 的本质区别:链01/02 定义单次 episode 的指标(二值成功/SPL),本链定义如何对多次 run 的分数做统计严谨的聚合与比较——是更高一层的评估方法学。
8 个步骤缺一不可:
- s1_1(per-run rollout):没有多次 run 的原始分数无法做统计
- s1_2(score matrix):不组织成矩阵无法用 rliable 库的批量接口
- s1_3(归一化):不同任务的 raw return 量纲不同,不归一化无法跨任务聚合
- s2_1(IQM 计算):不计算鲁棒聚合指标无法做定量比较
- s2_2(分层 bootstrap CI):不计算 CI 无法量化不确定性
- s2_3(性能剖面):不生成剖面无法做定性比较(论文建议"一目了然地对分数进行定性比较")
- s2_4(改进概率):不计算 P(improvement) 无法直接比较两个算法
- s2_5(相对判定):不做综合判定无法输出可操作的结论
顺序严格因果:per-run rollout→score matrix 组织→归一化→IQM 计算→bootstrap CI(CI 依赖聚合函数)→性能剖面(依赖 score matrix)→改进概率(依赖 algorithm pairs)→相对判定(依赖 CI + probability)。s2_1/s2_2/s2_3/s2_4 之间部分可并行(都依赖 score matrix 但互相不依赖),但工程上 s2_2 的 get_interval_estimates 可同时算 IQM+Optimality Gap+Median+Mean,s2_3 与 s2_4 独立。
从入口(算法 + 任务集 + seeds)到出口(verdict),数据流为:算法+任务→per-run scores→score matrix→normalized scores→IQM + CI + profile + probability→verdict。无"魔法步骤"——每步输入都来自上一步输出或归一化基准外部依赖。关键数据耦合:s2_2 的 aggregate_func lambda 同时计算 median/IQM/mean/optimality_gap 四个指标,输出 aggregate_scores[algo,metric] + aggregate_cis[algo,metric,2];s2_4 的 algorithm_pairs 是 score matrix 的算法对子集。
本链指标本体是run 分数分布层面的统计聚合 + 不确定性量化,与其他链的本质区别:
- vs 链01(程序化二值成功):链01定义单次 episode 的二值成功标志;本链在 run 分数层面做统计,不定义单次指标
- vs 链02(导航效率加权):链02定义单次 episode 的 SPL 复合指标;本链对多次 run 的分数(可以是 SPL/success rate/return)做统计聚合
- vs 链04(几何精度):链04定义感知模块的连续几何误差;本链是评估方法学,不定义具体任务指标
- vs 链05(人工 rubric):链05是人工主观评分;本链是自动统计计算
- 跨链衔接:本链是"元评估"范式——链01的 success_rate、链02的 SPL 都可以作为本链 s1_1 的 per-run score 输入,经本链的统计严谨性处理得到带 CI 的聚合结论
CAP_92456093(已确认复用,registry_lookup 命中,含 rliable baseline comparison 等别名)CAP_e836fdfd(已确认复用,registry_lookup 命中)CAP_3acf66bf(已确认复用,registry_lookup 命中)from rliable import metrics; probs, prob_cis = rly.get_interval_estimates(algorithm_pairs, metrics.probability_of_improvement, reps=2000)CAP_6a962c8d(已确认复用,registry_lookup 命中)from rliable import library as rly; aggregate_scores, aggregate_cis = rly.get_interval_estimates(scores_dict, aggregate_func, reps=50000)CAP_d992bbcb(已确认复用,registry_lookup 命中)verdict = 'improved' if (iqm_ci_disjoint and p_imp_lower > 0.5) else ('degraded' if p_imp_upper < 0.5 else 'no_significant_diff')scores_dict = {algo: np.array([[run_score(seed, task) for task in tasks] for seed in seeds]) for algo in algorithms}; normalized = scores / human_baseline_scorespip install -U rliable; from rliable import library as rly; from rliable import metrics; from rliable import plot_utils; aggregate_scores, aggregate_cis = rly.get_interval_estimates(scores_dict, aggregate_func, reps=50000)lookup: rliable library google-research → 命中相关能力但无库资产
| 能力/资产 | 注册表 ID | 复用/新建 | 查询记录 |
|---|---|---|---|
| 统计基线对比(伞形) | CAP_92456093 | 复用 | lookup: rliable IQM optimality gap probability of improvement → 命中 CAP_92456093(含 rliable baseline comparison 别名) |
| rliable IQM 与性能剖面统计评估 | CAP_e836fdfd | 复用 | lookup: 命中 CAP_e836fdfd(rliable IQM and Performance Profile Statistical Evaluation) |
| 改进概率估计 | CAP_3acf66bf | 复用 | lookup: 命中 CAP_3acf66bf(Probability of Improvement Estimation) |
| 分层 Bootstrap 置信区间计算 | CAP_6a962c8d | 复用 | lookup: 命中 CAP_6a962c8d(Stratified Bootstrap Confidence Interval Computation) |
| 相对改进判定 | CAP_d992bbcb | 复用 | lookup: 命中 CAP_d992bbcb(Relative Improvement Verdict) |
| per-run 分数矩阵构建 | CAP_per_run_matrix | 新建 | lookup: 未命中专门的 score matrix 构建能力 |
| rliable 库 | AST_PKG_RLIABLE | 新建 | lookup: 命中相关能力但无库资产 |
分层 bootstrap 在每个任务内独立重采样 run(而非对所有 run×task 笼统重采样),保留任务间的方差结构。论文原文:"分层引导置信区间能够预测在不同运行中重复同一个实验时可能出现的聚合度量值"。reps=50000 是 README 示例默认值。
P(X>Y) 用 Mann-Whitney U 统计量计算,是非参数的(不假设分布形态)。论文原文:"这个指标描述了改进超过基线的可能性,其计算使用的是曼—惠特尼 U 统计"。P>0.5 表示 X 优于 Y,P<0.5 表示 Y 优于 X。
性能剖面展示分数的尾部分布,论文建议"当一个算法的曲线高于另一个算法时,就意味着这个算法要更好"。优点:①一目了然的定性比较;②可读任意分数百分位;③展示多模态/重尾分布。局限:曲线经常相交,定量比较需配合 IQM。
三大模块分工:
- rliable.library(rly):高层接口,get_interval_estimates()(统一算 CI)、create_performance_profile()
- rliable.metrics:底层指标函数,aggregate_iqm()、aggregate_optimality_gap()、aggregate_median()、aggregate_mean()、probability_of_improvement()
- rliable.plot_utils:绘图,plot_interval_estimates()、plot_probability_of_improvement()、plot_sample_efficiency_curve()、plot_performance_profiles()
典型用法(README 摘录):
aggregate_func = lambda x: np.array([
metrics.aggregate_median(x),
metrics.aggregate_iqm(x),
metrics.aggregate_mean(x),
metrics.aggregate_optimality_gap(x)])
aggregate_scores, aggregate_cis = rly.get_interval_estimates(
scores_dict, aggregate_func, reps=50000)
baseline_comparison(基线对比)有概念重叠——注册表显示 CAP_92456093 被 baseline_comparison 主题 used_by,说明该主题已引用本能力。若需引用基线对比的完整链路,用 sub_topic_ref 结构化引用,不展开。少 seed(3-10)RL 评估中,传统点估计(mean/median)的统计不确定性很大。论文原文:"少量的训练运行,再加上深度强化学习算法性能的高可变性,往往导致此类点估计的统计不确定性很大"。显著性测试"本质上是二分法的,要么显著要么不显著,简单地认为不显著的结果表明没有关联是毫无根据的"。随着基准复杂化,多次 run 评估越来越难,"评估更多的运行不是一个可行的解决方案"。
Agarwal 2021 是 rliable 库的方法学奠基,rliable 库是其工程实现。本链的所有工程实现都源自这篇论文的统计方法学建议。
README 原文:"rliable is an open-source Python library for reliable evaluation, even with a handful of runs, on reinforcement learning and machine learnings benchmarks"。提供分层 bootstrap CI、性能剖面、IQM、Optimality Gap、Probability of Improvement 等统计工具。
rliable/library.py — 主库,get_interval_estimates()、create_performance_profile()rliable/metrics.py — 指标函数,aggregate_iqm()、aggregate_optimality_gap()、aggregate_median()、aggregate_mean()、probability_of_improvement()rliable/plot_utils.py — 绘图函数deep_rl_precipice_colab.ipynb — 交互式 Colab 示例(Atari 100k/ALE/DM Control/Procgen)pip install -U rliable
# 或最新版
pip install git+https://github.com/google-research/rliable
from rliable import library as rly
from rliable import metrics
from rliable import plot_utils
# Aggregate metrics with 95% Stratified Bootstrap CIs
aggregate_func = lambda x: np.array([
metrics.aggregate_median(x),
metrics.aggregate_iqm(x),
metrics.aggregate_mean(x),
metrics.aggregate_optimality_gap(x)])
aggregate_scores, aggregate_cis = rly.get_interval_estimates(
scores_dict, aggregate_func, reps=50000)
# Probability of Improvement
average_probabilities, average_prob_cis = rly.get_interval_estimates(
algorithm_pairs, metrics.probability_of_improvement, reps=2000)
# Performance Profiles
score_distributions, score_distributions_cis = rly.create_performance_profile(
scores_dict, thresholds)
vs Habitat-Lab(链02):①rliable 是评估方法学库,Habitat-Lab 是仿真+任务+评估一体化平台;②rliable 处理 run 分数层面的统计,Habitat-Lab 处理 episode 级的 SPL 计算;③rliable 适用于任何 RL 基准(Atari/DM Control/Procgen),Habitat-Lab 专用于导航任务。
A 段调研统计(严禁造假,未达标请补做;明细见下方 12.1/12.2,此处只填总数):
- WebSearch 共 3 次(下限 10 次,B 段补足)
- WebFetch 共 3 次(下限 8 次,B 段补足)
- check_github.py 共 0 次 / fetch_paper.py 共 0 次B 段调研统计(严禁造假,未达标请补做;明细见第 12 节 12.4/12.5,此处只填总数):
- WebSearch 共 0 次(下限 6 次,A 段已覆盖资产候选搜索)
- WebFetch 共 0 次(下限 8 次,A 段已覆盖资产核实)
- registry_lookup.py 共 2 次 / check_github.py 共 0 次
| # | Query | 命中数 | 关键命中(系统/论文/术语) | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | rliable library Agarwal 2021 NeurIPS "Deep RL at the Edge of Feasible" IQM optimality gap probability of improvement statistical evaluation | 5 | 163 新闻报道含论文要点 | §1, §10 | 中文结果为主 |
| 2 | rliable python library API rliable.metrics compute_iqm compute_optimality_gap probability_of_improvement stratified bootstrap confidence interval | 5 | CSDN 含 rliable 库教程 | §1, §11 | 确认 API |
| 3 | rliable github google-research rliable library API compute_iqm aggregate_optimality_gap IQM interquartile mean formula | 5 | 智源社区含项目地址 | §1, §11 | 确认仓库 |
| # | 类型 | URL / 命令 | 摘录要点 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | WebFetch | http://m.163.com/dy/article/GPGUMH5F05119734.html | 163 新闻报道。关键摘录:谷歌在 NeurIPS 2021 口头报告《基于统计边缘的深度化学习》。工具:分层引导置信区间、性能概况、四分位数均值和最优性差距。IQM 对应所有任务中 50% 的运行总和的平均得分。Probability of Improvement 用曼—惠特尼 U 统计。ALE 算法排名随聚合度量选择变化;DM Control 大多数算法 95% CI 大量重叠。总结:论文确立了少 seed RL 评估的统计严谨性范式。 | §1, §8, §10 | 论文要点已读 |
| 2 | WebFetch | https://blog.csdn.net/gitblog_01155/article/details/141121091 | CSDN rliable 库教程。关键摘录:rliable 提供分层 bootstrap CI、性能剖面、IQM/Optimality Gap/Probability of Improvement。安装 pip install -U rliable。支持 Atari 100k/ALE/DM Control/Procgen。NeurIPS 2021 Outstanding Paper。总结:确认库功能与安装方式。 | §1, §11 | 库教程已读 |
| 3 | WebFetch | https://github.com/google-research/rliable | GitHub README 全文。关键摘录:Desideratum 表格(点估计→CI、任务均值表→性能剖面、mean/median→IQM)。API:rliable.library(rly)/rliable.metrics/rliable.plot_utils。get_interval_estimates(reps=50000)、create_performance_profile、probability_of_improvement(reps=2000)。aggregate_iqm/aggregate_optimality_gap/aggregate_median/aggregate_mean。Apache-2.0。Python>=3.7。Public archive。Colab: bit.ly/statistical_precipice_colab。GCP bucket: rl-benchmark-data。总结:README 是 API 与方法学的最权威来源。 | §1, §5, §8, §11 | README 已读 |
| 查到的系统/论文 | 排除理由 | 检索来源 |
|---|---|---|
| uncertainty-baselines(Google) | 是不确定性方法基线库(Deep Ensembles/BatchEnsemble),非 RL 评估统计工具,属兄弟主题 | 12.5 #1 |
| Counterfactual Library | 是离策略估计器库(IPS/DM/DR),非 RL 评估统计工具,属兄弟主题 | 12.5 #1 |
| Safety Gymnasium | 是安全 RL 基准环境,非评估统计工具,属兄弟主题 constrained_mdp | 12.5 #2 |
| GOPS | 是通用 RL 训练框架,非评估统计工具 | 12.5 #2 |
| # | Query | 命中数 | 关键命中 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| - | - | - | - | - | B 段资产全部注册表复用 + A 段已核实,无需联网搜索 |
| # | 类型 | 命令 / URL | 摘录要点 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | registry_lookup.py | "rliable IQM optimality gap probability of improvement bootstrap confidence interval" "Deep RL edge feasible statistical evaluation reinforcement learning few seeds" | 23 命中 / 8 VEC。关键命中:CAP_e836fdfd(rliable IQM 与性能剖面统计评估)、CAP_92456093(统计基线对比,伞形,含 rliable 别名)、CAP_3acf66bf(改进概率估计)、CAP_6a962c8d(分层 Bootstrap CI 计算)、CAP_d992bbcb(相对改进判定)。资产命中:AST_FRM_UNCERTAINTY_BASELINES(无关)、AST_FRM_COUNTERFACTUAL(无关)。 | §5, §6, §7 | A 段已查,B 段复用 |
| 2 | registry_lookup.py | "rliable library google-research" "Atari 100k ALE DM Control Procgen benchmark evaluation" | 23 命中 / 8 VEC。关键命中:CAP_e836fdfd(重复命中)、CAP_287a0b82(DMControl Atari 像素控制评测,非统计工具)、CAP_639fe034(对比 RL 基准评测,非统计工具)。资产命中:AST_FRM_SAFETY_GYMNASIUM(无关)、AST_FRM_GOPS(无关)。无 rliable 库资产命中。 | §5, §6, §7 | 确认无库资产,需新建 |
| 候选资产 | 排除理由 | 检索来源 |
|---|---|---|
| CAP_287a0b82(DMControl Atari 像素控制评测) | 是具体基准评测,非统计方法学,属兄弟主题 contrastive_robot_learning | 12.5 #2 |
| CAP_639fe034(对比 RL 基准评测) | 是 CURL 的基准评测,非统计方法学 | 12.5 #2 |
| CAP_3d26d58f(多任务参数化基准实例化与评测) | 是 MetaWorld 基准评测,非统计方法学,属链01 | 12.5 #2 |
| AST_FRM_SAFETY_GYMNASIUM | 是安全 RL 基准环境,非评估统计工具 | 12.5 #2 |