LLM-as-judge 的陷阱:同一输入两次评分差 6.1 分,掩盖真实改进。强调先测量评判者的噪声,低于该阈值的差异都是虚假。
“上下文带来 +7 分”只是假象——先测量评审的波动范围
当我让 AI 给质量打分时,仅仅对同一份内容重复测量两次,分数就相差了 6.1 个百分点。而这个波动,恰好与我正准备采纳的“提升 7.2 个百分点”几乎一样大。把两个方案放在一起直接比较,胜率只有 53%——与势均力敌没有可辨别的差异。
评审是一种测量工具,而任何测量工具都有自己的噪声和偏差。在测清楚这些之前,不要根据它的输出做决定。
一句话概括:先测量评审的波动范围,任何小于或等于这一范围的差异,都不要称为提升。
把质量转化成数字并不容易。一份翻译是否优秀、一段摘要是否切中要点、一个回答是否有帮助——对于这种“好”,并不存在一把客观的尺子。因此,现在大家都会想到一种做法:让 AI 来评分(LLM-as-judge;下文中,“评审”均指负责评分的 AI)。它比人工更快、更便宜,而且无论面对 100 条还是 1,000 条内容,都能给出“这一条通过、那一条不通过”的判断。
我曾经把翻译质量的判断完全交给这个评审。尝试一种改动,让它评分;如果分数提高,就采纳改动。看起来,这是最理所当然的运作方式。
但后来我意识到,顺序完全反了。我一直在测量改进效果,却从未测量过评审本身。如果尺子本身会伸长、缩短,那么用它测出来的“提升”究竟意味着什么?当我真正回过头来质疑评审时,才发现自己正准备采纳的一项改进——其实只是假象。
最初让我产生怀疑的,只是一次非常简单的检查:如果把同一份翻译交给同一个评审,让它评分两次,会发生什么?
如果两次返回的结果相同,就说明这把尺子是稳定的。但事实并非如此。在绝对评分模式下(即逐条判断每份翻译是否通过),我用完全相同的模型和完全相同的设置生成翻译,第一次评分结果是 89.6%,第二次则是 95.7%。什么都没有改变,两次评分却相差了 6.1 个百分点。
在翻译领域,6 个百分点已经足以算得上一次“显著提升”。换句话说,评审自身的噪声,就相当于一整次改进的幅度。
而且,这种噪声确实造成了实际影响。当时我有一个假设:如果把上下文(前后的对话内容)提供给模型,翻译质量就会提高。绝对评分的结果是:无上下文 89.6% → 有上下文 96.8%,提升 7.2 个百分点。看起来是一次毫无争议的胜利。我差一点就得出“上下文有效”的结论。
但 7.2 个百分点的提升,几乎与评审仅仅重复测量同一份内容所产生的 6.1 个百分点差距一样大。一个没有超过波动范围的差异,本身并不可信。于是,我改变了测量方法。
我放弃绝对评分,改用 pairwise(相对评分:把两份翻译并排放在一起,只问“哪一份更好?”)。对于同一段源文本,我把无上下文和有上下文的翻译分别放在左右两侧,让评审只选择更好的一份。左右顺序会随机打乱,以抵消位置偏差。
结果是:有上下文版本的胜率为 53%(排除平局后的胜率——而且平局很多)。本质上,两者不分胜负。并且,这个 53% 只是一个点估计;当时我没有记录样本量 n,也没有计算置信区间。因此,准确地说,这并不是“以 53% 的胜率获胜”,我最多只能说:“它与 50% 没有可辨别的差异,双方势均力敌。”无论如何,原来的 7.2 个百分点提升已经消失了。
真实发生的情况是这样的:在绝对评分中,评判标准会随着每次评分时评审究竟更严格还是更宽松而变化。无上下文版本碰巧是在严格标准下评分,而有上下文版本碰巧是在宽松标准下评分——所谓的 7.2 个百分点,真正反映的是这种“心情差异”。如果针对同一段源文本,让两个版本直接对决,那么这种心情会同等作用于双方,相互抵消,最后留下的就只有真实差异——而真实差异几乎为零。
这不只是一个关于“我以为有效的杠杆,最终被证明只是假象”的故事。它改变了我的工作方式:任何曾经通过绝对评分被判定为“胜出”的方案,都值得用 pairwise 方式重新测量。
还有一个问题:我委托评分的 AI(也就是评审)存在一种系统性偏差。它对改写和意译的要求过于严格。
让它判断一份翻译是否匹配时,评审会毫不犹豫地把“含义相同、措辞不同”归类为“不匹配(即错误)”。任何人都能看出表达了相同含义的翻译,却会被它机械地打上叉号。而且,无论我怎样调整 prompt,这种现象都顽固存在。换用更聪明的模型担任评审、向它提供上下文、把评审流程设计得更加谨慎——这种偏差依然不会消失。即使使用最聪明的评审,也有接近 80% 的“错误”判定其实是误报(详细数据见附录)。
这会让整体统计结果出现严重偏差。我人工审核了 90 对翻译:真实失败率是 6.7%。与此同时,评审却对 15%~20% 的内容高喊“失败”,高估了 2~3 倍。如果直接把这个原始失败率当作 KPI,就会因为质量不佳的虚假警报,让人们投入根本没有必要的返工。
解决办法是校准。对于这个评审:真实失败率 6.7% ÷ 原始失败率 15%~20% = 0.3~0.45 的校准系数。在汇总数据之前,应先乘以这个经过测量的系数范围——绝不能直接使用评审给出的原始数字。不同评审的校准系数并不相同,因此每次都要通过人工审核重新测量。
这三项发现看起来像是三个彼此独立的问题,但它们有着共同的根源。评审是一种测量工具,而任何测量工具都有自己的噪声和偏差。在测清楚这些之前,不要根据它的输出做决定。
先测量评审的波动范围,任何小于或等于这一范围的差异,都不要称为提升。所谓的 7.2 个百分点提升,与重复测量同一份内容产生的 6.1 个百分点波动处于同一量级,因此单凭这个结果,不能把它称为提升。
使用直接对决(pairwise)进行评审,而不是依赖绝对分数。在绝对评分中,评判标准本身会随着评审的“心情”变化。让相同的两个条件重新直接对决后,原来的 7.2 个百分点提升变成了 53% 的胜率——也就是势均力敌。
如果一定要使用绝对比率,就通过人工审核测量校准系数。评审给出的原始失败率是真实值的 2~3 倍。未经校准的绝对比率,会直接扭曲业务决策。
在实际工作中,最终可以归结为四条规则。
只有先建立经过校准的评审,“把小模型培养成专用模型所带来的 42% → 84%”,或者“通过 gate 比较模型所得到的 +14.7 个百分点”——这两个改进数字在其他文章中有所介绍——才值得相信。修好尺子,是开始测量之前必须完成的工作。
“先测量”并不意味着“测量很多东西”。它意味着测量正确的对象,并以正确的方式测量。而通常来说,第一个需要正确测量的对象,正是测量工具本身。
术语:precision = 在被评审判定为 X(不匹配)的项目中,真正属于 X 的比例。better-match = 一种评审流程:评审先从一对翻译中选出最接近的对应版本,然后再进行判断。
本文最初发布于 LYR Performance Note #023,是“Measure & tune——先正确测量,再调整设置”系列的一部分。完整系列见 lyr.jp/en/research。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。