发布时间:2023-04-18 文章分类:电脑基础 投稿人:樱花 字号: 默认 | | 超大 打印

参考论文:Knowledge Distillation: A Survey

1.前言

       ​ 近年来,深度学习在学术界和工业界取得了巨大的成功,根本原因在于其可拓展性和编码大规模数据的能力。但是,深度学习的主要挑战在于,受限制于资源容量,深度神经模型很难部署在资源受限制的设备上。如嵌入式设备和移动设备。因此,涌现出了大量的模型压缩和加速技术,知识蒸馏是其中的代表,可以有效的从大型的教师模型中学习到小型的学生模型。本文从知识类别、训练模式、师生架构、蒸馏算法、性能比较和应用等方面对知识蒸馏进行了综述。

       ​ 提到了近年来深度学习在计算机视觉、强化学习和自然语言处理上的一些进展,指出主要挑战在于大模型在实际应用中的部署。为了开发高效的深度模型,近年来的研究主要集中在深度模型的开发上:(1)深度神经网络高效快的构建;(2)模型压缩和加速技术,主要包含以下:

       ​ 为了解决大模型的线上部署问题,Bucilua et al. (2006)首先提出了模型压缩,在不显著降低精度的情况下,将大模型或模型集合中的信息转换为训练小模型。在半监督学习中,引入了完全监督的教师模型和使用无标记数据的学生模型之间的知识转移。从小模型到大模型的学习后来被正式命名为为知识蒸馏(Hinton )。知识蒸馏主要思想是:学生模型模仿教师模型,二者相互竞争,是的学生模型可以与教师模型持平甚至卓越的表现。关键问题是如何将知识从大的教师模型转移到小的学生模型。知识蒸馏系统由知识、蒸馏算法和师生架构三个关键部分组成。如上图所示。
       ​ 虽然在实践中取得了巨大的成功,但无论是理论还是经验上对知识蒸馏的理解都不多。关于知识蒸馏的原理,Urner等利用无标记数据证明了从教师模型到学生模型的知识转移是PAC可学习的;Phuong & Lampert通过在深度线性分类器场景下学习蒸馏学生网络的快速收敛获得了知识蒸馏的理证明,这个论证回答了学生学习的内容和速度,并揭示了决定蒸馏成功的因素,成功的蒸馏依赖于数据的分布、蒸馏目标的优化偏差和学生分类器的强单调性;Cheng等人量化了从深度神经网络的中间层中提取视觉概念,以解释知识蒸馏;Ji和Zhu分别从风险界、数据效率和不完善教师三个方面对广义神经网络知识蒸馏进行了理论解释;Cho和Hariharan对知识蒸馏的功效进行了详细的实证分析;Mirzadeh et al.的实证结果表明,由于模型能力差距的存在,模型越大的教师未必就越优秀;Cho and Hariharan (2019)的实验也表明,蒸馏对学生的学习有不利影响。知识蒸馏的不同形式对知识、蒸馏和师生互动的经验评价不包括在内;知识蒸馏也被用于标签平滑、评估教师的准确性和获得最佳输出层参数分布先验。
       ​ 知识蒸馏与人的学习过程类似,基于此,近年来的一些研究拓展了教师—学生模型,发展为mutual learning、lifelong learning和self-learning。同时受到知识蒸馏在模型压缩中的影响,知识迁移已经被用在了压缩数据上,如dataset distillation。

文章结构图
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

2.知识(Knowledge)

       ​ 在知识蒸馏中,知识类型、蒸馏策略和师生架构对学生模型的学习起着至关重要的作用。原始知识蒸馏使用大深度模型的对数作为教师知识(Hinton 2015),中间层的激活、神经元或特征也可以作为指导学生模型学习的知识,不同的激活、神经元或成对样本之间的关系包含了教师模型所学习到的丰富信息.此外,教师模型的参数(或层与层之间的联系)也包含了另一种知识,本节主要讨论以下几种类型的知识:基于响应的知识(response-based knowledge),基于特征的知识( feature-based knowledge), 基于关系的知识(relation-based knowledge),下图为教师模型中不同知识类别的直观示例。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

