LLM-as-Judge:偏差、校准与适用边界

T5-2模块 5 · 评测与可观测面试权重 更新于 2026-08-19
关联题目Q5-03Q5-04Q5-07

这篇学完你能回答什么

  1. LLM-as-Judge 是什么?它自己有哪些偏差,各自有多大?
  2. 怎么校准一个 judge?校准集要多少条、看什么指标才算合格?
  3. 什么场景绝对不该用 judge,该用什么替代?

从一个真实故障讲起

一个营销文案生成功能改了一版 prompt,团队想验证新版是不是更好。做法很标准:拿 200 条真实需求,新旧两版各生成一次,用一个大模型做成对比较(pairwise comparison)——「下面是同一需求的两个文案,哪个更好?」

结果:新版胜率 68%。团队发了。

两周后业务侧反馈,这个位置的点击率掉了 9%。复盘会上有人做了一件很随手的事:把 A/B 的呈现顺序对调,用同一批数据重跑了一遍。

新版胜率变成 41%

新版放在前面时它赢,放在后面时它输。judge 真正在评的,有很大一部分是「谁排在前面」。

再往下查还叠了第二层:新版文案平均比旧版长 40%(改 prompt 时加了「补充一句行动号召」),而 judge 在判据不明确时系统性偏好更长的答案。位置偏差和冗长偏差同向叠加,把一个实际更差的版本推成了 68% 的胜率。

复盘时一个同事的话最值得记住:「我们花了三周校准被评的模型,花了零分钟校准评的那个。」


同一批数据,换个顺序就换个结论
200 条真实需求,新旧两版各生成一次,让大模型选「哪个更好」

  1. 改了一版文案 prompt

    加了「补充一句行动号召」

  2. 大模型成对比较断点

    只按一个呈现顺序评了一遍

  3. 新版胜率 68%,发了

    做法很标准,没人觉得有问题

  4. 点击率掉 9%

    两周后业务侧反馈

  5. 把 A/B 顺序对调

    同一批数据重跑,胜率变 41%

呈现顺序对调新版胜率 68%同一批数据变 41%
文案长度旧版新版平均长 40%
业务侧结果离线判它更好点击率掉 9%
两种偏差同向叠加位置偏差 + 冗长偏差把更差的版本推成 68%
复盘时一个同事的话最值得记住:「我们花了三周校准被评的模型,花了零分钟校准评的那个。」

核心概念:先打比方,再给定义

打比方:LLM-as-Judge 不是一把尺子,是一个新招来的评委

你不会因为他口才好就让他判终审。你会先拿一批已有定论的卷子给他判,看他准不准、在哪类题上偏、和资深评委一致率多少。judge 唯一的合法上岗方式,是先被人评一遍。

