大模型时代的知识蒸馏
在人工智能(AI)和机器学习的领域,知识蒸馏(Knowledge Distillation)作为一种重要的模型压缩技术,在现在大模型时代正在受到越来越多的关注。
简单来讲,它通过将一个复杂的“教师”模型中的知识传递给一个更小、更轻量的“学生”模型,从而提升后者的性能和效率,这样可以解决解决在资源受限的现实环境中部署复杂模型时面临的挑战,让小模型能够在较差的设备上运行,同时保持了与原本参数更高的模型差不多的性能。下面来简单讲讲知识蒸馏的基本原理:
一、知识蒸馏的基本原理
首先要明确一点,在现在大模型时代,如果我们拿一个70B甚至更高参数的模型去蒸馏一个8B、10B这样的小模型,是完全可以给小模型带来明显的性能提升的(OCR方面似乎就没法达到这个效果)。
知识蒸馏的核心理念是知识的转移。教师模型经过大量的数据训练,能够捕捉复杂的数据模式和特征,而这些知识对于学生模型的学习至关重要。
![一文了解知识蒸馏(Knowledge Distillation):让“小模型”拥有“大智慧”](https://www.aifun.cc/wp-content/uploads/2025/01/1738296056-fa62f2e116438d9be881aa033d88d523.jpeg)
了解大模型的蒸馏技术之前,先了解一些模型蒸馏基本的概念:
- 模型定义:
- 教师模型:通常是一个大型、复杂的深度学习模型,如深度卷积神经网络(CNN)或变换器(Transformer),经过充分训练,具有较高的准确率和鲁棒性。
- 学生模型:相对较小、结构更简单的模型,旨在在保持较高性能的同时降低计算复杂性。
- 软目标与硬目标:
- 硬目标:传统的训练目标,如分类任务中的实际标签(0或1)。
- 软目标:教师模型输出的概率分布,包含了对各个类别的相对信心。相较于硬目标,软目标提供了更丰富的信息,尤其是各类别之间的相似性。
- 温度调节:
- 在生成软目标时,引入一个温度参数(T),通过调整输出的概率分布来控制其平滑度。较高的温度使得概率分布更为平坦,有助于学生模型学习更细腻的知识。
- 损失函数
- 在知识蒸馏中,损失函数通常由两个部分组成:
- 蒸馏损失:该部分衡量教师模型产生的软目标与学生模型预测之间的差异,通常通过 Kullback-Leibler 散度或交叉熵来计算。
- 学生损失:这是学生模型预测与真实标签之间的标准交叉熵损失。
- 前向 Kullback-Leibler 散度(Forward Kullback-Leibler Divergence,通常简称为 KL 散度)是一种衡量两个概率分布之间差异的指标。具体来说,它用来评估一个分布(通常是“真实”分布)与另一个分布(通常是“近似”分布)之间的相对信息损失。
- 在知识蒸馏中,损失函数通常由两个部分组成:
最终的总损失是这两个部分的加权和,其中的权重由超参数 α 进行平衡。通过调整 α,我们可以灵活地控制蒸馏损失和学生损失在总损失中的影响,从而优化模型性能。
二、知识蒸馏的实施步骤
![一文了解知识蒸馏(Knowledge Distillation):让“小模型”拥有“大智慧”](https://www.aifun.cc/wp-content/uploads/2025/01/1738296159-e1b22cc88986b55fd9aa78ba82835412.png)
经典的知识蒸馏的具体实施过程包括以下几个步骤:
- 教师模型的训练:
- 选择合适的深度学习架构和数据集,训练教师模型,以确保其在特定任务上具有较高的性能。训练完成后,评估其在验证集和测试集上的表现。
- 生成软目标:
- 使用训练好的教师模型对训练数据进行推理,生成对应的软目标。这些软目标将作为学生模型的学习参考。
- 学生模型的训练:
- 在训练学生模型时,同时使用生成的软目标和原始的硬目标。通过最小化学生模型的输出与教师模型软目标之间的差异(通常使用交叉熵损失函数),学生模型逐渐学习到教师模型中的知识。
- 模型评估与优化:
- 在训练完成后,对学生模型进行评估,检查其在测试集上的表现。根据需要进行超参数调优,确保其在推理速度和准确性之间达到平衡。
三、知识蒸馏的应用案例
知识蒸馏的应用广泛,以下是一些经典的案例:
- 移动设备和嵌入式系统:
- 在移动设备上,计算资源和电池寿命有限。通过知识蒸馏,可以将大型模型的知识传递给小型模型,使得小型模型能够在保持较高准确率的同时,快速推理和低功耗运行。
- 语音识别和自然语言处理:
- 在语音识别系统中,知识蒸馏可用于将复杂的语音识别模型简化,从而提高响应速度。在自然语言处理任务中,蒸馏技术可以将大型语言模型的知识传递给更轻量的模型,使其能够高效处理文本任务。
- 图像分类与目标检测:
- 在计算机视觉领域,知识蒸馏已被广泛应用于图像分类和目标检测任务。通过将教师模型的知识传递给更小的模型,研究人员能够在保持高精度的同时减少推理时间。
而在大模型领域也有一些比较经典的蒸馏技术,下面带大家简单了解一下:
MiniLLM: Knowledge Distillation of Large Language Models
白盒分类模型:白盒分类模型是一种容易理解和解释的模型。就像一个透明的盒子,里面的工作原理是可见的,用户可以清楚地知道模型是如何做出决策的。例如,开源的LLM能够让大家知道它里面的工作原理是什么,大家能够根据开源资料了解它的结构以及工作流程。
黑盒分类模型:黑盒分类模型则相反,它的内部结构和工作原理不易被理解。我们只能看到输入和输出,而无法知道模型是如何处理数据的。例如,ChatGPT系列就是典型的黑盒模型,因为我们无法了解到它内部是如何工作的,只能看到它的输入和输出(其实就是拿gpt生成的文本来训练模型)。
以往的知识蒸馏方法主要应用于白盒分类模型,或训练小型模型来模仿像ChatGPT这样的黑盒模型,这篇论文提出将标准知识蒸馏⽅法中的前向 Kullback-Leibler 散度(KLD)⽬标替换为反向 KLD,因为反向 KLD 更适合于⽣成式语⾔模型的知识蒸馏,以防⽌学⽣模型高估教师模型分布的低概率区域。
这两个 KL 散度的区别可以这样理解:
- 前向 KL 散度:首先,我们从语料中采样一个提示词,然后用教师模型根据这个提示词来生成一个回复文本。接着,学生模型的任务就是尽量逼近教师模型在这个生成的文本上的条件概率。
- 后向 KL 散度:相对而言,我们从学生模型中采样一个生成的回复文本,然后让教师模型根据自己的偏好,对这个回复文本进行指导。
![一文了解知识蒸馏(Knowledge Distillation):让“小模型”拥有“大智慧”](https://www.aifun.cc/wp-content/uploads/2025/01/1738296658-20250131120952.jpg)
并且他们推导出⼀种有效的优化⽅法来学习这个⽬标。作者做了三项改进:
- 单步分解:这一步是把每个生成步骤的质量单独提取出来,从损失的梯度中分开,这样可以减少训练时的波动,帮助模型更快收敛。
- 教师指导的采样:之前提到的反向 KL 散度是从学生模型中采样的。在这个改进中,作者在采样时混合了教师和学生模型的分布,使用了一个超参数,文章里设定为 0.2。同时,作者在计算损失函数时也做了调整,增加了一个重要性权重。
- 长度正则化:作者注意到当前的损失可能导致蒸馏后的模型生成的序列比较短,因此在损失函数中增加了一个正则化项来解决这个问题。
实验结果如下所示,实线代表着用文中提到的知识蒸馏方法训练出来的模型,从实验结果也可以看到,模型只需要不到一半的参数就能达到以往两三倍参数的性能:
![一文了解知识蒸馏(Knowledge Distillation):让“小模型”拥有“大智慧”](https://www.aifun.cc/wp-content/uploads/2025/01/1738296726-20250131121118.jpg)
Meta: Distilling System2 into System1
大模型有两种推理系统,系统1和系统2,系统1能够快速识别和迅速做出响应,也叫做快速思考,系统2被认为是处理复杂的、需要逻辑性问题,需要经过一段时间后才能做出响应,也叫做慢思考,例如CoT思维链,最典型的就是我们在提示词中加入step by step的提示,大模型在处理我们的问题时,会经过一步一步的思考推理,最后给出答案。
这篇论文探讨了如何将LLM中的“系统2”推理过程提炼出来,转化为“系统1”的输出。简单来说,就是把那些需要复杂思考和中间步骤的推理过程,变成模型可以直接生成的结果,从而提高效率并降低成本。
![一文了解知识蒸馏(Knowledge Distillation):让“小模型”拥有“大智慧”](https://www.aifun.cc/wp-content/uploads/2025/01/1738297036-20250131121234.jpg)
这篇论文做了哪些工作?
- 定义了系统2蒸馏的过程:
- 使用无监督的方法,通过大量未标记的数据来提炼出系统2的高质量输出。
- 这个过程不需要中间推理标记序列,直接将系统2的能力“编译”到系统1中。
- 实验验证:
- 在四种不同的系统2方法和五种任务上进行了实验。
- 结果显示,提炼后的系统1模型在很多情况下都能达到甚至超过原始系统2的效果,而且计算成本大大降低。
- 探讨了人类行为中的类似现象:
- 类比了人类从有意识的复杂推理到无意识的自动化过程。
- 指出这种自动化过程对于人工智能的发展同样重要。
论文用的系统2的方法:
- 重述与回应(RaR)方法:
- 让模型先改写输入的问题,让其提供更丰富的文本信息。
- 根据文本信息,让模型进行回答。
- 优点在于能充分利用大模型用自己的知识,最大限度上利用自己的知识体系来理解问题和回答问题。
- 在最后字母连接和硬币翻转推理任务上取得了显著提升。
- 例如,在硬币翻转任务中,提炼后的模型准确率达到了75.69%,而原始系统1模型只有56.1%。
- 系统2注意力(S2A)方法:
- 让大模型过滤掉不重要或无效信息,更关注待解决的问题,然后对问题进行改写,在此基础上进行输出回复。
- 在处理有偏见的输入时表现优异,能够减少偏见影响。
- 提炼后的模型在相关评估集上的准确率高达78.69%。
- 分支解决合并(BSM)方法:
- 将一个问题分解成多个小问题,对小问题进行推理回答,然后汇总所有小问题的答案得到最终输出。
- 在多个评估基准上都超越了原始系统2方法。
- 提高了人类一致性评价。
- 缺点是推理所需要的资源太高。
- 思维链(CoT)方法:
- 虽然在某些任务上表现不佳,但论文也指出了其局限性。
四、知识蒸馏的方式
在线蒸馏(Online Distillation)
在线蒸馏是一种训练方式,简单来说,就是教师模型和学生模型同时在“学习”。在每次训练中,学生模型会受到教师模型的影响,实时调整自己的参数。这种方法让学生模型能直接向教师模型学习,特别是当教师模型很复杂、能表达的东西很多时,这样的学习效果更好。
在这个过程中,教师模型和学生模型使用的是同一个训练数据集,学生模型能直接从教师模型那里学习。在线蒸馏的关键是,学生不仅学习训练数据的标签信息,还能从教师模型那里得到软预测(soft predictions),这就像是获取一些“建议”而不是硬性规定。
和传统的监督学习相比,传统模型的预测通常是硬预测(hard predictions),也就是给每个类别一个确定的标签,通常是概率最高的那个。而软预测则是模型输出一个概率分布,表示对每个可能类别的信心。使用 softmax 函数后,深度学习模型的输出层一般会生成这样的概率分布,每个类别的概率反映了模型认为输入数据属于这个类别的可能性。
离线蒸馏(Offline Distillation)
离线蒸馏是一种静态的学习方式,在这种模式下,学生模型用的是教师模型事先学到的知识来训练,而教师模型则保持不变。离线蒸馏的好处在于简单易操作。而且,教师模型事先已经训练好,学生模型可以从大量数据中获取知识,而不需要直接接触这些数据。
在这种情况下,教师模型首先在一个大型数据集上训练,直到达到最佳效果。一旦训练完成,教师模型的知识(通常是它的软预测)就用来指导学生模型的学习。学生模型无法直接接触原始数据,而是通过模仿教师模型的输出进行学习。
自我蒸馏(Self-Distillation)
自我蒸馏是一种方法,在训练的不同阶段,网络同时扮演教师和学生,通过自我学习来提升性能。这种方式的好处是无需额外的教师模型,节省了计算资源。此外,学生模型直接从自己的早期预测中学习,更好地捕捉到内部的知识。
在自我蒸馏中,教师模型和学生模型其实是同一个网络,只是在不同的训练阶段扮演不同的角色。网络在早期生成软预测,随后利用这些预测进一步训练自己,从而提高性能。
蒸馏模式之间的区别
在线蒸馏和离线蒸馏的主要区别在于教师模型在学生模型训练时的参与程度。在线蒸馏中,教师模型是动态的,而离线蒸馏中,教师模型则是静态的。自我蒸馏可以看作是一种特殊的在线蒸馏,教师和学生都是同一个模型在不同阶段的表现。
在线蒸馏通常需要更多计算资源,因为要同时训练两个模型,但它更灵活,能实时调整学生模型来应对数据变化。相比之下,离线蒸馏适合计算资源有限的情况,因为只需训练学生模型。
自我蒸馏提供了一种折中方案,不需要额外的教师模型,但仍能从教师模型中获益。这种方法特别适合那些想在同一个模型内进行知识传递的场景。
这三种知识蒸馏模式各有自己的优势和适用情况。选择合适的蒸馏模式取决于具体的任务需求、可用的计算资源以及对模型性能的期待。通过合理选择和使用这些模式,我们可以有效地传递和利用深度学习模型中的知识,从而在各种应用中实现更高效的模型部署。
五、知识蒸馏的未来发展
随着人工智能技术的不断进步,知识蒸馏的发展前景广阔,可能的研究方向包括:
- 自适应知识蒸馏:
- 开发能够根据学生模型的架构和任务动态调整蒸馏策略的方法,以实现更高的训练效率和效果。
- 多任务学习与迁移学习:
- 在多任务学习场景中,研究如何通过知识蒸馏将多个任务的知识共享,以提升学生模型的综合表现。同时,探索如何将教师模型的知识迁移到全新任务上。
- 结合其他模型压缩技术:
- 将知识蒸馏与剪枝、量化等其他模型压缩技术结合,以进一步提高模型的效率和可用性。
六、总结
知识蒸馏作为一种高效的模型压缩和知识转移技术,能够在保持模型性能的前提下,大幅降低计算成本和资源需求。无论是在边缘计算、移动设备,还是在大规模机器学习任务中,知识蒸馏都将发挥越来越重要的作用。通过不断的研究与实践,知识蒸馏有望为AI的发展带来更多的创新与突破。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...