知识蒸馏三大范式:离线/在线/自蒸馏

前置知识:本文是系列第 3 篇(L1 入门总览)。建议先读《知识蒸馏是什么》与《发展简史》。本文在”教师-学生”基础上,按”教师是否预先训好、学生是否多个”划分三大范式。

一、为什么要分范式

基础定义里,我们默认了一个设定:教师先训好、固定不动,学生单方面向它学。但现实中还有两类重要变体:

  • 没有现成的大教师,多个小模型边训边互教(在线);
  • 教师和学生同构,学生”重生”后反而更强(自蒸馏)。

按”教师是否预训练、是否固定、学生是否唯一”,学界通常把 KD 分为三大范式:离线(offline)/ 在线(online)/ 自蒸馏(self)

二、离线蒸馏(Offline KD)—— 经典范式

代表:Hinton, Vinyals, Dean (2015), Distilling the Knowledge in a Neural Network, arXiv:1503.02531。

这是最原始、最常见的形态:

  • 教师预先训练好并冻结,不再更新参数;
  • 学生通过教师的软标签(温度 $T$ 下)学习;
  • 损失 = 软损失(对齐教师分布)+ 硬损失(对齐真实标签)的加权和。

适用场景

  • 你已有一个强大模型(或集成),想把它压成小模型部署;
  • 教师资源充足、学生端受限(边缘设备、延迟敏感);
  • 工程上最成熟、最易实现,是工业落地首选。

优点:教师质量直接决定上限,流程清晰、可复现。 缺点:依赖一个现成好教师;若教师本身有偏,学生会完整继承偏差。

三、在线蒸馏(Online KD)—— 没有固定教师,大家互教

代表:Zhang et al. (2018), Deep Mutual Learning(DML), arXiv:1706.00384,CVPR 2018。

离线蒸馏要求”先有大教师”。但在很多场景(如从头训一组小模型、或没有足够算力训超大教师),这个前提不成立。DML 提出:一组学生模型同时从头训练,彼此互为师生

机制:

  1. 初始化 $N$ 个结构可以相同或不同的学生网络;
  2. 每个学生在自己的损失之外,还要对齐其他同伴的输出分布(用 KL 散度相互约束);
  3. 所有学生同步更新,互相提供”软标签”监督。

伪代码(两个学生 A、B 互学):

for each batch:
    p_A = softmax(logits_A / T)
    p_B = softmax(logits_B / T)
    L_A = CE(A, y) + KL(p_B || p_A)   # A 向 B 学
    L_B = CE(B, y) + KL(p_A || p_B)   # B 向 A 学
    update A with L_A; update B with L_B

适用场景

  • 没有预训练大教师,或不想依赖单一教师;
  • 希望一组模型协同提升、且每个都能独立部署;
  • 训练成本可接受(多模型并行)。

优点:不依赖强教师,模型间互补、鲁棒性更好。 缺点:训练时算力开销大(要同时跑多个模型);协调多个损失较复杂。

四、自蒸馏(Self-distillation)—— 自己教自己,还能超越自己

代表:Furlanello et al. (2018), Born Again Neural Networks(BAN), arXiv:1805.04770,NeurIPS 2018。

自蒸馏最反直觉:学生与教师结构完全相同。做法类似”重生”:

  1. 训好一个网络 $N_1$(它就是初代教师);
  2. 用 $N_1$ 的软标签去训练一个同构的新网络 $N_2$(学生);
  3. 可迭代:$N_2$ 再当教师教 $N_3$……

关键发现:同构学生不仅能逼近、还能在不少任务上超越原教师。原因可能包括:软标签比硬标签提供了更平滑的监督,迭代过程相当于一种隐式正则与集成。

适用场景

  • 不想改模型结构、只想”白嫖”性能提升;
  • 追求在相同参数量下更高精度;
  • 与大模型时代的”迭代自训练/自蒸馏”思路一脉相承。

优点:结构不变、部署不变,却能涨点;概念优雅。 缺点:需要多轮训练,总时间可能不省;增益因任务而异,并非总是超越。

五、三范式对照

范式教师来源学生数代表工作关键特征
离线 Offline预训练并冻结的大模型单个Hinton 2015单向、最成熟、易部署
在线 Online无(同伴互教)多个DML 2018并行互学、不依赖强教师
自蒸馏 Self自身前一轮(同构)单个(同构)BAN 2018可超越教师、结构不变

六、如何选型

  • 有现成大模型、要端侧小模型 → 离线(最省事、最成熟)。
  • 没有强教师、想训一组可独立部署的小模型 → 在线 DML(互相教,不依赖教师)。
  • 结构不能改、只想同尺寸涨点 → 自蒸馏 BAN(重生一轮,可能反超)。
  • 资源充足可组合 → 离线压出小模型后,再用在线互学微调。

注意:在线与自蒸馏的”训练期算力”通常高于离线(多模型或迭代多轮),选型时要算清总账,而非只看部署期收益。

七、小结

  • 离线是默认范式:固定大教师 → 小学。
  • 在线解决”没有教师”:一群学生互相教(DML)。
  • 自蒸馏打破”学生必须更小”:同构重生,可能更强(BAN)。

三者并非互斥,实际系统常组合使用(例如先用离线压出小模型,再在线互学微调)。

延伸阅读 / 参考文献

  • Hinton, G., Vinyals, O., Dean, J. (2015). Distilling the Knowledge in a Neural Network. arXiv:1503.02531.
  • Furlanello, T., et al. (2018). Born Again Neural Networks. arXiv:1805.04770(NeurIPS 2018).
  • Zhang, Y., et al. (2018). Deep Mutual Learning. arXiv:1706.00384(CVPR 2018).
本文累计阅读