Skip to content

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 介绍过,这里拓展):

python
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 章):

LRM(ϕ)=E(x,yw,yl)[logσ(rϕ(x,yw)rϕ(x,yl))]

LLaMA-2 加 margin:

LRMm=E[logσ(rwrlm(rating))]

其中 m(rating) 由标注员的"程度"标签决定(significantly better → 1.0, slightly better → 0.25)。

17.1.3 RM 变体

Pair-wise RM (PairRM)

不使用 BT 假设,直接输入 (x,ya,yb) 输出二分类:

python
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 的传递性假设;缺点:推理时需要枚举 (N2) 对。代表:LLM-Blender

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;
  • 可解释:可以看到每个维度的分数。
python
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 训练完后,r^θ(x,y)=βlogπθ(y|x)πref(y|x) 也是一个有效的 RM。可以:

  • 用 implicit reward 做 BoN 重排;
  • 用 implicit reward 做 Iterative DPO 标注;
  • 实证:DPO implicit RM 在 RewardBench 上接近显式 BT-RM。

17.1.4 训练数据

公开偏好数据集:

数据集规模特点
OpenAssistant (OASST1/2)50K+多语种,人类标注
Anthropic HH-RLHF170Khelpful + harmless 各一半
UltraFeedback64K (256K 偏好对)GPT-4 标注,质量高
Nectar183K多模型多评分
PKU-SafeRLHF30K安全维度细粒度
HelpSteer / HelpSteer237K / 21KNVIDIA,多维度评分
Skywork-Reward80K高质量过滤

自合成数据:

  • 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.7

17.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 价值

  1. 在某个推理步 st 处,从该步开始执行多次随机 rollout;
  2. 计算到达正确答案的比例 pt
  3. pt 作为 step t 的软标签,训 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 个候选解打分,挑最高分的:

python
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 取最小或求积:

S(y)=mintPRM(st)S(y)=tσ(PRM(st))

最小(min)更"严苛"——一步错全错。

Step-level RL

把 PRM 信号融入 PPO/GRPO:

rt=PRM(st)+α1[t=T]routcome

每步都有 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 voting56.5%
ORM72.4%
PRM78.2%

PRM 显著优于 ORM,且 N 越大优势越扩大——PRM 能从大量候选中挑出真正逐步正确的解。

17.2.5 选 ORM 还是 PRM?

