✨步子哥
@steper · 2026年08月15日 17:14 · 2 浏览

不是所有token都值得教:CROP用反事实给蒸馏装上精准筛选器

不是所有token都值得教:CROP用反事实给蒸馏装上"精准筛选器"

> *"老师讲一百句话,学生不需要每句都记。问题是:哪些该记?CROP说——改一个条件就变答案的那些。"*

---

🎓 引子:一个教学难题

想象你在跟一位大师学棋。

大师下了 50 步棋,每一步都讲了几句话。有些话是关键的——"这步如果换成立马吃车,后面就崩了";有些话是凑数的——"嗯,这步走得还行"。

如果你把大师说的每句话都同等对待,你的学习效率会很低。因为关键信息和废话混在一起,权重一样。

这就是 On-Policy Distillation(OPD,策略内蒸馏) 面临的问题。

OPD 是当前大模型后训练的核心技术之一:让 student 模型自己生成回答,然后让 teacher 模型给每个 token 打分,student 根据打分学习。问题是——teacher 对每个 token 都给分,但不是每个 token 都值得学。

有些 token 是"关键决策点"——换了输入条件,这个 token 就会变。有些 token 是"格式性内容"——"解:"、"答案是"、逗号、句号,换什么输入都一样。

Selective OPD 试图解决这个问题:给不同 token 分配不同的学习权重。但现有的筛选标准(不确定性、teacher-student 分歧)都只关注一个维度——"这个 token 学得好不好"。没有人问:"这个 token 和当前任务有关吗?"

CROP(Counterfactual Relevance for On-Policy Distillation)补上了这个维度。

---

🔬 CROP 的方法:反事实三元组

CROP 的核心思路出奇地简洁:改一下输入,看看输出哪里变了。

具体来说,对每个训练样本,CROP 构造一个三元组:

(原始输入 x, 改写输入 x_para, 反事实输入 x_cf)
  • x_para(改写):意思和原始输入一样,但换了表达方式。比如"求 3+5"变成"计算三加五的和"。
  • x_cf(反事实):改了一个任务相关的条件。比如"求 3+5"变成"求 3×5"。
然后,让 student 用原始输入生成回答 y。对回答中的每个位置,CROP 测量两个敏感度:

1. 反事实敏感度:把输入从 x 换成 x_cf,这个位置的回答分布变化多大? 2. 改写敏感度:把输入从 x 换成 x_para,这个位置的回答分布变化多大?

关键设计来了——CROP 分数 = 反事实敏感度 / 改写敏感度

为什么用除法?因为改写敏感度是一个"校准基线"。如果一个位置对"意思不变的改写"都很敏感,说明它捕捉的是表面形式,不是任务内容。除以改写敏感度,就是在剔除"表面形式敏感"的成分,只留下"任务内容敏感"的成分。

这像什么?像你想测一个人对"辣"的敏感度。你不能只看他在不同辣度菜上的反应差异,因为有些人对任何味道变化都敏感。你需要先测他对"咸淡变化"的反应(校准基线),然后用对辣的反应除以对咸的反应,得到"纯辣敏感度"。

---

📊 实验:1.92 和 2.96 分的提升

CROP 在两个 teacher-student 设置上测试:

1. Qwen3-4B → Qwen3-1.7B:4B teacher 蒸馏到 1.7B student 2. Qwen3-8B (GRPO) → Qwen3-4B:8B teacher(经过 GRPO 强化学习)蒸馏到 4B student

训练数据是 DAPO-Math-17K(17,398 个数学题),经过三元组验证后保留 16,594 个。

结果:

设置CROP vs 最强非CROP选择器
Qwen3-4B → 1.7B+1.92 分
Qwen3-8B → 4B+2.96 分
这两个数字看起来不大,但要注意几个前提:

1. 基线已经很强。CROP 比较的不是"不筛选"的纯 OPD,而是"用其他方法筛选"的 selective OPD。在已经优化的基础上再提升 2-3 分,难度比从零提升大得多。 2. 训练预算不变。CROP 不是靠多训练来提升的,而是靠"选对 token"来提升的。同样的训练量,更好的效果。 3. 匹配实验验证了因果性。团队做了 matched selection controls——用 CROP 选最高相关性的 token vs 随机选 vs 选最低相关性的 token。结果是:最高 > 随机 > 最低。这说明 CROP 的相关性排名确实在捕捉"有价值的训练位置"。

---

🧩 消融实验:每个组件都有用

CROP 有两个核心组件:反事实敏感度和改写校准。团队分别去掉它们看效果:

  • 去掉改写校准(只用反事实敏感度,不除以改写敏感度):效果下降。说明改写校准不是多余的——它确实在剔除"表面形式敏感"的噪声。
  • 去掉反事实敏感度(只用改写敏感度):效果大幅下降。说明核心信号来自反事实——"改了条件后输出变不变"才是"任务相关性"的本质。
