知识蒸馏解决的是一个看似矛盾的问题:小模型容量有限,直接从标注数据训练往往学不到大模型的泛化能力,但部署端又只负担得起小模型。蒸馏的思路是更换学习目标——不让学生模型直接学"标准答案",而是学教师模型的行为。教师对一条样本输出的完整概率分布里,藏着比硬标签丰富得多的信息:例如猫和狗容易混淆、猫和汽车几乎不可能混淆,这种类别间的相对关系就是所谓"暗知识"。学生通过拟合这个软分布,相当于继承了教师对任务空间的整体理解,而不是从零摸索决策边界。
机制上,蒸馏通常引入温度系数来软化教师的输出分布,再用 KL 散度等度量让学生的输出向教师靠拢;软目标与真实标签构成的硬损失按权重叠加,兼顾"像老师"和"答得对"。除了最终输出层,进阶做法还会对齐中间层的特征表示或注意力分布,让学生逐层模仿教师的推理路径。另一条常见路线是让教师直接生成或改写训练数据,相当于把能力"翻译"成学生消化得了的语料。
蒸馏有效的本质在于监督信号的信息密度。硬标签只告诉学生正确答案是什么,软标签同时告诉它错误答案之间有多大差别,这提供了更强的正则化和更平滑的优化地形,使小容量模型也能学到可用的表示。但蒸馏不是无损压缩。师生容量差距过大时,学生可能根本拟合不了教师的复杂分布,实践中常用中等规模的"助教"模型做接力,或分阶段压缩。学生还会继承教师的偏见与系统性错误——教师没见过的领域,学生同样靠不住,因此把通用模型蒸馏到垂直场景时,补充领域数据往往比调整蒸馏超参数更关键。
在工程组合上,蒸馏通常与剪枝、量化配合:蒸馏负责把能力搬进去,量化负责把体积压下来。合理的流程是先蒸馏到目标尺寸,用验证集确认关键能力没有坍塌,再做低位量化,并对冷启动和罕见输入单独测试。蒸馏的价值不在于让小模型变小,而在于让它在有限参数里装下本不属于这个规模的能力。
参与讨论
暂无评论,快来发表你的观点吧!