BLOG · #Engineering

蒸“判断”而非“结构”:一个对照实验

把专家写作蒸成可复用 skill 有两条路:提“结构模板”(写什么)或提“判断逻辑”(为什么这么写)。本文以实验报告体记录一次控同对照实验:K=10 对独立蒸馏、双评委、skill 层统计检验,以及三次险些让结论作废的方法学修正——有效 N≈1、度量退化、判断纯度对抗审计。结论:H1 获方法层证据支持,未坐实。

English version: Distilling judgment, not structure: a controlled experiment。“LLM 应用工程”系列第 12 篇。

假设:学“判断”能否胜过学“结构”

把专家范文交给模型、让它归纳出一份可复用的写作 skill(提示词),有两条路线:

  • A 路(结构模板):提取“分几部分、每部分写什么、什么顺序、什么格式”;
  • B 路(判断逻辑):对比式 rationale 提取——给模型看强/弱两个版本,逼它说出“强版为什么更好、对读者做了什么假设、新手会怎么写错”,聚合成“判断规则 + do/don’t + 读者模型”。

H1:B 路蒸出的 skill 在配对偏好评判上优于 A 路。 全程纯推理,不训练、不微调,只走 LLM API。多数提示词工程实践默认走的是 A 路——H1 若成立,值得改写法的场景很多。本文按实验报告体完整记录这次验证,包括三次险些让结论作废的方法学修正。

设计:控同到只剩一个变量

数据全部来自公开基准。范文与强弱对取自 ASAP-AES 2.0(英文议论文,人类整体分 1–6):范文取 score 6 高分篇,强/弱对取 5–6 分对 1–2 分整篇;另留 120 篇带真人分的作文(每档 20 篇)做评委可信度锚;消融用 arXivEdits 的同句 before/after 专家改写对。

控同设计:A、B 共用同一批范文输入、同生成模型(DeepSeek-v4-pro,T=0.7)、同任务、同长度约束(约 250–400 词、禁注水)、同评委,唯一变量是蒸出的 skill。评判偏差控制三件套:位置交换(正反序判定一致才算赢,否则记平)、身份遮蔽(评委只见“文章一/文章二”)、长度中性(rubric 明确忽略长度、惩罚冗余)。双评委:Claude-Sonnet-4.6(主)+ Qwen3.7-max(交叉)。

两条路蒸出的 prompt 一眼可辨。skill_A 通篇是位置与配比指令,典型条目:

Introduction (1 paragraph) … A clear thesis statement that takes a definite position. … Relative length: 3–5 sentences.

skill_B 的条目全部挂着“对谁、为什么”:

When you acknowledge a counterargument, respond with a genuine rebuttal – not dismissal – because your reader expects fairness and intellectual seriousness.

统计教训一:有效 N≈1

第一轮只蒸了一对 (skill_A, skill_B),在 30 个任务上各生成、配对评判,把 30 个配对当独立样本做二项检验,p≈7×10⁻⁹。数字漂亮,推理却错了:这 30 个配对共用同一对 skill,真正变化的只有任务。它检验的是“这一对 skill 在 30 个任务上稳不稳”;而 H1 是方法层命题,独立单元是 skill——skill 只有一对,有效 N≈1

改造:先把范文池从 12 篇扩到 ≥24 篇,再用不同随机种子从池中各抽 6 篇范文(B 路同步抽强弱对子集),独立蒸出 K=10 对 skill;每对在同一组任务上生成、评判(落地后每对 15 个配对进入统计),得到每对一个偏好分 w_k;最后在 skill 层做 Wilcoxon signed-rank(检验 K 个 w_k 是否系统性 >0.5),置信区间用按 skill 重采样的 cluster bootstrap。按改造方案的预算量级,生成、评判加蒸馏合计 1200+ 次调用,约为第一轮的 5–6 倍——统计上的诚实是要花钱的。

flowchart LR P[范文池 ≥24 篇] -->|seed k 各抽 6 篇 + 强弱对子集| D[独立蒸馏 K=10 对
skill_A_k 与 skill_B_k] D --> G[每对同组任务 ×2 生成
同模型 · T=0.7 · 250–400 词] G --> J[双评委配对评判
位置交换 · 身份遮蔽 · 长度中性] J --> W[每对每评委一个偏好分 w_k] W --> S[skill 层 Wilcoxon
+ cluster bootstrap CI]

统计教训二:度量会静默退化

改造前的一次实测检查救了整个检验:两评委两轮共 55 个已判定配对里,A 赢了 0 次,全部变化都在“B 赢 vs 平”之间。若按直觉定义 w_k = B/(B+A),A≈0 会让几乎每个 w_k 恒等于 1.0——K 个样本零方差,Wilcoxon 退化、什么也测不出。修正为含平局的偏好分:

w_k = (B 赢数 + 0.5 × 平局数) / T

平局把 w_k 往 0.5 方向拉,方差被拉回来:单对实测 Claude ≈0.97、Qwen ≈0.73,两评委的效应量差异得以保留、可被检验。

结果:方向极稳,效应量随评委走

评委w_k 均值中位标准差95% CI(cluster bootstrap)w_k>0.5Wilcoxon 双尾 p旧“按配对”p(高估,勿引用)
Claude(主)0.8300.8330.143[0.747, 0.913]10/100.00207.95e-24
Qwen(交叉)0.6170.6170.086[0.567, 0.667]9/100.00392.06e-06

