第 9 章 评估与基准
第 9 章 评估与基准
学习目标
- 掌握离线评估指标(准确率/F1/AUC/BLEU/ROUGE/PPL)的适用边界;
- 熟悉 LLM 能力基准:MMLU、GSM8K、HumanEval、MATH、BBH;
- 理解偏好评估:MT-Bench、Chatbot Arena、AlpacaEval 的方法论差异;
- 掌握 RAG 评估、Agent 评估、工具调用评估的分层框架;
- 理解人评、A/B 测试与在线指标的闭环;
- 认识幻觉、毒性、偏见、越狱评估与污染、红队、可信评估的雷区。
9.1 评估:生命周期的质检站
训练出的模型能不能用、比上一个版本好不好、能不能上线——评估回答这些问题。它是生命周期的「质检站」,也是唯一能阻止坏模型进入生产环节的关卡(第 19 章的 CI/CD/CT 会把评估自动化为发布门禁)。
%%{init: {"themeVariables": {"primaryTextColor": "#000000", "textColor": "#000000", "labelColor": "#000000", "nodeTextColor": "#000000", "labelTextColor": "#000000", "scaleLabelColor": "#000000"}}}%%
flowchart LR
A[模型版本] --> B[离线评估
基准+业务集]
B -->|通过| C[在线小流量
A/B 与影子]
B -->|不通过| D[回到数据/训练]
C -->|达标| E[全量上线
在线监控]
C -->|不达标| D
E -->|反馈| F[评测集迭代]
F --> B评估的三条铁律(本章反复出现):
- 没有单一指标能描述 LLM——能力是多维的,评估必须成套;
- 离线分数 ≠ 在线效果——最终裁判是用户行为;
- 评测集是资产也是风险——污染的评测集比没有评测集更糟。
9.2 离线评估指标:从分类到生成
传统 ML 指标按任务类型分(这些指标在 LLM 时代依然用于分类/抽取类微调任务):
| 指标 | 任务 | 定义 | 坑 |
|---|---|---|---|
| Accuracy | 分类 | 对的比例 | 类别不平衡时失效 |
| Precision/Recall/F1 | 分类/抽取 | 查准、查全、调和平均 | 阈值敏感 |
| AUC-ROC | 排序/二分类 | 随机正例排在负例前的概率 | 只看排序不看校准 |
| BLEU | 文本生成 | n-gram 重叠精度 | 不衡量语义,翻译界已弃用 |
| ROUGE | 摘要 | n-gram 召回 | 同上,仅做粗筛 |
| Perplexity | 语言建模 | (第 7 章) | 低 PPL ≠ 好回答,只说明「像训练分布」 |
关键认知:BLEU/ROUGE 对开放生成基本失效(同一个意思有无数种说法,n-gram 匹配不上),这正是 LLM 评估转向「模型评模型」与「人工/在线评估」的原因。PPL 只用于预训练过程监控(同分布可比),不能跨模型比较、更不能预测对话质量。
9.3 LLM 能力基准:MMLU、GSM8K、HumanEval、MATH、BBH
四大公版基准构成能力评估的「高考科目」:
| 基准 | 考什么 | 形式 | 满分线现状(2026) |
|---|---|---|---|
| MMLU | 学科知识(57 科选择题) | 4 选 1 | 头部模型 >90%,已饱和 |
| GSM8K | 小学数学应用题 | 数字答案 | 已饱和(>95%) |
| MATH | 竞赛数学 | 数值+证明 | 接近饱和 |
| HumanEval | 代码生成(Python 函数) | 单元测试通过率(pass@1) | 已饱和(>90%) |
| BBH | 综合推理(BIG-Bath 精选) | 多任务 | 部分饱和 |
四个工程要点:
- Prompt 格式决定分数:同样的模型,few-shot 数量、CoT 提示、答案抽取正则不同,MMLU 能差 5 个点以上。对比模型必须固定 harness(推荐用 lm-evaluation-harness 或 opencompass 统一跑)。
- 饱和即失效:GSM8K 从「区分器」变成「及格线」,前沿区分已转移到更难的变体(GPQA、AIME、SWE-bench)。
- 中文能力:公版基准偏英文,中文要用 C-Eval、CMMLU、SuperCLUE 等本土基准补充。
- 版本快照:评测代码与 few-shot 样例要随评测集版本固化,否则跨时间对比无效。
9.4 偏好评估:MT-Bench、Arena、AlpacaEval
能力基准测「会不会做题」,偏好评估测「回答讨不讨人喜欢」。三条方法论路线:
- MT-Bench(Multi-Turn Bench):80 道多轮对话题,由 GPT-4 级裁判模型按 1-10 打分。便宜、快,但裁判偏好会传导(裁判偏爱长答案、自家风格)。
- Chatbot Arena(LMSYS):真实用户匿名对比两个模型的回答并投票,Elo 排名。目前最被信任的「真实感」指标——因为用户投票接近真实使用偏好,难以刷分。缺点:慢、贵、题目分布不可控(用户爱问什么就测什么)。
- AlpacaEval / AlpacaEval 2.0:给定指令集,模型回答 vs 参考模型(GPT-4)由裁判判胜负,报告胜率。2.0 引入长度控制(LC),修掉「更长=更好」的裁判偏差。
裁判模型的系统性问题(LLM-as-Judge 的三大偏差):位置偏差(偏爱第一个答案)、长度偏差(偏爱长答案)、自恋偏差(偏爱与自己同家族的答案)。缓解手段:交换位置各判一次、长度控制、多个裁判交叉。凡是「模型评模型」的分数,都要当作「有噪声的偏好代理」而非真值。
9.5 RAG、Agent、工具调用评估
LLM 应用的评估自成体系,分组件与端到端两层:
9.5.1 RAG 评估(分层拆解)
%%{init: {"themeVariables": {"primaryTextColor": "#000000", "textColor": "#000000", "labelColor": "#000000", "nodeTextColor": "#000000", "labelTextColor": "#000000", "scaleLabelColor": "#000000"}}}%%
flowchart LR
A[Query] --> B[检索]
B -->|召回| C[文档块]
C --> D[生成]
D --> E[回答]
B -.检索指标.-> B1[召回率/MRR/nDCG]
D -.忠实度.-> D1[回答是否忠于检索内容]
E -.答案质量.-> E1[正确性/完整性/引用准确]| 层 | 指标 | 工具 |
|---|---|---|
| 检索层 | Recall@K、MRR、nDCG | 标注 query-正确文档对 |
| 忠实层(Faithfulness) | 回答有无检索外的编造 | RAGAS、TruLens |
| 答案层 | 正确性、完整性、引用命中率 | 人评 + LLM 裁判 |
RAG 的黄金三角:检索得到(recall)、答案忠于来源(faithfulness)、答案答对问题(correctness)。三层要分别度量——只看端到端正确率时,「检索对了但答错」和「检索错了但模型靠记忆答对」会被混在一起,而两者的修复动作完全不同(第 17 章展开)。
9.5.2 Agent 与工具调用评估
Agent 评估的复杂度在于「过程」而非「结果」:
- 工具调用格式:函数名/参数是否合法(JSON Schema 校验,可自动判);
- 工具选择正确性:该调哪个工具、什么时候不调(拒答也是能力);
- 轨迹评估(Trajectory):多步规划的合理性——步数是否冗余、是否死循环;
- 端到端任务成功:最终状态是否达成(如 SWE-bench 的 issue 是否真被修复)。
基准代表:BFCL(Berkeley Function Calling Leaderboard)、τ-bench(多轮工具使用)、SWE-bench(真实 GitHub issue 修复)。Agent 评估的核心难题是「环境不稳定性」——外部工具的输出随时间变化,评测要打桩(mock)保证可复现,但 mock 又会失真。这个张力没有完美解,只有「关键路径打桩 + 抽样真实环境校验」的折中。
9.6 人评、A/B 测试、在线指标
离线评估之后是「真实世界」的检验:
人评(Human Evaluation):标注员对回答按维度打分(有用/相关/无害/格式),或成对比较。质量取决于标注指南与标注员水平,成本高、周期长,用于关键版本的门禁与评测集建设。
A/B 测试:线上流量随机分组,新旧模型各服务一部分用户,比业务指标。这是最终裁判:
| 指标类型 | 例子 | 说明 |
|---|---|---|
| 参与度 | 对话轮数、留存、使用频次 | 用户用脚投票 |
| 满意度 | 点赞/点踩、CSAT 问卷 | 显式反馈 |
| 任务完成率 | 问题解决率、转化率 | 业务价值 |
| 成本 | 每 query token 成本、延迟 | 反向指标 |
LLM 特有的在线坑:位置与长度效应在线上同样存在;A/B 的显著性检验周期要预计算(方差大时要更长的实验);「模型变长=用户更满意」的假象要用长度归一化剥离。影子流量(shadow deployment,新模型只推理不返回用户)用于上线前的生产流量回归测试(第 16 章)。
9.7 幻觉、毒性、偏见、鲁棒性、越狱评估
安全与负责任维度的评估(第 23 章治理视角展开):
- 幻觉:事实性幻觉用「可验证事实 QA」测(答案可与知识库比对);忠实性幻觉用 RAGAS 的 faithfulness 维度。「拒答正确率」也是指标——不知道就说不知道。
- 毒性:RealToxicityPrompts 等数据集 + Perspective API 类毒性分类器。
- 偏见:BBQ(刻板印象问答)、Winogender(性别职业关联)、WinoBias。按子群体分性能差距(第 6 章的偏差度量)。
- 鲁棒性:对抗扰动(同义改写、错别字、prompt 格式变化)下的分数稳定性——分数波动大说明能力是「背出来的」。
- 越狱(Jailbreak):恶意 prompt 绕过安全对齐。用 AdvBench、HarmBench 等红队数据集测攻击成功率(ASR)。
9.8 评估集污染、可信评估、红队测试
9.8.1 污染(Contamination)
第 6 章埋的雷在这里爆:评测集混入训练数据,分数虚高且无意义。检测方法:
- n-gram 重叠:评测题与训练语料做 n-gram 匹配(GSM8K 题目原文出现在语料里);
- 记忆探测:给评测题的前半句,看模型能否逐字续写出后半句(能续写=背过);
- 时间切分:训练数据截止日期早于评测集发布日期,天然无泄漏(Holdout 越晚构建越可信)。
治理动作:去重时把评测集列为「黑名单重点排除」;构建私有的、永不公开的业务评测集(公版基准必然逐渐污染,私有集是长期资产)。
9.8.2 可信评估清单
一次可信的模型对比至少要交代:评测集版本与来源、prompt 格式与 few-shot 设置、答案抽取规则、解码参数(temperature=0 还是采样)、跑分次数与方差、是否有污染检查。任何「我们模型 XX 分」的宣称,缺了这些要素都应打折。
9.8.3 红队测试(Red Teaming)
在攻击者之前攻击自己的模型:专职红队用越狱、提示注入、多轮诱导、编码混淆(base64、拼音、emoji 变体)等手段探测漏洞,产出「攻击成功案例 → 对齐数据 → 修复回归」的闭环。红队与自动化对抗生成的区别:人类红队提供真正的创造性攻击,自动化提供规模,生产级安全要两条腿走路(第 23 章)。
本章要点回顾
- 评估三铁律:没有单一指标、离线≠在线、评测集既是资产也是风险。
- BLEU/ROUGE 对开放生成失效、PPL 不能跨模型比较——这是 LLM 评估转向裁判模型与在线评估的原因。
- 能力基准(MMLU/GSM8K/HumanEval)已饱和,区分度转移到 GPQA/SWE-bench 等难题与中文本土基准。
- 偏好评估三路线:MT-Bench(裁判打分)、Arena(真人投票,最可信)、AlpacaEval(胜率+长度控制);裁判三大偏差:位置、长度、自恋。
- RAG 评估分三层:检索(recall/MRR)、忠实(faithfulness)、答案(correctness),分层才能定位问题。
- Agent 评估看轨迹与端到端,环境打桩与真实性的张力要用「关键路径打桩+抽样校验」折中。
- A/B 与在线指标是最终裁判;污染检测(n-gram、记忆探测、时间切分)与私有评测集是可信评估的底线;红队是安全的最后一道质检。
习题
- 你的模型 MMLU 涨了 3 分但用户满意度降了。列出至少 4 个可能的解释与验证方法。
- 设计一个客服场景的私有评测集:维度、规模、构建方法、防污染策略、更新节奏。
- 为什么 Chatbot Arena 比 MT-Bench 更抗刷分?它有什么自身的偏差?
- RAG 系统端到端正确率 75%。设计一套分层评估方案,把 25% 的错误分解到检索层/忠实层/答案层,并给出每层的修复动作。
- 用记忆探测法检验一个开源模型是否「背过」GSM8K:设计具体实验(提示模板、判定标准、统计方法)。
延伸阅读
- Hendrycks et al., Measuring Massive Multitask Language Understanding(MMLU), 2021
- Cobbe et al., Training Verifiers to Solve Math Word Problems(GSM8K), 2021
- Chen et al., Evaluating Large Language Models Trained on Code(HumanEval), 2021
- Zheng et al., Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena, 2023
- Dubois et al., Length-Controlled AlpacaEval, 2024
- Es et al., RAGAS: Automated Evaluation of Retrieval Augmented Generation, 2023
- Wei et al., Simple and Scalable Strategies to Continually Pre-train Large Language Models, 2023(含污染讨论)
- Perez et al., Red Teaming Language Models with Language Models, 2022
第 2 篇小结
第 2 篇「数据、训练与评估」走完了「把模型造出来」的全过程:
- 第 6 章数据工程:四类核心数据(预训练/指令/偏好/RAG),质量优先于数量,去重防记忆与污染,版本与血缘让问题可追溯。
- 第 7 章训练基础:交叉熵与 AdamW、Warmup-Stable-Decay 调度,训练谱系 PT→CPT→SFT→对齐,RLHF 三段式与 DPO 直通车,灾难性遗忘的对抗。
- 第 8 章高效训练:BF16 稳定性之源,梯度检查点与 ZeRO/FSDP 的显存分片,LoRA/QLoRA 把微调成本降两个量级,长上下文与编译加速。
- 第 9 章评估:能力基准已饱和、偏好评估三路线、RAG/Agent 分层评估、A/B 是最终裁判、污染与红队是底线。
到这里,「单机视角」的建模链路完整了。但真实的 LLM 训练与推理远不是一张卡的事——**第 3 篇「分布式训练与基础设施」**把视角拉到千卡集群:数据/张量/流水/专家并行的原理,Megatron 与 DeepSpeed 的框架格局,以及支撑它们的计算、存储、网络与调度体系。