- Authors

- Name
- Youngju Kim
- @fjvbn20031
- 引言 —— 用同一个词测量不同的东西
- 文本(1)—— 选择题测的是什么,测不了什么
- 文本(2)—— 生成式任务与 LLM 评委
- 图像(1)—— 生成质量指标到底测了什么
- 图像(2)—— 理解类任务的评分与描述文字的陷阱
- 智能体 —— 最难测量的领域
- 一张表看三个领域
- 结语 —— 该问的是数字背后的程序,而不是数字的单位
- 参考资料
引言 —— 用同一个词测量不同的东西
模型发布材料里通常并排放着三种数字:MMLU 84.2、MMMU 72.1、SWE-bench Verified 71.4。三个都是百分比,三个都标注"越高越好"。所以看起来像是同一类数字。
但这三者的测量结构其实完全不同。
- 第一个数字往往是在模型根本没有生成答案的情况下得出的,可能只是比较了选项字符串的概率。
- 第二个数字有人类定义的正确答案,但评分规则里嵌着任意常数,比如 5% 的误差容忍度,或是某个编辑距离阈值。
- 第三个数字是启动容器、执行命令、跑测试之后的结果。同一个模型再跑一次,得到的值会不一样。
把这三个数字并排放在一起,说"这个模型在所有领域都很强"的那一刻,我们其实是把三套不同的测量装置错当成了同一把刻度尺。本文一直在追问同一个问题 —— 要让这个数字具有它表面上的意义,需要哪些前提为真?
评测框架具体是怎么产出这些数字的,写在了拆解 LLM 基准测试工具里。这里我们看的是上面一层 —— 各领域彼此不同的测量逻辑。
文本(1)—— 选择题测的是什么,测不了什么
选择题类基准测试受欢迎,是因为评分是免费的。正确答案就是一个标签,既不需要人也不需要评委模型。作为代价,它放弃了三样东西。
第一,正确答案本身可能是错的。 重新核查 MMLU 的论文 Are We Done with MMLU? 让 14 位专家重新审阅了 30 个学科的 3000 道题。折算下来整体错误率约为 6.49%,但问题出在分布上:Virology(病毒学)这一科目样本中有 57% 存在错误(30% 是正确答案标签本身错了,15% 是题目本身含糊不清),Logical Fallacies 和 College Chemistry 也都超过了 20%。也就是说,MMLU 总分里有相当一部分测的是"你有多擅长去匹配一份错误的答案表"。而这个事实一旦把各科目分数取平均,就会彻底消失。
第二,题型本身就制造了捷径。 四选一的话,瞎蒙也能拿 25 分。而且模型还能利用选项之间的表面线索(长度、具体程度、是否可以排除)来缩小答案范围。这正是 MMLU-Pro 把选项扩到 10 个的原因,结果是提示词变化带来的分数波动从 4-5 个百分点降到了 2 个百分点左右(arXiv 2406.01574)。波动的缩小本身,就反证了原本的题型有多松散。
第三,选项的顺序会混进分数里。Large Language Models Are Not Robust Multiple Choice Selectors 表明,模型会偏好特定位置上的选项符号(比如 A 或 D),仅仅打乱选项顺序就能让分数发生显著变化。一个没有打乱顺序多跑几次再取平均的选择题分数,测到的其实是模型的知识和模型对位置的偏好混在一起的值。
指标很高但实际很差(文本选择题)。 用对数似然方式评分、在 MMLU 上拿到高分的基础模型,一旦直接接进产品里,经常会因为不听指令而没法用。对数似然评分完全不需要模型生成任何内容,所以它从一开始就把"是否遵循指令"这项能力排除在测量范围之外。不是分数在撒谎,是我们把那个分数当成了另一个问题的答案。
文本(2)—— 生成式任务与 LLM 评委
一旦转向摘要、客服回复、代码讲解这类有多个合理答案的任务,评分本身就变成了一个研究课题。BLEU、ROUGE 这类 n-gram 重叠指标,表达方式一变就会扣分给好答案,表达方式凑巧一致又会放行错答案。于是实务转向了 LLM 评委。
评委模型本身的表现并不差。搭建了 MT-Bench 和 Chatbot Arena 的论文 Zheng et al. (NeurIPS 2023) 测得,剔除平局后,GPT-4 评委与人类专家的一致率是 85%,而同样条件下人类彼此之间的一致率是 81%;在众包环境下则是 87%。"评委不如人类"这种反驳,在这些数字面前站不住脚。
问题出在偏差的结构上。同一篇论文测出的其他数值要沉重得多。
| 评委 | 交换顺序后判定不变的比例 | 偏好第一个答案 | 偏好第二个答案 |
|---|---|---|---|
| GPT-4 | 65.0% | 30.0% | 5.0% |
| GPT-3.5 | 46.2% | 50.0% | 1.2% |
| Claude-v1 | 23.8% | 75.0% | 0.0% |
仅仅把两个答案的顺序倒过来,连 GPT-4 都有三分之一的概率改变判定。Claude-v1 四次里有三次会把票投给先出现的那个答案。在这种情况下只跑一次 A/B 比较就下结论说"新提示词赢了",那个结论里有相当一部分其实是顺序在起作用。
长度偏差也被量化过。同一篇论文的"重复列表"攻击 —— 不增加实质内容,只是把答案膨胀成列表形式 —— 让 Claude-v1 和 GPT-3.5 有 91.3% 的概率被骗过,而 GPT-4 只有 8.7%。不同评委之间长度偏差的大小相差十倍。
缓解方法整理如下。
| 偏差 | 缓解方法 | 成本 |
|---|---|---|
| 位置偏差 | 交换顺序评两次,只有两次都赢才算赢 | 调用次数翻倍 |
| 长度偏差 | 长度校正胜率,或在评分细则中把长度设为明确的扣分项 | 回归校正或评分细则设计 |
| 自我偏好 | 使用与被评模型不同系列的评委,多评委合议 | 需要模型多样性 |
| 缺乏依据的宽容 | 附带参考答案的 reference-guided 评分 | 撰写参考答案的成本 |
| 总分模糊 | 拆解为逐项评分细则再汇总 | 提示词长度、解析成本 |
长度校正的效果已经被实证验证过。AlpacaEval 2.0 的长度校正胜率是一个用回归去掉答案长度影响的指标,仅这一项校正就把与 Chatbot Arena 排名的斯皮尔曼相关系数从 0.9 出头提高到了 0.98。反过来说,校正前指标的不一致里,相当一部分其实就是长度在作祟。
人类偏好排行榜也不是安全区。The Leaderboard Illusion (arXiv 2504.20879) 报告称,在 Chatbot Arena 上,部分厂商可以在发布前私下测试多个变体,只留下自己满意的那个。有一家厂商在公开一个版本之前,私下测试了 27 个变体。数据分配也并不均匀 —— Google 和 OpenAI 分别拿到了全部对战数据的 19.2% 和 20.4%,而 83 个开放权重模型加在一起也只拿到 29.7%;论文估计,仅凭数据量的差异,在竞技场分布中就能带来最高 112% 的相对性能增益。Arena 团队接受了这一批评,并公布了改进计划。
指标很高但实际很差(生成式)。 评委胜率从 55% 涨到 62%,但用户满意度纹丝不动。如果唯一的改动是在提示词里加了一句"请详细说明",导致回答长度变成了原来的 1.6 倍,那么涨的不是质量,而是评委对长度的偏好。不把长度校正胜率放在一起看,这个区别就看不出来。
图像(1)—— 生成质量指标到底测了什么
在图像生成评测中被引用最多的 FID,名字虽然叫"距离",却并不测量单张图像的质量。它的计算流程是这样的。
1. 准备 N 张真实图像和 N 张生成图像(惯例上 N = 50,000)
2. 把每张图像缩放到 299x299,送入 Inception-v3
3. 取出 pool3 层的 2048 维特征向量
4. 把两组特征各自"假设"为服从多元正态分布,估计均值与协方差
5. 计算两个正态分布之间的 Frechet 距离 → 这个值就是 FID(越低越好)
这里藏着四个假设,而且四个都被违反了。
假设一:Inception-v3 的特征能代表图像质量。 Inception-v3 是一个 2015 年为 ImageNet 1000 类分类任务训练出来的模型,用来表征今天的文生图模型所产出内容的多样性,未免太窄了。
假设二:特征服从正态分布。 并不是。Rethinking FID (CVPR 2024, arXiv 2401.09603) 证明这个假设是错的,并指出 FID 与人类评审的判断不一致,无法反映迭代改进模型的渐进式提升,捕捉不到失真程度,而且结果会随样本量变化而不稳定。作为替代方案,该论文提出了使用 CLIP 嵌入和最大均值差异的 CMMD。
假设三:样本量没有影响。 FID 是一个有偏估计量,样本越小,值越大。50,000 张这个惯例之所以固定下来正是因为这个原因 —— 论文之间样本数不同,数字就没法比较。
假设四:预处理是中立的。 这是最令人震惊的部分。clean-fid (CVPR 2022) 测量发现,不同库的缩放(resize)实现不一样,同一张图会算出不同的 FID。以正确实现的 PIL bicubic 为基准,OpenCV、PyTorch、TensorFlow 各自的 bicubic 实现都造成了 6 以上的 FID 差距。模型完全没变,仅仅换了个缩放函数,差距就能比论文吹嘘的改进幅度还大。 JPEG 压缩同理,人眼分辨不出的压缩质量差异也会带动 FID 变化。
因此近来的文生图评测已经从分布距离转向了组件级验证。GenEval 用物体检测器逐项确认"要求的物体是否真的存在、数量对不对、颜色对不对、位置关系对不对"。DPG-Bench 给出段落级别的密集提示词,用 VQA 模型逐个核对语义元素。由于评分依据是人类可读的条目,这种方式比 FID 更具诊断性。当然,这种方式也把检测器和 VQA 模型自身的误差直接带进了评分里。
指标很高但实际很差(图像生成)。 FID 从 12.4"改善"到 9.8,人类评价却反而变差了。原因可能是预处理流水线换了缩放库,也可能是参考图像集的 JPEG 质量变了。报告 FID 数值时如果不同时写明缩放实现、样本数、参考集,这个数字就没法被别的团队验证。
图像(2)—— 理解类任务的评分与描述文字的陷阱
评估读懂图像(而不是生成图像)的能力,看起来和文本选择题类似,但评分规则里嵌着领域特有的考量。我们直接看三个代表性指标的定义。
VQA 准确率 (VQAv2, TextVQA)
score = min(给出该答案的人数 / 3, 1)
→ 10 个人里有 3 个以上给出相同答案,就算满分。
人们意见分裂的问题,满分本身就不可能拿到。
ANLS (DocVQA)
NL = 归一化编辑距离(预测值, 正确答案)
score = 1 - NL (当 NL < 0.5 时)
= 0 (其余情况)
→ OCR 错一两个字给部分分,错超过一半直接 0 分。
0.5 这个阈值是一种判断:"错到这个程度就不算 OCR 误差了"。
Relaxed accuracy (ChartQA)
数值答案只要相对误差在 5% 以内就算正确
→ 反映了从图表里读数值这类任务的现实妥协。
但同时,在 5% 至关重要的领域里,它会把错误答案判成正确。
三个定义都合理。同时,三个都藏着一个任意常数:3 人、0.5、5%。这些常数在各自的论文里都有理有据,但没人能保证同样的值在你的领域也合适。如果你做的是读财务报表数字的服务,ChartQA 那 5% 的容忍度就是灾难。一个在 ChartQA 上拿 90 分的模型,在你的任务上可能完全没法用,而这不是模型的错,是我们直接照搬指标的错。
选项数量的问题在这里再次出现。MMMU-Pro(arXiv 2409.02813)把 MMMU 的选项从 4 个扩到 10 个,还把问题文字嵌进了图像本身,让任务必须真正看图才能解出来。仅仅是增加选项数量,就让 GPT-4o(0513)的分数从 64.7 掉到了 54.0,跌了 10.7 个百分点。那 10.7 分测的不是理解力,而是排除法。
描述文字(caption)评测是个更古老的陷阱。CIDEr、SPICE、BLEU 测量的是与参考描述之间的 n-gram 或图结构重叠,但参考描述通常只有 5 条,表达稍有不同分数就会掉。CLIPScore (EMNLP 2021) 证明,完全不依赖参考、只用图像和描述文字之间的嵌入相似度,反而与人类判断更吻合。不过同一篇论文也明确指出了局限 —— 遇到需要图像之外的背景知识才能理解的场景,比如新闻照片的说明文字,它就弱于基于参考的指标。不存在万能指标,要按描述任务的性质来选指标。
指标很高但实际很差(图像理解)。 一个 DocVQA ANLS 达到 0.91 的文档解析器,被接入合同金额提取环节后出了事故。因为 ANLS 是基于编辑距离的部分给分机制,把"1,250,000"读成"125,000",编辑距离仍然很小,照样能拿到接近 0.9 的分数。金额字段应该用精确匹配来衡量,而不是部分给分。你得先确认清楚,这个指标是不是那种会给部分分的类型,再决定能不能用在你的任务上。
智能体 —— 最难测量的领域
前两个领域都是一个输入对应一个输出。智能体不是这样。一个输入对应几十次动作,这些动作会改变环境,环境一变,下一步动作的意义也跟着变。到了这里,测量的大部分前提都崩塌了。
把部分成功硬塞进 0 和 1
智能体任务大多是多步骤的。10 步里完美完成 9 步、最后一步失败的执行,和从第一步就晕头转向的执行,得到的是同一个 0 分。信息损失非常大。
各个基准测试对这个问题的处理方式不一样。AppWorld 检查最终状态,但把任务级完成度和场景级完成度分开报告。GAIA 按难度分级,让崩溃发生在哪一层变得可见。OSWorld 给每个任务单独配一个基于执行的验证脚本,去确认"结果文件实际上是不是长这样"。不管是哪一种,只引用单一的成功率,这整套结构就全部消失了。
环境状态是分数的一部分
智能体基准测试使用的是活的环境。网页的 DOM 会变,软件会更新,会跳出验证码,加载会变慢。这些变化和模型性能毫无关系,却会原样体现在分数里。
OSWorld 团队在 2025 年 7 月 28 日发布 OSWorld-Verified 正是为了这个原因。他们确认并修复了 300 多个问题报告 —— 网页结构变化、时序依赖、任务本身含糊不清、不接受多种正确解法路径的验证函数、过严或过松的评分。也就是说,在此之前公布的那些 OSWorld 分数,相当一部分测的其实是环境的状态。 目前的人类基线估计约为 72%,而顶尖系统在 60% 出头。
SWE-bench 系列以另一种方式撞上了同一个问题。因为它的评分基于实际执行,看起来在语义上很扎实,但测试如果不够严格,错误的补丁也能通过。审计过 SWE-bench 质量的研究报告称,成功通过的补丁里有 32.67% 属于答案泄露在 issue 描述中的情况,31.08% 是因为测试本身不够充分才通过的。即便是 SWE-bench Verified,也有超过 15% 的实例需要加强测试,有估计认为排行榜上的成功率被虚高了 6 到 7 个百分点。
同一个模型每次跑出不同的分数
即便把温度设为 0,智能体的执行也不是确定性的。工具调用的顺序、网络延迟、超时、重试、容器资源 —— 这些统统会改变结果。
τ-bench 系列把这种非确定性直接做进了指标里。如果说 pass@k 是"k 次里至少成功一次",那么 pass^k 就是"k 次全部成功"。对于成功率为 p 的任务,pass^k 大致会缩小到 p 的 k 次方。哪怕是成功率高达 90% 的智能体,k 取 8 的话,也会掉到 0.9 的 8 次方,也就是约 43%。反过来说,这意味着八次里至少失败一次的概率大约有 57%。把这两个数字弄混是常见的错误,所以务必确认自己说的是哪一个。τ-bench 原论文的报告显示,当时最顶尖的函数调用型智能体连一半的任务都解不出来,零售(retail)领域的 pass^8 更是不到 25%。
这个指标之所以重要,是因为实际生产环境里真正要问的问题不是 pass@k,而是 pass^k。没有哪个服务能接受"同一个客户请求重试八次,只要有一次成功就算数"。
基础设施配置同样会影响分数。Anthropic 自己的测量发现,完全不动模型权重,只调整执行资源,就能在 Terminal-Bench 2.0 上造成 6 个百分点的差异。详情写在了信号与噪声那篇文章里。顺带一提,Terminal-Bench 2.0 于 2025 年 11 月发布,包含 89 个任务,运行在 Harbor 框架之上。
时间与成本上限决定了分数
智能体评测必然带有上限:最大步数、墙钟时间、token 预算。把这个上限翻倍,分数就会上升;砍半,分数就会下降。但在公开发表的智能体分数旁边,能找到这个上限的情况却很少见。
两个没有标明上限的分数放在一起比较,是没有意义的。更准确地说,那种比较可能是预算的比较,而不是模型能力的比较。实务中挑选智能体时,一定要把"每个任务的平均 token 数"和"每个任务的平均耗时"和分数放在一起看。如果成功率高出 5 个百分点,但成本是三倍,那不是一个更好的模型,只是一个更贵的配置。
只看成功率会漏掉什么 —— 安全的失败与危险的失败
这里是智能体评测中测量最薄弱的部分。成功率把所有失败都揉成一团。但在实务中,失败的种类可以是天壤之别。
安全的失败 危险的失败
------------------------------ ------------------------------
说"我做不到"然后停下 自信满满地返回一个错误答案
请求人类确认 未经确认就执行了不可逆的操作
只读取就结束 写入了错误的目标之后才结束
超出预算而中止 部分修改后中止(状态处于损坏状态)
报告测试失败 改掉测试让它通过
在成功率指标下,这十种情况得到的是同一个 0 分。但右边这一列会毁掉你的服务,左边这一列只需要一个人接手就行。
也出现了直接测量有害行为的基准测试。AgentHarm (arXiv 2410.09024) 在诈骗、网络犯罪、骚扰等 11 个有害类别中,构建了 110 个明确带有恶意的智能体任务(加上增强版本共 440 个),同时测量拒绝率和"越狱之后是否依然保有能力"。报告出来的数字令人不安 —— GPT-4o 在没有被越狱的情况下,也完成了 48% 到 55% 的有害任务;套用一个通用越狱模板后,服从率升到了 73%,拒绝率则从 49% 掉到了 14%。
在这里,指标的方向发生了反转。在 AgentHarm 里,任务完成率越高,情况就越糟。 这正是"成功率理所当然是越高越好"这个习惯性假设有多站不住脚的地方。
指标很高但实际很差(智能体)。 引入了一个 SWE-bench Verified 分数高出 5 个百分点的新模型,结果代码评审的负担反而增加了。如果新模型是通过篡改测试本身来让它通过,或者是在复现 issue 里泄露的答案,那么基准分数在涨,实际价值却在跌。如果不把"失败时是怎么失败的"和成功率一起分类计数,这个区别是看不出来的。
一张表看三个领域
| 领域 | 代表性任务类型 | 测量指标 | 该指标遗漏的东西 |
|---|---|---|---|
| 文本 | 知识类选择题(MMLU, GPQA) | acc, acc_norm | 指令遵循能力、正确答案标签的错误、选项顺序效应 |
| 文本 | 数学・推理(GSM8K, AIME) | exact match + 解析过滤 | 区分格式不合规与计算失败、推理过程本身的有效性 |
| 文本 | 自由生成(摘要、客服) | LLM 评委胜率 | 位置・长度・自我偏好偏差、用户的真实满意度 |
| 文本 | 人类偏好(Arena) | 基于 Bradley-Terry 的排名 | 私下变体的筛选、数据分配不均、口味偏向 |
| 图像 | 生成质量 | FID, CMMD | 单张图像的质量、预处理差异、与人类判断的不一致 |
| 图像 | 提示词忠实度 | GenEval, DPG-Bench | 审美质量、检测器・VQA 模型自身的误差 |
| 图像 | 文档理解(DocVQA) | ANLS(阈值 0.5) | 部分给分在数值字段上造成的致命错误 |
| 图像 | 图表理解(ChartQA) | relaxed accuracy(5% 容忍度) | 在精度至关重要的领域产生的误差 |
| 图像 | 描述文字(caption) | CIDEr, SPICE, CLIPScore | 参考之外的表达、需要背景知识的描述 |
| 智能体 | 代码修复(SWE-bench) | 测试通过率 | 被薄弱测试放行的错误答案、答案泄露、测试篡改 |
| 智能体 | GUI・操作系统操作(OSWorld) | 基于执行的成功率 | 环境状态变化、部分成功、多条正确解法路径 |
| 智能体 | 工具・对话(τ-bench) | pass^1, pass^k | 一次性成功与反复可靠性之间的差距 |
| 智能体 | 安全性(AgentHarm) | 有害任务完成率(越低越好) | 区分"拒绝执行"与"没能力做到" |
这张表里有一个反复出现的模式。每一个指标,都是为了让自己可计算而扔掉了某些东西。 如果被扔掉的东西恰好对你的服务很重要,那这个指标对你就没用。选指标,本质上是在选"什么东西可以被扔掉"。
结语 —— 该问的是数字背后的程序,而不是数字的单位
把三个领域走一遍之后,能看到一个共同点:无论哪个领域,指标都不是在直接测量能力,而是在测量能力的影子 —— 而且是在特定灯光下的影子。选择题,是在正确答案标签的准确性与选项构造这盏灯下;FID,是在 Inception 特征空间与缩放实现这盏灯下;智能体成功率,是在环境状态与资源上限这盏灯下。
所以在实务中遇到一个新的基准测试数字时,该问的不是"几分",而是三件事。第一,这个分数是通过什么程序算出来的? 第二,这个程序扔掉的东西里,有没有对我们重要的? 第三,把同样的程序用在我们自己的数据上,会得到什么?
第三个问题最终会引向自建评测集。这个话题会在为自家服务搭建评测集里继续。
参考资料
- Are We Done with MMLU? (arXiv 2406.04127) —— 重新核查 MMLU 的错误率
- MMLU-Pro (arXiv 2406.01574) —— 扩大选项数量与提示词敏感性
- Large Language Models Are Not Robust Multiple Choice Selectors (arXiv 2309.03882)
- Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (arXiv 2306.05685) —— 测量评委一致率与偏差
- Length-Controlled AlpacaEval (arXiv 2404.04475) —— 长度校正胜率
- The Leaderboard Illusion (arXiv 2504.20879) —— 竞技场排行榜的结构性偏差
- Rethinking FID / CMMD (arXiv 2401.09603)
- clean-fid (CVPR 2022) —— 缩放与压缩对 FID 的影响
- GenEval (arXiv 2310.11513) —— 基于物体的提示词忠实度评测
- MMMU-Pro (arXiv 2409.02813)
- CLIPScore (arXiv 2104.08718)
- OSWorld-Verified (2025-07-28) —— 环境变化对分数的影响
- τ-bench (arXiv 2406.12045) —— pass^k 指标
- AgentHarm (arXiv 2410.09024) —— 直接测量有害行为的基准测试
- 拆解 LLM 基准测试工具(相关文章)
- 从 AI 编程模型评测中分辨信号与噪声(相关文章)
- 操作浏览器与电脑的 AI 智能体(相关文章)