Reward 工程与评测科学:从代理信号到可信结论
本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。
学习目标
- 理解从人类偏好到在线 reward 更新的每次转向解决了什么、又打开了什么攻击面。
- 推导 BT 不可辨识性、噪声模型、校准与 ensemble 不确定性。
- 为数学、代码、OCR、IoU/grounding 设计可审计 verifier 和 sandbox。
- 用多 seed、paired bootstrap、IQM、effect size 与多重比较写出不越界的实验结论。
Reward 决定优化器追逐什么,evaluation 决定研究者相信什么;二者若共享漏洞,训练与论文会一起过拟合。本讲把偏好模型、规则验证器、过程监督、统计检验和安全红队统一成一条“构念—测量—优化—独立核验”链。
学习目标
- 理解从人类偏好到在线 reward 更新的每次转向解决了什么、又打开了什么攻击面。
- 推导 BT 不可辨识性、噪声模型、校准与 ensemble 不确定性。
- 为数学、代码、OCR、IoU/grounding 设计可审计 verifier 和 sandbox。
- 用多 seed、paired bootstrap、IQM、effect size 与多重比较写出不越界的实验结论。
先修与证据边界
偏好优化、RLVR、GRPO 机制见 模块 13;奖励开放难题见 模块 14。本页新增的是 reward 产品化、测量理论与论文级审计。【A 原始论文】【B 官方实现/报告】【C 多方工程经验】【D 编者方案】。前沿事实最后核验:2026-07-11。
1. 历史主线:信号更可扩展,目标未必更真实
| 阶段 | 旧做法与失败 | 关键转念 | 新增代价/后续 |
|---|---|---|---|
| 人类绝对评分 | 标尺漂移、跨人不一致 | 成对偏好更易判断 | BT/RM 只学到训练分布代理 |
| RLHF + RM | 人工比较昂贵、RM 可被过优化 | 模型生成偏好/原则约束 | RLAIF/CAI 引入教师偏见与原则覆盖问题 |
| 规则 verifier / RLVR | 开放式 RM 模糊 | 在 math/code 用可执行真值 | 只覆盖可形式化构念,漏洞转移到规则/测试 |
| ORM → PRM | 终局信号信用稀疏 | 逐步监督过程 | 步骤标签贵,错误过程可能伪装得像正确 |
| 在线 reward 更新 | 固定 RM 遭遇策略分布漂移 | 主动采难例、持续重标 | 奖励与策略共同非平稳,历史实验难比较 |
Reward 不是目标
真实目标 (有用、正确、安全)不可直接观测,训练只优化代理 。优化压力越大,越会访问 误差大的尾部。必须维护独立、不反哺训练的审计集 ,观察 与真实构念是否解耦。
2. Bradley–Terry:不可辨识、噪声与校准
对 prompt 的两个回答,BT 假设:
其中 是 annotator/group, 可表达位置/群体偏置, 是噪声温度。基础 BT 取 。
推导:尺度、平移与辨识条件
条件
只观察二元比较;比较图连通;logistic link 的温度是否固定决定尺度能否辨识。
任意与回答无关的 满足 ,故平移不可辨识。若温度 也未知,则 给出相同概率,尺度也不可辨识:
因此 RM 的“7 分”没有跨模型/跨 checkpoint 的天然意义;必须固定 gauge(如每 prompt/group 零均值)与温度,或只解释差值/排序。比较图不连通时,不同连通分量连相对平移都无法确定。
2.1 Label noise 与 disagreement
把多数票当真值会抹掉合理多元偏好。保留每个标注、annotator id(合规匿名)、置信度、tie/skip 和理由标签;用重复标注估计 disagreement。简单对称翻转噪声 下:
若噪声依任务/标注者而变,单一 会失配;可用分层模型、Dawid–Skene 类聚合或直接预测偏好分布,但都依赖可检验假设。
2.2 Ensemble 与 calibration
- 不同 seed/数据 bootstrap 训练 个 RM;均值用于排序,方差只是一种 epistemic proxy,不自动等于真实不确定性。
- 在时间后移、来源隔离的校准集上做 temperature scaling/isotonic;报告 reliability diagram、Brier/NLL 与 ECE,而非仅 pair accuracy。
- 策略主动寻找高 ensemble 分歧样本,送人标;但采样概率必须保存,否则在线数据不能代表部署分布。
3. ORM、PRM 与 LLM-as-judge:信用更密不等于更真
| 信号 | 优点 | 偏差/可 hack 面 | 适用验证 |
|---|---|---|---|
| ORM | 只需最终答案标签,接近任务目标 | 信用稀疏;正确答案可由错误推理碰巧得到 | 隐藏答案、对抗扰动 |
| PRM | 定位首错、可做搜索价值 | 局部“看起来对”;步骤粒度/标签协议决定含义 | 反事实步骤替换、前缀续写 |
| Judge | 开放域、扩展快 | 位置、冗长、风格、自偏好、提示注入 | 交换顺序、去风格、盲化来源、人类仲裁 |
若 PRM 输出每步正确概率 ,轨迹分数可取乘积、最小值或和;它们对应不同假设:
乘积假设步骤条件独立会偏爱短链;最小值对单个误判极敏感;加权和需要定义步骤与权重。应通过“插入无关正确步骤”“拆分一步为两步”“同义改写”测试粒度不变性。
Judge 防偏协议
随机 A/B 顺序并双向评分;隐藏模型名;固定长度或做长度匹配;将内容与风格拆 rubric;加入已知答案锚点;测 judge–human agreement;被评模型输出视为不可信输入,严禁其文本改变 judge system instruction。
4. Verifier 工程:正确性、覆盖率与沙箱
图 18-1:verifier 是安全敏感执行系统,不是一条正则表达式。
| 领域 | 实现要点 | 必须对抗 |
|---|---|---|
| 数学 | 符号等价 + 数值抽检;单位/定义域/多解 | 未定义表达式、近似碰撞、把答案藏在多候选中 |
| 代码 | 隐藏单测、property/fuzz、编译与运行分开计分 | 读测试、网络/文件逃逸、超时、硬编码样例 |
| OCR | Unicode 规范化、CER/WER、版面字段级评分 | 同形字、空白、顺序、语言先验猜答案 |
| IoU | ,明确空集与坐标约定 | 越界框、全图框、尺度/原点混淆 |
| grounding | 框/掩码 + 指代一致;图像反事实 | 仅靠文本先验、多个同类对象、遮挡 |
4.1 Sandbox 最低要求
- 无网络、只读基础镜像、临时文件系统、非 root、syscall/cgroup/seccomp 限制、CPU/内存/进程/时间配额。
- 每次执行独立容器/微虚机或等价隔离;输出截断;secret 和 hidden tests 不进入模型可读路径。
- 版本化测试、镜像、编译器、随机 seed;保存可重放输入与结构化错误,不保存不必要敏感内容。
- 覆盖率不是单测数量:报告语句/分支/变异测试分数与对抗样本杀伤率。
def grade(submission, task):
ast = parse_with_limits(submission)
if ast.error: return {"reward": None, "status": "PARSE_ERROR"}
result = sandbox.run(
ast, hidden_tests=task.test_bundle,
network=False, read_only=True,
cpu_s=2, memory_mb=512, pids=32, output_kb=64)
return aggregate(result, grader_version=GIT_SHA)
# timeout / infra error ≠ 答错;进入重试或审计队列
5. Goodhart、过优化与 Safety
设代理误差 。从越来越大的候选集合选 时,即使 均值为零,极值选择也偏向正误差尾部:
这解释 RM over-optimization、Best-of-N 过大和 RL 强优化下代理/独立人评分离。长度与风格是最常见捷径:若训练数据中长答案更常获胜,RM 会把长度当因果质量。做长度匹配对照、残差化分析和“内容相同仅改风格”反事实。
5.1 过优化曲线
横轴不能只用训练 step;同时用 KL-to-reference、候选 、生成 token/GPU-hour 表示优化压力。纵轴画 train reward、held-out reward、独立 verifier、人评与安全指标。拐点后早停不是“修复目标”,只是限制伤害。
5.2 Reward tampering、scheming 与独立监督
- tampering: 模型通过工具改 grader、测试、日志或奖励通道。权限上将 agent 与 evaluator 分离,append-only 审计,远程签名结果。
- scheming: 行为在被监控与未监控时系统性不同。当前证据不足以从单次 CoT 推断内部意图;使用行为测试、诱捕环境与跨情境一致性,结论降级。
- CoT monitor 独立性: monitor 不与 policy 共享可被联合优化的脆弱 rubric;保留隐藏 monitor、行为探针和人工升级。训练公开 CoT“看起来安全”可能只教会规避监控。
- red-team loop: 发现漏洞→最小复现→隔离影响→加入训练修复集;但同时保留未训练 sibling holdout,验证泛化而非背题。
核验至 2026-07-11
可扩展监督、过程监督、模型辅助评测和 agent 安全均处于活跃研究期。公开结果多为特定模型/任务证据,不足以证明一般“不会欺骗”或“可由 CoT 完全监控”。
6. Eval Science:先定义构念,再选择分数
6.1 Construct validity
“数学推理能力”不是 AIME 分数本身;它是潜在构念。评测链应写成:构念定义 → 任务采样域 → 观测指标 → 可能混杂 → 反事实测试。内容效度问覆盖是否完整,收敛效度问是否与其它合理测量相关,区分效度问是否真的区别于长度、记忆、格式遵循。
| 设计 | 防什么 | 仍然不能保证 |
|---|---|---|
| hidden set | 直接调参/背题 | 来源近重复、隐式污染 |
| dynamic set | 长期公开 benchmark 饱和 | 任务难度跨期可比 |
| 时间切分 | 预训练收录未来题 | 私有语料泄漏 |
| 生成式变体 | 表面记忆 | 模板泄漏与生成器偏差 |
6.2 指标语义
若单样本独立成功概率为 ,至少一次成功:
从 次采样中有 次成功时,常用无偏组合估计:
独立假设只用于式(18.9)直觉;温度、共享 prompt 与采样相关性会影响有效多样性。pass@1 衡量默认可用性,pass@k 衡量覆盖;Best-of-N 还依赖 selector。报告 selector oracle gap:
成本归一评测把准确率与资源共同报告,而非揉成任意单分:Pareto 曲线 (\text{quality},\text{tokens},\text{latency},\)$;另给每成功任务的期望成本。
6.3 人评与 grader agreement
预先写 rubric、盲化系统、随机顺序、允许 tie/不可判;训练标注者并设 gold/重复项。二元一致率会受类别不平衡误导,可报告 Cohen ;多标注者/有序标签选适合的 并给 CI。低 agreement 不是“标注者差”,也可能是构念含糊。
7. 统计:从点估计到可重复结论
实验单位通常是 task/prompt,不是 token;同一 prompt 下多候选相关。比较模型 A/B 应 paired resampling prompt,训练随机性则在 seed 层建模。推荐同时报告均值、中位数、IQM、95% CI、效应量与各 seed。
IQM 是 25% 截尾均值:将样本排序后,从两端各去除 25% 的概率质量,再对中间 50% 求均值;有限样本的分位边界按部分权重处理。实际计算宜使用经过验证的统计实现,而不是简单筛选落在两个样本分位点之间的观测。[1]
# 可执行 Python 风格伪代码:paired hierarchical bootstrap
import numpy as np
rng = np.random.default_rng(20260711)
# score[method, seed, task];A/B 使用同一 task 集,但训练 seed 独立
delta = []
for _ in range(10_000):
seed_a = rng.integers(0, S_A, size=S_A) # A 的独立训练重复
seed_b = rng.integers(0, S_B, size=S_B) # B 的独立训练重复
task_ids = rng.integers(0, T, size=T) # task 层保持配对
a = score["A"][seed_a][:, task_ids]
b = score["B"][seed_b][:, task_ids]
delta.append(iqm(a.ravel()) - iqm(b.ravel()))
ci = np.quantile(delta, [0.025, 0.975])
effect = np.mean(score["A"], axis=0) - np.mean(score["B"], axis=0)
print({"delta_iqm": np.mean(delta), "ci95": ci, "effect": effect})
- paired test: 连续差值可用 paired permutation/bootstrap;二元同题结果可用 McNemar。先看差值分布,不机械选择 p 值。
- effect size: 准确率报百分点差/相对风险;连续人评分可报标准化差,但须解释实际意义。
- multiple comparisons: 预注册主比较;探索性多方法/多 benchmark 用 Holm 控 FWER 或 BH 控 FDR,公开全部比较。
- 多 seed: 3 seed 是最低习惯而非保证;根据方差/目标最小可检测效应做功效分析。
伪重复
把同一训练 run 的 10 万个 token 当 10 万个独立样本会虚假缩窄 CI。独立重复的层级必须与结论层级一致:要声称“训练方法更好”,需要独立训练 seeds。
8. 同算力基线与 Claim Hygiene
| 基线 | 公平预算 | 回答的问题 |
|---|---|---|
| SFT | 相同训练 token/GPU-hour,数据来源透明 | RL 是否胜过直接模仿 |
| Best-of-N | 相同生成 token + selector 成本 | 收益是否来自测试时计算 |
| rejection sampling | 生成+过滤+再训练总成本 | 在线梯度是否必要 |
| search | 节点展开、verifier 调用和延迟 | 策略学习是否胜过显式搜索 |
| RL | rollout、learner、ref/RM/verifier 全成本 | 部署一次采样时是否摊销训练成本 |
至少给两种公平性:固定训练计算与固定部署计算。若 RL 用 8 候选训练后 pass@1,应与同总生成预算的 SFT/rejection 及部署 BoN 分开比较。不要把训练期 verifier 调用当免费。
Claim 梯子
- 观察:“在预注册的三个 seed、此数据/预算下,A 比 B 高 ,CI 如下。”
- 机制:“消融与中介指标与假设一致”,但不能仅凭曲线证明因果。
- 泛化:“在时间/域外集重复”;未做则不能声称一般能力。
- 安全/对齐:“成功率提高”完全不足;需要独立风险指标、红队和部署边界。
9. 项目:Math/Code RLVR 与过优化曲线
9.1 数据 schema
{
"task_id": "...", "domain": "math|code", "statement": "...",
"source_license": "...", "created_at": "...", "split": "train|dev|hidden",
"solution_hash": "...", "test_bundle_version": "...",
"contamination_flags": [], "difficulty": 3,
"grader_version": "...", "max_runtime_ms": 2000
}
{
"trajectory_id": "...", "policy_version": "...", "response": "...",
"reward_components": {"correct":1,"format":1,"length":-0.1},
"status":"OK", "runtime_ms":83, "audit_tags":[]
}
9.2 预注册实验矩阵
| 轴 | 水平 | 目的 |
|---|---|---|
| 方法 | SFT / rejection / BoN / GRPO | 同生成 token 与 GPU-hour对照 |
| reward | 正确性 / +格式 / +长度 / PRM | 分解代理与真实收益 |
| 压力 | KL、step 或 N 的 5–8 个点 | 绘 over-optimization curve |
| 测试 | 公开 / hidden / dynamic / 对抗 | 分离调参与泛化 |
| seed | 至少 3,资源允许做功效分析后增加 | 估计训练方差 |
9.3 可证伪假设与失败审计
- H1:RLVR 在固定训练生成 token 下优于 rejection;若 CI 跨 0 或优势只在公开集,拒绝强结论。
- H2:训练 reward 随压力单调升,但独立人评/hidden verifier 在某点下降;若不下降,只能说本压力范围未观察到过优化。
- H3:PRM 改善长题信用;若收益由更短输出或格式通过率解释,机制主张失败。
故障诊断树:训练奖励涨、hidden 分数跌
proxy↑ / audit↓ ├─ 长度/格式/风格变化解释? │ ├─ 是 → 长度匹配 + 内容保持反事实 → 重估 reward │ └─ 否 ├─ verifier 漏洞或测试泄漏? │ ├─ 是 → 隔离 grader;运行 sibling holdout / mutation tests │ └─ 否 ├─ 数据污染/近重复? │ ├─ 是 → 重做来源与时间切分 │ └─ 否 ├─ selector/judge 偏置? │ ├─ 是 → 顺序交换、盲化、人类仲裁 │ └─ 否 → 检查分布漂移、seed 方差与真实能力退化
9.4 论文式报告模板
- 研究问题、预注册假设、证据等级;
- 数据来源/许可/污染与 split;
- 方法、预算账本、基线公平性;
- reward/verifier 威胁模型与 golden/adversarial tests;
- 主结果(各 seed、CI、effect size、成本 Pareto);
- 消融与 over-optimization 曲线;
- 失败 taxonomy 与代表样本;
- construct/internal/external validity 限制;
- 安全、伦理和可复现附件。
10. 面试问题、论文/一手来源与复现清单
10.1 面试问题
- BT 的平移不可辨识与温度未知时的尺度不可辨识如何影响跨 checkpoint RM 分数?
- 设计 code verifier:如何区分模型错误、测试错误和基础设施错误?
- 为何 pass@k 提升不能直接支持 pass@1 能力提升?Best-of-N 的 oracle gap 是什么?
- 三个 seed、同一测试集应如何做 paired hierarchical bootstrap?实验单位是什么?
- PRM 比 ORM 信号密,为何仍可能更容易被 hack?
- 系统成功率提高 10% 能否声称更安全?需要哪些反证测试?
10.2 代表性一手来源
- 【A】 Bradley & Terry, 1952;成对比较模型。
- 【A】 Christiano et al., 2017;Ouyang et al., 2022;偏好学习与 InstructGPT。
- 【A】 Bai et al., 2022,Constitutional AI;RLAIF/原则监督边界以原文为准。
- 【A】 Lightman et al., 2023, Let’s Verify Step by Step;过程监督。
- 【A】 Gao et al., 2023, reward model overoptimization scaling;Goodhart 实证。
- 【A】 Chen et al., 2021, Codex/pass@k;Agarwal et al., 2021, Deep RL at the Edge of the Statistical Precipice。
- 【A】 Zheng et al., 2023/2024, MT-Bench/Chatbot Arena;LLM judge 偏差须结合后续复核。
- 【B】 各 benchmark、sandbox 与 grader 官方仓库;复现时锁定 commit,不依赖网页滚动版本。
10.3 复现清单
- □ 写清构念、代理、混杂、反事实与停止规则;训练 reward 和 audit eval 权限隔离。
- □ 数据含许可、来源、时间、近重复/污染、split hash;hidden/dynamic 集不参与调参。
- □ verifier 有 golden、mutation、对抗、超时、逃逸测试;infra error 不计错答。
- □ 报 pass@1/k、BoN/oracle gap、成本、延迟、人评与 agreement;不只报单榜。
- □ 至少多 seed、paired CI、effect size、全部比较与多重校正;公开失败样本。
- □ 画代理与独立目标的优化压力曲线;安全结论单独证据,不由能力分数代替。
带走一句话
Reward 工程的最高标准不是“让曲线涨”,而是让每次上涨都能被一个权限独立、统计有效、对抗过的测量系统质疑。