2.1. 基于响应的知识(Response-Based Knowledge)

       ​ Response-Based Knowledge通常是指教师模型的最后一输出层的神经反应。其主要思想是让学生模型直接模仿教师模式的最终预测(logits),假定对数向量Z为全连接层的最后输出,response-based knowledge蒸馏形式可以被描述为:
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

       ​ LR(.) 表示散度损失(这里也可以是用交叉熵损失),如下图所示为Response-Based 知识蒸馏模型图。
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
       ​ 基于响应的知识可以用于不同类型的模型预测。例如,在目标检测任务中的响应可能包含bounding box的偏移量的logits;在人类姿态估计任务中,教师模型的响应可能包括每个地标的热力图。最流行的基于响应的图像分类知识被称为软目标(soft target)。软目标是输入的类别的概率,可以通过softmax函数估计为:
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
       ​ Zi是第i个类别的logit,T是温度因子,控制每个软目标的重要性。软目标包含来自教师模型的暗信息知识(informative dark knowledge)。因此,软logits的蒸馏loss可以重写为:

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

​       ​ 通常,LR(.)使用KL散度loss(Kullback-Leibler divergence,衡量两个概率分布的相似性的度量指标)。优化该等式可以使学习的logits与教师的logits相匹配。下图为基准知识蒸馏的具体架构。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
​​       ​ 然而,基于响应的知识通常需要依赖最后一层的输出,无法解决来自教师模型的中间层面的监督,而这对于使用非常深的神经网络进行表示学习非常重要。由于logits实际上是类别概率分布,因此基于响应的知识蒸馏限制在监督学习。

2.2. 基于特征的知识(Feature-Based Knowledge)

​​       ​ 深度神经网络善于学习到不同层级的表征,因此中间层和输出层的都可以被用作知识来训练学生模型,对于最后一层的输出和中间层的输出(特征图,feature map),都可以作为监督学生模型训练的知识,中间层的Feature-Based Knowledge对于 Response-Based Knowledge是一个很好的补充,其主要思想是将教师和学生的特征激活直接匹配起来。一般情况下,Feature-Based Knowledge知识转移的蒸馏损失可表示为:

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

​​       ​ 其中ft(x)、fs(x)分别是教师模型和学生模型的中间层的特征图。变换函数当教师和学生模型的特征图大小不同时应用。LF(.)衡量两个特征图的相似性,常用的有L1 norm、L2 norm、交叉熵等。下图为基于特征的知识蒸馏模型的通常架构。
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
​​       ​ 虽然基于特征的知识迁移为学生模型的学习提供了良好的信息,但如何有效地从教师模型中选择提示层,从学生模型中选择引导层,仍有待进一步研究。由于提示层和引导层的大小存在显著差异,如何正确匹配教师和学生的特征表示也需要探讨。

2.3. 基于关系的知识(Response-Based Knowledge)

​​       ​ 基于响应和基于特征的知识都使用了教师模型中特定层的输出,基于关系的知识进一步探索了不同层或数据样本的关系。一般,将基于特征图关系的关系知识蒸馏loss表述如下:
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
其中,ft和fs分别表示教师模型和学生模型的特征图,ft^、ft 和 fs^、fs~分别是教师模型和学生模型的特征图组(pairs)。函数表示特征组的相似性函数,
​​       ​ 传统的知识迁移方法往往涉及到单个知识蒸馏,教师的软目标被直接蒸馏给学生。实际上,蒸馏的知识不仅包含特征信息,还包含数据样本之间的相互关系。这一节的关系涉及许多方面,作者的设计很灵活,建议看原论文更清楚。
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

3. 蒸馏机制(Distillation Schemes)

​​       ​ 根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可分为离线(offline distillation)蒸馏、在线(online distillation)蒸馏、自蒸馏(self-distillation)。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

