打开网易新闻 查看精彩图片

大数据文摘受权转载自数据派THU

作者:王可汗

从图像识别、语音识别到自然语言处理,深度学习模型已经在各个领域取得了显著的成果。然而,这些模型往往需要大量的数据和计算资源来训练,而且模型的复杂度也在不断增加。大家是否对那些庞大复杂的机器学习模型望而却步?别担心,知识蒸馏将为你揭示一个秘密:如何从这些大模型中提取并使用智慧。

知识蒸馏,作为一种精妙的技术,能够将复杂的大模型转化为更小巧简洁的版本,却不失其核心知识和能力。这种转化的目的是为了让这些模型更容易训练和使用,同时还能在计算资源有限的情况下发挥出色的性能。

知识蒸馏中模型压缩的基本思想是:通过训练学生模型来模拟教师模型的行为,从而学会捕捉教师模型中的关键知识。预训练BERT语言模型+微调的模式提升了很多自然语言处理任务的baseline,但是预训练的语言模型太过庞大,参数都是百万级别,因此很难应用到实际的应用场景中,尤其是一些资源有限的设备上。知识蒸馏是用于压缩和加速BERT模型的有效方法。

模型压缩是一种常见的知识蒸馏方法,指的是在teacher-student框架中,将复杂、学习能力强的网络(teacher)学到的特征表示“知识”蒸馏出来,传递给参数量小、学习能力弱的网络(student)。teacher网络中学习到的特征表示可作为监督信息,训练student网络以模仿teacher网络的行为。常见的针对BERT模型的知识蒸馏模型有Distilled BiLSTM, DistilBERT,TinyBERT等。TinyBERT也被分为两个阶段:General distillation (Pre-training阶段),使用大规模无监督的数据, 帮助student网络TinyBERT学习到尚未微调的teacher BERT中的知识,有利于提高TinyBERT的泛化能力。Task-specific distillation(Fine-tuning阶段),使用具体任务的数据,帮助TinyBERT学习到更多任务相关的具体知识。

打开网易新闻 查看精彩图片

TinyBERT的创新点在于学习了teacher BERT中更多的层数的特征表示。蒸馏的特征表示包括:词向量层的输出,Transformer layer的输出以及注意力矩阵,预测层输出(仅在微调阶段使用)。假设 Teacher BERT 有M层,TinyBERT有N层(N

打开网易新闻 查看精彩图片

将Teacher BERT学习到的特征表示作为TinyBERT的监督信息,从而训练TinyBERT,训练的loss可表示为如下公式:

打开网易新闻 查看精彩图片

其中为当前层衡量Teacher BERT络和TinyBERT的差异性的loss函数, 是超参数,代表当前层的重要程度。对应不同的层,模型采用了不同的loss函数。

整体可表示成:

打开网易新闻 查看精彩图片

另一个应用广泛的知识蒸馏方法是特征提取和参数精简。大模型可以学习到许多有价值的特征,而这些特征对于解决复杂问题非常重要。通过知识蒸馏,我们可以从大模型中提取这些精华特征,并将它们应用到更小的模型中,以解决资源受限的场景下的任务。这就像是从一幅巨大的艺术作品中提取出最精彩的片段,让它们在一个更小的画布上大放异彩。参数精简是一种减少模型参数数量的方法,旨在减少模型的复杂性和计算需求。它可以通过剪枝、量化和低秩近似等技术来实现。参数精简的作用是提高模型的效率和推理速度,同时减少存储和计算资源的占用。参数精简可以在大型模型训练完毕后进行,将冗余的参数剪枝或压缩,从而得到更小、更高效的模型。

然而,知识蒸馏也面临一些挑战。一方面,蒸馏过程可能会导致知识的损失,也就是说,一些细节可能会被舍弃,从而影响到模型性能的完整性。另一方面,蒸馏后的模型可能会在某些任务上不如原始的大模型,但我们可以通过不断优化和调整来平衡这种权衡。

总之,知识蒸馏为我们打开了大模型智慧的密码。它通过压缩和提取精华,将庞杂而复杂的模型转化为更小巧高效的版本,为解决计算资源有限的问题提供了解决方案。让我们一起拥抱知识蒸馏,开启大模型时代的智慧之门!

租!GPU算力

新上线一批4090/A800/H800/H100

特别适合企业级应用

扫码了解详情☝

打开网易新闻 查看精彩图片