四点必须跟着表读:

  1. 旧“按配对”p 值在统计脚本输出里就地标注“高估:K×T 配对非独立,仅作对照,勿引用”——把已知会误导的数字连同警告一起落盘,比事后口头澄清可靠。
  2. p=0.0020 是下界,不是效应量。 K=10 全同向时 Wilcoxon 精确双尾 p 的下界即 2/2¹⁰≈0.0020,等价于符号检验:它只编码“10 对方向一致”,不编码好多少——w_k 全是 0.51 和全是 0.99 给出同一个 p;K≥17 才可能出现 p<0.001。效应量证据以 CI 为准。
  3. Qwen 的“显著”含金量偏低:平局主导、交换一致率多在 0.2–0.5、CI 下界 0.567 贴近 0.5。但剔除平局的敏感性分析仍 9/10>0.5、0 净输——显著不是平局计权造出来的。
  4. A 并非从不赢:Claude 下 4 对、Qwen 下 8 对里 A 赢过个别配对,但没有任何一对 B 净输。

消融:换成同句强弱对,判断信号还在吗

B 的对比源是跨题整篇强弱对——它的胜利可能掺着主题/内容差异,不是纯“判断”。把对比源换成 arXivEdits 同句改写对(几乎无主题差)蒸出 B_sent,同样跑 10 对:

评委B_sent w_k 均值95% CI>0.5 的对vs A(Wilcoxon p)B vs B_sent
Claude0.720[0.663, 0.773]10/100.0020(显著)+0.110,p=0.186(无显著差异)
Qwen0.567[0.493, 0.640]6/100.109(未显著)+0.050,p=0.281(无显著差异)

判读从保守:Claude 下 B_sent 仍显著胜 A、且与 B 无显著差异,提示优势更可能源于判断而非主题;但 Qwen 未复现该消融,且存在体裁 confound——arXivEdits 是科技论文句子、生成任务是议论文,“同句”与“体裁”两个变量同时改变,干净的单因素对照尚未做。

判断纯度:对抗审计把自评逐对下调

还剩一个能推翻整个叙事的问题:skill_B 里写的真是判断规则,还是结构描述换皮?LLM 自评不可信——pilot 的锐度自检报了 100%。改由 11 个 agent 的对抗式核查(Claude Opus 4.8 执行:逐条分类判断/结构、比对同对 skill_A 查换皮、专攻“because 是否同义反复”)抽查 5 对:

初审自评占比对抗复核后被翻案条目(结构换皮嫌疑)
187%80%开篇嵌情境 ≈ A 的 Intro 配方
282%73%“生动例子”≈ show-don’t-tell 同义反复
373%67%按说服力排序 ≈ 结构组织行为
482%64%驳反方/收束结论 ≈ A 的反驳节/结论节
5100%90%排点顺序 = 组织规则

对抗复核后均值降到 0.746,但 5/5 对仍判断主导、全部实质区别于 skill_A(A 通篇位置/格式指令、零 reasoning),裁决“通过(附条件)”:0.75 是含冗余簇的上界,pair 4 最弱(0.64)。被翻案条目的模式高度一致——结构动作贴一句近乎废话的 because。注意:这仍是 AI 自动核查,非人工独立核验。(对抗式审查作为工程实践,见系列第 13 篇《多 Agent 对抗审查作为工程实践》。)

七条诚实局限

  1. **人类锚未采集(最致命)。**30 对盲评清单已导出(同批配对的机器裁定为 B=20/A=3/平=7),人类评分尚未回收。在此之前,全部偏好证据来自 LLM 评委,无法排除 LLM-judge 的系统性偏好。
  2. **评委同族。**主评委 Claude-Sonnet 与做 skill 提炼、纯度审计的 Claude Opus 同族;所有“强”结论恰好都来自这一同族评委,存在自我偏好风险。
  3. **p 值触底、有效 N 仍偏高。**p=0.0020 只编码“10/10 同向”;且 10 个子集从有限池抽取必有重叠,“有效 N=10”并非严格独立同分布,仍是高估。
  4. **效应量对评委敏感。**Claude 0.83、Qwen 0.62:“B 不输 A”很稳,“B 好多少”未定。
  5. **评委量程塌缩。**QWK=0.456(Spearman 0.813),混淆矩阵显示评委从不给出 5、6 分——高分段分辨力未经验证,而 B vs A 恰在“两篇都不差”的区间比较。评委效度的系统处理见系列第 9 篇《LLM-as-Judge 的效度工程》
  6. **消融单评委显著 + 体裁 confound。**同句消融仅 Claude 显著,且混入“科技句→议论文”的体裁变量。
  7. **机制与外部效度。**副信号修辞 move 覆盖 A 0.89 vs B 0.86(弱否定式结论:无证据显示 B 靠堆砌 move 取胜)来自 pilot、主实验未复测、无统计检验;且仅测了单生成模型、单体裁。

结论因此定格为:在 LLM-as-judge 口径下,“学判断 > 学结构”获得方法层、方向高度一致、判断纯度通过(附条件)的初步支持;H1 是有证据支持的有力候选,未坐实。 坐实需要人类评估、第三方评委、干净的同句同体裁消融。

适用边界

  1. **有确定性度量就别用配对评委。**这套重型统计只该在“质量只能靠偏好比较”的任务上用;能写断言的地方,一行断言胜过 800 次评判调用。
  2. **B 路的前提是有强弱对。**对比式蒸馏靠“强/弱版本”逼出理由;没有天然分档(如人类评分)也造不出可信降级的领域,B 路无从对比。
  3. **预算不够 K 对,就别宣称方法层结论。**单对 skill 的结果只支持“这一对上 B 胜 A”;把任务数当样本量,是这次实验最早犯、也最容易犯的错。
  4. **结构模板并非无用。**A 路在修辞 move 覆盖上不输 B(0.89 vs 0.86);如果任务瓶颈是格式合规而非质量判断,A 路更便宜、更稳。