是什么
知识蒸馏(knowledge distillation)是把一个大模型、或者一组模型构成的集成(ensemble)所掌握的能力,迁移到一个小模型上的做法,目标是在更低的算力和部署成本下保留大部分预测性能[1]。常见的方向是从大到小;反过来由小模型教大模型,叫反向知识蒸馏(reverse knowledge distillation),比较少见[1]。
怎么工作
先让训练好的教师模型(teacher)在一批输入上跑一遍,对每个输入给出的是各个类别上的概率分布,而不只是一个标签。学生模型(student)的任务就是把这个分布学出来。为了让分布携带更多信息,会对 softmax 施加一个温度(temperature)参数,使输出分布变得更平缓、熵更高[1]。这样的软目标(soft target)记录了类别之间的相互关系,比硬标签信息量大,同时能降低梯度方差,因此可以用更高的学习率[1]。损失函数取教师输出与学生输出之间的交叉熵(cross-entropy);如果同时使用真实标签,还要按温度的平方加权[1]。
举个直观的例子:一张标为某个犬种的图片,硬标签只说「这是甲犬种」;软分布则会说「很可能是甲犬种,有点像乙犬种,几乎不可能是汽车」。学生从后一种信息里学到的,正是类别之间的远近关系,而这部分信息在硬标签里被丢掉了。
从哪来
Bucilua、Caruana 和 Niculescu-Mizil 在 2006 年提出了模型压缩:用集成标注出的伪数据(pseudo-data)训练一个小模型,并让它去拟合集成的 logits[1]。Hinton、Vinyals 和 Dean 在 2015 年把这一思路正式定名为知识蒸馏,论文编号 arXiv:1503.02531[1]。这篇论文于 2015 年 3 月首次提交,出发点是一个观察:把多个模型的预测平均起来能提升效果,但部署整个集成既笨重又昂贵[2]。论文建立在 Caruana 等人的工作之上——他们已表明集成中的知识可以被压缩进单个模型——并换用另一种压缩技术推进这一方法[2]。作者还提出了一种新的集成形式:由一个或几个完整模型,加上许多专家模型(specialist model),后者专门学习区分完整模型容易混淆的细粒度类别[2]。
今天用在哪里
这套方法后来被用到了图像分类之外。变体包括蒸馏图神经网络(graph neural network),以及蒸馏大语言模型(large language model):斯坦福的 Alpaca 于 2023 年从 LLaMA 微调而来;2025 年 1 月,DeepSeek 基于 Qwen 和 Llama 从 R1 蒸馏出六个小模型[1]。
局限
蒸馏并不保证学生能以可靠的形式学到教师所知道的东西。蒸馏出来的模仿者可能学到的是风格而不是事实性,泛化能力也较差,这是 Gudibande 和 Wallace 在 2023 年提出的批评[1]。此外还有合同与利益层面的问题:大型开发者的服务条款禁止用它们模型的输出去训练竞争对手,由此产生了围绕所谓「蒸馏攻击」(distillation attack)的争议[1]。
注释与来源
- Knowledge distillationhttps://en.wikipedia.org/wiki/Knowledge_distillation
- Distilling the Knowledge in a Neural Networkhttps://arxiv.org/abs/1503.02531
引用本页: 知识蒸馏. TellWorld, https://www.tellworld.net/zh/learn/knowledge-distillation. 更新于 2026-11-07