3.1.离线蒸馏(offline distillation)

​​​       ​ 大多数之前的知识蒸馏方法都是离线的。最初的知识蒸馏中,知识从预训练的教师模型转移到学生模型中,整个训练过程包括两个阶段:1)大型教师模型蒸馏前在训练样本训练;2)教师模型以logits或中间特征的形式提取知识,将其在蒸馏过程中指导学生模型的训练。教师的结构是预定义的,很少关注教师模型的结构及其与学生模型的关系。因此,离线方法主要关注知识迁移的不同部分,包括知识设计、特征匹配或分布匹配的loss函数。离线方法的优点是简单、易于实现。
​​​       ​ 离线蒸馏方法通常采用单向的知识迁移和两阶段的训练程序。然而,训练时间长的、复杂的、高容量教师模型却无法避免,而在教师模型的指导下,离线蒸馏中的学生模型的训练通常是有效的。此外,教师与学生之间的能力差距始终存在,而且学生往往对教师有极大依赖。

3.2.在线蒸馏(online distillation)

​​​       ​ 为了克服离线蒸馏的局限性,提出了在线蒸馏来进一步提高学生模型的性能,特别是在没有大容量高性能教师模型的情况下。在线蒸馏时,教师模型和学生模型同步更新,而整个知识蒸馏框架都是端到端可训练的。
​ ​​​       ​ 在线蒸馏是一种具有高效并行计算的单阶段端到端训练方案。然而,现有的在线方法(如相互学习)通常无法解决在线环境中的高容量教师,这使进一步探索在线环境中教师和学生模式之间的关系成为一个有趣的话题。

3.3.自蒸馏(self-distillation)

       ​ 在自蒸馏中,教师和学生模型使用相同的网络,这可以看作是在线蒸馏的一个特例。例如论文(Zhang, L., Song, J., Gao, A., Chen, J., Bao, C. & Ma, K. (2019b).Be your own teacher: Improve the performance of convolutional eural networks via self distillation. In ICCV.)将网络深层的知识蒸馏到浅层部分。
​       ​ 从人类师生学习的角度也可以直观地理解离线、在线和自蒸馏。离线蒸馏是指知识渊博的教师教授学生知识;在线蒸馏是指教师和学生一起学习;自我蒸馏是指学生自己学习知识。而且,就像人类学习的方式一样,这三种蒸馏由于其自身的优点,可以相互补充。

4.教师-学生结构(Teacher-Student Architecture)

       在知识蒸馏中,师生架构是形成知识转移的一般载体。换句话说,师生结构决定了学生模型提取教师模型中知识的质量,用人类学习过程来描述,就是我们希望学生获得一个不错的老师来获取知识。因此,在知识的提炼过程中,如何选择或设计合适的师生结构,是一个重要而又困难的问题。最近,在蒸馏过程中,教师和学生的模型设置几乎是固定不变的大小和结构,从而容易造成模型容量缺口。然而,如何特别设计教师和学生的体系结构,以及为什么他们的体系结构由这些模型设置决定,几乎是缺失的。两者之间模型的设置主要有以下关系:

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
       知识蒸馏早期被用来压缩模型,Hinton等人(Hinton, G., Vinyals, O. & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531.)曾将知识蒸馏设计为压缩深度神经网络的集合。深度神经网络的复杂性主要来自于深度和宽度这两个维度。通常需要将知识从更深、更宽的神经网络转移到更浅、更窄的神经网络。学生网络的结构通常有以下选择:1)教师网络的简化版本,层数更少,每一层的通道数更少;2)保留教师网络的结构,学生网络为其量化版本;3)具有高效基本运算的小型网络;4)具有优化全局网络结构的小网络;5)与教师网络的结构相同。
