Figure1.Typicaldeepneuralnetworkknowledgedistillationframework
知识蒸馏方法中的“知识”可以宽泛和抽象地理解成模型参数、网络提取的特征和模型输出等。现有的深度神经网络蒸馏方法根据学习位置的不同可分为基于最后输出层的蒸馏方法、基于中间结果层的蒸馏方法以及基于激活边界的蒸馏方法;根据学习方式的不同可分为基于自我学习的蒸馏方法和基于对抗学习的蒸馏方法。本文将对知识蒸馏各个类别的代表性研究成果进行详细介绍。
2.基于最后输出层的蒸馏方法
目前以BERT为代表的一系列大规模的预训练语言模型成为了自然语言处理领域的流行方法,它们在许多自然语言处理任务上能够取得非常优异的成果,但是这些模型结构十分庞大,且需要大量的数据和设备资源来完成训练过程。2019年Tang等人[18]提出了一种对Bert模型进行知识蒸馏的方法,将Bert模型蒸馏成Bi-LSTM模型。该方法与经典的蒸馏网络类似,其损失函数由两部分组成:Bi-LSTM与真实标签之间的交叉熵以及教师和学生网络的概率分布(Logits)之间的均方误差。
3.基于中间结果层的蒸馏方法
在深度学习中,一般将网络隐藏层的输出看作模型所学习到的特征。基于中间结果层的模型蒸馏方法利用网络中间隐藏层学习到的特征作为知识,指导学生模型学习。
文献[20]提出了基于注意力迁移的蒸馏方法(AttentionTransfer,AT),其本质是指导中间结果的输出,使得学生网络能够模仿教师网络中间层的注意力特征图(AttentionMaps),从而显著提高学生模型的性能。
Huang等人[21]提出了一种神经元选择性知识蒸馏方法,该方法训练学生网络使其中间层的激活分布与教师中间层的激活分布对齐,采用最大均值差异作为损失函数,衡量教师和学生模型特征之间的差异。
4.基于激活边界的蒸馏方法
从分类的决策边界角度分析,一个关键的问题是分类边界样本的分类问题。简单的小模型真正的弱点在于对边界样本的分类困难,而大模型处理边界的能力优于小模型,因此可以利用学生模型学习教师模型的边界分布,从而实现对教师模型的蒸馏。
Heo等人[23]提出一种AB激活边界学习法进行知识蒸馏,他们认为在模型蒸馏的过程中,不能只利用神经元的激活值来进行蒸馏约束,还应该使用神经元的激活区域进行约束。该方法通过最大化边界误差来引导学生模型获得更强的边界约束能力。此外,Heo等人[24]还提出一种利用对抗样本进行边界激活学习的方法,该方法利用对抗攻击策略来发现位于决策边界的样本。为了能够更准确地传达关于决策边界的信息,该文献基于对抗边界样本训练学生分类器,以提升学生网络对决策边界的鉴别能力。
5.基于自我学习的蒸馏方法
根据学习方式的不同,深度神经网络蒸馏方法又可分为基于自我学习的蒸馏方法和基于对抗学习的蒸馏方法。基于自我学习的蒸馏方法不同于传统的教师–学生形式的拟合教师蒸馏框架,自蒸馏不是训练学生网络去拟合教师网络的输出,而是在网络内部对知识进行蒸馏。
Zhang等人[25]提出了一种自我学习的方法用于知识蒸馏,它通过缩小卷积神经网络的规模来显著提高卷积神经网络的性能(准确性)。该方法首先将网络划分为几个部分,然后将网络较深部分的知识压缩到较浅部分,即蒸馏策略中教师模型与学生模型来自于同一个模型,该方法可以降低蒸馏学习的复杂度。
与自学习的蒸馏方法类似,相互学习策略中也不存在教师模型,而是多个模型之间的学习。[26]提出一种深度互学习方法,该方法的主要目的是为了提升模型的效果,而不过多的考虑模型压缩。该方法对多个学生网络同时进行训练,并利用多个网络的输出结果来相互借鉴、共同学习。各个模型的损失函数包括两部分:1)经典的真值与输出值之间的交叉熵;2)不同模型输出分布之间的KL散度(Kullback-LeiblerDivergence)。
Meng等人[27]提出一种新的知识嫁接的方法,旨在提高深度神经网络的表示能力。该方法并行地训练多个网络,并对网络的参数进行重要性排序,利用并行网络中的有效权重来替换当前网络中不重要的权重。为了更好地执行嫁接过程,他们提出了一种基于熵的准则来测量滤波器的信息量,并提出了一种自适应加权策略来平衡网络间的嫁接信息。
6.基于对抗学习的蒸馏方法
基于对抗学习的蒸馏方法利用生成对抗网络(GAN)来进行模型蒸馏。Xu等人[28]提出一种使用生成对抗网络进行知识蒸馏的方法,利用条件对抗网络来学习损失函数,以实现知识从教师网络到学生网络的转移。该方法将学生网络作为生成器,生成概率分布结果(Logits),使用预训练好的教师网络获取输入数据的输出概率分布,然后使用判别器来判别学生网络的输出和教师网络的输出,最终的学习目标为判别器无法区分学生网络和教师网络的输出。
7.总结与展望
现阶段深度神经网络知识蒸馏方法大多针对模型结构进行蒸馏,考虑在许多实际应用场景中,不仅有计算资源和存储空间的限制,还存在着在线和离线特征不一致的问题。知识蒸馏方向未来的发展不仅要对复杂深度学习模型的结构进行蒸馏,还应该考虑对模型的输入特征进行蒸馏,利用教师模型将在线计算阶段难以获取到的特征直接蒸馏到学生模型中,使得学生模型在线预测时不需要加入离线特征,从而减少学生模型的特征输入并提升模型性能。