知识蒸馏(Knowledge AI 词典:Distillation">Distillation)的经典画面是“大模型教小模型”:一个参数多、跑得慢的教师模型(teacher)把对每张图给出的完整概率分布——也就是软标签(soft label)——传给学生模型(student)。学生学的不是“这张图是猫”这种百分百肯定的硬标签(hard label),而是“90% 猫、8% 狗、1% 狐狸”这样的分布。这些概率被称为暗知识(dark knowledge),它告诉学生:猫和狗长得像,跟狐狸就没那么像。只靠硬标签,这种关系是学不到的。
自蒸馏(Self-Distillation)就是把这套“教与学”的关系搬进同一个模型内部:教师和学生本质上是同一个网络的不同版本、不同层,或不同视角。
常见的四种形态:
1. 时间上的自己。用上一轮训练得到的模型(或它的指数滑动平均 EMA 副本)当老师,让当前模型去追它。EMA 教师变化慢,相当于给学生复习时提供一个稳定的参考答案,不会因为自己在训练中抖动而乱改标准。
2. 层间的自己。同一个模型里,深层已经做过更多次非线性变换,表征更抽象;把深层的输出当作软目标来监督浅层,等于让浅层提前学到“后面会怎么想”。反过来,也可以让浅层辅助深层,服务于早期退出(early exit)。
3. 视角上的自己。同一张图做两种不同的数据增强、或不同的 dropout 掩码,模型给出两个略有差异的预测,把其中更稳定的一方当作老师。这逼着模型对“无关变化”保持一致的看法。
4. 把集成压回单体。训练几个不同随机种子、不同检查点的模型,把它们的平均预测当软标签,重新训练一个单模型。推理时只跑一个模型,却拿到了好几个模型的共识。
打个比方:一个小组分头做同一套模拟题,各自独立作答,然后有人把大家的答案汇总成一份“带把握程度的参考答案”,再让每个人单独照着这份答案复盘。真正上考场时,每个人只带一本参考书,脑子里却装着整个小组的经验。层间版本更像公司内部培训:资深员工把经验写成 SOP 交给新人,而不是每个客户都请资深员工亲自出面。
和相邻概念的区别:
| 对比项 | 教师与学生 | 推理成本 | 主要目的 |
|---|---|---|---|
| 传统知识蒸馏 | 两个不同模型(通常大模型教小模型) | 只跑学生 | 压缩、提速 |
| 自蒸馏 | 同一个模型的不同版本、层或视角 | 只跑一个 | 正则化、提纯、把集成的知识放回单体 |
| 集成(ensemble) | 无教师 | 要跑多个 | 提升准确率 |
| 自训练(self-training) | 自己生成伪标签(pseudo-label) | 只跑一个 | 利用无标注数据 |
最容易被混淆的是自蒸馏和标签平滑(label smoothing):标签平滑给所有样本加同样强度的平滑,自蒸馏给每个样本一个“自适应”的软目标:模型越拿不准的样本,软标签越平;模型很有把握的样本,软标签越尖。它相当于一种按样本定制的标签平滑。
对从业者的实际意义:不增加任何推理成本就可能提升小模型效果;把手上一堆检查点或多个随机种子的收益压进一个模型;在训练中当作正则化手段抑制过拟合。但要注意自蒸馏的风险:教师就是自己,它会把自己的错误当成标准答案反复强化。工程上通常靠停止梯度(stop-gradient)、EMA 教师、教师与学生看不同的数据增强、只保留高置信样本来缓解。具体做法各框架不同,以官方文档为准。
对普通人的意义也不玄:它解释了为什么“复盘”有效,但复盘的正确姿势不是简单重做一遍,而是把自己的多个视角、多次尝试中更可靠的那部分提炼成一份参考答案,再用来训练下一次的自己。