​       大网络和小网络之间容量的差距会阻碍知识的迁移。为了有效地将知识迁移到学生网络中,许多方法被提出来控制降低模型的复杂性。论文(Mirzadeh, S. I., Farajtabar, M., Li, A. & Ghasemzadeh, H. (2020). Improved knowledge distillation via teacher assistant. In AAAI.)引入了一个教师助手,来减少教师模型和学生模型之间的训练差距。另一篇工作通过残差学习进一步缩小差距,利用辅助结构来学习残差。还有其他一些方法关注减小教师模型与学生模型结构上的差异。例如将量化与知识蒸馏相结合,即学生模型是教师模型的量化版本。
       以往的研究多侧重于设计师生模型的结构或师生模型之间的知识转移方案。为了使小的学生模型与大的教师模型能够很好地匹配,从而提高知识的蒸馏性能,需要自适应的师生学习结构。近年来,知识蒸馏中的神经结构搜索思想被提出,即在教师模式指导下联合搜索学生结构和知识转移,将成为未来研究的热点。此外,动态搜索知识迁移机制的想法也出现在知识蒸馏中,例如,使用强化学习以数据驱动的方式自动去除冗余层,并寻找给定教师网络的最优学生网络。

5.蒸馏算法

​       一个简单但有效的知识迁移方法是直接匹配基于响应的、基于特征的或教师模型和学生模型之间的特征空间中的表示分布。许多不同的算法已经被提出,以改善在更复杂的环境中传递知识的过程。

5.1.对抗性蒸馏(Adversarial Distillation)

​       在知识蒸馏中,教师模型很难学习到真实数据分布,同时,学生模型容量小,不能准确模仿教师模型。近年来,对抗训练在生成网络中取得了成功,生成对抗网络(GAN)中的鉴别器估计样本来自训练数据分布的概率,而生成器试图使用生成的数据样本欺骗鉴别器的概率预测。受此启发,许多对抗知识蒸馏方法被提出,以使教师和学生网络更好地了解真实的数据分布,如下图所示,对抗训练在知识蒸馏中的应用可以刚被分为三类。
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

a)训练一个对抗性生成器生成合成的数据,将其直接作为训练集或用于增强训练集。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
​       其中,Ft(.)和Fs(.)分别是教师模型和学生模型的输出;G(z)表示给定随机输入向量z的生成器G生成的训练样本;LG是蒸馏损失,以迫使预测的概率分布与真实概率分布之间匹配,蒸馏损失函数通常采用交叉熵或KL散度。

b)使用鉴别器,利用logits或特征来分辨样本来自教师或是学生模型。

​       代表性方法如论文(Wang, Y., Xu, C., Xu, C. & Tao, D. (2018f). Adversarial learning of portable student networks. In AAAI.),其loss可以表示为:
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
​       其中,G是一个学生网络,LGAN是生成对抗网络使用的损失函数,使学生和教师之间的输出尽可能相似。

c)在线方式进行,在每次迭代中,教师和学生共同进行优化。

​       利用知识蒸馏压缩GAN,小GAN学生网络通过知识迁移模仿大GAN教师网络。从上述对抗性蒸馏方法中,可以得出三个主要结论:1)GAN是通过教师知识迁移来提高学生学习能力的有效工具;2)联合GAN和知识蒸馏可以为知识蒸馏的性能生成有价值的数据,克服了不可用和不可访问的数据的限制;3)知识蒸馏可以用来压缩GAN。

5.2.多教师蒸馏(Multi-teacher Distillation)

​​       不同的教师架构可以为学生网络提供他们自己有用的知识。在训练一个教师网络期间,多个教师网络可以单独或整体地用于蒸馏。在一个典型的师生框架中,教师通常是一个大的模型或一个大的模型的集合。要迁移来自多个教师的知识,最简单的方法是使用来自所有教师的平均响应作为监督信息。多教师蒸馏的一般框架如下图所示。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

