响应基蒸馏(Logits 蒸馏):最经典的一类

本文定位:L3 主流方法体系。响应基(response-based)蒸馏是知识蒸馏中最早、最易实现的一类,直接对齐师生模型的最后一层输出(logits)前置知识:软标签、KL/CE 与蒸馏损失设计(见本系列 L2 三篇)。

1. 什么是响应基蒸馏

“响应基蒸馏”指:让学生去模仿教师的输出层响应(response),也就是最后一层 logits 或经 softmax 的概率。它不触碰中间层,只用到模型”最终答案”。

这类方法对应两条早期工作:

  • Hinton et al. (2015, arXiv:1503.02531):用温度 $T$ 软化 softmax,得到软标签,再用 KL/CE 对齐(即本系列前几篇所讲)。
  • Ba & Caruana (2014, arXiv:1312.6184, Do Deep Nets Really Need to be Deep?):让一个浅层网络直接模仿深层网络的 logits(当时未用温度软化,直接回归 logits)。

二者都属于”响应级”知识迁移,区别在是否引入温度软化。

2. 与 Hinton 2015 的对应

Hinton 的方法是响应基蒸馏的”标准模板”:

  • 教师输出软化分布 $q_T=\text{softmax}(z_T/T)$;
  • 学生输出 $q_S=\text{softmax}(z_S/T)$;
  • 软损失 $T^2 D_{\mathrm{KL}}(q_T\parallel q_S)$ 对齐响应;
  • 可再叠加硬损失。

核心思想:最终层响应里已经编码了 dark knowledge,对齐响应即可迁移大部分能力。

3. 与 Ba & Caruana 2014 的对应

Ba & Caruana 的贡献在于证明:浅模型也能通过模仿深模型的 logits 达到接近深的性能,从而质疑”网络必须很深”的必要性。

与 Hinton 的关键差异:

维度Ba & Caruana 2014Hinton 2015
对齐对象原始 logits(未软化)温度软化后的概率分布
温度 $T$不使用使用 $T>1$
学生结构浅而宽可任意(通常较小)
知识类型响应(logits)响应(软标签/暗知识)

实践中,Hinton 的”软化 + KL”更鲁棒,已成为响应基蒸馏的主流写法;Ba & Caruana 的”直接模仿 logits”可视为其无温度特例。

4. 实现要点

  1. 维度匹配:师生 logits 维度需一致(同词表/同类别数)。若不一致,需要对齐层/映射(具体映射方式「待核实」,取决于任务,本文不展开)。
  2. 教师冻结:教师仅前向,no_grad,提供目标响应。
  3. 温度只在训练用:软损失在 $T>1$ 下计算;硬损失与最终部署用 $T=1$。
  4. 损失组合:软损失 + 硬损失,权重见《蒸馏损失函数与权重设计》。

5. 伪代码

# 响应基蒸馏(对应 Hinton 2015 + 损失设计篇)
teacher.eval()
for x, y in dataloader:
    with torch.no_grad():
        z_t = teacher(x)                 # 教师 logits,无梯度
    z_s = student(x)                     # 学生 logits

    # 软损失:温度 T 下对齐响应
    soft_loss = T**2 * KL(
        log_softmax(z_t / T),
        log_softmax(z_s / T)
    )
    # 硬损失:普通 softmax 与真实标签
    hard_loss = CE(log_softmax(z_s), y)

    loss = alpha * soft_loss + (1 - alpha) * hard_loss
    loss.backward()
    optimizer.step()

注:KL 的输入通常用 log_softmax(数值稳定);这与”在固定目标分布下 KL≡CE”的结论一致。

6. 优缺点

  • 优点:实现最简单;教师可当黑盒(只需输出 logits);计算开销低;是几乎所有 LLM/视觉蒸馏基线的起点。
  • 缺点:只用最终响应,未利用教师丰富的中间表示;当师生结构差异巨大时,单靠响应可能迁移不足(引出特征基/关系基等后继方法)。

7. 响应基蒸馏的演进与后续(概览)

响应基蒸馏自 Hinton 2015 奠定范式后,在 LLM 时代被不断精细化(本节概览,细节非本 6 篇范围):

  • GKD(Generalized KD, Agarwal et al. 2024, arXiv:2306.13649, ICLR 2024):提出 on-policy 蒸馏,让学生在”自己生成的样本”上与教师对齐,而非只用教师的训练分布。
  • MiniLLM(Gu et al. 2024, arXiv:2306.08543, ICLR 2024):采用反向 KL 散度缓解 mode-covering,属于响应级对齐的损失函数改进。
  • DistiLLM(Ko et al. 2024, arXiv:2402.03898, ICML 2024):提出 modulated reverse KL + 进阶 logit 蒸馏(AILD),进一步提升 LLM 响应基蒸馏的稳定性。

可见,无论损失函数如何演进,“对齐师生最后一层响应”这一响应基的核心思想始终未变,区别主要在于在哪些样本上对齐、以及用哪种散度度量对齐

在工程落地上,响应基蒸馏也是工业系统的主力:例如 DistilBERT(Sanh et al. 2019, arXiv:1910.01108)即沿用”软标签 + 温度 + 硬损失”的响应基配方,报告体积减小 40%、推理快 60%、保留约 97% BERT 性能。该案例说明响应基范式在小模型压缩中已被验证有效,其成功也反过来印证:即便不引入中间层或关系结构,仅对齐输出响应,已足以把大模型的大部分能力迁移到小模型。因此对于资源受限、追求简单可复现的场景,响应基蒸馏通常应作为首选基线。

需要区分”响应基蒸馏”与”模型压缩”的边界:响应基蒸馏是方法,模型压缩是目标。同一个响应基损失,既可用于把大模型压成小模型,也可用于让小模型从大模型”借力”而不变小(例如学生与原模型同构时即退化为普通的教师辅导训练)。因此判断是否”蒸馏”,看的是”是否用教师的软化输出作为额外监督”,而非看模型尺寸是否变化。这也是为什么自蒸馏、在线互学习等变体,虽不改变规模,仍被归入知识蒸馏大家庭。把握住”软监督”这一本质,就不会被五花八门的蒸馏名词绕晕;实践中建议先把响应基基线跑通,再按需叠加特征基/关系基,循序渐进,不要一上来就堆复杂方法,基线往往已足够强。

从可复现性角度,响应基蒸馏对框架最友好:它不需要访问教师中间层,只要教师能输出 logits 或概率即可,因此特别适合”只拿到教师权重、拿不到源码”的闭源协作场景。这也是它在工业界比特征基更普及的隐性原因。反过来,当你发现响应基已能把学生训到满意精度时,就没有必要为追求方法新颖而强行上特征基或关系基——工程上”够用且简单”往往优于”复杂但边际收益有限”。

8. 小结

响应基蒸馏 = 对齐师生最后一层响应。Hinton 2015 用”温度软化 + KL”实现,Ba & Caruana 2014 用”直接模仿 logits”实现。它是蒸馏家族的基石,也是后续特征基、关系基方法对照的基准。

延伸阅读 / 参考文献

  • Hinton G., Vinyals O., Dean J. (2015). Distilling the Knowledge in a Neural Network. arXiv:1503.02531.(响应基蒸馏的标准软标签方法)
  • Ba J., Caruana R. (2014). Do Deep Nets Really Need to be Deep? arXiv:1312.6184.(浅层网络模仿深层网络 logits)
本文累计阅读