@pallavishekhar_: 知识蒸馏是如何工作的?在此阅读:https://outcomeschool.com/blog/how-does-knowledge-distillation-work…
摘要
一篇教育性的博客文章,解释了知识蒸馏的工作原理,涵盖教师-学生框架、软标签、温度和蒸馏损失,并附有实际示例。
查看缓存全文
缓存时间: 2026/07/31 16:59
知识蒸馏是如何工作的?
来源:https://outcomeschool.com/blog/how-does-knowledge-distillation-work
知识蒸馏是如何工作的?
在这篇博客中,我们将学习知识蒸馏是如何工作的。我们还将了解为什么需要它、小模型如何向大模型学习,以及这如何让我们在手机上、边缘设备上以低成本运行强大的AI。
我们将涵盖以下内容:
- 什么是知识蒸馏?
- 为什么需要知识蒸馏
- 硬标签 vs 软标签
- 暗知识
- softmax 中的温度
- 蒸馏损失
- 逐步训练演示
- 知识蒸馏的类型
- 知识蒸馏的真实案例
- 知识蒸馏总结
我是Amit Shekhar,Outcome School(https://outcomeschool.com/)创始人,我教导和指导过许多开发者,他们的努力让他们获得了高薪技术工作,帮助许多科技公司解决了他们独特的问题,并创建了许多被顶级公司使用的开源库。我热衷于通过开源、博客和视频分享知识。
我在Outcome School教授AI和机器学习(https://outcomeschool.com/program/ai-and-machine-learning)。
让我们开始吧。
什么是知识蒸馏?
知识蒸馏是一种训练小模型来模仿大模型行为的技术。
简单来说,我们拿一个又大又聪明的模型,教一个小模型像它一样思考。
大模型被称为教师。小模型被称为学生。教师已经知道很多。学生是新的、小的。我们的目标是将教师的知识传递给学生。
假设学校里有一位经验非常丰富的资深教师。这位教师读了数千本书,拥有多年的经验。但这位教师既昂贵又慢,而且只有一位。现在,我们想要许多份“足够好“的教师副本,能够快速且廉价地工作。于是,资深教师训练一位年轻学生,直到学生能回答得几乎一样好。学生没有资深教师那么深入,但学生速度快、成本低,足以胜任日常工作。
这正是知识蒸馏所做的,只不过对象是AI模型。
在深入之前,让我们理解一个基本概念。AI模型的核心是一大堆在训练过程中被调整过的数字,使得模型能够做出良好的预测。大模型有大量这样的数字,所以它强大但笨重。小模型的数字较少,所以它轻量,但仅靠自身则不那么聪明。
知识蒸馏就是桥梁。我们用笨重而聪明的模型让轻量模型变得比它独自能达到的更聪明。
我们可以如下描述:
+------------------------------+ | 教师(大、聪明、慢) | +------------------------------+ | | 传递其知识 v +------------------------------+ | 学生(小、快、廉价) | +------------------------------+
这里我们可以看到,大的教师模型将其知识传递给小的学生模型。教师保持大、聪明、慢。学生最终变得小、快、廉价,但它学会了表现得几乎像教师一样。
这是基本思想。现在,让我们理解为什么我们需要它。
为什么需要知识蒸馏
大模型非常准确。但大模型也又慢又贵。
大模型需要大量内存。它需要强大且昂贵的硬件(https://outcomeschool.com/blog/how-does-a-google-tpu-work)。它需要更多时间来给出答案。从提问到获得答案之间的延迟被称为延迟。高延迟意味着用户等待更久。
现在,想想我们想在哪里使用AI。
我们希望AI出现在手机上。我们希望AI出现在智能手表、摄像头或汽车等小型设备上。这些小型设备被称为边缘设备,因为它们位于“边缘“,靠近用户,远离大型数据中心。边缘设备内存小、电池小。巨大的模型根本无法装进去。
我们还希望AI能即时响应。一个需要十秒才回复的聊天体验就像坏掉了一样。我们想要低延迟。
而且,我们希望AI运行成本低。为百万用户运行一个巨型模型要花很多钱。
所以,情况是这样的:
- 大模型准确但慢且昂贵。
- 小模型快且便宜,但仅靠自身不够准确。
我们想要两全其美。我们想要一个小、快、便宜的模型,同时保留大模型的大部分准确性。
所以,知识蒸馏来救场了。它让我们把大脑缩小到更小的身体里,同时保留大部分智能。
要深入了解模型压缩、量化和优化,以及云端vs设备端部署,请查看我们在Outcome School的AI和机器学习课程(https://outcomeschool.com/program/ai-and-machine-learning)。
现在,要理解教师如何传递知识,我们必须先理解硬标签和软标签之间的区别。
硬标签 vs 软标签
让我们举一个简单的例子。假设我们正在构建一个模型,它查看一张照片并判断里面是什么。可能的答案是猫、狗、汽车和马。每个可能的答案被称为一个类别。
现在,假设我们给模型看一张猫的照片。
硬标签是唯一的正确答案,仅此而已。对于这张照片,硬标签说:这是一只猫。我们可以这样写:
猫 = 1 狗 = 0 汽车 = 0 马 = 0
这里我们可以看到,硬标签给猫满分,给其他所有类别零分。它只是朴素的真相,没有任何额外信息。
现在,让我们看看教师模型实际产生什么。当教师看到猫的照片时,它不只输出一个词。它为每个类别输出一个概率。概率是0到1之间的数字,告诉我们模型的置信度。所有概率加起来等于1。
这整套概率被称为软标签或概率分布。它看起来像这样:
猫 = 0.90 狗 = 0.08 汽车 = 0.01 马 = 0.01
这里我们可以看到,教师90%确定这是猫。但它也给了狗8%的小概率,而汽车和马几乎没有。
所以,区别很简单。
- 硬标签只说“这是一只猫“。
- 软标签说“这主要是猫,有点像狗,完全不像汽车“。
这微小的额外信息被证明非常强大。让我们理解为什么。
暗知识
软标签携带了硬标签丢弃的隐藏信息。这种隐藏信息被称为暗知识。
简单来说,暗知识是教师所知道的关于类别之间如何相互关联的知识。
让我们回到猫的照片。教师给了狗8%的概率,给了汽车几乎0%。想想这在告诉我们什么。教师在说:猫有点像是狗,但猫完全不像汽车。
这是关于世界的真实知识。猫和狗都是毛茸茸的四足动物,所以它们可能被混淆。猫和汽车没有共同点,所以它们永远不会被混淆。
硬标签永远无法教会这一点。硬标签只说“猫“,并把“狗“和“汽车“视为同样错误的。但它们并不是同样错误的。有点像是“狗“是一个合理的错误。是“汽车“则是一个愚蠢的错误。
所以,当学生从软标签学习时,它学会了这些关系。它学会了猫和狗是接近的。它学会了猫和汽车是相距很远的。这比仅仅记住唯一正确答案要丰富得多。
这是知识蒸馏的核心。教师的软标签教会学生的远远超过一个普通硬标签所能教的。
让我们通过一个对比来具体说明。
`` 硬标签 软标签(来自教师)
猫 = 1 猫 = 0.90 <- 答案 狗 = 0 狗 = 0.08 <- “有点像狗” 汽车 = 0 汽车 = 0.01 <- “完全不像汽车” 马 = 0 马 = 0.01 <- “完全不像马”
只告诉:答案 告诉:答案 + 类别之间的关系 ``
这里我们可以看到,右边的软标签在做左边的硬标签根本无法做到的额外教学。
现在,还有一个问题。有时教师过于自信。它可能说猫 = 0.99,而给其他类别几乎为零。当这种情况发生时,有用的暗知识变得非常微小且难以看到。我们需要一种方法来让这些小的数字显现出来。所以,温度登场了。
softmax 中的温度
在解释温度之前,我们必须理解模型内部发生的一个小步骤。
当模型做出预测时,它首先为每个类别产生原始分数。这些原始的、未处理的分数被称为logits。一个logit可以是任何数字,比如8.2或-1.4。这些原始分数很难直接阅读。
为了将这些原始分数转换为加起来为1的干净概率,模型使用一个名为softmax的函数。Softmax接收logits并将它们压缩成0到1之间的漂亮概率。
我们有一篇关于交叉熵损失的详细博客(https://outcomeschool.com/blog/math-behind-cross-entropy-loss),深入解释了logits和softmax。
现在到了巧妙的部分。Softmax有一个我们可以调节的旋钮,称为温度,通常写作T。
简单来说,温度控制输出的概率有多软或多尖锐。
- 低温(如
T = 1)产生尖锐的概率。一个类别获得非常高的值,其余类别获得微小的值。 - 高温(如
T = 4)产生更柔软、更分散的概率。较小的值变得更大,更容易看到。
让我们用猫的例子来看看。在正常温度下,教师非常自信。
T = 1(尖锐): 猫 = 0.95 狗 = 0.04 汽车 = 0.005 马 = 0.005
现在,如果我们提高温度,同样的预测会分散开来。
T = 4(柔软): 猫 = 0.70 狗 = 0.22 汽车 = 0.05 马 = 0.03
这里我们可以看到,在更高的温度下,狗的值从0.04跳到了0.22。暗知识,即猫和狗之间的关系,现在清晰而响亮。学生可以更容易地从中学习。
所以,在蒸馏过程中,我们提高温度,让教师的软标签揭示这些微妙的关系。学生获得更清晰、更丰富的课程。
**注意:**我们只在训练期间使用更高的温度。当完成训练的学生在实际世界中使用时,我们回到正常温度。
现在,我们有了软标签、暗知识和温度。下一个问题是:我们到底如何用这些来训练学生?答案是蒸馏损失。
给你一个快速提示
无论你在哪个技术领域工作,都要熟悉这些主题:
- LLM
- RAG
- MCP
- Agent
- 微调
- 量化
我们把它们全部整合到一个视频中:
AI工程详解:LLM、RAG、MCP、Agent、微调和量化(https://www.youtube.com/watch?v=lnfWvX66FUk)
不需要停止阅读——把它加入书签,有时间再看。未来的你会感谢你的。
现在,让我们回到主题。
蒸馏损失
要训练任何模型,我们需要一种衡量它错得有多离谱的方法。这种错误程度的度量被称为损失。训练意味着慢慢改变模型的数字,使损失尽可能小。更小的损失意味着模型做出更好的预测。
在知识蒸馏中,学生必须同时做两件事。
第一,它必须匹配教师的软标签。学生看一张照片,产生自己的软概率,我们将它们与教师的软概率进行比较。我们希望它们尽可能接近。衡量两个概率分布差异的度量被称为KL散度。我们不需要数学。我们只需要知道更小的KL散度意味着两个分布更相似。这部分被称为蒸馏损失。
第二,学生也必须得到正确的真实答案。我们将学生的预测与真实的硬标签、实际真相进行比较。这部分是正常损失,和我们从零训练任何模型时使用的损失相同。
那么,为什么我们保留两者?因为每个都有帮助。
- 蒸馏损失教来自教师的丰富暗知识。
- 正常损失让学生扎根于真实、正确的答案,这样它就不会盲目复制教师的错误。
所以,总损失是两者的混合。
`` 总损失 = 第1部分 + 第2部分
第1部分 = 权重 x 蒸馏损失 (学生 vs 教师软标签) 第2部分 = (1 - 权重)x 正常损失 (学生 vs 真实硬标签) ``
这里我们可以看到,总损失只是一个加权混合。权重是我们选择的一个数字,它决定学生在多大程度上必须听从教师而不是真实答案。例如,我们通常给教师的软标签更多权重,因为那是额外知识所在的地方。
流程如下所示:
+----------------+ +----------------+ 同一张照片 --> | 教师 | | 学生 | <--- 同一张照片 | (大模型) | | (小模型) | +----------------+ +----------------+ | | 教师 | | 学生 软标签 v v 软标签 +------------------------------------------+ | 蒸馏损失 (学生 vs 教师) | +------------------------------------------+ | v +--------------------+ | 总损失 | | (加权混合) | +--------------------+ ^ | +------------------------------------------+ | 正常损失 (学生 vs 真实标签) | +------------------------------------------+ ^ ^ | | 真实硬标签 学生预测
这里我们可以看到,同一张照片同时输入教师和学生。蒸馏损失衡量学生的软标签与教师的软标签有多远。正常损失衡量学生的预测与真实硬标签有多远。两个损失然后混合成一个总损失,这是我们在训练过程中要减小的唯一数字。
这个组合损失是知识蒸馏的引擎。通过使这个总损失变小,学生同时学习了正确的答案和教师的智慧。
现在,让我们把所有部分放在一个清晰的演示中。
逐步训练演示
让我们一步步走过从教师向学生蒸馏知识的确切过程。我们将使用我们的动物照片示例。
**第1步:**我们从训练好的教师模型开始。教师很大且已经准确。我们不会改变它。
相似文章
@TheTuringPost: https://x.com/TheTuringPost/status/2068474648925216861
一篇关于知识蒸馏的教育性概述,涵盖其历史、核心概念(如softmax和温度)、类型、缩放定律以及包括DeepSeek-R1在内的实际示例。
知识蒸馏中一致性信息丰富的软标签温度
提出CIST方法,在知识蒸馏中为教师和学生分配独立的样本自适应温度,生成一致性信息丰富的软标签,并放宽严格的logit尺度匹配。在视觉和语言任务上的实验表明,相比标准KD具有一致的改进。
通过自适应互惠知识蒸馏发现和保持类别相关知识
本文提出自适应互惠知识蒸馏(AR-KD),这是一种新方法,通过关系对齐简化教师模型的输出分布,从而改善从教师到学生的知识传递,在CIFAR-100和ImageNet-1k数据集上实现了高达7.13%的准确率提升。
让我们一起学习知识蒸馏!
文章认为,批评知识蒸馏的前沿模型提供商是虚伪的,因为他们在版权诉讼中的法律辩护依赖于同样的原则,即不直接存储或接触数据。
同策略蒸馏(5分钟阅读)
本文引入同策略蒸馏,通过在教师提供的token级KL正则化下,在学生自身轨迹上训练学生模型,解决训练-推理分布不匹配问题,统一了前向KL、反向KL和JSD损失,其中反向KL更适用于较小的学生模型。