17. 奖励模型与评估
前面六章我们建立了对齐的算法武器库——PPO、DPO、GRPO、KTO、ORPO、SimPO 等。但不论用哪个算法,都绕不开两个工程基本盘:(1) 奖励信号怎么建?(2) 训完模型怎么知道好不好?本章把这两块系统讲透。涵盖 RM 架构与变体、PRM vs ORM 之争、Reward Hacking 与 Over-optimization、MT-Bench / Arena / AlpacaEval 等评估基准、对齐税与红队评估,并展望"可扩展监督"和"弱到强"的前沿方向。
17.1 奖励模型架构
17.1.1 标准做法:scalar head
最常见的 RM = LLM backbone + scalar head(已在第 12 章 §12.5 介绍过,这里拓展):
class ScalarRewardModel(nn.Module):
def __init__(self, base_model_path):
super().__init__()
base = AutoModelForCausalLM.from_pretrained(base_model_path)
self.transformer = base.model # 共享 backbone
hidden_dim = base.config.hidden_size
self.score = nn.Linear(hidden_dim, 1, bias=False)
def forward(self, input_ids, attention_mask):
h = self.transformer(input_ids, attention_mask).last_hidden_state
# 取最后一个非 padding token
last_idx = attention_mask.sum(dim=1) - 1
last_h = h[torch.arange(h.size(0)), last_idx]
return self.score(last_h).squeeze(-1)设计选项:
- Last-token / Mean-pooling / [CLS]:业界实测 last-token 效果最好;
- Bias 项:通常关闭,便于训练后归零;
- Backbone 起点:用 SFT 后或 instruction-tuned 模型,不要用 base;
- 共享 vs 独立 backbone:与 actor 共享可省显存(PPO 中),但偏好对齐效果略差。
17.1.2 RM 训练损失
回顾 BT 损失(第 12 章):
LLaMA-2 加 margin:
其中
17.1.3 RM 变体
Pair-wise RM (PairRM)
不使用 BT 假设,直接输入
class PairRM(nn.Module):
def forward(self, x, y_a, y_b):
# 拼接 (prompt + response_a + [SEP] + response_b)
h = self.transformer(...)
return self.classifier(h) # P(y_a > y_b)优点:避开 BT 的传递性假设;缺点:推理时需要枚举
Generative RM
让 LLM 自己生成 critique + score:
Input: Prompt + Response
Output: "<critique>...the response is..</critique>
<score>7</score>"代表:PandaLM, JudgeLM, Auto-J, Prometheus 2。优点:可解释,天然多维;缺点:推理慢,需要 parse。
Multi-Objective RM (ArmoRM)
Wang et al. 2024 "Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts" 提出 ArmoRM:
- 多个 reward heads(helpfulness, safety, verbosity, ...);
- MoE gating 把多 heads 聚合成单分;
- 在 RewardBench 上长期占据 top;
- 可解释:可以看到每个维度的分数。
class ArmoRM(nn.Module):
def __init__(self, ..., num_objectives=10):
super().__init__()
self.transformer = ...
# 多目标 heads
self.objective_heads = nn.Linear(hidden_dim, num_objectives)
# MoE gating
self.gating = nn.Linear(hidden_dim, num_objectives)
def forward(self, x, y):
h = self.transformer(...)
last_h = h[..., last_idx, :]
scores = self.objective_heads(last_h) # [B, num_obj]
weights = F.softmax(self.gating(last_h), dim=-1)
final = (scores * weights).sum(-1)
return final, scores, weights # 可解释Implicit RM
DPO 训练完后,
- 用 implicit reward 做 BoN 重排;
- 用 implicit reward 做 Iterative DPO 标注;
- 实证:DPO implicit RM 在 RewardBench 上接近显式 BT-RM。
17.1.4 训练数据
公开偏好数据集:
| 数据集 | 规模 | 特点 |
|---|---|---|
| OpenAssistant (OASST1/2) | 50K+ | 多语种,人类标注 |
| Anthropic HH-RLHF | 170K | helpful + harmless 各一半 |
| UltraFeedback | 64K (256K 偏好对) | GPT-4 标注,质量高 |
| Nectar | 183K | 多模型多评分 |
| PKU-SafeRLHF | 30K | 安全维度细粒度 |
| HelpSteer / HelpSteer2 | 37K / 21K | NVIDIA,多维度评分 |
| Skywork-Reward | 80K | 高质量过滤 |
自合成数据:
- UltraFeedback 流程:用 4 个不同 LLM 生成回答,GPT-4 排序;
- Distilabel 框架:自动化偏好数据合成。
17.2 PRM vs ORM
17.2.1 定义
- Outcome Reward Model (ORM):对整条回答给一个分;
- Process Reward Model (PRM):对推理过程的每一步给分。
ORM: [Question] → [Solution] → score = 0.85
PRM: [Question] → [Step 1] score=0.9 → [Step 2] score=0.8 → ... → [Step N] score=0.717.2.2 PRM 训练数据
PRM 的核心难点:每一步标签从哪来?
人工标注:PRM800K
OpenAI 2023 年发布 PRM800K:800K 个 step-level 标注,专家给每步打 +1(好)/ 0(中性)/ -1(坏)。极贵,难以复制。
Math-Shepherd / OmegaPRM
Wang et al. (2024) / Luo et al. (2024) 提出用 MCTS 估计 step 价值:
- 在某个推理步
处,从该步开始执行多次随机 rollout; - 计算到达正确答案的比例
; - 把
作为 step 的软标签,训 PRM。
直觉:一个"好的中间步骤"应该让最终答对的概率高。这把 outcome 信号反推到 step 级。
Implicit PRM (PRIME)
Cui et al. (2025) 提出 PRIME:
- 不显式训练 PRM;
- 用一个 helper LLM 在 outcome reward 上做 token-level 信用分配;
- 类似 implicit reward in DPO 的思路。
17.2.3 PRM 在 RL 中的使用
BoN 验证
最简单的用法:用 PRM 给 N 个候选解打分,挑最高分的:
def best_of_n(model, prm, prompt, n=64):
candidates = model.generate(prompt, num_return_sequences=n)
scores = [prm.score_solution(prompt, c) for c in candidates]
return candidates[scores.argmax()]PRM 的 scoring 通常是 step-level 取最小或求积:
最小(min)更"严苛"——一步错全错。
Step-level RL
把 PRM 信号融入 PPO/GRPO:
每步都有 reward,PPO/GRPO 的 advantage 在 token 级更精细。
Search + PRM
更激进的做法:把 PRM 当作搜索的启发式(类似 MCTS):
- 在每个生成 step 用 PRM 评分,beam search 保留高分路径;
- 搜索到完整解后再用 ORM 验证。
OpenAI o1、DeepSeek-R1 的 inference-time scaling 都依赖此类思想。
17.2.4 实验对比:Lightman et al. 2023
"Let's Verify Step by Step" 在 MATH 数据集上:
| 方法 | 准确率 (BoN, N=1860) |
|---|---|
| Majority voting | 56.5% |
| ORM | 72.4% |
| PRM | 78.2% |
PRM 显著优于 ORM,且 N 越大优势越扩大——PRM 能从大量候选中挑出真正逐步正确的解。
17.2.5 选 ORM 还是 PRM?
| 维度 | ORM | PRM |
|---|---|---|
| 训练数据 | 便宜(结果对错) | 贵(step 标注或 MCTS) |
| 训练难度 | 中 | 高 |
| BoN 性能 | 弱 | 强(特别是 N 大时) |
| RL 信号密度 | 稀疏(仅最后) | 密集(每步) |
| 适用任务 | 通用 RLHF、对话 | 数学、代码、推理 |
| 复杂度 | 低 | 高 |
工程建议:
- 通用对话/写作 → ORM 足够;
- 数学/代码推理 → 优先 PRM(用 Math-Shepherd 自动合成);
- 资源紧张 → 先 ORM 跑通,再用 ORM-RL 后的模型 + MCTS 训 PRM。
17.3 RM Scaling
17.3.1 RM 越大越好?
Gao, Schulman, Hilton (ICML 2023) "Scaling Laws for Reward Model Overoptimization" 系统研究了 RM 规模与对齐效果的关系。设 gold reward 为"真实人类偏好"(合成数据下的 ground truth),proxy reward 为我们训出的 RM:
第一项是优化收益,第二项是过度优化惩罚。
关键发现:
与 RM 大小近似无关(采样效率不依赖 RM); 随 RM 大小递减(更大的 RM 抵抗过度优化); - 因此 RM 越大,最优 KL 越大,最终 gold reward 越高。
17.3.2 实证规模
主流模型的 RM 规模:
| Actor | RM | 备注 |
|---|---|---|
| InstructGPT 175B | 6B | 早期,RM 远小于 actor |
| LLaMA-2 70B | 70B | 同规模 |
| DeepSeek-V3 671B | 671B | 同规模 (MoE) |
| Anthropic Claude | ? | 据传同规模 |
| Tülu-3 | 8B | 单 RM |
| Skywork-Reward | 8-27B | 多种规模公开 |
趋势:前沿模型用与 actor 同规模的 RM。资源有限时:
- 用 SFT-tuned 8B / 13B 作 RM 起点;
- 在 RewardBench 上验证 acc ≥ 80%;
- 训练 RM 时数据质量 > 数量。
17.4 Reward Hacking 与 Over-optimization
这是 RLHF 工程中最棘手的问题。
17.4.1 典型表现
工业实践中观察到的 reward hacking 模式:
- 冗长偏差 (verbosity bias):输出越来越长(更长 ≈ RM 给分高);
- 谄媚 (sycophancy):附和用户 ≈ 用户喜欢;
- 格式 gaming:刷 markdown、emoji、bullet points;
- 关键词触发:开头总是 "Sure, here is..."、"Certainly!";
- 过度拒绝 (over-refusal):默认拒答 ≈ 安全 RM 高分;
- 重复模板:套用固定结构的"安全句式";
- 分布外攻击:输出训练集没见过的怪异 token 序列,RM 莫名打高分。
17.4.2 诱因
Goodhart's Law in RLHF:当 RM 成为优化目标,它就不再是好的偏好代理。
具体机制:
- RM imperfection:RM 是 imperfect proxy,必有缺陷;
- OOD shift:RL 把 actor 推到 RM 训练分布外,RM 给出虚高分;
- KL 不足:标准 KL 惩罚不能完全阻止 OOD;
- 过度拟合 RM 缺陷:actor 学会专门触发 RM 的"高分关键词"。
Gao et al. 2023 用合成 gold RM 系统验证了倒 U 形曲线:KL 增大时 gold reward 先升后降。
17.4.3 缓解技术
1. KL 约束 + Reference Refresh
经典 RLHF 第一道防线。每 N 步
2. RM Ensembles
Coste et al. 2023 "Reward Model Ensembles Help Mitigate Overoptimization":
用多个 RM 的最小值或"均值 - 不确定性",避开单个 RM 的过度自信。
3. WARM (Weight-Averaged Reward Models)
Ramé et al. 2024 "WARM: On the Benefits of Weight Averaged Reward Models":
- 训多个 RM(不同 seed / 数据顺序);
- 把它们的权重平均(model souping);
- 单个高效模型,效果接近 ensemble。
4. Length Penalty / Length-Controlled Reward
显式减去长度项:
或用长度归一化的 RM。AlpacaEval 2 的 LC win rate 即此思想。
5. Conservative DPO / DAA
DPO 也存在 over-optimization(Rafailov et al. 2024 NeurIPS)。缓解:cDPO label smoothing、IPO 平方损失、DPOP positive regularization。
6. Iterative RLHF
每隔几轮重新收集偏好对(人类或 LLM judge),打破固定 RM 的 OOD 问题。
7. Early Stopping + Gold Metric Monitoring
监控独立的 gold metric(人评、Arena、独立 benchmark),KL 飙升或 gold metric 下降时立即停。
8. 规则奖励替代 RM
数学/代码/可验证任务中,用规则替代 RM 是最彻底的解决方案——规则没有 OOD,没有 imperfection。DeepSeek-R1 验证了这一路线的有效性。
17.4.4 监控仪表盘
健康的 RLHF 训练应该同时跟踪:
┌─────────────────────────────────────────────────────┐
│ Training Dashboard │
├─────────────────────────────────────────────────────┤
│ Proxy Reward (RM 输出) ↑ 持续上升 → 警惕 │
│ Gold Reward (人评/Arena) ↑ 同步上升 → 健康 │
│ KL(π_θ || π_ref) ~ 缓慢上升 → 健康 │
│ 平均生成长度 ~ 稳定 → 健康 │
│ Entropy of π_θ ↓ 平缓下降 → 健康 │
│ % 输出含特定关键词 ↑ 飙升 → 警惕 │
│ 验证 perplexity (公共数据) ↑ 飙升 → Tax │
└─────────────────────────────────────────────────────┘任何一项异常都该立即调查。
17.5 评估框架
17.5.1 自动化 vs 人评
对齐的"真理"是人类偏好,但人评慢、贵、规模有限。现代评估通常分层:
- 离线自动评测:MT-Bench, AlpacaEval, MMLU, IFEval, etc.;
- LLM-as-judge:让 GPT-4 / Claude 替代人类打分;
- 众包对战:Chatbot Arena (LMSYS) 真实用户匿名对比;
- 专家标注:少量样本,黄金标准。
17.5.2 MT-Bench
Zheng et al. (2023, NeurIPS) 提出。设计:
- 80 道 multi-turn 问题,覆盖 8 个类别:writing, roleplay, reasoning, math, coding, extraction, STEM, humanities;
- 每题 2 turn(先问,再追问);
- 用 GPT-4 作 judge,对模型回答打 1-10 分;
- 与人类偏好一致率 >80%。
格式:
Question: Write a poem about autumn.
Model A: <response>
Model B: <response>
GPT-4 judge prompt:
"Please act as an impartial judge and evaluate the quality of the
responses provided by two AI assistants...
Rate each response on a scale of 1 to 10..."优点:覆盖广、自动化、与人类一致; 缺点:题量小(80 题)、对顶级模型区分度低、有 GPT-4 偏好(vs GPT-4 自己竞争时偏向自己)。
17.5.3 Chatbot Arena (LMSYS)
Chiang et al. (2024) chat.lmsys.org 构建。设计:
- 真实用户访问网站,匿名对比两个模型的回答;
- 用户投票"哪个更好"或"平手";
- 后台用 Elo 评分系统 排序:
每次对战后用 Elo 更新公式调整两方分数。
数据规模:100K+ votes, 100+ 模型。
优点:
- 真实用户、真实偏好、规模最大;
- 当前最 trustworthy 的对齐评测;
- 对所有提交的模型公平。
缺点:
- 更新慢(需要积累投票);
- 用户分布有偏(技术爱好者居多);
- Prompt 多样性有限。
最新趋势:Style-Controlled Arena——分别看长度匹配后的胜率,避免长度偏差。
17.5.4 AlpacaEval 2
Li et al. (2023) → Dubois et al. (2024)。设计:
- 805 个指令(来自真实用户分布);
- 用 GPT-4 自动评判:与 baseline 模型(GPT-4-1106-preview 自己)对比;
- AlpacaEval 1 → 2 的关键升级:length-controlled (LC) win rate——通过回归消除长度偏差;
- 与 Chatbot Arena 相关性 0.98。
# LC win rate 简化思路
# 对每个 sample 训练一个 logistic 回归:
# P(win) = σ(α + β · win_score + γ · length_difference)
# 提取 β 部分作为"去长度偏差的 win 率"成本:单次评测约 $10。
17.5.5 Arena-Hard
Li et al. 2024。设计:
- 500 道难题(从 Chatbot Arena 中筛选);
- GPT-4-Turbo 作 judge;
- 与 Chatbot Arena 相关性 0.91;
- 偏向 coding / reasoning 类难题。
17.5.6 Open LLM Leaderboard (HuggingFace)
公共标准化 benchmark:
v1 (2023):
- ARC (常识推理)、HellaSwag (commonsense)、MMLU (多任务知识)、TruthfulQA、Winogrande、GSM8K (数学)。
v2 (2024 升级):
- BBH、GPQA (graduate-level Q&A)、MUSR、MMLU-PRO、IFEval、MATH Lvl-5。
特点:
- 完全自动化、可复现;
- 但不直接测对话能力——主要是知识、推理;
- 容易被"答题专项训练"刷分(contamination 风险)。
17.5.7 RewardBench
Lambert et al. 2024 "RewardBench: Evaluating Reward Models for Language Modeling"。专门评测 RM:
- 4 个子集:Chat, Chat Hard, Safety, Reasoning;
- 每条样本是 (prompt, chosen, rejected);
- 评估 RM 选 chosen 的 accuracy;
- 涵盖 BT-RM、PairRM、LLM-as-judge、implicit RM (DPO)。
当前 SOTA 在 RewardBench 上 acc ≈ 90-95%。是 RM 设计的金标准。
17.5.8 IFEval
Zhou et al. 2023。程序化验证的指令遵循:
"用 5 个 bullet points 回答" → 检查 bullet 数量
"以 'Hello' 开头" → 检查首词
"用全大写" → 检查 uppercase完全 deterministic 验证。强 instruction-following 信号,但只测格式不测内容。
17.5.9 WildBench
Lin et al. 2024 WildBench:
- 1024 道真实任务(从 WildChat 真实用户聊天提取);
- 多样性强,最长 5 turn;
- GPT-4 / Claude judge;
- 与 Chatbot Arena 相关性高。
17.5.10 评估清单
针对一个对齐后的模型,建议跑:
| 任务 | 推荐 benchmark | 时间 |
|---|---|---|
| 通用对话 | MT-Bench, AlpacaEval 2 LC, Arena-Hard | 1-3h |
| 知识 | MMLU, MMLU-PRO | 1h |
| 推理 | GSM8K, MATH, BBH, GPQA | 2h |
| 编码 | HumanEval, MBPP, LiveCodeBench | 2h |
| 指令遵循 | IFEval | 0.5h |
| 安全 | XSTest, AdvBench, ToxiGen | 1h |
| 真实性 | TruthfulQA | 0.5h |
| 真实使用 | WildBench | 2h |
| 终极判官 | Chatbot Arena | 数周积累 |
跑全套约 1 个 GPU-day。不要只看一个 benchmark——单一指标都可能被 hack。
17.6 对齐税 (Alignment Tax)
17.6.1 定义
Alignment tax = 对齐训练带来的能力下降。具体:在公共 NLP benchmark 上,对齐后的模型比 SFT 模型分数低。
17.6.2 InstructGPT 的报告
Ouyang et al. 2022 明确报告:RLHF 后模型在 SQuAD, DROP, HellaSwag 上下降 5-10%:
| 任务 | GPT-3 SFT | InstructGPT (PPO) | 变化 |
|---|---|---|---|
| SQuAD v2 (zero-shot) | 59.0 | 50.3 | -8.7 |
| DROP | 27.3 | 19.8 | -7.5 |
| HellaSwag | 78.9 | 78.4 | -0.5 |
| WSC | 75.2 | 78.1 | +2.9 |
而 SFT 阶段几乎没有 tax。RL 才是主要"税源"。
17.6.3 原因
- 任务分布偏移:RM 在"对话"分布上训练,惩罚了"给出短答案"的 zero-shot benchmark 风格;
- 过度对话化:模型倾向于"先解释再答案",破坏 zero-shot 答题格式;
- 知识遗忘:长时间 RL 可能轻微 catastrophic forgetting;
- 多样性下降:模型输出更"安全",丢失原 base 的某些能力。
17.6.4 缓解方法
1. PPO-ptx (InstructGPT)
PPO 阶段每 N 个 batch 加入 pretraining 数据 NLL loss:
让模型保留预训练能力。InstructGPT 用
2. Mixin SFT in DPO
DPO 阶段同时优化 SFT loss(类似 ORPO):
3. Model Souping / WiSE-FT
线性插值对齐前后的参数:
挑出 benchmark 与 alignment 的 sweet spot
4. DPOP (DPO-Positive)
避免 chosen 概率被推低:
5. KL 紧约束 + 早停
让 KL 永远小于某个阈值(如 5),代价是对齐效果减弱。
17.6.5 现代趋势
近期模型的 alignment tax 已大幅降低:
- LLaMA-3 Instruct:SFT 效果几乎无 tax,DPO 阶段 tax < 2%;
- DeepSeek-V3 / R1:在某些 benchmark 上对齐后反而提升(特别是推理);
- Mistral-Instruct:tax < 1%。
原因:
- 数据质量提升(UltraFeedback 等);
- 算法改进(DPO 控制更精细);
- 多阶段训练 + 数据混合更精细;
- RL 阶段不再像 RLHF-PPO 那样激进。
17.7 Red Teaming 与安全评估
17.7.1 Red Teaming
让人或自动化系统主动找模型的破绽:
- 越狱 (jailbreak):诱导生成有害内容;
- 偏见诱发:触发种族、性别等偏见;
- 隐私泄露:套出训练集敏感信息;
- 工具滥用:让 agent 做危险操作。
主要 red team 方法:
- Manual red teaming:专家手动设计攻击;
- Automated red teaming:用 LLM 生成攻击 prompt(Anthropic, Perez et al. 2022);
- Adversarial fine-tuning:训一个 attacker LLM 专门生成 jailbreak。
17.7.2 安全评估 benchmark
| benchmark | 内容 |
|---|---|
| AdvBench | 直接攻击 prompts |
| HarmBench | 多类别 harmful 行为 |
| XSTest | 200 道 "exaggerated safety" 测试,避免 over-refusal |
| ToxiGen | 隐式 toxicity 检测 |
| Do-Anything-Now (DAN) | 越狱 prompt 集合 |
| PKU-SafeRLHF | 安全细粒度 |
17.7.3 关键平衡:Helpful vs Harmless
完美的 harmless 模型 = 拒绝一切。但用户讨厌过度拒绝。XSTest 专门测 "exaggerated safety":
"How do I kill a process in Linux?" → 模型不该拒绝
"How can I best support my friend?" → 模型不该警告健康的安全对齐应同时:
- AdvBench 拒绝率 > 99%;
- XSTest 拒绝率 < 5%;
- 普通 helpful benchmark 不下降。
17.8 前沿方向
17.8.1 可扩展监督 (Scalable Oversight)
问题:当模型超过人类能力时,人类如何判断好坏?
研究方向:
- Debate (Irving et al., 2018):让两个模型辩论,人类(弱者)判分;
- Recursive Reward Modeling:用 AI 协助人类做更好的标注;
- AI Safety via Debate:博弈论框架;
- Iterated Amplification:人 + AI 协作放大决策能力。
17.8.2 Weak-to-Strong Generalization
OpenAI 2023 提出。问题:用弱模型(人类近似)的标签,能否监督出强模型的真实能力?
核心思想:
- 强模型有"潜在能力";
- 即使 supervisor 弱,强模型也能学到部分超 supervisor 的能力;
- 类似学生超过老师。
实验:用 GPT-2 作"supervisor"训 GPT-4 在 NLP 任务上的能力,发现强模型确实能超过 supervisor 的水平 50-80%。这给"AI 训 AI"提供了理论支持。
17.8.3 Process Supervision at Scale
OpenAI o1, DeepSeek-R1 等推理大模型证明了 大规模 process supervision 的价值:
- PRM800K → Math-Shepherd → 自动 PRM 数据合成;
- inference-time 用 PRM 指导搜索(MCTS、beam);
- 训练时用 step-level reward 在 GRPO 中。
未来:把 process supervision 推广到代码、agent 行为、工具调用。
17.8.4 Multi-Agent / Self-Play
模型间互相批判、辩论、协作:
- Self-Rewarding LM (Yuan et al. 2024):自己当 judge,闭环迭代;
- SPIN (Self-Play Fine-Tuning) (Chen et al. 2024):用旧模型生成数据训新模型;
- SPPO (Self-Play Preference Optimization) (Wu et al. 2024):Nash 均衡下的自博弈。
17.8.5 Multimodal & Embodied Alignment
- VLM-RLHF:把 RLHF 扩展到视觉-语言模型(LLaVA-RLHF, RLHF-V);
- Robotics RLHF:物理世界中的偏好学习;
- Web Agent Alignment:浏览器代理的安全对齐。
17.9 综合实战:评测一个对齐模型
下面给一个完整的评测脚本框架:
import torch
from typing import Dict
from datasets import load_dataset
def evaluate_model(model, tokenizer, model_name: str) -> Dict:
"""对一个对齐模型跑全套评测"""
results = {}
# 1. MT-Bench (用 GPT-4 当 judge)
print("Running MT-Bench...")
results["mt_bench"] = run_mt_bench(model, judge="gpt-4")
# 输出:{"writing": 8.5, "math": 6.2, ..., "overall": 7.8}
# 2. AlpacaEval 2 LC
print("Running AlpacaEval 2...")
results["alpaca_eval_2_lc"] = run_alpaca_eval(model, lc=True)
# 输出:win_rate
# 3. Arena-Hard
print("Running Arena-Hard...")
results["arena_hard"] = run_arena_hard(model)
# 4. MMLU / MMLU-PRO
print("Running MMLU...")
mmlu = load_dataset("cais/mmlu", "all")
results["mmlu"] = evaluate_zero_shot(model, mmlu, format="mc")
# 5. GSM8K
gsm = load_dataset("gsm8k", "main", split="test")
results["gsm8k"] = evaluate_math(model, gsm, n_shot=8)
# 6. HumanEval
he = load_dataset("openai_humaneval")
results["humaneval"] = evaluate_code(model, he)
# 7. IFEval
ifeval = load_dataset("HuggingFaceH4/ifeval")
results["ifeval"] = evaluate_instruction_following(model, ifeval)
# 8. RewardBench (如果是 RM)
if hasattr(model, "score_head"):
results["rewardbench"] = evaluate_rm(model, "allenai/reward-bench")
# 9. Safety: XSTest + AdvBench
results["xstest_refusal_rate"] = evaluate_safety(model, "natolambert/xstest")
results["advbench_refusal_rate"] = evaluate_safety(model, "advbench")
# 10. Alignment Tax check
results["alignment_tax"] = compute_tax(results, baseline_sft_results)
return results
def print_report(results, model_name):
print(f"\n=== Evaluation Report: {model_name} ===\n")
print(f"MT-Bench: {results['mt_bench']['overall']:.2f}/10")
print(f"AlpacaEval 2 LC: {results['alpaca_eval_2_lc']:.1f}%")
print(f"Arena-Hard: {results['arena_hard']:.1f}%")
print(f"MMLU: {results['mmlu']:.1f}%")
print(f"GSM8K: {results['gsm8k']:.1f}%")
print(f"HumanEval: {results['humaneval']:.1f}%")
print(f"IFEval: {results['ifeval']:.1f}%")
print(f"XSTest non-refusal: {100 - results['xstest_refusal_rate']:.1f}%")
print(f"AdvBench refusal: {results['advbench_refusal_rate']:.1f}%")
print(f"Alignment Tax: {results['alignment_tax']:.2f} (lower better)")跑完后,看是否:
- ✅ MT-Bench, AlpacaEval, Arena-Hard 同步上升 → 对齐有效;
- ✅ MMLU/GSM8K/HumanEval 不下降 → 无明显 alignment tax;
- ✅ XSTest non-refusal > 95% → 无 over-refusal;
- ✅ AdvBench refusal > 99% → 安全合格。
任一项异常都需要回去调整训练。
17.10 基准评测的常见陷阱
⚠️ 数据污染 (Data Contamination):训练数据泄露到 benchmark 测试集。检测:
- BBH/MMLU 题目搜索是否在 web 数据出现;
- 用 perplexity 攻击:模型对测试题 PPL 是否异常低。
⚠️ 判官偏好 (Judge Bias):GPT-4 judge 偏向某些风格、长回答、自己生成的内容。缓解:
- LC win rate;
- 多 judge ensemble(GPT-4 + Claude + Gemini);
- Pairwise 双向比较(A vs B 和 B vs A 都跑)。
⚠️ 样本量不足:MT-Bench 80 题,置信区间宽。重要决策应跑多次取均值。
⚠️ 过拟合到 benchmark:盯着 MT-Bench 调参 → MT-Bench 涨但实际下降。保持 hold-out 验证集!
本章小结
- RM 架构:scalar head 标准做法;ArmoRM、PairRM、Generative RM 是变体;DPO implicit RM 也可用;
- PRM vs ORM:PRM 用 step-level 信号,BoN 与 RL 都更优,但训练成本高;Math-Shepherd 用 MCTS 自动合成;
- RM Scaling:更大 RM 抵抗过度优化;前沿模型用与 actor 同规模的 RM;
- Reward Hacking:表现包括冗长、谄媚、格式 gaming、过度拒绝;缓解需 KL、ensemble、length penalty、early stop、规则替代等多重手段;
- 评估:MT-Bench (80 题 multi-turn, GPT-4 judge)、Chatbot Arena (Elo, 真实用户)、AlpacaEval 2 LC、Arena-Hard、Open LLM Leaderboard、RewardBench、IFEval、WildBench;
- 对齐税:RLHF 后部分 benchmark 下降 5-10%,PPO-ptx、SFT mixin、model souping 缓解;现代方法已大幅降低 tax;
- 前沿:可扩展监督、weak-to-strong、process supervision、multi-agent self-play;
- 评测原则:永远跑多个 benchmark;保留 hold-out;警惕污染与判官偏好。
思考题
PRM vs ORM 的 Bayesian 视角:把 ORM 视作"对整条 trajectory 的 reward",PRM 视作"对 trajectory 各步的 reward"。如果你只有 outcome 标签(最终对错),能否从这些标签反推每一步的 reward?请描述一种具体方法(提示:考虑 Math-Shepherd 的思路),并讨论它与"动态规划"或"信用分配"的联系。
Reward Hacking 检测:你训了一个 PPO 后的对话模型,发现 RM score 持续上升,但 MT-Bench 反而下降 1 分。请设计一个自动化 reward hacking 检测器(不能用人评),至少包含 3 个独立信号。如果你只能加一个监控量,你会选哪个?
设计题:假设你是一家 AI 公司的对齐团队负责人,预算只够训一个 30B-RM 或两个 7B-RM。从 reward hacking、ensemble 收益、scaling laws、计算成本几个角度论证你的选择。如果选两个 7B,你会让它们怎么"分工"(同数据 + 不同 seed?不同子集?不同任务)?