一个 judge 说话很专业,理由也很完整,但如果总把最要紧的错误放过去,就不适合做你的发布门槛。校准(calibration)要落到具体判断:哪些该拦,哪些可以过,不确定时交给谁。
先准备人工对照,不急着调 prompt
我会把样本分成几份,避免同一批数据既出题又验收:
| 划分 | 用来做什么 |
|---|---|
| Rubric development | 看错误类型、修改定义、写示范 |
| Calibration / validation | 比较 judge、选阈值、定人工复核规则 |
| Frozen holdout | 冻结后验收;不能看完结果再偷偷为它调参 |
| Fresh audit | 使用后持续抽新样本,检查分布和版本变化 |
这些是用途,不是规定必须按某个比例切。样本少时可以交叉验证,但调参和最终报告仍要分清。来自同一用户、同一道题的改写、同一条 agent 轨迹,不应随机拆到两边造成泄漏。
人工也会不一致。先独立标注,再讨论边界;保留原始分歧,不要只留讨论后的统一答案。关键条件没说清楚时,先修 rubric。
动手:阈值提高,所有东西都会更好吗?
交互演示需要 JavaScript。提高阈值可能减少错误放行,也会误拦好答案;扩大人工复核范围会降低自动覆盖率(coverage)。
这 12 条是故意写出错误的教学数据,分成 RAG 和 agent 两组。分数是虚构的数值评分,不是正确概率。你可以看到:总体还行的结果,在某个 slice 上可能很差。
别只盯着上面的百分比,顺着格子看一次:
- 保持「全部」、阈值 3.5,不开复核。R4、A4 和 A5 都被放行了,人工却判它们不合格;R4(4.1 分)和 A4(4.5 分)的分还挺高。高分不是正确的证据。
- 把阈值调到 4.0。错误放行从 3 条降到 2 条,错误拦截却从 2 条升到 3 条;准确率还是 7/12。总分没变,犯的错变了。
- 再打开人工复核。6 条样本暂时不自动判断,所以表里只剩 6 条;不是少犯了 6 次错,而是把这 6 次判断交给了人。
下面的 2×2 表按「人工认为应不应该通过」和「规则实际放不放行」交叉摆放。先把这两个方向看清,再记 TP、FP 这些缩写,会直观很多。
阈值附近可转人工复核。但复核不是「自动变正确」,它只是暂时不由这套规则下结论,需要人手、时间和另外的检查。这里允许你来回调,是为了看取舍;真实 holdout 不能拿来这样选阈值。
报告里至少要有这几项
把人工 pass 看作正类。judge 放过人工 fail,是 false positive / 错误放行;judge 拦住人工 pass,是 false negative / 错误拦截。
$$\text{coverage}=\frac{N_{\text{自动给出 pass/fail}}}{N_{\text{全部尝试}}}.$$
$$\text{错误放行占比}=\frac{N_{\text{人工 fail,judge pass}}}{N_{\text{judge pass}}}.$$
第二个量回答「放过去的里面,多少其实不合格」。它不是以全部人工 fail 为分母的 false positive rate。用哪个都可以,但名称和分母要对上。拿阈值 3.5 算一次:judge 放行 7 条,其中 3 条人工判 fail,错误放行占比是 $3/7\approx43\%$;以全部 6 条人工 fail 为分母的 false positive rate 则是 $3/6=50\%$。分母为 0 就显示 N/A,不是 0%。
| 报告项 | 为什么要看 |
|---|---|
| Confusion matrix | 分开看误放和误拦,别只看一个 accuracy |
| Coverage + unknown + errors | 一个大量弃权的 judge 可能有很高的条件准确率 |
| 各 slice 的样本数和错误数 | 语言、长上下文、工具失败等边界可能被总体均值盖住 |
| 人工间分歧 | 哪些任务本身就难统一标准? |
| 候选(candidate)级与系统级结果 | 排对两个系统,不代表能逐条发现危险答案 |
如果 95/100 条本来就是 pass,一个永远说 pass 的 judge 也有 95% accuracy,却漏掉了所有失败。不要把这个数字当成好 judge 的证据。
一致、相关、校准,各在说什么
- Agreement:同一条样本上,judge 和人是否给出相同类别。
- Correlation:候选或系统的相对排序是否接近;相关高不意味着每条都判断对。
- Calibration:当你把输出解释成「通过概率 0.8」时,类似预测是否真的约有 80% 通过。
- Reliability / stability:重复评估、换顺序后是否稳定;稳定犯错也属于稳定。
Cohen's kappa 可以补充原始一致率,但受类别分布和标注假设影响;ordinal 结果可考虑加权 kappa。拿上面 12 条算一次:阈值 3.5 时 judge 和人一致 7 条,原始一致率 $p_o=7/12$;judge 放行 7/12,人工判 pass 6/12,偶然一致率 $p_e=\tfrac{7}{12}\cdot\tfrac{6}{12}+\tfrac{5}{12}\cdot\tfrac{6}{12}=0.5$,所以 $\kappa=(7/12-0.5)/0.5\approx0.17$。阈值 4.0 时一致仍是 7 条,judge 放行 5/12,$p_e$ 还是 0.5,κ 也还是 0.17。两个阈值的 kappa 一样,误放和误拦的组合却不同。Spearman / Kendall 更适合排序比较。不能挑一个最好看的指标,把其他问题藏掉。
除非做过额外概率校准,不要把 4/5、softmax token probability 或 judge 自报 confidence 直接当成正确率。也别把多模型投票一致当作独立证据的数量。
提升只有一点点,能信吗?
同一组任务比较 A/B,保留逐任务配对差值,再按独立任务做 paired bootstrap 等不确定性估计;配对比较和精确检验怎样算,见指标稳健性。多轮对话按 conversation 聚类,同一题重复问 judge 20 次不能算 20 道独立题。
如果独立任务很少,区间再漂亮也要谨慎。报告效应大小、区间、样本来源和有效样本数;想检测多小的差异,会影响需要多少样本,没有统一的「评 100 条就够」。
选择模型和阈值用了很多次同一验证集,也会适应那份数据。最终验收集要留住;更新了 rubric,就给它新版本,别把前后分数当作同一把尺子。
如果 judge 和人工意见不一致,是不是一定是 judge 错?
不一定。检查原始证据、人工准则和标注质量,必要时做独立复核。也要警惕反过来:不能因为模型的理由写得好,就顺手把人工标签改到与它一致。记录修改原因,避免边评边替模型改答案。
本页术语 3
- 校准 calibration
- 模型给出的置信度是否等于真实正确率
- 覆盖率 coverage
- 结果覆盖了多少目标内容或类别,计算前需要说清范围和分母
- 候选 candidate
- 召回阶段捞出来、等待精排挑选的内容