1. 什么是评估:大模型评测第一性原理与度量演进
概览:大模型评估是为概率性黑盒系统建立确定性质量锚点,由推理协议、评分器与置信区间构成。核心节次:§1.3 三维评估矩阵、§1.7 最小 TypeScript 评估器。
1.1 本章目标与读者
读完后你能:
- 用 30 秒向同事解释"评估"是什么,以及它和单元测试的同构关系
- 讲出评估 76 年历史里的 9 个关键节点,理解每次演进"是因为旧方法在哪里断了"
- 区分基准(benchmark)、指标(metric)、评分器(judge)、排行榜(leaderboard)
- 说出评估解决的 5 类商业问题,以及为什么 Anthropic 说"评估会成为改进 agent 的瓶颈"
- 理解 Goodhart 定律:为什么榜单分数会系统性失真,以及怎么识别
前置知识:无。如果你写过 npm test、用过 Lighthouse、看懂 0-100 的分数,本章零负担。
1.2 评估简史:从模仿游戏到 Agent 考场(1950-2026)
评估不是 ChatGPT 带火的新词,它有 76 年历史,主线只有一条:如何为一个不确定的系统寻找确定性锚点。普通软件的测试建立在"同样输入永远得到同样输出"之上;LLM 是"同样输入,10 次里 7 次对,而且'对'的定义经常说不清"。下面 9 个节点,每个都在回答:上一个方法在哪里断了,所以需要新方法。
1950,图灵测试。 Turing 在哲学期刊 Mind 提出"模仿游戏":纯文本对话中无法分辨机器与人,就应承认机器智能(来源:Stanford 哲学百科:Turing Test)。它定义了评估的底层范式——用行为表现替代内部机制推断:给输入、看输出即可。但它留下一个至今的问题:"无法分辨"没有可复现的操作定义,换个考官结论就不同。
1966,ELIZA 与第一次评估失灵。 MIT 的 Weizenbaum 写了个只有关键词匹配加模板替换的程序(约 200 行),大量用户却把它当成真的理解自己,他本人深感不安(来源:ELIZA, CACM 1966)。这就是 ELIZA 效应:人类会向简陋的程序投射理解与共情——人类主观评估第一次被记录为系统性失灵:评估者会被被评估对象欺骗,而骗术成本极低。这颗雷到 1.5 节还会再炸一次。
2002,BLEU,第一把自动尺子。 在 BLEU 之前,翻译质量靠专业译员人工打分:一次评测数周、按小时计费、换一批人分数就漂移。IBM 的 Papineni 等人发明 BLEU——机器译文与多份参考译文做 n-gram 重叠统计,输出 0-100 分,目标是"快速、廉价、与人工评审高度相关"(来源:Papineni et al., BLEU, ACL 2002)。度量学局限:n-gram 词面统计测量的是生成文本与黄金参考答案的表面重合度,而非语义等价性与事实忠实度。这也导致 BLEU 对同义替换、语序重构等高质量改写具有系统性惩罚,暴露出基于词表刚性匹配度量语义的根本缺陷。
2018,GLUE,把九个任务装进一个总分。 此前是碎片化时代:翻译看 WMT+BLEU、摘要看 ROUGE、问答看 SQuAD,各论文的 SOTA 彼此不可比,没人能回答"这个模型总体更强吗"。GLUE 把 9 个理解任务打包、统一口径、提供公开榜(来源:Wang et al., GLUE, arXiv:1804.07461),相当于合成一个 Lighthouse 总分。结局极快:2019 年最强模型 80.2 逼近人类基线 87.1,年底 T5 达 90.3,榜首差距缩到噪声级,GLUE 失去区分度(来源:SuperGLUE, NeurIPS 2019)。行业第一次完整看到基准生命周期:提出 → 爬升 → 饱和 → 失效 → 被更难的替代。
2020,GPT-3 few-shot,评估对象换了。 此前的协议是"预训练 → 微调 → 上榜"。GPT-3(1750 亿参数)证明不微调、只在提示里给几个示例(few-shot)就能做新任务,并在二十多个数据集上横向对比(来源:Brown et al., arXiv:2005.14165)。评估从此变成"设计提示去引出模型已有能力"。副作用延续至今:分数不只反映模型,还反映你调用它的方式。
2021,MMLU,把知识面变成考分。 Hendrycks 等人从 GRE、USMLE、MCAT 等真实考试练习题收集了 57 学科、约 1.4 万道四选题(来源:Hendrycks et al., MMLU, arXiv:2009.03300)。首测 GPT-3 仅 43.9%(随机 25%),人类专家约 89.8%;2023 年 GPT-4 达 86.4%,官方口径"人类水平表现"(来源:GPT-4 Technical Report, arXiv:2303.08774)。评测范式解析:多项选择题(MCQ)范式实现了判分逻辑的完全符号化与确定性计算,但同时也引入了选项提示敏感性、选择肢偏置(Position Bias)与表层知识记忆欺骗性。
2022,HELM,单分数的终结。 Stanford CRFM 认为单一总分是病根,提出约 42 个场景 × 7 个维度:准确性、校准(模型对自己答案的置信度是否可信)、鲁棒性、公平性、偏见、毒性、效率(来源:HELM, arXiv:2211.09110、CRFM 公告)。度量衡范式演进:多维全景剖析架构(Multi-metric Profiling)彻底打破了单一标量分数的迷思。HELM 确立了评估必须涵盖准确性、校准度、鲁棒性、公平性等多维正交指标,使模型综合体检报告成为工业共识。
2023,Chatbot Arena,裁判换成人群。 ChatGPT 之后暴露评估真空:模型会背题、对话没有标准答案、用人类偏好当老师训练出的模型(RLHF)针对"人更喜欢哪个"优化。LMSYS 的解法是匿名两两对战:用户投票选更好的回答,用国际象棋的 Elo 分(后改为 Bradley-Terry 统计模型)排名,投票量后来到数百万级(来源:LMSYS Arena 博客、Zheng et al., arXiv:2306.05685)。众包偏好范式:基于 Bradley-Terry 概率图模型的双盲对战排位机制,绕过了非结构化开放式文本缺失黄金参考答案(Ground Truth)的困境,直接在潜空间中估计模型间的胜率相对偏序。其代价则是长尾高难度专业学科的区分度偏低。
2024-2026,GSM1k 反刷榜与 Agent 环境评估。 Scale AI 请人力按同考纲重写小学数学新题 GSM1k(1000+ 道):领先模型在旧题 GSM8K 与新题上的分差最高达 8 个百分点,且掉分与复述原题的概率正相关(Spearman r² = 0.36),指向部分记忆了原题(来源:Zhang et al., GSM1k, arXiv:2405.00332)。同年起评估重心转向 agent:SWE-bench 用真实 GitHub issue + Docker 沙箱 + 回归测试判分(来源:arXiv:2310.06770),Terminal-Bench、WebArena、OSWorld 把考场升级为终端、仿真网站、整台虚拟机(来源:Terminal-Bench、WebArena、OSWorld)。为什么:agent 要多轮调用工具、修改环境状态,"一次输入一次输出"的题库测不出"能不能干成事"。
flowchart LR
T["1950<br/>图灵测试<br/>以行为测智能"] -->|"缺可复现的操作定义"| E["1966<br/>ELIZA<br/>人评被表演欺骗"]
E -->|"人评慢、贵、不可复现"| B["2002<br/>BLEU<br/>自动评分取代人肉"]
B -->|"任务碎片化、分数不可比"| G["2018<br/>GLUE<br/>九任务一个总分"]
G -->|"两年内饱和、失去区分度"| P["2020<br/>GPT-3 few-shot<br/>评估对象变成提示下的模型"]
P -->|"需要专为提示设计的考卷"| M["2021<br/>MMLU<br/>57 学科知识考分"]
M -->|"单总分掩盖结构信息"| H["2022<br/>HELM<br/>七维画像取代单分"]
H -->|"对话无标准答案、模型会背题"| A["2023<br/>Chatbot Arena<br/>裁判换成真实人群"]
A -->|"静态题库可被记忆"| K["2024<br/>GSM1k<br/>量化背题分"]
K -->|"答题不等于干成事"| AG["2024-2026<br/>Agent 环境评估<br/>考场变成真实环境"]
76 年沉淀出三条至今成立的结论:基准是消耗品(寿命与它被优化的强度成反比);分数差距小于噪声时停止解读;单一总分掩盖结构("强在事实、弱在推理"只有多维画像才留得住)。
1.3 评估到底解决什么问题
回到工程现场。评估不是仪式动作,它解决 5 类真金白银的商业问题。
1. 不确定性管理——概率输出唯一的确定性锚点。 LLM 输出是概率采样:同一段 prompt 跑 10 次可能得到 10 个答案,"对不对"从布尔量变成分布。评估把分布坍缩成一个可比较、可追踪的数字(Anthropic 的定义:给 AI 一个输入,对输出应用判分逻辑以衡量成功,来源:Anthropic 工程博客)。确定性锚点:传统软件系统具有确定的状态转移,而自回归大语言模型本质是高维词表上的条件概率采样器。面对非确定性输出,评估系统是将随机性采样坍缩为具有统计置信度(Confidence Interval)的定量度量衡的基础设施。商业案例:客服机器人上线前若仅凭人工试聊 10 次便拍板,长尾的政策幻觉与逻辑漏洞根本无法被抽样捕获——上线后的业务资损与公关代价远超前置评估体系建设成本。
2. 模型选择。 每年数十个新模型,选型的本质是"在我的任务分布上谁期望回报更高",公开基准只覆盖通用分布。Anthropic 的真实对照:没有自建评估的团队换新模型要数周人工测试,有评估的团队"几天内完成强弱评估、调优提示并升级"(来源:Anthropic 工程博客)。商业案例:5 人团队选型,无评估集 = 2 周人力盲测;建 300 题业务评估集 = 一次性 2 天,此后每次选型复用。
3. 回归防护。 Anthropic 把评估分两类:能力评估(capability,通过率应低,是你要爬的坡)与回归评估(regression,通过率应接近 100%,防退化);能力评估跑出高分后"毕业"为常驻回归套件(来源:Anthropic 工程博客)。双轨度量防线:能力评估(Capability Evals)以高难度前沿试题探索模型的能力上限(期望通过率较低);回归评估(Regression Evals)则以冻结的业务黄金集监控系统基线与防御退化(期望通过率接近 100%)。商业案例:Prompt 模板仅微调一句话,身份认证类意图的误拒率便从 2% 飙升至 15%——具备严密回归流水线的工程团队在预发门禁即可阻断,而缺乏回归集的团队只能被动等待生产报警。
4. 能力边界测量。 产品承诺需要边界证据:GAIA 给出 2023 年的刻度——人类答对率 92%,带插件的 GPT-4 仅约 15%(来源:Mialon et al., GAIA, arXiv:2311.12983)。操作运行域标定:评估指标精确界定了系统的操作运行域(Operational Design Domain, ODD)。商业案例:业务部门承诺"AI 自动处理 80% 工单",但严格的分层评估揭示简单查询类准确率为 85%,而跨系统复杂排障类仅为 30%——系统的 SLA 承诺、兜底路由与人机协作(Human-in-the-loop)接管策略必须建立在此类硬核数据边界之上。
5. 对外承诺——营销与科学的分界。 厂商分数同时是科学声明与营销素材,而 FrontierMath 事件展示了当评估的生产方与获益方重合时会发生什么:Epoch AI 接受 OpenAI 资助(委托其制作 300 道题),在发布 o3 结果时未披露资助关系,参与命题的数学家事先不知情(来源:Epoch AI 官方澄清、TechCrunch 报道)。本书立场:对外榜单数字是"厂商声称",须降级处理;自建评估才是可审计证据。
1.4 评估是模型发展的瓶颈
这不是口号,是 Anthropic 官方工程博客的原话级判断(来源:Demystifying evals for AI agents):
"……others add them once at scale when evals become a bottleneck for improving the agent." (另一些团队直到评估成为改进 agent 的瓶颈时,才在规模化阶段补建评估。)
"Evals also shape how quickly you can adopt new models." (评估还决定了你能多快采用新模型。)
为什么是瓶颈?把改进循环摊开:改 prompt / 换模型 → 跑评估 → 对比分数 → 决定保留或回滚。唯一不可跳过的环节是评估。没有评估的团队,每轮改进退化成"改完感觉好一些"——而 LLM 的概率性恰恰让"感觉"最不可靠(OpenAI 侧也有同方向表述:CPO Kevin Weil 被转述为"Evals are the bottleneck",属二手转述、未检索到官方一手原文,此处仅作旁证)。
工程第一性原理:缺乏量化评估的 Prompt 调优与模型微调,无异于盲人摸象。评估体系不是提升模型能力的直接算法,而是让算法与架构的每次改进具备可观测性、可度量性与统计显著性(Statistical Significance)的护栏。Anthropic 在研发 Claude Code 时即建立了覆盖代码简洁性、文件编辑准确率与过度工程化倾向的多维量规,以评测闭环驱动模型演进(来源:Anthropic 工程博客)。
一个工程细节值得记住:评估本身也会出错,修起来很贵。Anthropic 记录:Opus 4.5 在 CORE-Bench 上最初只得 42%,排查发现是判分过严(把 96.12 与 96.124991… 判成不等)、任务歧义与随机性不可复现,更换判分脚手架后跳到 95%——这次"评估调试"花了人力周级成本(来源:Anthropic 工程博客)。正确姿势是趁早建小评估集(100 题以内也能起步),而不是等成了瓶颈再补一个庞大的。
1.5 Goodhart 定律:当指标变成目标
Goodhart 定律:当一个测量变成优化目标,它就不再是好的测量。 评估史上有四个实锤案例。
案例 1:集成技巧登顶 GLUE(2019)。 据中文技术社区考证,fast.ai 团队用 5 个模型做集成(混合随机种子、滑窗、多种结构),以 0.805 短暂超过 BERT-base 的 0.802 登顶 GLUE,成为第一次刷榜反思的引信(来源:中文技术社区考证;二手源,fast.ai 英文一手原帖未能检索到)。分数上去了,但没有任何一个单独的模型变强——聚合技巧可以伪造能力信号。
案例 2:GSM1k 量化的"记忆分"(2024)。 当行业向 GSM8K 优化推理时,同考纲换新卷:分差最高 8 个百分点,Mistral 与 Phi 家族接近 10%,且掉分与复述原题概率正相关(来源:arXiv:2405.00332)。Apple 的 GSM-Symbolic 补刀:只改题目里的数字,性能即显著下降——分数相当部分来自模式匹配而非推理(来源:arXiv:2410.05229)。
案例 3:长度偏差与 AlpacaEval 2.0(2023-2024)。 用 GPT-4 当裁判的 AlpacaEval 发现模型学会"写长"来赢,2024 年 4 月的 2.0 版专门加了长度控制修正(来源:arXiv:2404.04475)。Goodhart 定律与度量失效:当某项指标被设定为优化目标时,它便失去了作为优质度量工具的属性。LLM 裁判天然对长文本具有更高的偏好权重(Verbosity Bias),模型便会学会以形式上的冗长来操纵评分。
案例 4:agent 自己找到评估漏洞(2025)。 Anthropic 记录:内部评估中,模型通过读之前 trial 留下的 git 历史获得不公平优势(环境隔离失效);Opus 4.5 在 τ²-bench 某道订机票题上发现政策漏洞并利用它——按题面判"失败",实际上是对用户更好的解法(来源:Anthropic 工程博客)。
四案合并成一条工程推论:评估指标必须在"它会被优化"的假设下设计——题库定期换新、裁判做位置交换、分数做长度归一、环境做严格隔离,并且默认被优化迟早发生。你团队里最可能先出现的版本:有人为了让 prompt 回归集变绿,把题面改成了和模型输出一样的措辞。
1.6 核心词汇:三个动作与四个概念
一句话定义:评估 = 用一组预定义的任务 + 明确的评分规则,让模型输出可比较、可复现的数字。 三个动作:任务(出题)→ 生成(模型答题)→ 评分(规则或另一个模型判分),与 expect(add(1, 2)).toBe(3) 结构完全一样。
| 核心概念 | 评测学定义 | 评测专家核心洞察 |
|---|---|---|
| 基准 Benchmark | 一组任务的集合(如 MMLU 的 57 学科四选题) | tests/ 目录 |
| 指标 Metric | 怎么打分(accuracy、pass@k、BLEU) | toBe() vs toBeCloseTo() |
| 评分器 Judge | 实际执行打分的程序或模型 | Jest runner + assertion 库 |
| 排行榜 Leaderboard | 多个模型在同一基准上的公开分数表 | npm 趋势榜(仅供参考) |
关键洞见:基准是题库,指标是规则,评分器是裁判,排行榜是成绩公示栏。指标错了,再多题也白搭。
1.7 一个最小可运行的评估(TypeScript)
下面是完整评估流程的最简版:题目 → 模型 → 评分 → 汇总。
运行前提(本示例需要联网,且每次运行消耗少量 API 费用):
# 1. 安装 SDK(在任意空目录执行)
npm install openai
# 2. 从环境变量注入密钥——绝不硬编码进代码或提交进仓库
export OPENAI_API_KEY=sk-你的密钥
# Windows PowerShell 用:$env:OPENAI_API_KEY="sk-你的密钥"运行方式:下面代码用了 top-level await(模块顶层直接 await),CommonJS 的 .ts 不支持它。推荐 npx tsx eval.ts;或把文件改名为 eval.mts,用 Node 22.6+ 的 node --experimental-strip-types eval.mts 运行。
// eval.ts — 评估"模型能否正确做加法"
// 运行:npx tsx eval.ts (需联网 + API 费用,4 次调用的成本可忽略)
import OpenAI from "openai";
// SDK 默认读取 process.env.OPENAI_API_KEY;这里显式校验,报错更友好
if (!process.env.OPENAI_API_KEY) {
throw new Error("请先设置环境变量 OPENAI_API_KEY");
}
const openai = new OpenAI();
// 1. 任务集(dataset):真实评估中来自 JSONL 文件,这里内联便于演示
const tasks = [
{ input: "1 + 1", expected: "2" },
{ input: "23 + 45", expected: "68" },
{ input: "100 + 200", expected: "300" },
{ input: "999 + 1", expected: "1000" },
];
// 2. 评分函数(metric):精确匹配
function exactMatch(output: string, expected: string): number {
return output.trim() === expected.trim() ? 1 : 0;
}
// 3. 评估循环
async function evaluate(model: string) {
let correct = 0;
for (const task of tasks) {
const res = await openai.chat.completions.create({
model,
messages: [{ role: "user", content: task.input }],
});
const output = res.choices[0].message.content ?? "";
const score = exactMatch(output, task.expected);
correct += score;
console.log(`Q: ${task.input} → A: ${output.trim()} | ${score ? "✓" : "✗"}`);
}
return correct / tasks.length;
}
const acc = await evaluate("gpt-4o-mini");
console.log(`\nAccuracy: ${(acc * 100).toFixed(1)}%`);输出示例:
Q: 1 + 1 → A: 2 | ✓
Q: 23 + 45 → A: 68 | ✓
Q: 100 + 200 → A: 300 | ✓
Q: 999 + 1 → A: 1000 | ✓
Accuracy: 100.0%三个核心工程细节:
- exactMatch 太脆:模型若输出 "The answer is 2" 就判错。真实评估会先做归一化(提取数字、去标点),这正是很多"评估 bug"的来源;
- 4 道题只能算冒烟测试:少于 100 题的分数不要用来做决策(置信度详见第 3 章);
- 这个循环就是所有评估框架的内核:lm-evaluation-harness、OpenAI Evals 做的事,本质是把"题目管理、并发推理、评分器、报告"在这个循环上做工程化。
1.8 评估的边界与局限
| 能评估 | 难评估 |
|---|---|
| 知识覆盖面(MMLU) | 真实业务价值 |
| 推理正确率(GSM8K) | 用户满意度 |
| 代码可执行性(HumanEval) | 可维护性 |
| 指令遵循(IFEval) | 创造性 |
| 安全性(攻防测试) | 长期任务可靠性 |
一句关键话:任何评估都只是真实世界的一个投影。 投影越接近你的业务,越有用——这也是本书后面花大量篇幅讲"自建评估集"的原因。
1.9 实战与陷阱
陷阱 1:把测试集当训练集(数据污染)。 评估数据一旦混进训练语料,分数测的就是记忆力,GSM1k 的 8 个百分点分差是行业级实证(来源:arXiv:2405.00332)。对策:评估集独立维护、定期换新题。
陷阱 2:用单一指标决策。 准确率高不等于用户满意,至少配 2-3 个指标(accuracy + 用户偏好 + 延迟)——这正是 HELM 七维并列的动机(来源:arXiv:2211.09110)。
陷阱 3:忽略样本量。 4 道题对 3 道 = 75%,置信区间却可能是 [30%, 95%]。少于 100 题的评估只能做冒烟。
陷阱 4:把"厂商榜单第一"当选型结论。 榜单是"厂商声称 + 通用分布"的双重代理,与你的业务分布可能脱节。对策:榜单只用来缩圈,最终用自建评估集定夺。
1.10 验收自测
参考要点
参考要点
参考要点
1.11 本章 Cheat Sheet
| 概念 | 一句话 | 详见 |
|---|---|---|
| 评估 | 给概率系统找确定性锚点 | §1.6 |
| 基准 / 指标 / 评分器 / 排行榜 | 题库 / 规则 / 裁判 / 公示栏 | §1.6 |
| 评估的 5 个作用 | 不确定性/选型/回归/边界/承诺 | §1.3 |
| 基准生命周期 | 提出→爬升→饱和→失效→替代 | §1.2 |
| 能力 vs 回归评估 | 爬坡的坡 / 必须接近 100% 的底线 | §1.3 |
| Goodhart 定律 | 指标成为目标后就失真 | §1.5 |
| 数据污染 | 训练数据包含测试题 | §1.9 |
1.12 五个常见错误
- 把基准当评估——基准是题库,评估是"跑分动作 + 报告",两者不是一回事。
- 只看分数不看指标定义——四选一的 80% 里藏着 25% 随机基线,先问怎么判的分。
- 忽略样本量——100 题里 80 分的置信区间约 ±8%,小样本评估不可靠。
- 凭一次分数选模型——至少跑 3 个维度交叉看,单榜第一可能只是单点优化。
- 把榜单当真——训练数据可能已包含测试题,看到暴增先查污染与出处层级。
1.13 延伸阅读
⭐⭐⭐
- Anthropic: Demystifying evals for AI agents — "评估是瓶颈"原文出处
- Stanford HELM — 多维度评估方法论开山
- GSM1k (Scale AI) — 反刷榜对照实验
⭐⭐
- GLUE 论文 — 统一基准的起点
- Judging LLM-as-a-Judge — Chatbot Arena 与 LLM 裁判
⭐
- 基准饱和分析 — GLUE 生命周期梳理