​​​       多个教师网络通常使用logits和特征表示作为知识。除了来自所有教师的平均logits,还有其他的变体。文献(Chen, X., Su, J., & Zhang, J. (2019b). A two-teacher tramework for knowledge distillation. In ISNN.)使用了两个教师网络,其中一名教师将基于响应的知识迁移给学生,另一名将基于特征的知识迁移给学生。文献(Fukuda, T., Suzuki, M., Kurata, G., Thomas, S., Cui, J. & Ramabhadran,B. (2017). Effificient knowledge distillation from an ensemble of teachers. In Interspeech.))在每次迭代中从教师网络池中随机选择一名教师。一般来说,多教师知识蒸馏可以提供丰富的知识,并能针对不同教师知识的多样性量身定制一个全方位的学生模型。然而,如何有效地整合来自多名教师的不同类型的知识,还需要进一步研究。

5.3.跨模态蒸馏(Cross-Modal Distillation)

       在训练或测试时一些模态的数据或标签可能不可用,因此需要在不同模态间知识迁移。在教师模型预先训练的一种模态(如RGB图像)上,有大量注释良好的数据样本,(Gupta, S., Hoffman, J. & Malik, J. (2016). Cross modal distillation for supervision transfer. In CVPR.)将知识从教师模型迁移到学生模型,使用新的未标记输入模态,如深度图像(depth image)和光流(optical flow)。具体来说,所提出的方法依赖于涉及两种模态的未标记成对样本,即RGB和深度图像。然后将教师从RGB图像中获得的特征用于对学生的监督训练。成对样本背后的思想是通过成对样本迁移标注(annotation)或标签信息,并已广泛应用于跨模态应用。成对样本的示例还有1)在人类动作识别模型中,RGB视频和骨骼序列;2)在视觉问题回答方法中,将图像-问题-回答作为输入的三线性交互教师模型中的知识迁移到将图像-问题作为输入的双线性输入学生模型中。跨模态蒸馏的框架如下:

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解
       跨模态总结如下。其中ResK表示基于响应的知识,FeaK表示基于特征的知识,RelK表示基于关系的知识。
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

5.4.基于图的蒸馏(Graph-Based Distillation)

​       大多数知识蒸馏算法侧重于将个体实例知识从教师传递给学生,而最近提出了一些方法使用图来探索数据内关系。这些基于图的蒸馏方法的主要思想是1)使用图作为教师知识的载体;2)使用图来控制教师知识的传递。基于图的知识可以归类为基于关系的知识。基于图的知识蒸馏如下图所示:
【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

1)使用图作为教师知识的载体

​       文献(Zhang, C. & Peng, Y. (2018). Better and faster: knowledge transfer from multiple self-supervised learning tasks via graph distillation for video classifification. In IJCAI)中,每个顶点表示一个自监督的教师,利用logits和中间特征构造两个图,将多个自监督的教师的知识转移给学校。

