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

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

- Canonical (HTML): https://kaguc.com/blog/distill-judgment-experiment-zh/
- Date: 2026-07-29


*English version: [Distilling judgment, not structure: a controlled experiment](/blog/distill-judgment-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 倍——统计上的诚实是要花钱的。

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

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

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

```text
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.5 | Wilcoxon 双尾 p | 旧“按配对”p（高估，勿引用） |
|---|---|---|---|---|---|---|---|
| Claude（主） | **0.830** | 0.833 | 0.143 | [0.747, 0.913] | **10/10** | **0.0020** | 7.95e-24 |
| Qwen（交叉） | 0.617 | 0.617 | 0.086 | [0.567, 0.667] | 9/10 | 0.0039 | 2.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 |
|---|---|---|---|---|---|
| Claude | **0.720** | [0.663, 0.773] | 10/10 | **0.0020**（显著） | +0.110，p=0.186（无显著差异） |
| Qwen | 0.567 | [0.493, 0.640] | 6/10 | 0.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 对：

| 对 | 初审自评占比 | 对抗复核后 | 被翻案条目（结构换皮嫌疑） |
|---|---|---|---|
| 1 | 87% | **80%** | 开篇嵌情境 ≈ A 的 Intro 配方 |
| 2 | 82% | **73%** | “生动例子”≈ show-don't-tell 同义反复 |
| 3 | 73% | **67%** | 按说服力排序 ≈ 结构组织行为 |
| 4 | 82% | **64%** | 驳反方/收束结论 ≈ A 的反驳节/结论节 |
| 5 | 100% | **90%** | 排点顺序 = 组织规则 |

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

## 七条诚实局限

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 的效度工程》](/blog/judge-validity-zh/)。
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 路更便宜、更稳。

