词条 · AI · 入门
标准答案
被当作正确的那份答案。它是人造的,因此可能是错的。
也称:标准答案、ground truth、参考答案、标注、金标准
下面从”给一台机器判分”这个具体需求出发,看”正确答案”这四个字为什么是整条评测链上最脆弱的一环,以及为什么它的错误特别难被发现。
先看一个麻烦:判分的人得先知道答案
你要判断一个程序认字认得准不准。给它一千张手写数字的照片,看它认对多少张。
要算”认对多少”,你需要一张对照表:第一张照片写的是 7,第二张是 3,第三张是 0……这张表得有人先做出来。找人把一千张照片逐张看一遍,写下每张是什么数字。
现在程序说第 418 张是 9,你的表上写的是 4。判错。
但等一下——你怎么知道是程序错了?那张照片可能确实写得像 9。做表的那个人可能看错了。也可能那个字迹本身模糊到两种读法都合理。
停下来看看卡在哪。你想量的是程序的准确率,实际量到的是程序和那张表的一致程度。当表本身有错时,这两个量不相等,而你手上没有任何东西能区分它们——程序和表不一致时,你默认判程序错,因为表就是被定义为正确的那一方。
这张表就是标准答案。它的性质很特别:它不是被发现的真相,是被指定的真相。
朴素尝试为什么都不够
招数一:找更细心的人来标。 错误率会下降,不会归零。而且真正麻烦的样本不是”标注者不小心”,是”这个样本本身就有歧义”——写得像 9 又像 4 的那个字迹,换谁来标都会分歧。细心解决不了歧义。
招数二:三个人独立标,取多数。 这一招实用,是当前的通行做法。它能滤掉个人的疏忽。但它对系统性偏差无效:如果三个人受同样的训练、看同样的说明、有同样的误解,他们会一致地错。多数投票只能发现分歧,而系统性偏差恰恰不产生分歧。
招数三:只保留三个人完全一致的样本,扔掉有分歧的。 现在这份标准答案很干净了。代价是你把难的样本全扔了。留下的都是容易的,于是这份评测量不出模型在困难情形下的表现——而困难情形往往才是你真正关心的。分数会系统性偏高。
招数四:不用人,从现实里自动捞。 比如判断一个程序会不会修 bug:去 GitHub 上找已经修好的 bug,把开发者当年提交的那份修改当作标准答案。这一招极其实用,因为它几乎免费,而且答案来自真实世界而非人工编造。但它引入了一个新的失效模式,而且是最隐蔽的一种:流水线对现实做了一个假设,而现实不遵守它。
比如假设”一次提交恰好修一个 bug”。真实项目里,开发者顺手多修两个问题是常态;先合一个不完整的修复再补第二个也很正常。于是「任务描述」和「标准答案」讲的不是同一件事——而流水线不会报错,因为它没有任何办法察觉这一点。
机制:一条把”正确”制造出来的流水线
标准答案不是从天上掉下来的,它是一条流水线的产物。每一格都会往里注入自己的错误:
现实世界的某个事实
│
▼
① 采样:选哪些样本进来
│ ← 选择偏差:好标的样本更容易被选中
▼
② 标注:由人写下答案,或从某处自动提取
│ ← 人的疏忽、人的系统性误解
│ ← 自动提取时:流水线假设 vs 现实
▼
③ 裁决:多人不一致时怎么办
│ ← 扔掉分歧样本 ⇒ 难题被系统性排除
▼
④ 冻结:写进文件,从此被当作正确
│ ← 现实变了它不会变
▼
标准答案
│
▼
用它判分 ⇒ 分数 = 模型与这份答案的一致程度
第 ④ 步是最容易被忽略、也最要紧的一步。一旦冻结,这份答案就不再随现实更新。开发者当年那份修改后来被发现有 bug、又补了一个 PR 修它——标准答案里冻的仍然是那份有 bug 的版本。要拿分,模型得复现出同样的 bug。
现在看这条链的一个结构性性质:标准答案的错误和模型的错误,在分数里长得一模一样。两者都表现为”不一致”。你拿到一个 62% 的分数,看不出里面有多少是模型不行,多少是答案不对。
要分开,唯一的办法是独立地重新审一遍标准答案本身——这件事成本高、不出成果、没人爱做,所以极少有人做。这就是为什么这类错误能在被反复引用的评测集里存活很久。
为什么值得知道:它给分数设了一个天花板
几个能直接用的判断。
分数不可能超过标准答案的正确率。 如果一份标准答案里有 14% 是错的,那么一个完美的模型在上面也拿不到 100%——它会在那 14% 上”答对而被判错”。更麻烦的是反向情形:一个模型如果学会了模仿标注者的错误,能拿到比正确模型更高的分。评测在这时奖励的是错误。
分差小于标准答案的错误率时,排名没有意义。 两个模型差 2 个百分点,而标准答案有 13% 的错题,那这 2 个点完全可能来自谁在错题上碰巧更幸运。小数点后的位数不等于精度。
自动提取的标准答案要检查它的隐含假设。 免费和大规模是它的优点,代价是正确性依赖于一个关于现实的假设。写下那个假设(“一次提交只修一个问题”),然后去查它在数据里成立的比例——这一步几乎总能查出问题,而且几乎总没人做。
“人工核验过”不等于对。 人工核验是一层过滤,不是一个证明。它降低错误率,不消除错误率,而且它降不掉的恰好是标注者共有的那些误解。
收束
回到第一节那个问题:程序说 9,表上写 4,谁错了?
这个问题没有内部答案。判分机制被构造成”表永远对”,所以它在结构上无法回答。要回答,只能从外部再审一次那张表。
于是评测这件事有两个独立的部分:模型有多好,和这把尺子有多准。绝大多数关于分数的讨论只谈第一个。第二个不谈的时候,它不会消失,只会变成第一个的误差——而且不带标记。
提到这个词条的文章
- SWE-bench Verified 里有 13.6% 的错题:题面与答案不符 2026-08-03
- 自回归解码站在关键路径上:GUI 智能体的 650ms 截止时间问题 2026-08-02
- 比特币白皮书经典 2026-07-31