2)使用图来控制知识迁移

       文献(Luo, Z., Hsieh, J. T., Jiang, L., Carlos Niebles, J.& Fei-Fei, L. (2018).Graph distillation for action detection with privileged http://modalities.In ECCV.)将模态差异纳入来自源领域的特权信息,特权信息。引入了一种有向图来探讨不同模态之间的关系。每个顶点表示一个模态,边表示一个模态和另一个模态之间的连接强度。

5.5. 基于注意力的蒸馏(Attention-Based Distillation)

       注意力机制能够很好地反映神经网络中神经元的激活情况,因此在知识蒸馏中引入了注意力机制,提高了学生模型的性能。基于注意力机制的知识迁移的核心是定义注意力图,将特征嵌入神经网络的各个层次。也就是说,利用注意力图函数转移特征嵌入知识。

5.6.无数据的蒸馏(Data-Free Distillation)

       无数据蒸馏的方法提出的背景是克服由于隐私性、合法性、安全性和保密问题导致的数据缺失。“data free”表明并没有训练数据,数据是新生成或综合产生的。新生的数据可以利用GAN来产生。合成数据通常由预先训练过的教师模型的特征表示生成。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

       尽管无数据蒸馏在数据不可用的情况下显示出了巨大的潜力,但如何生成高质量的多样化训练数据来提高模型的泛化能力仍然是一个非常具有挑战性的任务。

5.7. 量化蒸馏(Quantized Distillation)

       网络量化通过将高精度网络(如32位浮点)转换为低精度网络(如2位和8位),降低了神经网络的计算复杂度。同时,知识蒸馏的目标是训练小模型,使其具有与复杂模型相当的性能。在师生框架下,利用量化过程提出了一些KD方法,如下图所示;

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

5.8.终身蒸馏(Lifelong Distillation)

       终身学习包括持续学习、持续学习和元学习,旨在以与人相似的方式学习。它积累了以前学到的知识,并将所学到的知识转化为未来的学习,知识蒸馏提供了一种有效的方法来保存和转移学习到的知识,而不会造成灾难性的遗忘。最近,越来越多的KD变体被开发出来,它们是基于终身学习的。

5.9.基于神经架构搜索的蒸馏(NAS-Based Distillation)

       神经架构搜索(NAS),它是最流行的自动机器学习(或AutoML)之一,旨在自动识别深度神经模型和自适应学习合适的深度神经结构。在知识蒸馏中,知识转移的成功不仅取决于教师的知识,还取决于学生的架构。然而,大教师模式和小学生模式之间可能存在能力差距,使得学生很难从老师那里学得好。为了解决这一问题,采用神经结构搜索寻找合适的学生结构。

6.性能比较(Performance Comparison)

       为了更好地证明知识蒸馏的有效性,总结了一些典型的KD方法在两种流行的图像分类数据集上的分类性能。这两个数据集分别是CIFAR10和CIFAR100。两者都有50000张训练图像和10000张测试图像,每一类都有相同数量的训练和测试图像。为了进行公平的比较,实验分类精度结果(%)的KD是直接从相应的原始论文中获取,本文报告了在使用不同类型的知识、蒸馏方案和教师/学生模型结构时,不同方法的性能。括号中的准确率是教师模型和学生模型分别训练后的分类结果。

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

       从上表性能比较中,可以总结出以下几点:

       通过对不同知识蒸馏方法的性能比较,可以得出知识蒸馏是一种有效、高效的深度模型压缩技术。

7.应用(Applications)

       知识蒸馏作为一种有效的深度神经网络压缩和加速技术,已广泛应用于人工智能的各个领域,包括视觉识别、语音识别、自然语言处理(NLP)和推荐系统。此外,知识蒸馏还可以用于其他目的,如数据隐私和作为对抗攻击的防御。本节简要回顾了知识蒸馏的应用。

KD in NLP

       传统的语言模型(如BERT)结构复杂,耗费大量的时间和资源。知识蒸馏是自然语言处理领域中广泛研究的一种方法,其目的是获得轻量级、高效、有效的语言模型。越来越多的KD方法被提出来解决大量的NLP任务。在这些基于KD的NLP方法中,大多数都属于自然语言理解(NLU),其中许多基于自然语言理解的KD方法都被设计成任务特定蒸馏和多任务蒸馏。

       以下是自然语言处理中知识蒸馏的一些总结。

8.总结和讨论(Conclusion and Discussion)

       本文从知识、蒸馏方案、师生体系结构、蒸馏算法、性能比较和应用等方面对知识蒸馏进行了综述,下面,主要讨论了知识蒸馏面临的挑战,并对知识蒸馏的未来研究提出了一些见解。

8.1.挑战(Challenges)

       尽管知识蒸馏的方法和应用有大量的存在,但对知识蒸馏的理解,包括理论解释和经验评价,仍然不足。教师和学生模型线性化的假设,使得通过蒸馏研究学生学习特征的理论解释成为可能。然而,要深刻理解知识蒸馏的概括性,特别是如何衡量知识的质量或师生建筑的质量,仍然是非常困难的。

8.2.未来方向(Future Directions)

       为了提高知识蒸馏的性能,最重要的因素包括:什么样的师生网络架构,从教师网络中学习到什么样的知识,在哪里提炼到学生网络中。