知识蒸馏:你需要知道的一切
🔳 感谢 DeepSeek,这是最热门的话题之一。与我们一起学习:核心思想、类型、缩放定律、实际应用案例以及深入学习的有用资源
在上一期中,我们讨论了 Hugging Face 的“Smol”模型系列及其通过高质量数据集混合训练小型语言模型的有效策略。今天,我们希望进一步探索小型模型的训练技术,这使得讨论知识蒸馏(KD)成为绝佳时机。这项方法在十年前被提出,并持续发展。例如,DeepSeek 的进步,尤其是 DeepSeek-R1 的有效蒸馏,最近引起了人们对这种方法的一波关注。
那么,知识蒸馏的核心思想是什么?它能够将知识从较大的模型(称为教师模型)转移到较小的模型(称为学生模型)。这个过程使小型模型能够继承大型模型的强大能力,避免从头开始训练,并使强大的模型更易于访问。让我们探讨知识蒸馏是如何随着时间演变的,当今存在的不同蒸馏类型,有效模型蒸馏需要考虑的关键因素,以及掌握它的有用资源。
📨 点击关注!如果你想直接在收件箱中接收我们的文章,请在此订阅
在本期节目中,我们将讨论
- 知识蒸馏作为一种技术何时出现?
- 知识蒸馏的详细解释
- 知识蒸馏的类型
- 改进的算法
- 蒸馏缩放定律
- 优点
- 并非没有局限性
- 实际有效用例(为什么 OpenAI 对 DeepSeek 感到不满)
- 结论
- 来源和进一步阅读
知识蒸馏作为一种技术何时出现?
知识蒸馏(KD)的思想可以追溯到 2006 年,当时 Bucilă、Caruana 和 Niculescu-Mizil 在他们的著作 “Model Compression” 中展示了模型集合可以压缩成单个较小模型,而不会损失太多准确性。他们证明,一个笨重的模型(如集合模型)可以被一个更容易部署的精简模型有效替代。
后来在 2015 年,Geoffrey Hinton、Oriol Vinyals 和 Jeff Dean 在他们的 “Distilling the Knowledge in a Neural Network” 论文中创造了“蒸馏”一词。这个术语指的是将知识从大型复杂 AI 模型或集合转移到较小、更快的 AI 模型(称为蒸馏模型)的过程。研究人员建议,除了让小型模型学习正确答案外,还可以让它学习大型模型提供的概率分布。这有助于小型模型不仅学习正确答案是什么,还学习大型模型对每个选项的置信度。这种训练概念与 softmax 函数密切相关,所以让我们更精确地探讨这一切的核心工作原理。
知识蒸馏的详细解释
首先,我们需要弄清楚softmax是什么。
它是一种用于机器学习,尤其是在神经网络中,将原始分数(称为logits)转换为概率的数学函数。它通过确保输出值总和为 1,使其可解释为概率,从而帮助模型决定输入属于哪个类别或类。
Softmax 中的重要参数是温度(T)——它是一种控制模型预测置信度或不确定性的方法。它调整概率分布的锐度——使其更自信(尖锐)或更不确定(柔和)。如果 T = 1,则它是默认设置,指正常 softmax 行为,其中只有正确答案获得 100% 概率。在这种情况下,softmax 创建硬目标。当温度增加(T > 1)时,softmax 创建软目标,这意味着概率分布更分散或更柔和。
软目标对于蒸馏和训练很有用,下面的知识蒸馏过程解释了原因。它通常涉及几个步骤
- 首先,在原始任务和数据集上训练教师模型。
- 接下来,教师模型生成 logits。这些 logits 使用具有较高温度的 softmax 函数转换为软目标,以使概率分布更柔和。
- 然后,学生模型在这些软目标(通常与硬目标(真实标签)一起)上进行训练,通过最小化学生输出分布与教师输出分布之间的差异。
在此过程中,学生不仅学会了重现正确答案,还学会了教师对这些答案的相对置信度及其错误。教师如何在不正确类别之间分配概率质量的这些知识提供了丰富的信息,有助于学生更好地泛化。通过将真实标签上的标准训练损失与教师软标签上的蒸馏损失相结合,学生可以在参数少得多的情况下,达到接近教师模型准确性的准确度。
如果用一句话总结其核心思想,那就是:学生被优化为模仿教师的行为,而不仅仅是输出。
在《蒸馏神经网络中的知识》论文中提出了另一种蒸馏方法,即匹配 logits。这种方法不是简单地复制概率,而是直接使小型模型的 logits 与大型模型的 logits 相似。在高温设置下,这种方法在数学上等同于标准蒸馏,并且两种方法都带来相似的好处。
知识蒸馏的类型
我们所探讨的只是知识蒸馏的两种选择,但知识蒸馏可以根据教师模型向学生模型传递何种知识以各种方式应用。悉尼大学和伦敦大学的研究人员在《知识蒸馏:一项调查》一文中完美地阐述了这些蒸馏类型。因此,常见技术包括
- 基于响应的蒸馏(以输出作为知识): 这正是我们上面讨论的内容。这种经典方法使用教师模型的最终输出概率作为训练学生的靶标。它在不同的 AI 任务中表现良好,例如图像分类、对象检测和姿态估计。
- 基于特征的蒸馏(以中间层作为知识): 学生除了复制最终预测外,还从教师的中间层或特征图学习。这一思想是在《FitNets:薄型深层网络的提示》论文中提出的。将这种技术想象成学生从教师的逐步问题解决过程中学习。学生将其中间表示与教师的中间表示匹配,学习正确的答案和其背后的推理。不同的方法,例如注意力图、概率分布和层连接,有助于匹配教师和学生的特征。它尤其能提高图像识别和对象检测等任务的性能。
- 基于关系的蒸馏(以关系作为知识): 学生模型学习模仿教师模型不同部分之间的关系——无论是层之间还是不同数据样本之间。例如,学生比较多个样本并学习它们的相似性。这种方法更复杂,但可以与多个教师模型协同工作,融合它们的知识。
这是基于要蒸馏什么知识对知识蒸馏所用的三种概念进行分类。但是,在训练过程中我们究竟如何转移知识呢?主要有三种方法
- 离线蒸馏 – 教师先训练,然后教学生。
- 在线蒸馏 – 教师和学生一起学习。
- 自蒸馏 – 学生向自己学习。
以下是您需要了解的有关这些训练方案的信息
但这并非全部。自知识蒸馏概念出现以来,许多不同的方法被开发出来以提高知识转移效率,有时甚至应用了其他技术。
改进的算法
不同的研究提出了知识蒸馏算法,使其更有效,有时甚至应用了其他技术。以下是一些:
- 多教师蒸馏:结合多个教师的知识,培养更全面的学生。这种方法可以为不同的特征使用不同的教师,平均所有教师的预测,或者在每个训练步骤中随机选择一个教师。它结合了各种模型的优点,并提高了知识的多样性。
- 跨模态蒸馏:在不同类型的数据之间转移知识,例如从图像到文本或从音频到视频。
- 基于图的蒸馏:侧重于不同数据点之间的关系,以捕捉隐藏的关系并更好地理解数据结构。
- 基于注意力的蒸馏:教师模型生成注意力图以突出数据中的重要区域,学生复制这些注意力图,学习关注点。
- 非目标类别增强知识蒸馏(NTCE-KD):侧重于教师输出中经常被忽略的非目标类别的概率,因此学生模型也学习不正确的标签。
- 对抗性蒸馏:使用生成对抗网络(GAN)通过模仿教师来帮助学生提高。GAN 可以生成额外的合成数据来改进学生训练,或者使用它们的判别器(检查数据是真实还是虚假)来比较教师和学生的输出。
- 无数据蒸馏:无需原始数据集即可工作。这里也使用 GAN 根据教师模型生成合成训练数据。
- 量化蒸馏:将大型模型中用于计算的高精度数字(如 32 位)减少到较小、低精度的值(8 位或 2 位),使 AI 模型更轻、更快。
- 推测性知识蒸馏(SKD):在文本生成训练期间,学生和教师协作。学生生成草稿标记,教师选择性地替换低质量标记,从而生成与学生自身分布对齐的实时高质量训练数据。
- 终身蒸馏:模型随着时间的推移不断学习,在学习新技能的同时记住旧技能。这种方法有一些变体:1)模型学习如何学习,因此可以快速适应新任务(元学习);2)它通过利用过去任务的知识从极少量示例中学习(少样本学习),或者 3)它在训练新任务时保留其知识的压缩版本(全局蒸馏)。
- 生成模型中的蒸馏:指将复杂的生成过程蒸馏为更简单的过程。例如,您可以将多步扩散模型蒸馏为单步生成模型(通常是 GAN),以大幅加速推理。此外,在文本到语音模型中,蒸馏可用于将自回归模型压缩为非自回归模型,从而加快语音生成速度。
- 神经架构搜索(NAS):帮助自动找到最佳学生模型以匹配教师模型。
这些多种方法表明,蒸馏是一种重要的训练概念,它持续发展,并且仍然是小型模型训练的重要组成部分。
蒸馏缩放定律
我们已经探讨了将知识从大型模型转移到小型模型的不同方法。但是,我们能预测这种知识蒸馏的有效性吗?蒸馏模型的性能如何,它将取决于哪些因素?
这正是 Apple 和牛津大学对这一广泛主题做出了重大贡献的地方。他们开发了蒸馏缩放定律,并确定了模型在蒸馏后的关键行为趋势。
以下是他们主要发现,您应该考虑这些发现以实现更有效的蒸馏:
- 蒸馏缩放定律预测学生模型的性能,基于三个关键因素:
- 学生模型的规模
- 训练 token 的数量
- 教师模型的规模和质量
该定律遵循“幂律”关系——性能以可预测的方式提高,但仅限于一定程度。在此之后,增加更多资源不会改善模型。
这可以归结为以下思想:如果学生模型较小,可以使用较小的教师模型来节省计算。如果学生模型较大,则需要更好、更大的教师模型才能获得最佳性能。随着计算量的增加,最佳教师模型规模最初会增长,但随后会趋于平稳,因为使用非常大的教师模型会变得过于昂贵。
- 然而,一个好的老师并不总是意味着一个更好的学生。如果老师太强,学生可能难以向其学习,导致性能下降。这被称为能力差距——当学生能力不足以正确模仿老师时,就会出现这种情况。
- 蒸馏在以下情况下最有效:
- 学生模型足够小,以至于监督训练成本过高。
- 教师模型已经存在,因此无需训练教师模型的成本,或者它可以用于训练多个学生模型。研究人员建议使用监督学习而非蒸馏:
- 如果教师和学生模型都需要训练,因为教师模型训练成本超过了蒸馏的收益。
- 如果计算和数据充足,因为在计算或数据预算高的情况下,监督学习总是优于蒸馏。
- 有时学生模型甚至可以超越其教师模型。这种现象被称为从弱到强的泛化。
了解 KD 中的这些趋势有助于避免在将此技术应用于小型模型训练时出现代价高昂的错误。总的来说,使用知识蒸馏有哪些优势?
知识蒸馏的优点
在此,我们总结了所有使 KD 成为训练小型模型的绝佳选择的因素。
- 更低的内存和计算要求:知识蒸馏有助于在显著降低计算要求的同时,保留大部分性能。小型模型消耗更少的内存和处理能力,使其适用于边缘设备、移动应用和嵌入式系统上的部署。
- 更快的推理:蒸馏后的学生模型通常更小,需要更少的计算,从而降低延迟并加快预测速度,这对于实时应用至关重要。
- 改进的泛化能力:学生模型通常学习到知识的更泛化和蒸馏版本,可能减少过拟合并提高在未见数据上的性能。
- 训练稳定性:学生模型受益于教师模型的结构化知识,从而实现更平稳和更稳定的训练,尤其是在数据有限或嘈杂的情况下。
- 专业化、多样化和多任务知识的转移:学生模型可以通过多个教师模型的见解进行训练,使其能够继承来自不同架构或领域的知识,并在不同任务中表现良好。
- 隐私保护型人工智能:知识蒸馏使得模型能够在不暴露原始数据的情况下进行训练,这在适用数据隐私法规的场景中是有益的。
- 能源效率:由于计算量减少,知识蒸馏模型消耗更少的能源,使其在大型人工智能部署中具有环境和经济可行性。
知识蒸馏提供了一种强大的方式,可以在实际应用中利用最先进模型的强大功能,使用更紧凑、更高效的模型。然而,仍存在一些问题。
并非没有限制
像任何技术一样,尽管知识蒸馏提供了许多优点,但它也有一些限制和挑战:
- 训练复杂性增加:蒸馏需要训练两个模型,即教师模型和学生模型。与直接从头开始训练小型模型相比,这增加了一个额外步骤。
- 信息丢失:学生模型可能无法捕捉到大型教师模型的所有细微差别、细粒度知识或复杂推理能力。
- 性能权衡:尽管学生模型旨在保留教师模型的大部分性能,但通常在模型大小和准确性之间存在权衡。
- 如果学生模型太小,它可能没有足够的能力有效地向教师模型学习。这尤其发生在教师模型对学生模型来说过于强大的情况。
- 对教师模型质量的依赖:如果教师模型存在偏差或包含错误,这些问题很可能会转移到学生模型。
- 对温度和超参数的敏感性:知识蒸馏的有效性严重依赖于温度参数和损失函数的选择。不恰当的调整可能导致知识转移效果不佳或学生模型性能下降。
- 能源和计算成本:虽然学生模型效率很高,但蒸馏过程本身可能计算成本高昂,特别是对于大型模型。
尽管存在这些限制,知识蒸馏仍是一种广泛使用的技术,在许多情况下持续被应用,甚至包括顶级模型。
知识蒸馏的实现:实际有效用例
DeepSeek 案例是有效 KD 的最新例子之一,其中 DeepSeek 将 DeepSeek-R1 的推理能力转移到较小的模型中,以使强大的推理模型更易于访问。
他们使用 DeepSeek-R1 的 80 万高质量训练示例微调了 Qwen 和 Llama 等开源模型。令人惊讶的是,这些蒸馏模型甚至比直接将强化学习应用于小型模型表现得更好。
然而,这个案例也引发了争议,OpenAI 对蒸馏过程中使用的方法表示担忧。OpenAI 指控 DeepSeek 可能利用了 ChatGPT 等专有模型的输出来增强其训练数据。报告表明,DeepSeek 模型的某些响应与 OpenAI 系统的响应高度相似,导致人们怀疑存在未经授权的知识提取。
此外,DeepSeek 的 AI 模型偶尔将自己识别为 ChatGPT,这暗示了潜在的训练重叠,进一步加剧了这些说法。此外,据报道,OpenAI 和微软检测到与 DeepSeek 关联的个人进行数据提取工作的异常活动。这些发现引发了对知识蒸馏的道德界限和专有 AI 技术保护的更广泛讨论。
尽管存在争议,DeepSeek 知识蒸馏的结果是显著的。
- 蒸馏后的 DeepSeek-R1-Distill-Qwen-7B 模型在推理基准测试中优于更大的模型,如 QwQ-32B。
- 蒸馏后的 32B 和 70B 版本创下了开源人工智能推理任务的新纪录,证明了蒸馏技术在提高模型效率和可访问性方面的有效性。
这个案例突出了知识蒸馏在人工智能发展中的潜力和挑战。
另一个经典示例来自自然语言处理(NLP)领域——Hugging Face 的 DistilBERT。它是 BERT 模型的蒸馏版本,保留了 BERT 约 97% 的语言理解能力,但运行时长仅为 60%,模型大小减少了 40%。
2024 年 10 月,微软研究人员将 4050 亿参数的 Llama 3.1 模型蒸馏为 70B 和 8B 变体,并使用了高质量的合成数据。蒸馏后的模型保留了与 405B 教师模型相当的准确性,甚至在某些基准测试中匹配或超越了教师模型的零样本性能。
对于视觉领域,这里以 Meta AI 的 Segment Anything Model (SAM) 为例。它是一个功能强大但资源消耗大的分割模型,最近研究人员提出了 KD-SAM,它是 SAM 的一个蒸馏版本,专为医学图像分割量身定制。他们结合使用特征图损失,将 SAM 巨大视觉转换器的结构和语义知识转移到一个小得多的模型中。结果,KD-SAM 实现了与原始 SAM 相当甚至更优的分割准确性。
亚马逊 Alexa 是语音识别领域的一个典型例子。研究人员使用了一种知识蒸馏方法,结合了大量的未标记语音数据:教师模型处理了超过 100 万小时的语音数据以生成软目标,然后这些软目标用于训练一个较小的学生声学模型。蒸馏后的学生模型可以在 Alexa 的消费设备上高效运行,并且在严格的内存和 CPU 限制下提供准确的语音识别。
此外,知识蒸馏有助于将人工智能引入微控制器、传感器和分布式设备等边缘设备,这些设备依靠电池供电或低能耗运行。
结论
今天,我们深入探讨了知识蒸馏训练技术。这种方法已被证明是利用强大大型模型的能力和知识来训练小型模型的有效方法。
小型模型关乎人工智能的可访问性,而知识蒸馏则关乎让小型模型获取知识。令人欣喜的是,知识蒸馏技术正在持续发展,这从我们今天拥有的各种蒸馏方法中可见一斑。我们希望知识蒸馏未来的发展将有助于克服当前的局限性,从而实现更有效的训练。
要进一步探索知识蒸馏,我们邀请您查阅我们推文总结的实践教程,以及下面列出的研究。
作者:Alyona Vert 编辑:Ksenia Se
奖励:深入学习资源
- 《蒸馏神经网络中的知识》作者:Geoffrey Hinton, Oriol Vinyals, Jeff Dean
- 知识蒸馏:一项调查
- 《蒸馏缩放定律》作者:Dan Busbridge, Amitis Shidani 等
- FitNets:瘦深层网络的提示
- 理解和改进知识蒸馏
- 《通过剪枝和知识蒸馏构建紧凑语言模型》作者:Saurav Muralidharan, Sharath Turuvekere Sreenivas, Pavlo Molchanov 等
- 《大型语言模型知识蒸馏综述:方法、评估与应用》作者:王一东 等
- 《大型语言模型知识蒸馏综述》作者:周天一
- 将扩散模型蒸馏成条件 GAN
- 通过量化知识解释知识蒸馏
- 释放数据生成,实现高效且有效的数据自由知识蒸馏
- 从语言模型到声学模型的知识蒸馏:一种分层多任务学习方法
- 《推测性知识蒸馏:通过交错采样弥合师生差距》作者:王子峰, Rishabh Agarwal, Chen-Yu Lee 等。
- 《DeepSeek-R1:通过强化学习激励大型语言模型的推理能力》作者:朱启豪 等。
- DistilBERT,BERT 的蒸馏版本:更小、更快、更便宜、更轻量作者:Victor Sanh, Lysandre Debut, Julien Chaumond, https://huggingface.co/thomwolf
- 使用前沿开源大型语言模型进行知识蒸馏:通用性与合成数据的作用
- 用于医学图像分割的 SAM 高效知识蒸馏
- MonoTAKD:用于单目 3D 物体检测的助教知识蒸馏
📨 如果您想直接在收件箱中收到我们的文章,请在此订阅