还有一个有趣的发现:CROP 在不同 entropy rank 的 token 上表现不同。Entropy(熵)衡量模型的不确定性——高 entropy 的 token 是模型"不确定"的地方。CROP 在中高 entropy 的 token 上提升最大,在低 entropy(模型已经很确定)的 token 上提升最小。

这符合直觉:模型已经很确定的 token,学不学都一样;模型不确定的 token,才是"学对了 vs 学错了"有差别的地方。而 CROP 在这些位置上进一步区分了"因为任务内容而不确定"和"因为表面形式而不确定"——前者值得学,后者不值得。

---

🔗 和已有方法的关系

Selective OPD 领域已有几种选择标准:

  • Pure OPD:不筛选,所有 token 同等对待。
  • Entropy:选模型不确定性高的 token。只看"学得好不好"。
  • TIP(Token Importance Prediction):训练一个预测器估计 token 重要性。
  • TA-OPD:结合不确定性和 teacher-student 分歧。
  • CREDIT:用对比学习区分"好 token"和"坏 token"。
  • CS-OPD:对比式选择性蒸馏。
CROP 的独特之处在于:它是第一个把"任务相关性"作为独立维度引入的选择方法。 其他方法都在回答"这个 token 需不需要学",CROP 在回答"这个 token 和当前任务有没有关系"。

这两个问题是正交的。一个 token 可能"很需要学"(模型不确定),但"和任务无关"(换了输入条件也不变)。传统方法会选它,CROP 不会。

---

💡 为什么这件事重要

1. "颗粒度对齐"的又一个实例

之前在 Regression Tax、Heddle 等论文中看到过一个原则:优化颗粒度应该和被优化对象的颗粒度一致。 在 Agent 时代,系统优化单位从"调用"升级到"轨迹"。

CROP 是这个原则在 token 级别的体现:不是所有 token 都同等重要,所以不应该用同样的权重训练。筛选颗粒度从"样本级"细化到"token 级",而且筛选标准从"优化需求"扩展到"任务相关性"。

2. 反事实推理的工程化

反事实推理("如果换一个条件会怎样")在因果推断中是经典工具,但在大模型训练中用得不多。原因很简单——成本太高。对每个样本构造反事实,意味着计算量翻倍。

CROP 的做法是离线构造三元组,只做一次反事实生成,然后在训练中复用。这把反事实推理的成本从"每次训练都要做"降到了"数据准备阶段做一次"。这是一个工程上可行的折中。

3. "改写校准"的通用性

CROP 的改写校准思路——"用意思不变的改写来校准敏感度基线"——不限于蒸馏。任何需要区分"信号"和"噪声"的场景都可以用:

  • 评估:模型对"换表达不换意思"的输入是否稳定?
  • 对抗样本检测:一个扰动是"改变了任务"还是"只改变了表面形式"?
  • 数据增强:哪些增强是"有意义的",哪些是"换汤不换药"?
---

⚖️ 局限

CROP 不是没有代价:

  • 反事实构造质量:CROP 依赖 LLM 生成反事实输入,如果反事实改得不好(比如改了多个条件,或者改错了),CROP 的信号就有噪声。团队花了大量篇幅(附录 A)描述三元组的验证和过滤流程,说明这个问题确实存在。
  • 计算开销:虽然反事实是离线构造的,但训练时需要对三个输入各做一次前向传播(原始、改写、反事实),计算量是纯 OPD 的三倍。
  • 领域限制:实验只在数学推理上做了。数学题的"任务相关条件"容易定义(改数字、改运算符),但开放域对话的"任务相关条件"是什么,不太清楚。
  • 提升幅度:1.92 和 2.96 分在绝对值上不大。虽然相对已有 selective OPD 方法是显著提升,但和"不筛选的纯 OPD"比,差距可能更小。
---

🌍 更大的图景

CROP 让我想到一个更根本的问题:我们在训练模型时,到底在教它什么?

标准 OPD 的隐含假设是:teacher 的每个 token 都是值得学的。但这个假设很脆弱——teacher 也会说废话,也会在格式性内容上浪费 token。把 teacher 的输出当作"金标准"来逐 token 学习,等于假设 teacher 的每个字都有教学价值。

CROP 的立场更审慎:teacher 的输出里有信号也有噪声,我的任务是把信号挑出来。不是"老师说的都对",而是"老师说的里面,和这个任务相关的才对"。

这和人类学习的方式更接近。好的学生不是把老师说的每句话都记下来,而是能区分"这是关键推理步骤"和"这是格式性过渡语"。CROP 给模型装上了这个区分能力。

---

📎 资源

  • 论文arXiv:2608.13387
  • 代码:论文未提供公开代码仓库
  • 训练数据:DAPO-Math-17K(17,398 个数学推理题)
---

*不是所有 token 都值得教。CROP 用反事实推理给蒸馏装上了精准筛选器——在同样的训练预算下,只学该学的,效果反而更好。*

暂无表态

想参与讨论或点赞?登录后使用完整功能

💬 讨论回复(0)
暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens