Chapter 9 · 消除评判的偏差
LLM-as-Judge 是 2024-2026 年事实上的工业评估标准,但它带着多重偏差:自偏好、长度偏好、位置偏好。本章告诉你如何用工程手段把这些偏差挤压到可接受范围。
Item 24:不要让模型评判自己的输出
让自己当自己法官,是判决的取消理由。
核心
LLM Evaluators Recognize and Favor Their Own Generations(arXiv:2404.13076)证明:GPT-4 / Claude / Llama 都能在不被告知的情况下识别"哪段是我自己写的",并系统性给自己更高分。在产品评估中这等于偏向自家模型——必须用跨家族裁判。
Things to Remember
- A vs B 比较时,用 A、B 之外的第三家做裁判。
- 用 self-evaluation 时把它当作 best-effort 信号,不当作 ground truth。
- 评估管道里要永久记录"用哪家做的裁判"。
Item 25:用至少 3 家不同基座做交叉裁判
一家偏一点,三家凑一票。
引子
工业级 LLM-as-Judge 的标准做法(MT-Bench / Chatbot Arena / JudgeBench)是:从 OpenAI、Anthropic、Google、Meta 至少选 3 家不同基座,每家独立打分,多数投票或加权平均。任何一家的偏差被另两家稀释。
反例 vs 正例
python
# Bad — 单裁判
score = gpt4_judge(answer_a, answer_b)
# Good — 跨家族 + 位置交换
def cross_family_judge(a, b):
judges = [gpt4_judge, claude_judge, gemini_judge]
votes = []
for judge in judges:
v1 = judge(a, b) # 顺序 1
v2 = judge(b, a) # 顺序 2,位置交换
if v1 == v2: # 必须两次一致
votes.append(v1)
return majority(votes) if len(votes) >= 2 else "tie"Sidebar:为什么要做位置交换
研究表明 LLM-as-Judge 有 5%-15% 的位置偏好——同样两段答案,谁先出现谁更可能被偏好。位置交换可识别这种偏差:若两次结论不一致,则该样本被判 "tie" 不参与统计。
Things to Remember
- 至少 3 家不同基座,多数投票。
- 必须做位置交换(A vs B 与 B vs A 各跑一次)。
- 必须做 5%-10% 的人工 spot-check。
延伸阅读
- Judging LLM-as-a-Judge with MT-Bench(arXiv:2306.05685)—— LLM-as-Judge 方法学奠基:定义 MT-Bench / Chatbot Arena 评测协议,并系统揭示位置偏好、长度偏好、自偏好等偏差。
- JudgeBench(arXiv:2410.12784)—— 专门评测"裁判模型"自身可靠性的基准:即使是 GPT-4 当裁判,在客观可验证任务上的准确率也只有 60-70%。
Item 26:用 length-controlled metric 替代裸胜率
长答案不是好答案,但它常常赢。
核心
Verbosity bias 让长答案在 LLM 评判中获得 60%+ 不公平胜率(A Long Way to Go,arXiv:2310.03716)。Dubois 等人提出 length-controlled AlpacaEval,用回归把长度影响从胜率中剥离——这是 2024 年起的事实标准。
Things to Remember
- 用 LC win-rate(length-controlled)替代裸 win-rate。
- 在 prompt 里硬约束长度,最大限度抹平长度差。
- 报告评估结果时必须同时报告长度分布,否则结论不可信。