知识蒸馏三大范式:离线/在线/自蒸馏
前置知识:本文是系列第 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 提出:一组学生模型同时从头训练,彼此互为师生。
机制:
- 初始化 $N$ 个结构可以相同或不同的学生网络;
- 每个学生在自己的损失之外,还要对齐其他同伴的输出分布(用 KL 散度相互约束);
- 所有学生同步更新,互相提供”软标签”监督。
伪代码(两个学生 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。
自蒸馏最反直觉:学生与教师结构完全相同。做法类似”重生”:
- 训好一个网络 $N_1$(它就是初代教师);
- 用 $N_1$ 的软标签去训练一个同构的新网络 $N_2$(学生);
- 可迭代:$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).