02. LLM-as-Judge 是什么?它有哪些系统性偏差?怎么缓解?

整理 LLM-as-Judge 的工作方式、系统性偏差与缓解方法。

简单回答

LLM-as-Judge 是用一个大语言模型(通常是 GPT-5.x 或 Claude)来自动评判另一个模型输出质量的评测方法。核心优势是成本低、可扩展、能评判开放性任务(传统规则无法处理)。但它有几个已被研究验证的系统性偏差:位置偏差(倾向于选择第一个出现的回答)、长度偏差(倾向于更长的回答)、自我偏好(模型倾向于给和自己风格相似的回答打高分)、以及马太效应(倾向于权威机构的回答)。这些偏差会污染评测结果,需要通过设计缓解。

详细解答

LLM-as-Judge 的工作方式

最基础的 LLM-as-Judge 设置是:给 Judge 模型一个 prompt,包含评测任务描述、评分标准、以及需要评判的模型输出,让 Judge 给出分数或偏好判断。

单点评分:给一个模型的输出单独打分(比如 1~10 分)。简单直接,但受 Judge 的绝对量化标准影响,不同维度的分数难以比较。

成对比较(Pairwise):同时给 Judge 看两个模型对同一问题的回答,让它判断哪个更好。比单点评分更稳定,因为比较的标准在上下文里是一致的,不依赖绝对分数。MT-Bench 和 Chatbot Arena 都用这种方式。

参考引导评分(Reference-Guided):给 Judge 一个"参考答案",让它按照参考答案来打分。适合有明确正确答案的任务,减少了 Judge 主观发挥的空间。

主要的系统性偏差

位置偏差(Position Bias) 是最早被广泛研究的偏差。在成对比较时,Judge 倾向于认为第一个出现的回答更好,即使内容完全相同、只是顺序调换。这个偏差在 GPT-4 上也存在,选第一个的概率显著高于 50%。

验证方法很简单:对同样的两个回答,一次 A 在前 B 在后,一次 B 在前 A 在后,如果结果不同,就是位置偏差。

长度偏差(Verbosity Bias) 是 Judge 倾向于给更长、更详细的回答打更高分,即使更长不代表更好。这会导致被评测的模型为了追求高分而过度冗长,质量实际下降。研究发现,把同一个回答增加一些废话,LLM Judge 的评分可能反而更高。

自我偏好(Self-Enhancement Bias) 是模型倾向于认为和自己风格相似的输出更好。用 GPT-4 当 Judge,GPT-4 对 GPT-4 自己生成的内容打分会偏高;用 Claude 当 Judge,Claude 的输出会占便宜。这使得以某个商业模型作为 Judge 来评测自己的系统,存在先天的公正性问题。

格式偏好(Format Bias) 是 Judge 倾向于有结构、有标题、用 Markdown 格式的回答,而不是清晰但朴素的纯文本。有研究表明,把一个高质量回答加上 Markdown 标题和列表,Judge 的评分会明显上升。

权威偏好(Authority Bias) 是如果在回答里声称来自权威来源("根据 MIT 研究"、"哈佛医学院建议"),即使内容不变,Judge 的评分也会更高。

知识边界(Knowledge Cutoff Bias) 是 Judge 不一定有评判某些专业内容的能力——比如让 GPT-4 评判一段非常专业的医学诊断建议,它可能无法准确判断哪个更好,但仍然会给出"置信"的判断。

偏差缓解方法

位置偏差:最简单的缓解是双向比较——对同一对回答,A 在前和 B 在前各评一次,只有两次结论一致时才采用,不一致时记为平局。这会增加一倍的评测成本,但显著提升了可靠性。

长度偏差:在评测 prompt 里明确加入"不要因为回答更长而给更高分,只关注质量和准确性"之类的指令。同时可以在评测设计上对长度做规范(比如要求两个回答控制在相同长度范围内)。

自我偏好:用多个不同的 Judge 模型评测,取一致性高的结论;避免用被测模型的"同族模型"当 Judge(比如不要用 Claude 评 Claude 系列)。

格式偏好:在评测 prompt 里明确要求 Judge 忽略格式,只看内容实质。或者在预处理时统一去掉两个回答的 Markdown 格式,再让 Judge 评判纯文本。

整体可靠性提升:用多个独立的 Judge 互相校验,结论不一致的样本人工复核;在评测任务里混入已知"正确答案"的样本(Canary 样本),验证 Judge 的判断是否和预期一致;定期做人机对比,抽样检查 Judge 的判断和人类标注者是否吻合。

LLM-as-Judge 的适用边界

LLM-as-Judge 在开放性、主观性任务上有不可替代的价值——没有其他低成本的方式能自动评判一篇文章的写作质量、一个角色扮演回答的一致性、或者一个对话的自然程度。

但对于有明确正确答案的任务(数学推导、代码执行、事实核查),应该优先用规则验证或执行测试,而不是依赖 LLM-as-Judge。"能不能执行通过"是最可靠的代码评测,"答案对不对"是最可靠的数学评测,用 LLM 模拟这些判断反而引入了不必要的噪音。

面试时可以这样答

LLM-as-Judge 就是用 GPT-4、Claude 这类强模型来自动给其他模型的输出打分或做偏好判断,解决了开放性任务没法用规则评测的问题,成本低、可扩展。

但它有几个有据可查的系统性偏差,做评测系统时必须了解。位置偏差——成对比较时倾向于选第一个,对调顺序结论可能变;长度偏差——更长的回答倾向于得高分,即使质量没更好;自我偏好——模型倾向于给和自己风格相似的输出打高分,所以用 GPT-4 评测 GPT-4 输出是不公平的;格式偏差——有 Markdown 结构的回答比纯文本更容易得高分。

缓解方法:位置偏差用双向比较(A>B 和 B>A 都测,取一致结论);长度偏差在 prompt 里明确说"不要因为更长给高分";多 Judge 互相校验;定期抽样和人工标注比对,校验 Judge 可信度。

最重要的是搞清楚 LLM-as-Judge 的适用边界——开放性主观任务用它,有确定答案的任务(代码、数学)应该用规则验证,别用 LLM 模拟。

常见追问

  1. 怎么量化 LLM-as-Judge 和人类判断的一致性?用什么指标?
  2. 如果没有 GPT-4 API,有哪些开源的 Judge 模型可以替代?
  3. Chain-of-Thought 对 LLM Judge 的判断质量有影响吗?