BLOG · #Engineering

LLM-as-Judge 的效度工程

用模型当评委之前,先证明评委可信。本文给出一套完整的效度工程与一手数据:真人分锚与 QWK 准入(QWK 0.10 与 0.281 的评委被淘汰)、锚独立性(一次循环自证事故作废了历史 QWK 0.51–0.61)、QWK×Spearman 联合诊断刻度压缩、位置交换与长度偏置控制、重建验收闸门,以及同族评委自我偏好等诚实边界。

English version: Validity engineering for LLM-as-judge。“LLM 应用工程”系列第 9 篇。本篇的一手数据来自一个写作判断蒸馏对照实验(实验本身的设计与结论是第 12 篇的主题),全部数字取自该项目的实验日志、运行台账与源码。

问题:评委本身是个没被测量的概率部件

配对评判(pairwise LLM-as-judge)是 LLM 应用质量评估的主流做法:让模型比较 A、B 两稿哪篇更好,统计胜率。它绕开了绝对打分的刻度难题,但引入了一个更隐蔽的问题——评委自己也是概率部件,它的裁决凭什么可信?

这不是假想的风险。我们的实验里真实发生过两次:首轮实验的主评委是 llama-3.3-70b,事后测得它与质量锚的 QWK 只有 0.10——接近随机,整轮实验作废;后一轮里,claude-sonnet-4.6 判 B>A、gpt-4o 判 A>B,同一批稿子两个评委结论相反,汇总裁决只能记“模糊”。如果回答不了“哪个评委可信”,胜率表就只是另一组随机数。

本文把我们收敛出的做法称为效度工程(validity engineering):在消费评委的任何裁决之前,先用独立证据证明评委测的确实是你以为它在测的东西。它由五个机制组成:准入、锚独立性、刻度诊断、偏置控制、上岗验收。

机制一:评委准入——真人分锚与 QWK 门线

准入的做法:让候选评委给一组带质量分的锚文本打分,与锚分算 QWK(Quadratic Weighted Kappa,序数一致性指标)。门线直接写在 qwk_anchor.py 的模块注释里:“≥0.5 → 评判可信,配对胜率结论才值得信;<0.3 → 先回去改 rubric”,0.3–0.5 记“勉强”。

对四个候选评委的实测结果:

评委QWK裁定
claude-sonnet-4.60.55–0.61留任(主评委)
qwen3.7-max0.571留任(交叉评委)
gpt-4o0.281淘汰(<0.3 不可信)
llama-3.3-70b0.10淘汰;其担任主评委的首轮实验整轮作废

淘汰不是学术洁癖:gpt-4o 正是上文那次“两评委结论相反”的当事方,剔除它之后,裁决回归了可信评委的判断力本身。但这一轮 QWK 是对合成锚算的——这引出下一个机制,也是整个体系里最贵的一课。

机制二:锚必须独立于被评系统——一次循环自证事故

事故由一句用户质疑触发:“测试数据是不是没代表性?”核查发现,方案指定的三个真实数据集(arXivEdits / peS2o / ASAP)一条都没有下载成功——URL 早已 404、Kaggle 登录从没做、脚本还忽略了系统代理。全程跑在种子与合成兜底数据上:exemplars 13 篇、金标准对 5 对(手编)、合成对 8 对、锚 39 篇——锚分是合成的,不是真人的

后果是结构性的:所谓“QWK 锚”实际是评委在对齐程序自己的降级规则——循环自证。历史 QWK 0.51–0.61 全部作废,不构成任何真人可信度。值得说明的一个不对称:作废的是“过线”结论;“出局”结论反而站得住——连合成锚的粗糙排序都对不齐的评委,更不可能对齐真人(这是我们的推断,非独立实验)。

修复是把真实数据真正接通:arXivEdits 取 200 对真实专家修订(按 intention 字段筛选写作质量类改写、弃琐碎 typo,中位长度差 27 字符);ASAP 2.0 取 120 篇真人整体分作文(1–6 分每档 20 篇分层采样,保证 QWK 有跨度)。教训一句话:锚必须来自被评系统之外,否则 QWK 度量的是评委与你自己代码的一致性。

机制三:QWK×Spearman 联合诊断——刻度压缩不等于排序失效

真人锚就位后,首个真 QWK = 0.323:模型均分 2.32 vs 人类 3.50,系统性偏严约 1.2 分。多代理调研的诊断是三重根因:偏严刻度错位、genre/rubric 错配(拿物理报告 rubric 打英文议论文)、以及单篇绝对打分这一用法的天花板本就低(项目内调研给出 ASAP holistic 零样本约 0.60 的参考值,未独立核验)。

修因走零/低成本路线:换 ASAP holistic 六档 rubric、删全部“严格”措辞(system prompt 由“严格”改为“校准良好”)、加满量程先验;few-shot 因当前锚数据无 train/eval 切分会泄漏,暂以注释关闭。修前修后:

指标修前修后
QWK0.3230.456
Spearman0.813
Pearson0.788
系统偏移-1.18-0.87
模型均分2.322.63(人类 3.50)

QWK 仍未过 0.5,但关键发现在另一个数字上:Spearman 0.813 ≫ QWK 0.456qwk_anchor.py 里的诊断规则一句话概括:“Spearman 高而 QWK 低 → 纯刻度问题(重标定可救);两者都低 → 排序信号本身弱。”混淆矩阵给出实锤——评委从不给 5 或 6 分,人类 5、6 档共 40 篇全被压进 3–4 列。这是一个排序强、打分保守的评委,不是一个瞎打的评委。

