要解决的问题
大模型能力强,但推理成本高。小模型便宜,但能力弱,且直接训练小模型难以达到大模型的水平。
知识蒸馏(Knowledge Distillation)的目标是:把一个大模型(教师)的能力,迁移到一个小模型(学生)上。
核心思想:软标签
训练模型时,通常用的是"硬标签"——正确答案是 1,其他是 0。
但教师模型给出的,是一个概率分布(软标签)。比如在一道分类题中,它可能给出:猫 0.85、狗 0.12、狐狸 0.03。
这个分布包含了比"正确答案是猫"更丰富的信息:模型认为狗也有一定可能,狐狸几乎不可能。
这种类别间的相似性结构,被称为"暗知识(Dark Knowledge)"。它揭示了数据本身的内在结构,对学习很有价值。
训练方式
学生的损失函数通常包含两部分:
- 与真实标签的交叉熵:保证基本正确性;
- 与教师输出的软标签的交叉熵(通常用带温度参数的 softmax 让分布更平滑):学习教师的"思考方式"。
为什么有效
直接训练小模型,它要从零学习"什么是对的"。而蒸馏让它学习"老师是怎么想的"——这是一个信息量丰富得多的监督信号。
打个比方:硬标签告诉你"答案是 A";软标签告诉你"答案很可能是 A,但 B 也有一点道理,C 完全不对"。后者提供的学习信号更细腻。
几种变体
离线蒸馏:先训练好教师,再蒸馏。最常见。
在线蒸馏:师生同时训练,互相学习。
自蒸馏:同一个模型,深层监督浅层,或者用自己过去的版本监督当前版本。
特征蒸馏:不只是模仿最终输出,还模仿中间层的特征表示——通常效果更好,因为中间层包含更丰富的信息。
与量化的区别
这是两种常被混淆的压缩手段:
- 量化:降低数值精度(FP16→INT8→INT4),模型结构不变,主要减少存储和计算量;
- 蒸馏:训练一个更小的模型(层数更少、维度更低),改变模型结构本身。
两者可以叠加使用:先蒸馏出一个小模型,再对它做量化。
现实约束
蒸馏需要访问教师模型的输出。对于闭源模型,通常只能通过 API 获取,这限制了能蒸馏的信息量——只能拿到最终输出,拿不到中间特征。
这也是开放权重模型的一个优势:可以对模型做更深入的压缩和改造。
说明:本文为模型压缩技术的公开知识整理。