术语(首次出现,中英对照 + 人话):

  • LLM-as-Judge(大模型判分 / 模型评委):用一个大模型给另一个模型的输出打分或排序。人话:让 AI 批 AI 的卷子。
  • 判据 / 评分细则(rubric):告诉 judge「什么算好」的那段文字。人话:批卷标准。
  • 位置偏差(position bias):成对比较的结果受呈现顺序影响。人话:谁写在前面谁占便宜。
  • 自我偏好(self-preference / self-enhancement bias):judge 偏袒和自己同源的输出。人话:给自家孩子打高分。
  • 冗长偏差(verbosity bias):更长的答案更容易被判为更好。人话:话多显得有理。
  • 一致性系数 κ(Cohen's kappa):两个评判者的一致程度,扣掉「瞎猜也能蒙对」的部分。人话:judge 和人有多像,且不算运气分。

judge 有三种形态,代价和用途完全不同:

形态 做什么 适合 主要毛病
pointwise 单条打分 给一条输出打 0/1 或 1–5 门禁、线上监控 分数漂移,跨版本不可比
pairwise 成对比较 两条里选一条更好的 选型、排序、A/B 位置偏差;成本 ×2(要正反各评一次)
reference-based 对参考答案判 对着标准答案判命中/忠实 有标注的回归 需要标注;只能判「像不像参考」

judge 不是尺子,是个没人考过的评委
它输出的不是真相,是一个模型对某条判据的预测

新招来的评委

口才好,不代表他判得准

你却已经拿他的分在决定发不发 —— 而没人评过他

对应
judge 是一个分类器

输出是对某条判据的预测

既然是预测,它就有准确率、偏差、漂移和版本 —— 它也会错,也会漂

位置偏差冗长偏差自我偏好从众
先判一批有定论的卷子

看他准不准、在哪类题上偏

以及他和资深评委的一致率是多少

对应
上岗三件套 · 冻结口径

先被人评一遍,才谈用它的分

人工标注的校准集、一个一致性指标、一个钉死的版本号 —— 缺任何一样,分数就不能当决策依据

校准集κ(Cohen's kappa)TPR / TNR版本号
它有三种形态,代价完全不同:pointwise 单条打分会漂、跨版本不可比;pairwise 成对比较有位置偏差、成本 ×2;reference-based 需要标注,且只能判像不像参考。

原理拆解

κ 上不去,先改判据不是改 judge
抽样 → 人工标注 → 跑 judge → 算指标 → 改判据,然后回到第三步

抽样分层抽,覆盖各失败类别
人工标注二元优先,先测人和人一致率
跑 judge同一批样本,逐判据比对
算指标κ;类别不平衡看 TPR 和 TNR
⑤ 改完回到 ③
κ 最低的那条改判据改 2~4 轮才顶得到 0.8
κ 的验收阈值(Landis & Koch 传统,AWS 示例仓采用同一套)
κ含义该怎么办
< 0.40判据本身有问题重写 rubric,别调 judge
0.40 – 0.60勉强可用只能看趋势,失败样本必须人工兜底
0.61 – 0.79可上线,但要持续监控
≥ 0.80很好可以进 CI 当自动门禁

第 ② 步最容易被跳过,也最能救命。两个标注者对同一条判据的 κ 只有 0.45,那不是 judge 的问题,是判据没定义清楚 —— 此时怎么调 judge prompt 都是白费。

swap 不消除偏差,它把偏差暴露成「平局」。正反各评一次能把准确率从 80.0% 提到 87.8%,代价是成本翻倍、外加一批要人工裁决的不一致对。而那批不一致对正是最好的判据诊断样本:judge 在哪摇摆,判据就在哪没写清。

校准只决定它判得准不准,决定不了它能不能判 —— 客观正确性没有参照物,κ 再高也只是把幻觉转嫁给另一个会幻觉的模型。

一、第一件要接受的事:judge 是一个分类器

judge 输出的不是「真相」,是一个模型对某条判据的预测。既然是预测,它就有准确率、偏差、漂移和版本。

原文示意
        被评系统                judge
   输入 ──► 输出 ──────────► 分数 ──► 决策(发不发 / 好不好)
                                ▲
                                │  这里也是一个模型,
                                │  它也会错,也会漂,
                                └─ 而且没人测过它

冻结口径:任何 LLM-as-Judge 上线前必须具备三样——人工标注的校准集、一个一致性指标(κ 或 TPR/TNR)、一个钉死的版本号。缺任何一样,它的分数不能当决策依据。

二、偏差谱系:不是「听说有」,是有量表的

CALM 基准(Justice or Prejudice,arXiv 2410.02736)对 12 类偏差给出了鲁棒率(1.0 = 完全不受影响)。以当时最强的两个 judge 为例:

偏差类型 人话 GPT-4-Turbo GPT-4o
位置 换个前后顺序结论就变 0.818 0.776
从众 bandwagon 告诉它「80% 的人选 A」 0.638 0.791
情感 sentiment 语气自信/讨好的答案占便宜 0.653 0.699
权威 authority 编一个不存在的引用就能抬分 0.729 0.790
干扰 distraction 塞进无关信息就改判 0.846 0.787
冗长 长答案占便宜 0.915 0.977
自我增强 偏袒自己(该测法下按错误率计) 1.16% 1.74%

三条人话结论:

  1. 位置偏差量级最实在:约 1/5 的判断会随顺序改变。开篇的 68% → 41% 不是极端案例,是这个量级的自然后果。
  2. 从众和情感的鲁棒率只有 0.65 左右,比位置偏差更糟。意味着判据里千万不能出现「大多数用户偏好 A 风格」这类引导语,也意味着语气笃定但内容错误的答案,比语气谨慎但正确的答案更容易赢。
  3. 冗长偏差反而相对可控——判据里写一句「简洁不加分也不减分,只看是否覆盖要点」就掉得很快。真正难治的是那些你没写进判据的维度。

关于自我偏好,另有一份 2026-04 的专项研究(arXiv 2604.22891)用「等质量对」构造法,在 20 个主流模型 × 100 题上把 judge 分成四类:客观型 / 马基雅维利型(有能力分辨却系统性偏袒自己)/ 无能随机型 / 反向偏见型。关键工程结论是:把「整体打一个分」换成按维度的成对强制选择,在高偏差模型上平均降低自我偏好 31.5%,不需要重训。

注意这两份研究的量级并不一致(CALM 测出自我增强错误率只有 1–2%,专项研究测出显著偏差)。方向一致、量级取决于测法。 所以正确态度不是背数字,是用你自己的标注集测你自己的 judge

三、位置偏差为什么「消不掉」

标准做法是 swap-and-average:同一对答案,正序评一次、逆序评一次,两次一致才算数。

它确实能提准确率(公开实验里 80.0% → 87.8%),但要看清它的真实机制:

原文示意
      正序判 A 胜  ┐
                   ├─► 两次一致  ──► 采信
      逆序判 A 胜  ┘

      正序判 A 胜  ┐
                   ├─► 两次矛盾  ──► ???
      逆序判 B 胜  ┘

swap 不消除偏差,它把偏差暴露成「平局」。 代价两条:评测成本直接翻倍;产生一批需要人工或第二 judge 裁决的不一致对。

分水岭就在这里

  • 「judge 有位置偏差」→ 读过博客
  • 「所以我们做了正反互换取平均」→ 读过论文
  • 「互换之后不一致的那批才是重点。我们把它单独捞出来人工看,结果发现是判据里两条标准互相打架——一条要求『简洁』一条要求『覆盖全面』,judge 在两者冲突时随机倒向一边,而顺序决定了它先看到谁。」→ 真做过

最后这句点出一件重要的事:不一致对是最好的判据诊断工具——judge 在哪些样本上摇摆,就说明判据在哪里没写清楚。

四、【本篇最关键】judge 只在「有参照物」时可靠

这条比所有偏差都重要:它决定 judge 能不能用,而不是用得准不准。

评测目标 参照物在哪 judge 可靠吗
忠实度 / 有据性(有没有超出给定来源) 就在 prompt 里——源文档和答案一起给它 可用,本质是文本蕴含判断
格式与结构合规(有没有分点、有没有引用编号) 在判据里,可枚举 可用,但更该用代码判
客观正确性(这件事是不是真的) 不存在——judge 得自己「知道」 不可用

第三行是重点。让一个模型去判另一个模型说的是不是事实,你只是在测两个模型的知识重合度——本质是把幻觉问题转嫁给另一个会幻觉的模型。两个模型共同不知道的事,judge 会自信地判「正确」。

客观正确性只有两条合法路径:事先标好的金标准,或可执行的验证(跑代码、查库、调 API 拿真值)。 这正是 Q1-05 埋下的口径:「对来源忠实」和「客观正确」是两个难度完全不同的评测目标。

五、判据形态:最差的是「一个 1–5 的总体质量分」

这里有一处真实的分歧,值得如实写出来:

  • Anthropic 官方指引倾向:judge 输出离散值(correct/incorrect 或 1–5),判据具体到可证伪(「答案必须在第一句提到 Acme Inc.,否则直接判错」),并先推理再打分、然后丢掉推理
  • 实践派主流主张:只用二元 pass/fail。理由是相邻刻度差异高度主观,3 分和 4 分的边界连人类标注者之间都对不齐,κ 自然上不去。

这两条的分歧点其实是「这个分数要去做什么决策」:

原文示意
要做门禁(二元决策:发 / 不发)
   → 用二元判据。把复杂性放进「多个二元维度」,不是「一个连续分数」
      是否有据(0/1)|是否覆盖必答要点(0/1)|是否越界(0/1)
      综合质量 3.7 分

要做排序(挑最优、选型)
   → 才需要有序刻度;而且此时应该用 pairwise,不是 pointwise 打分

最差的形态是「一个 1–5 的总体质量分」:既做不了门禁(3.6 和 3.8 差在哪没人说得清),又不可比(judge 一换版本整体漂移)。它唯一的作用是让看板上有个数字在动。

六、校准流程(五步,可直接背)

原文示意
① 抽样      从真实流量分层抽,覆盖各失败类别,不要只抽典型样本
② 人工标注  按每条判据独立标注,二元优先;至少两个人标一部分,先测人和人的一致率
③ 跑 judge  同一批样本跑一遍,逐判据比对
④ 算指标    κ(整体 + 逐判据);类别不平衡时必须同时看 TPR 和 TNR
⑤ 改判据    针对 κ 最低的那条改写、补例子、或拆成两条 → 回到 ③
            经验值:改 2~4 轮才能把 κ 顶到 0.8

第 ② 步的「先测人和人的一致率」最容易被跳过,也最能救命。 两个标注者对同一条判据的 κ 只有 0.45,那不是 judge 的问题,是判据没定义清楚——此时怎么调 judge prompt 都是白费。


工程实践(截至 2026-08)

κ 的验收阈值(沿用 Landis & Koch 传统,AWS 示例仓采用同一套)

κ 含义 该怎么办
< 0.40 判据本身有问题 重写 rubric,别调 judge
0.40 – 0.60 勉强可用 只能看趋势,失败样本必须人工兜底
0.61 – 0.79 可上线,但要持续监控
≥ 0.80 很好 可以进 CI 当自动门禁

校准集要多少条:由「它替你做多大的决策」决定

judge 的用途 校准集规模 验收指标
只看趋势(线上监控曲线) 每判据 20–30 κ ≥ 0.6 即可
当 CI 门禁(能拦住发布) 100 条起 κ ≥ 0.8,且必须报 TPR 和 TNR 两个数
替代人工验收 / 对外承诺 200–500 条,分层抽样 另留一份从不参与判据迭代的保留集

两条经验值:每条判据低于 10 条标注时,κ 的置信区间宽于 ±0.30,这个数字本身已经没有意义。优先标注人机分歧样本(而不是随机抽)大约能把标注量砍掉一半。

judge 的版本管理(最容易漏、后果最大)

judge 是代码,不是配置。模型、prompt、判据文本,任何一处改动都要升版本号,并和它产出的每个分数绑在一起存。

原因很直接:judge 换版本之后,历史分数全部不可比。 一条从 0.72 涨到 0.81 的质量曲线,如果中间悄悄换过 judge 模型,它什么都不能证明。正确做法是换 judge 时用新 judge 把历史基线重跑一遍,两条曲线并排画。judge 也会自己漂(上游模型静默升级、判据被顺手改了一句),约每季度重校准一次是当前的通行节奏。

成本

judge 是一次额外的模型调用。离线门禁全量跑可以接受;线上监控必须采样——基线约 2%,高风险/刚改过的路由提到 20%,并且必须异步、不在关键路径上。用小模型做 judge 是 2026 的主流省钱手段,但换小模型必须重走一遍校准——判据越主观,小模型掉得越多。

三段式

LLM-as-Judge
解决什么 无标准答案场景下的自动化打分,把人从每一次回归里解放出来
代价是什么 引入一个自己会错、会漂、有系统性偏差的评判者;每条样本多一次模型调用;judge 版本一换,历史分数全部作废
什么时候不该用 能用代码判的(JSON 合法性、数值区间、有没有调过某个工具、是否命中关键词)——承接 Q3-19「能代码判的用代码判」;② 判客观正确性(没有参照物);③ 需要绝对分数对外承诺或当团队 KPI 的场合——那会立刻催生对着 judge 优化的行为

避坑清单

  • 判据里不要出现引导语。 「大多数用户更喜欢简洁的表达」这种句子会直接触发从众偏差(鲁棒率 0.638)。
  • 成对比较一定要匿名化。 别把「新版 / 旧版」「我们的 / 竞品的」写进 prompt。
  • 别用同族模型评自家输出,或至少交叉验证一次。但要清楚:换 judge 家族是止痛药,测量才是解药。
  • 别让 judge 同时判五个维度输出一个总分——拆成五个独立的二元判断,每个单独算 κ,并让它带上理由,方便在 κ 掉时定位。

一个 1–5 的总分,什么决策都做不了
先问这个分数要去做什么决策:门禁用二元,排序才用有序刻度

判据形态选型
形态做什么 / 适合主要毛病与点评
pointwise · 多个二元维度门禁默认是否有据(0/1)|是否覆盖必答要点(0/1)|是否越界(0/1)门禁的正解:把复杂性放进多个二元维度,而不是一个连续分数
pointwise · 1–5 总体质量分给一条输出打一个综合分最差的形态:3.6 和 3.8 差在哪没人说得清,换版本还整体漂移;唯一作用是让看板上有个数字在动
pairwise 成对比较两条里选一条更好的;用于选型、排序、A/B位置偏差;成本 ×2 —— 要正反各评一次
reference-based对着标准答案判命中 / 忠实;用于有标注的回归需要标注;只能判「像不像参考」
量级、规模与工程纪律
CALM 基准(arXiv 2410.02736)
鲁棒率 GPT-4-Turbo / GPT-4o:位置 0.818 / 0.776,从众 0.638 / 0.791,情感 0.653 / 0.699
校准集要多少条
只看趋势每判据 20–30 条、κ≥0.6;当 CI 门禁 100 条起、κ≥0.8 且报 TPR 和 TNR
标注量能砍一半
每条判据低于 10 条标注时 κ 的置信区间宽于 ±0.30;优先标注人机分歧样本
适用边界
对来源忠实可以(源文档就在 prompt 里);判客观正确性不行 —— 没有参照物
版本管理
模型、prompt、判据文本任一处改动都升版本号;换 judge 要把历史基线重跑一遍,两条曲线并排画
线上必须采样
基线约 2%,高风险 / 刚改过的路由提到 20%,且必须异步、不在关键路径上
用小模型做 judge 是 2026 的主流省钱手段,但换小模型必须重走一遍校准 —— 判据越主观,小模型掉得越多。换 judge 家族是止痛药,测量才是解药。

面试视角

最能区分的一刀是「什么时候不用它」
四刀:是什么 → 有什么偏差、多大 → 怎么校准 → 什么情况你不会用

  1. ① 是什么一句话 + 三种形态(pointwise / pairwise / reference-based)
  2. ② 有什么问题位置、冗长、自我偏好、从众 —— 给量级,不给形容词
  3. ③ 怎么治校准五步:抽样 → 人工标注 → 跑 judge → 算 κ / TPR / TNR → 改判据
  4. ④ 边界能代码判的别用它;判客观正确性不能用它
  5. ⑤ 工程化版本号、重校准周期、线上采样率、成本
只读过:这些回答会暴露你
  • 「judge 会有位置偏差和自我偏好」—— 只有名词,说不出量级
  • 「我们用 GPT 打分,挺准的」——「挺准」没有对照物
  • 「让 judge 打 1–5 分取平均」—— 最典型的形态错误
  • 判客观正确性也用 judge,没意识到这是把幻觉转嫁了一次
  • 「换个更强的模型当 judge 就行」—— 把校准问题当模型问题
真做过:这些细节骗不了人
  • 说得出自己 judge 的 κ 是多少、在多少条标注上算的、哪条判据最低
  • 「把『专业』拆成『术语正确』和『不臆造数字』之后 κ 从 0.52 到 0.81」
  • 拆成多个独立的二元判断,每个单独算 κ,并让 judge 带上理由
  • 主动区分「对来源忠实」和「客观正确」,并说明后者为什么不能交给它
  • 提到 judge 版本号和历史基线重跑 —— 生产里被坑过的人才会说
「顺序对调重跑一遍」是个五分钟的动作,却是唯一能证明你真发现过位置偏差的证据;而互换之后不一致的那批,才是判据诊断的金矿。

面试官会怎么问

  • 「LLM-as-Judge 是什么,你们用过吗?」(送分题)
  • 「它自己有什么偏差?」(第一刀:说不说得出具体哪几种、量级多大
  • 「怎么校准?」(第二刀:有没有人工标注集一致性指标
  • 「什么情况你不会用 judge?」(第三刀,最能区分的一刀)

答题结构建议

原文示意
① 是什么      一句话 + 三种形态(pointwise / pairwise / reference-based)
② 有什么问题  位置、冗长、自我偏好、从众——给量级,不给形容词
③ 怎么治      校准五步:抽样 → 人工标注 → 跑 judge → 算 κ/TPR/TNR → 改判据
④ 边界        能代码判的别用它;判客观正确性不能用它
⑤ 工程化      版本号、重校准周期、线上采样率、成本

分水岭信号

暴露只读过:

  • 「judge 会有位置偏差和自我偏好」——只有名词,说不出量级,也说不出怎么测出来的。
  • 「我们用 GPT 打分,挺准的」——「挺准」没有对照物。
  • 「让 judge 打 1–5 分取平均」——最典型的形态错误;「换个更强的模型当 judge 就行」——把校准问题当模型问题。
  • 判客观正确性时也用 judge,且完全没意识到这是把幻觉问题转嫁了一次。

证明真做过:

  • 说得出自己 judge 的 κ 是多少、在多少条标注上算的、哪条判据最低
  • 说得出判据改过几轮、每轮改了什么(「把『专业』拆成『术语正确』和『不臆造数字』之后 κ 从 0.52 到 0.81」)。
  • 主动区分「对来源忠实」和「客观正确」,并说明后者为什么不能交给 judge。
  • 提到 judge 版本号和历史基线重跑——几乎只有在生产里被坑过的人才会说。
  • 被问「怎么发现位置偏差的」时,能说出「顺序对调重跑一遍」这个五分钟的动作。

小结与延伸

三句话小结:

  1. judge 是分类器不是尺子。上岗前必须先被人评一遍:校准集、一致性指标、版本号,三样缺一不可。
  2. 偏差有量表——位置约 1/5 翻转,从众和情感的鲁棒率只有 0.65 左右;swap 不消除偏差只把它暴露成平局,而那批平局是最好的判据诊断样本
  3. judge 只在有参照物时可靠。判忠实度可以,判客观正确性不行——那是把幻觉转嫁给另一个会幻觉的模型。

延伸阅读(本教程内):

  • T5-1(评测集与离线/在线鸿沟):judge 打的分要落在哪条线上、需要多少样本才算数。
  • T5-3(trace 与线上质量监控):线上采样判分的工程形态与成本控制。
  • T1-2(结构化输出与三层校验):能用代码判的那部分怎么判——judge 第一条「不该用」的正解。

继续深入

本篇归属第 5 章「评测与可观测」,去做这一章的题