维度ORMPRM
训练数据便宜(结果对错)贵(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:

Rgold(π)Rgold(πref)dDKL(ππref)cDKL(ππref)

第一项是优化收益,第二项是过度优化惩罚。

关键发现

  • d 与 RM 大小近似无关(采样效率不依赖 RM);
  • c 随 RM 大小递减(更大的 RM 抵抗过度优化);
  • 因此 RM 越大,最优 KL 越大,最终 gold reward 越高

17.3.2 实证规模

主流模型的 RM 规模:

ActorRM备注
InstructGPT 175B6B早期,RM 远小于 actor
LLaMA-2 70B70B同规模
DeepSeek-V3 671B671B同规模 (MoE)
Anthropic Claude?据传同规模
Tülu-38B单 RM
Skywork-Reward8-27B多种规模公开

趋势:前沿模型用与 actor 同规模的 RM。资源有限时:

  • 用 SFT-tuned 8B / 13B 作 RM 起点;
  • 在 RewardBench 上验证 acc ≥ 80%;
  • 训练 RM 时数据质量 > 数量。

17.4 Reward Hacking 与 Over-optimization

这是 RLHF 工程中最棘手的问题。

17.4.1 典型表现

工业实践中观察到的 reward hacking 模式:

  1. 冗长偏差 (verbosity bias):输出越来越长(更长 ≈ RM 给分高);
  2. 谄媚 (sycophancy):附和用户 ≈ 用户喜欢;
  3. 格式 gaming:刷 markdown、emoji、bullet points;
  4. 关键词触发:开头总是 "Sure, here is..."、"Certainly!";
  5. 过度拒绝 (over-refusal):默认拒答 ≈ 安全 RM 高分;
  6. 重复模板:套用固定结构的"安全句式";
  7. 分布外攻击:输出训练集没见过的怪异 token 序列,RM 莫名打高分。

17.4.2 诱因

Goodhart's Law in RLHF:当 RM 成为优化目标,它就不再是好的偏好代理。

具体机制:

  1. RM imperfection:RM 是 imperfect proxy,必有缺陷;
  2. OOD shift:RL 把 actor 推到 RM 训练分布外,RM 给出虚高分
  3. KL 不足:标准 KL 惩罚不能完全阻止 OOD;
  4. 过度拟合 RM 缺陷:actor 学会专门触发 RM 的"高分关键词"。

Gao et al. 2023 用合成 gold RM 系统验证了倒 U 形曲线:KL 增大时 gold reward 先升后降

17.4.3 缓解技术

1. KL 约束 + Reference Refresh

经典 RLHF 第一道防线。每 N 步 πrefπθ 让 trust region 重锚。

2. RM Ensembles

Coste et al. 2023 "Reward Model Ensembles Help Mitigate Overoptimization":

rensemble(x,y)=minkrϕ(k)(x,y)ormeankαstdk

用多个 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

显式减去长度项:

r(x,y)=rϕ(x,y)λ|y|

或用长度归一化的 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 人评

对齐的"真理"是人类偏好,但人评慢、贵、规模有限。现代评估通常分层:

  1. 离线自动评测:MT-Bench, AlpacaEval, MMLU, IFEval, etc.;
  2. LLM-as-judge:让 GPT-4 / Claude 替代人类打分;
  3. 众包对战:Chatbot Arena (LMSYS) 真实用户匿名对比;
  4. 专家标注:少量样本,黄金标准。

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 评分系统 排序:
PA=11+10(RBRA)/400

每次对战后用 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
python
# 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-Hard1-3h
知识MMLU, MMLU-PRO1h
推理GSM8K, MATH, BBH, GPQA2h
编码HumanEval, MBPP, LiveCodeBench2h
指令遵循IFEval0.5h
安全XSTest, AdvBench, ToxiGen1h
真实性TruthfulQA0.5h
真实使用WildBench2h
终极判官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 SFTInstructGPT (PPO)变化
SQuAD v2 (zero-shot)59.050.3-8.7
DROP27.319.8-7.5
HellaSwag78.978.4-0.5
WSC75.278.1+2.9

而 SFT 阶段几乎没有 tax。RL 才是主要"税源"。

17.6.3 原因

  1. 任务分布偏移:RM 在"对话"分布上训练,惩罚了"给出短答案"的 zero-shot benchmark 风格;
  2. 过度对话化:模型倾向于"先解释再答案",破坏 zero-shot 答题格式;
  3. 知识遗忘:长时间 RL 可能轻微 catastrophic forgetting;
  4. 多样性下降:模型输出更"安全",丢失原 base 的某些能力。

17.6.4 缓解方法

1. PPO-ptx (InstructGPT)

PPO 阶段每 N 个 batch 加入 pretraining 数据 NLL loss:

L=LPPO+γLNLLpretrain

让模型保留预训练能力。InstructGPT 用 γ=27.8,benchmark 下降减半。

2. Mixin SFT in DPO

DPO 阶段同时优化 SFT loss(类似 ORPO):

LDPO+SFT=LDPO+αLSFT

3. Model Souping / WiSE-FT

线性插值对齐前后的参数:

θinterp=(1α)θSFT+αθaligned

挑出 benchmark 与 alignment 的 sweet spot α

4. DPOP (DPO-Positive)

避免 chosen 概率被推低:

LDPOP=LDPO+λmax(0,logπref(yw)logπθ(yw))

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 行为
XSTest200 道 "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 综合实战:评测一个对齐模型

下面给一个完整的评测脚本框架:

python
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;警惕污染与判官偏好。

思考题

  1. PRM vs ORM 的 Bayesian 视角:把 ORM 视作"对整条 trajectory 的 reward",PRM 视作"对 trajectory 各步的 reward"。如果你只有 outcome 标签(最终对错),能否从这些标签反推每一步的 reward?请描述一种具体方法(提示:考虑 Math-Shepherd 的思路),并讨论它与"动态规划"或"信用分配"的联系。

  2. Reward Hacking 检测:你训了一个 PPO 后的对话模型,发现 RM score 持续上升,但 MT-Bench 反而下降 1 分。请设计一个自动化 reward hacking 检测器(不能用人评),至少包含 3 个独立信号。如果你只能加一个监控量,你会选哪个?

  3. 设计题:假设你是一家 AI 公司的对齐团队负责人,预算只够训一个 30B-RM 或两个 7B-RM。从 reward hacking、ensemble 收益、scaling laws、计算成本几个角度论证你的选择。如果选两个 7B,你会让它们怎么"分工"(同数据 + 不同 seed?不同子集?不同任务)?

基于 MIT 协议发布