结论落在用法上:**配对评判只消费排序(评委强项),不消费绝对刻度(评委弱项)——配对胜率作为主信号有底气;单篇绝对打分不可用。**刻度可经事后单调重标定部分校正,但合法性有三个前置条件(经对抗校验确认):映射单调、用 held-out/CV 报数、参数不跨域迁移——5-fold 复现证明 in-sample 重标定会虚高。且重标定救不了高分段:人类 5 与 6 在评委眼里完全分不开(都打 3/4),这是真实天花板。

机制四:偏置控制——位置交换、身份遮蔽、rubric 罚冗余

LLM 评委有位置偏好(偏爱先出现或后出现的一篇)。对策是协议级的:每对稿子按 (A,B) 和 (B,A) 两个顺序各评一次,两次不一致就记平局,绝不产出伪裁决。核心逻辑四行(eval_judge.py):

sys_ab = _MAP_AB[_one_order(domain, a, b, rubric, cf)]   # 顺序① first=A
sys_ba = _MAP_BA[_one_order(domain, b, a, rubric, cf)]   # 顺序② first=B
consistent = (sys_ab == sys_ba)
decided = sys_ab if (consistent and sys_ab != "tie") else "tie"

这个设计还顺带产出一个评委质量信号:交换一致率。实测 claude-sonnet-4.6 在 N=30 上交换一致率 93%(28/30),pilot N=8 上 8/8;而 qwen3.7-max 多在 0.2–0.5,其胜率大量由平局构成——协议自动把弱评委的不稳定吸收成 tie,而不是让它污染结论。

另两项配套:身份遮蔽(评委看不到哪篇出自哪条流水线);长度偏置靠 rubric 治而不靠祈祷——评判提示词明确写入“更长不是优点、信息密度低按冗余扣分、实质相当不得因更长而选”。

机制五:重建验收——先判已知强弱对,再判新稿

准入与诊断之外还有最后一道上岗闸门,项目内称“ICAI 式验收”(reconstruction):把已知强弱对(金标准好稿 vs 降级弱稿)交给带 rubric 的评委挑“更好的一篇”,挑对率 ≥0.7(代码常量 GATE_THRESHOLD = 0.7)才允许它评判新稿,同时报告交换一致率。逻辑是朴素的:连已知答案都挑不对的评委,没资格裁决未知。

成本边界也写进了模块注释:每对 ×2 次交换是真实 LLM 调用,会烧 token——所以这道闸门定位在开发/离线侧,默认不进客户实时链路。

全景:评委的上岗流程

flowchart TD A[候选评委] --> B[真人分锚打分 → QWK] B -->|QWK < 0.3| X[淘汰] B -->|过线| C{QWK × Spearman 联合诊断} C -->|排序也弱| Y[修 rubric / few-shot 后重测] C -->|排序强、刻度压缩| D[只授予配对评判资格
绝对打分不可用] D --> E[重建验收:已知强弱对挑对率 ≥ 0.7] E -->|不过| Y E -->|通过| F[上岗:位置交换两评
不一致记平、身份遮蔽、rubric 罚冗余]

适用边界

按惯例,说清楚这套做法的边界,以及它本身没有解决的问题:

  1. **同族评委的自我偏好必须声明。**我们的主评委 claude-sonnet-4.6 与做 skill 提炼和对抗核查的 Claude Opus 同属一族,实验的“强”结论全部来自这一同族评委,存在“Claude 认得 Claude 式 reasoning”的自我偏好风险。破解只有两条路:非同族第三方评委,或人类锚复核。
  2. **锚域不等于目标域。**英文锚只证明评委判英文议论文可信,证明不了它判中文物理报告可信——这是外部效度缺口。生产侧移植版的 docstring 把这条告诫写死:配对评委在中文域可靠性未验证,默认不跑实时链路。
  3. **高分段分辨力未经验证。**Spearman 0.81 主要由中低分区驱动;而配对比较恰恰发生在“两篇都不算差”的区间——评委在该区间的排序能力是一个未单独检验的假设,上端量程塌缩对它是真实威胁。
  4. **LLM 评委不替代人类锚。**当全部偏好证据来自 LLM 评委时,无法排除 LLM-judge 的系统性偏好;实验的人类盲评(30 对)在写作时仍在采集中,这被诚实地列为最致命局限。
  5. **可确定性检测的失败模式不要用评委。**丢内容、结构劣化这类问题用零 token 回归门就够(见第 11 篇)——更对,且每轮省一次评委调用。评委只该出现在确定性判据够不着的偏好层。

参考

  • arXivEdits——真实专家修订数据集(schema 为 sentence-1/sentence-2 + intention);本项目按 intention 筛选写作质量类改写,取 200 对作强弱对。
  • ASAP-AES 2.0——英文作文真人整体分(1–6)基准;经 Hugging Face 镜像 jatinmehra/Automated-Essay-Scoring-2.0 获取,分层采样 120 篇作可信度锚。
  • 一手记录:本文全部数字出自该项目的实验日志与机读运行台账(journal / runs.tsv),QWK 逐篇 (id, human, model) 落盘于 results/qwk_scores.csv 以支持复算与重标定。