知识蒸馏的根本动因是:大模型的"暗知识"(dark knowledge)无法被硬标签直接传递,需要通过软概率分布让小模型学到类间相似性结构——而离线蒸馏将这一过程冻结在静态数据集上,天然无法让学生从自身错误中学习。
Bucilua 等人在 NeurIPS 2006 发表"Model Compression",首次系统性地提出用大模型的输出软化标签来训练小模型,证明小模型可以在不损失太多精度的情况下大幅压缩。这是蒸馏思想的原始形态,但彼时深度学习尚未兴起,影响有限。
Geoffrey Hinton、Oriol Vinyals 和 Jeff Dean 在 NIPS 2015 Workshop 发表"Distilling the Knowledge in a Neural Network",正式引入"温度参数"$T$ 对 softmax 输出进行软化,使得类别间的相对概率关系(即暗知识)得以显现。核心洞见是:一张猫的图片被误分为豹的概率,远比被误分为汽车的概率高——这种结构信息在硬标签中完全丢失。这篇论文奠定了此后十年蒸馏研究的基础范式。
FitNets(Romero et al., ICLR 2015)将蒸馏从输出层延伸到中间隐层,要求学生模仿教师的特征图。此后 AT(Attention Transfer, Zagoruyko & Komodakis, ICLR 2017)、RKD(Relational Knowledge Distillation, Park et al., CVPR 2019)等工作进一步探索关系结构的传递,蒸馏目标从"点对点模仿"扩展为"结构对结构对齐"。
离线蒸馏的核心缺陷在于:学生在训练时永远只见到教师的"正确答案",从不接触自身的错误分布,导致训练-推理分布偏移(exposure bias)。Zhang et al. 的 Deep Mutual Learning(CVPR 2018)是在线蒸馏的重要先驱,让多个学生网络互相蒸馏,无需预训练教师。此后 Born-Again Networks(Furlanello et al., ICML 2018)发现自蒸馏(用同架构模型蒸馏自身)可以持续提升性能,打破了"教师必须比学生强"的直觉。
随着 LLM 规模膨胀,离线蒸馏的静态数据集瓶颈愈发突出:教师模型每隔数月就会更新,而静态蒸馏数据集迅速过时。DistiLLM(Kim et al., ICML 2024)、MiniLLM(Gu et al., ICLR 2024)等工作将在线采样引入 LLM 蒸馏:学生在训练过程中动态生成自身输出,教师对这些输出打分并提供软标签,形成闭环。这一范式与 RL 的 on-policy 训练高度同构,成为当前研究热点。
标准离线蒸馏的损失函数为: $$\mathcal{L}_{\text{KD}} = (1-\alpha)\mathcal{L}_{\text{CE}}(y, p_S) + \alpha T^2 \cdot \text{KL}\left(p_T^{(T)} \| p_S^{(T)}\right)$$ 其中 $p_S^{(T)} = \text{softmax}(z_S / T)$,$p_T^{(T)} = \text{softmax}(z_T / T)$,$z$ 为 logits,$T$ 为温度,$\alpha$ 为蒸馏权重,$T^2$ 是梯度尺度补偿项(因为软化后梯度幅度缩小了 $T^2$ 倍)。 在线蒸馏的关键改变在于数据分布:离线蒸馏中输入 $x$ 来自固定数据集 $\mathcal{D}$,而在线蒸馏中 $x$ 部分来自学生自身的生成分布 $q_S$: $$\mathcal{L}_{\text{online}} = \mathbb{E}_{x \sim (1-\beta)\mathcal{D} + \beta q_S}\left[T^2 \cdot \text{KL}\left(p_T^{(T)}(\cdot|x) \| p_S^{(T)}(\cdot|x)\right)\right]$$ $\beta \in [0,1]$ 控制在线采样比例。当 $\beta=0$ 退化为离线蒸馏;当 $\beta=1$ 为纯在线蒸馏。 MiniLLM 进一步将 KL 方向反转为 $\text{KL}(p_S \| p_T)$,即最小化学生对教师的反向 KL,避免学生在教师低概率区域"质量扩散"(mode-covering 问题),使学生输出更加集中锐利: $$\mathcal{L}_{\text{reverse}} = \mathbb{E}_{x \sim q_S}\left[\text{KL}(p_S(\cdot|x) \| p_T(\cdot|x))\right]$$ 反向 KL 的梯度需要通过 REINFORCE 或重要性采样估计,计算代价更高但生成质量更优。
在线蒸馏的整体逻辑是:学生边生成边学习,教师的软标签作为动态奖励信号,形成"生成→评分→更新"的闭环,而非静态监督。
在每个训练步,学生模型以当前参数 $\theta_S$ 对输入 $x$(可来自数据集或纯噪声提示)进行采样,生成候选序列 $\hat{y} \sim p_S(\cdot|x;\theta_S)$。这一步是在线蒸馏与离线蒸馏的根本分叉点:学生必须"犯自己的错误",而非只见教师的正确输出。采样温度通常设为 $T_{\text{sample}} > 1$ 以保证多样性,避免模式坍塌。
将学生生成的序列 $\hat{y}$ 送入冻结的教师模型,获取每个位置的 token 概率分布 $p_T(\cdot|\hat{y}_{
计算学生输出分布与教师软标签之间的 KL 散度。若使用正向 KL($\text{KL}(p_T \| p_S)$),梯度可直接反传;若使用反向 KL($\text{KL}(p_S \| p_T)$),需要通过 REINFORCE 估计梯度:
python # 反向KL的REINFORCE梯度估计 log_ps = student.log_prob(y_hat, x) # 学生对自身生成的log概率 log_pt = teacher.log_prob(y_hat, x) # 教师对学生生成的log概率 reward = log_ps - log_pt # 近似反向KL的每步奖励 loss = -(reward.detach() * log_ps).mean() # stop-gradient trick方差控制是此步的核心工程挑战,通常需要 baseline 减法或 PPO-style clip。
纯在线采样在训练初期不稳定(学生输出质量极差,教师反馈信噪比低)。实践中采用混合策略:训练初期 $\beta$ 较小,以离线数据为主;随训练进行逐步提高 $\beta$,增加在线数据比例。这与课程学习(Curriculum Learning)的思想一致:先学简单的(教师示范),再学难的(自己犯错并纠正)。
在 Deep Mutual Learning 等变体中,教师本身也是可训练的,多个学生网络互相作为对方的教师。此时需要 EMA(指数移动平均)更新教师参数以保持稳定性,避免两个网络同时崩溃:$\theta_T \leftarrow \gamma \theta_T + (1-\gamma)\theta_S$,$\gamma$ 通常取 0.999。
在线蒸馏已成为 LLM 后训练的核心基础设施之一。Meta 的 LLaMA 系列、Google 的 Gemma 均在小模型训练中采用了在线蒸馏思想;MiniLLM 和 DistiLLM 被广泛引用并集成进 TRL 等后训练库。在音视频领域,Whisper 的轻量化版本(如 distil-whisper)也采用了类似的在线数据增强蒸馏策略。其核心价值在于:它是目前已知的、能系统性缩小"训练-推理分布偏移"的蒸馏方法,这一问题在自回归生成模型中尤为致命。
当前核心开放问题:①在线蒸馏的计算代价是离线的 3-5 倍,如何高效实现仍是工程难题;②反向 KL 的高方差梯度估计尚无通用解法;③多模态在线蒸馏(如视频生成模型的在线蒸馏)几乎是空白;④教师模型本身在更新时如何保持蒸馏一致性(moving target problem)尚未解决。