26-06-03 21:31

On-policy 蒸馏最阴的坑,不是学生学不会,而是老师"乱教"。

师生分布一旦拉开,学生自己 rollout 出来的 token 落到老师压根没把握的区域,老师照样给你输出一个 logits,你拿这个去算 reverse-KL,梯度方向是反的都有可能。我之前做视频生成蒸馏的时候踩过类似的——student 先采一段歪的,teacher 在歪轨迹上继续指路,越蒸越偏,loss 看着在降,eval 直接崩。

今天刷到一篇 TrOPD(Trust Region On-Policy Distillation),思路挺干净的:

🔍 只在 teacher 真正"靠谱"的信任域里做 OPD,离群区域单独处理(梯度裁剪 / mask / 换 forward-KL)

💡 离群太多就让 student 从 teacher 的 prefix 续写,用 forward-KL 把它"拽"回可信区域,再放回 on-policy 探索

本质是承认一件事:teacher 不是全知的,它在 OOD 区域的监督信号就是噪声,硬算 reverse-KL 等于让学生跟着噪声走。

跟 RLHF 里 PPO 的 trust region 是一个味儿——别一步迈太大,别在你看不清的地方下判断。蒸馏圈早晚得把这套 credit assignment 标配上。

数学、代码、通用 benchmark 都打过 EOPD / REOPOLD,等开源跑一下看实际显存开销,full vocab 的 RKL 那个 O(n·k) 内存不是小数。 arXiv: 2606.01249

发布于 中国香港