Skip to content
Published on

文本、图像、智能体分别怎么测 —— 三个领域的测量为何根本不同

分享
Authors

引言 —— 用同一个词测量不同的东西

模型发布材料里通常并排放着三种数字: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-465.0%30.0%5.0%
GPT-3.546.2%50.0%1.2%
Claude-v123.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 特征空间与缩放实现这盏灯下;智能体成功率,是在环境状态与资源上限这盏灯下。

所以在实务中遇到一个新的基准测试数字时,该问的不是"几分",而是三件事。第一,这个分数是通过什么程序算出来的? 第二,这个程序扔掉的东西里,有没有对我们重要的? 第三,把同样的程序用在我们自己的数据上,会得到什么?

第三个问题最终会引向自建评测集。这个话题会在为自家服务搭建评测集里继续。

参考资料