知识蒸馏怎样压缩神经网络-全球独家

2023-06-04 07:18:18 来源: 互联网

如果您曾经使用过神经网络来解决一个复杂的问题,您就会知道它们的规模可能很大,其中包含数百万个参数。例如,著名的BERT模型大约有1.1亿。


(资料图片)

为了说明这一点,这是参数为(自然语言处理)NLP最常见的架构数量,总结近期的AI报告2020年国家通过弥敦道Benaich和伊恩·霍加斯。您可以在下面看到此内容:

给定架构中的参数数量。资料来源:Nathan Benaich和Ian Hogarth撰写的2020年AI状况报告

在Kaggle竞赛中,获胜者模型通常是由多个预测变量组成的集合。尽管就准确性而言,它们可以在很大程度上击败简单的模型,但它们巨大的计算成本使它们在实践中完全无法使用。

[阅读: 哪些受众情报数据告诉我们有关2020年美国总统大选的信息]

有没有办法以某种方式利用这些强大而庞大的模型来训练最先进的模型,而无需扩展硬件?

当前,有三种主要方法可以在保留预测性能的同时压缩神经网络:

修剪重量

量化

知识升华

在这篇文章中,我的目标是向您介绍知识提炼的基础知识,这是一个非常令人兴奋的想法,它建立在训练较小的网络以近似大型网络的基础上。

那么,什么是知识升华?

让我们想象一个非常复杂的任务,例如对数千个类进行图像分类。通常,您不能仅仅对ResNet50打掌,并期望它达到99%的准确性。因此,您需要构建一组模型,以平衡每个模型的缺陷。现在您有了一个巨大的模型,尽管它具有出色的性能,但无法将其部署到生产中并在合理的时间内获得预测。

但是,该模型很好地概括了看不见的数据,因此可以放心地预测它。(我知道,情况可能并非如此,但让我们暂时进行一下思想实验。)

如果我们使用大型笨拙模型的预测来训练较小的所谓学生模型来近似大型模型,该怎么办?

这实际上是知识蒸馏,由Geoffrey Hinton,Oriol Vinyals和Jeff Dean在论文《在神经网络中蒸馏知识》中介绍。

概括地说,过程如下。

训练一个可以很好地执行和推广的大型模型。这称为教师模型。

取得所有数据,然后计算教师模型的预测。具有这些预测的总数据集称为知识,而预测本身通常被称为软目标。这是知识蒸馏步骤。

使用先前获得的知识来训练称为学生模型的较小网络。

为了使过程可视化,您可以考虑以下内容。

Hugging Face进行了一次成功的尝试,以减少BERT的大小和计算成本。他们使用知识提炼来训练DistilBERT,该模型的大小是原始模型的60%,但速度提高了60%,并保留了97%的语言理解能力。

DistilBERT的性能。来源:DistilBERT,BERT的简化版本:Victor Sanh,Lysandre Debut,Julien Chaumond,Thomas Wolf的更小,更快,更便宜和更轻

较小的体系结构需要更少的时间和计算资源:在8个16GB V100 GPU上花费90小时。

如果您对更多细节感兴趣,可以阅读原始论文DistilBERT,它是BERT的简化版本:更小,更快,更便宜,更轻巧,或者其中的摘要文章是其中一位作者撰写的。这是一个很棒的读物,所以我强烈建议您这样做。

结论

知识蒸馏是压缩神经网络并使它们适用于功能较弱的硬件的三种主要方法之一。

与权重修剪和量化(另两种强大的压缩方法)不同,知识蒸馏不会直接减少网络。相反,它使用原始模型来训练称为学生模型的较小模型。由于教师模型甚至可以对未标记的数据提供预测,因此学生模型可以像教师一样学习如何进行概括。

在这里,我们研究了两个关键结果:介绍了该思想的原始论文和后续研究,表明可以将诸如决策树之类的简单模型用作学生模型。

相关新闻