APP下载

卷积神经网络压缩中的知识蒸馏技术综述

2021-10-12孟宪法黄萌萌

计算机与生活 2021年10期
关键词:卷积神经网络样本

孟宪法,刘 方,李 广,黄萌萌

国防科技大学 自动目标识别重点实验室,长沙 410000

近些年来,随着数据集的丰富完善,计算单元性能的快速提升,卷积神经网络(convolutional neural network,CNN)凭借着强大的特征提取和表达能力,在图像分类[1]、目标检测[2]和语义分割[3]等计算机视觉领域,都获得了显著的应用成效。得益于网络模型的加深加巨,CNN 的众多拓展模型在众多任务中超越了很多传统技术方法,甚至堪比人类的识别能力,可适用于广泛的行业应用,如智能驾驶[4-5]、智能机器人[6]、人脸识别[7]、疾病检测[8]等。

但是注意到:通常网络的性能与网络的结构复杂度成正比,网络结构越复杂模型越深越宽,网络性能就越好。如表1 所示,He 等提出的ResNet-152[9]模型深度达到了152 层,参数量达到了0.6 亿个,需要花费241 MB 内存存储,分类一幅分辨率为224×224 的彩色图像需要115 亿次浮点型计算。深度神经网络会占用大量的内存存储,带来繁多的计算量,造成巨大的电量消耗,这些问题使网络很难在资源受限的嵌入式设备和对实时性要求较高的移动端部署。如果能把深度神经网络进行压缩,让网络减少对内存存储的消耗,就可以使网络在内存资源受限的设备上进行部署,并且轻量化的神经网络还可以实现运算加速,这样在军民应用中都有着广泛的拓展潜力。

Table 1 Basic information of classical convolutional neural network表1 经典卷积神经网络的基本信息

通常情况下,深度神经网络存在着大量的参数冗余。根据LeCun 等[10]实验表明,深度神经网络有近一半的权重对网络性能影响甚微,由此可见,深度神经网络有着很大的压缩空间,而且过量的参数还会导致过拟合,使模型的泛化能力下降。研究者们已经探索了网络剪枝(network pruning)[11-13]、参数量化(parameter quantification)[14-17]、低秩分解(low-rank decomposition)[18-19]、轻量化网络设计(compact structure design)[20-22]、知识蒸馏(knowledge distillation)[23-26]等方法。自AI 教父Hinton 提出了知识蒸馏技术后[23],知识蒸馏受到了研究者们的广泛关注,并在网络压缩中展现了巨大的研究价值。目前网络压缩领域的综述性文章[27-31]缺乏专门对知识蒸馏技术的详细介绍,因此本文对卷积神经网络压缩中的知识蒸馏技术进行详细说明。

1 面向卷积神经网络的压缩方法简述

1.1 卷积神经网络的基本结构和发展历程

卷积神经网络是目前广泛应用的深度学习架构,它是一种层次模型,由用于特征提取的卷积层和用于特征处理的池化层交叉堆叠而成。卷积神经网络的输入为一般原始数据(如RGB 图像、原始音频数据等),通过前馈运算来进行预测和推理,通过反馈运算来进行网络参数的训练和学习。

VGG[32]是一种经典的卷积神经网络,它采用卷积层和池化层交叉堆叠,最后连接全连接层的层次结构,其网络结构非常具有代表性。VGG 一共有6个不同的版本,最常用的是VGG16,其网络结构如图1所示。VGG 的核心思想是通过加深网络深度来提高网络性能,在2014 年的ILSVRC 挑战赛中表现优异,在定位比赛上取得了第一名的成绩,在分类比赛上以7.3%的top5 错误率取得了第二名的成绩。

Fig.1 Stucture of VGG16 network图1 VGG16 网络结构

6 个不同版本的VGG 网络结构如表2 所示。模型A-LRN 在模型A 的基础上多一个局部响应归一化层(local response normalization,LRN),但是实验表明,LRN 对性能提升收效甚微,并且增加模型的内存占用和运行时间,因此后续模型都没有加入LRN。模型C 在模型B 的基础上增加了1×1 卷积层,增加了网络的非线性表达能力。模型D 用3×3 卷积核代替了模型C 的1×1 卷积核,因为大感受野可以学习到更多的空间特征,增加了网络的学习能力。模型D 对应VGG16,模型E 对应VGG19。

Table 2 Structure of VGGNet network表2 VGGNet网络结构组成

卷积神经网络起源于20 世纪60 年代左右的神经科学领域中。LeCun 在1998 年提出基于梯度学习的改良版CNN 模型LeNet-5[33]。在这之后,大量研究人员提出了很多方法去优化深层结构和克服深度神经网络在训练过程的困难,深度卷积神经网络的性能也因此得到了大幅提升。2012 年卷积神经网络在ILSVRC2012 挑战赛图像分类任务大放异彩,Krizhevsky 提出的AlexNet[34]模型一举夺下2012 年ILSVRC 挑战赛冠军。继AlexNet 之后,卷积神经网络迅速发展,陆续出现了很多性能优异的卷积神经网络模型,其中比较有代表性的有ZF-Net[35]、VGG[32]、GoogLeNet[36]、ResNet[9]、DenseNet[37]、DPN[38]、SENet[39]、MobileNetV1[40]、MobileNetV2[41]、SqueezeNet[42]和ShuffleNet[43]。

如图2 所示,卷积神经网络的发展是由简到繁,不断发展的应用亟需网络在保持性能的前提下可高效适用于计算资源受限的平台上,探索可行的网络简化技术具有理论和应用双重意义。

Fig.2 Development of convolutional neural network图2 卷积神经网络的发展

1.2 知识蒸馏技术与其他压缩方法的对比

目前卷积神经网络压缩和加速的方法主要有以下五种:网络剪枝、参数量化、低秩分解、轻量化网络设计、知识蒸馏。为了综合示意以上方法特色,如表3所示,从方法的设计思想、作用位置、是否改动网络架构等方面进行对比,列举了以上方法的代表性研究工作,并对比分析了以上方法的优缺点。

知识蒸馏从充分发掘神经网络的性能潜力出发进行研究,旨在实现使用层级浅、结构简单的神经网络发挥良好的性能,相比于其他方法压缩出来的杂乱的结构,知识蒸馏可以选择任何一种网络结构整齐简洁的小型网络作为目标网络,并且不会改变小型网络的结构,知识蒸馏通过大型网络(即教师网络)辅助小型网络(即学生网络)训练的方式,提高学生网络性能,达到学生网络性能接近教师网络的效果,实现将教师网络压缩为学生网络的目的。通过知识蒸馏获得了层数更浅性能更好的小模型,小模型更适合部署因为它就是为了快而设计的,并且小模型并不需要花很多时间去调参,不需要特定的硬件就能直接实现模型加速。因此知识蒸馏逐渐发展为网络轻量化方法的一个热点分支。

Table 3 Comparison of network compression methods表3 网络压缩方法对比

2 知识蒸馏方法

2014 年,Hinton 等人[23]首次提出了知识蒸馏(knowledge distillation,KD)的概念,并通过实验验证了其在卷积神经网络压缩上的有效性和可行性。知识蒸馏策略已在目标检测[44-46]、语义分割[47]、目标识别[48]、视频分类[49]、图像去雾[50]等很多计算机视觉应用中发挥了作用。

下文先给出基本分析原理,然后根据蒸馏位置的不同,把知识蒸馏划分为基于softmax 输出层的知识蒸馏与基于中间层的知识蒸馏,其他代表性的方法还包括基于相关性知识的知识蒸馏以及结合生成对抗网络(generative adversarial networks,GAN)的知识蒸馏。

2.1 知识蒸馏的基本思想

知识蒸馏的本质体现在:老师会把自己的思考过程和总结作为一种知识精华传授给学生,学生通过理解学习,获得抽象、提炼后的知识,以达到和老师接近的水平。

知识蒸馏的基本思想正是让卷积神经网络模仿人类的学习行为,将大型网络(教师网)学习到的知识提炼传授给小型网络(学生网),并指导小型网络的训练,从而实现了从大型网络压缩成小型网络的目的。其一般实现思路如图3 所示。

Fig.3 Realization of knowledge distillation图3 知识蒸馏一般的实现思路

2.2 基于softmax 输出层的知识蒸馏

基于softmax输出层的知识蒸馏(KD)[23]是由Hinton提出的知识蒸馏领域的开山之作。在一个训练成熟的网络模型输出的概率分布中,错误类别的概率一般比较小,但是其中可能会存在一些概率相对较高的类别,例如,一辆公交车可能只有很小的机会被误认为小汽车,但这个错误概率仍然比误认为一棵树的可能性高很多倍,Hinton 等人认为这些错误类别的相对概率中隐藏着网络学习到的知识,这种知识是概率分布只有0 和1 的真实标签不具备的。

因此,Hinton 提出KD,在softmax 输出层中加入超参数T(如式(1)所示)用来平滑网络输出的概率分布,以强化输出的概率分布中网络学习到的知识。通过温度系数T平滑过后的网络输出被称为软目标,软目标和真实标签一起指导学生网络训练,损失函数的组成JKD一般如式(2)所示。

神经网络通常通过使用softmax 输出层来产生类别概率,该输出层通过将zi归一化转化成概率qi。JCE(ytrue,p)表示学生网络的预测输出与真实标签的交叉熵,表示学生网络平滑后的预测输出与教师网络平滑后的预测输出的交叉熵,λ为调节两个损失函数比例的超参数,因为经过超参数T平滑后的交叉熵,在反向传播时其梯度会变为原来的为了保持其梯度的尺度和真实标签对应的交叉熵的尺度一致,需要把平滑后的交叉熵乘以T2。

下面介绍基于softmax 输出层的知识蒸馏的拓展方法。

2.2.1 最高分差(TSD)知识蒸馏

研究动机:深度网络能够自动地为每幅图像学习语义相似的类,置信度越高的类在语义上更可能与输入图像相似。利用这些信息,可以让学生网络避免对不必要的严格分布进行拟合,从而获得更好的泛化能力。

方法实现:最高分差(top score difference,TSD)[51]在标签平滑正则化(label smoothing regularization,LSR)[52]和置信惩罚(confidence penalty,CP)[53]的基础上进行改进,TSD 只使用教师网络预测输出置信度最高的k个类别计算损失,超参数k代表每个图像语义上最相似的类的数量,其中包含真实类别在内。然后,计算最高置信度类别与其之下得分最高的k-1 类之间的置信度差距,将结果作为教师网络提供的损失,联合目标任务损失对学生网络进行训练。

2.2.2 提前停止知识蒸馏(ESKD)

研究动机:将神经网络部署在移动平台上一般需要较大的压缩率,学生网络和教师网络之间的规模差距也随之提升。虽然大模型的准确率更高,但是它往往并不能更好地指导学生网络训练,原因是容量不匹配。由于网络规模差距过大,学生无法模仿老师,反而会带偏了目标任务损失。这类问题的解决办法一般是采用分步蒸馏,从大模型提取到中模型,然后从中模型提取到小模型,但是这种分步的方法需要多次训练,造成训练时间也数倍地增长。

方法实现:文献[54]详尽地探索了影响知识蒸馏的因素,提出了另外一种思路——提前停止知识蒸馏(early-stopped knowledge distillation,ESKD),在学生网络训练结束之前停止教师的知识指导以提高学生网络学习效果,通过使教师网络知识对应的损失权重逐渐衰减,以获得一个更适合学生训练的方案。

2.3 基于中间层的知识蒸馏

基于中间层的知识蒸馏是目前研究最多的方法[55-60],主要是从网络的中间隐藏层中通过各种手段提取可以表示网络学习过程的知识,或者能够蕴藏网络如何对输入数据进行推理的知识,将提取到的这些知识传递给学生网络以实现知识蒸馏,达到提高学生网络性能的目的。下面介绍一些典型的方法。

2.3.1 FitNet

研究动机:增加网络深度可以重复使用特征,获得在更高层次上更抽象和不变的特征表示。受此启发,FitNet[55]使用更深更窄的学生网络和更浅更宽的教师网络以实现更好的蒸馏效果,并且同时使用教师网络的软目标和教师网络的中间层特征图作为知识。

方法实现:使用教师网络的特征图作为指导层,选择学生网络的特征图作为被指导层,FitNet 是一个二阶知识蒸馏,第一步使用指导层指导被指导层训练,损失函数如式(3)所示,第二步使用KD[23]继续训练学生网络。

其中,uh、vg和r分别代表教师网络、学生网络和适配器的嵌套函数,X是输入特征图,WHint、WGuided和Wr分别代表教师网络的权重、学生网络的权重和适配器的权重。

直接由卷积层生成的特征图通常尺寸较大,计算成本高,而且学生网络很难学习。为了解决这个问题,Lee 等人[56]提出结合奇异值分解(singular value decomposition,SVD)的知识蒸馏,通过减少特征地图的空间维数,有效去除特征映射中的空间冗余,在特征降维过程中获得有意义的隐含特征信息,并将这种信息传递给学生网络。

2.3.2 注意力转移(AT)

研究动机:FitNet 要求学生模拟教师的全部特征图,这样的要求太严格。文献[24]提出了注意力转移(attention transfer,AT)来放宽FitNet 的假设,注意力图是对多个通道的特征图的总结,使用一个注意力图来代替多通道的特征图。

注意力机制:注意力是视觉体验的一个关键因素,并与感知密切相关,注意力的集中程度体现了重视程度,人类需要保持注意力,以建立一个具有细节和连贯性的视觉表现。受此启发,人工注意力的核心思想是,通过集中注意力让系统更关注一个对象或区域,以更详细地检查它。

方法实现:AT 把注意力看作一组空间映射,这些映射可以在网络的各个层中定义,以便它们能够捕获低、中、高级的表示信息,然后把注意力从教师网络转移到学生网络,以提高后者的表现。如图4 所示,AT 定义了基于激活值(神经元在预测过程的输出)的注意力图,其基本假设是隐藏层神经元激活的绝对值可以代表这个神经元的重要性,通过对同一空间位置不同通道的特征图的统计,将C个通道的特征图映射为单通道的注意力图。通过让学生网络的注意力图拟合教师网络的注意力图,并联合目标任务损失对学生网络进行训练。

文献[25]提出通过匹配注意力图和它们的雅可比矩阵进行知识蒸馏,该蒸馏方法的教师和学生网络结构可以是任意的。该方法主要利用了神经网络雅可比矩阵两个重要的性质:第一,维度与网络结构无关,只与输入和输出的维度有关,因此,不同网络的雅可比矩阵可以进行比较;第二,对于相同的网络,不同的权重配置可能得到相同的雅可比矩阵,这是由于网络的冗余性和损失函数非凸性造成的。

2.3.3 FSP 蒸馏

研究动机:卷积神经网络是一个层次结构,特征从输入到输出逐层传递,神经网络学习到的知识可以定义为如何构建一个从输入到输出的映射关系,进一步可以分解为层与层之间的特征变换关系,如图5 所示。FSP(flow of solution procedure)蒸馏[57]将这种层与层之间的特征关系从教师网络传递给学生网络。单纯地让学生网络模仿老师网络生成的特征图是硬约束,会让学生网络变得不灵活,因此更好的办法是教会学生学习的过程,FSP 蒸馏定义了FSP 矩阵来刻画层与层之间的特征关系,其核心思想便是授人以鱼不如授人以渔。

方法实现:对于具有相同尺寸的特征图,使用低层和高层不同通道的特征图两两计算内积,得到的结果代表对应通道的两两特征图的互相关值,将互相关值作为FSP 矩阵的对应位置的元素。FSP 矩阵的计算过程如式(4)所示。最后用L2损失去拉近教师和学生的FPS 矩阵之间的距离,通过构建如式(5)所示的FSP 损失联合目标任务损失一起指导学生网络训练。FSP 蒸馏的概念图如图5[29]所示。

Fig.4 Concept map of knowledge distillation for attention transfer图4 注意力转移知识蒸馏概念图

Fig.5 Concept diagram of FSP distillation图5 FSP 蒸馏的概念图

其中,F1和F2分别表示低层和高层特征图;h和w分别表示特征图的长和宽;i和j分别表示低层和高层特征图的通道索引;x和W分别表示输入和参数。

2.3.4 神经元选择性转移(NST)

研究动机:文献[58]提出在知识蒸馏过程中,直接对特征图进行匹配并不是最好的选择,因为它忽略了样本密度,并提出采用分布对齐的神经元选择性转移(neuron selectivity transfer,NST)方法。

方法实现:NST 的假设是每个神经元都从原始输入中提取与目标任务相关的特定模式,因此,如果一个神经元在某些区域或样本中被激活,这就意味着这些区域或样本可能具有一些与任务相关的共同属性。NST 通过匹配教师和学生网络之间神经元选择性模式的分布进行知识蒸馏,采用最大平均偏差(maximum mean discrepancy,MMD)作为损失函数来度量师生分布之间的差异,并结合目标任务损失对学生网络进行训练。

2.3.5 互信息知识蒸馏

研究动机:基于互信息的知识蒸馏[59,61]使用的手段是最大化教师和学生网络之间的互信息,学生网络通过学习教师网络中激活值的分布最大化互信息,从而进行知识的传递。在学生网络已知的条件下,当教师网络的熵很小时,这说明学生网络已经获得了能够拟合教师网络所需要的知识,因此学生网络的性能也已经接近教师网络。如式(6)所示,在H(t)已知的条件下,H(t/s)的值越小时,互信息I(t;s)越大。

由于互信息的计算较困难,变分信息蒸馏(variational information distillation,VID)[31]采用变分信息最大化方案来最大化变分下界,如式(7)所示,即用一个可变高斯分布q(t/s)来模拟p(t/s),由于蒸馏过程中H(t)和需要学习的学生网络参数无关,最大化互信息就转换为最大化可变高斯分布的问题。

方法实现:学生网络通过最小化与真实标签的交叉熵损失,同时与教师网络保持高度的互信息以学习教师网络的知识。

2.3.6 因子传输(FT)

研究动机:当教师网络和学生网络在网络结构、通道数量和初始条件等差距较大时,学生网络不能很好地理解教师网络特征图中复杂的知识,受此启发,文献[60]提出使用通道扩展的方法——因子传输(factor transfer,FT)蒸馏去进一步解释教师的知识,以帮助学生网络学习。

Fig.6 Concept diagram of FT distillation图6 FT 蒸馏的概念图

方法实现:先将教师网络特征图的通道扩展k倍,使m个通道特征图的知识转化到m×k个通道上,再进行知识传递。整体架构如图6[60]所示,在教师网络指导层的特征图后面连接一个额外的释义器模块,将特征图通道数扩展为m×k。释义器由卷积模块组成,为了保证通道扩展后得到的信息可以完整地表示原始特征图,在释义器的输入特征x和输出特征p(x)间设置重建损失,对释义者进行无监督训练。相应地,在学生网络的被指导层后连接一个适配器,适配器也由卷积模块构成,目的是为了让学生网络的通道数与释义器的输出相匹配。通过式(8)计算蒸馏损失,其中,FT和FS分别表示释义特征和适配器特征。

2.3.7 最佳指导路径

研究动机:对于基于中间层的知识蒸馏,一个重要问题是如何确定最佳指导路径,即确定教师网络中的哪一层作为指导层和学生网络中的哪一层作为被指导层,怎么能使学生网络获得最好的指导效果。如图7 所示,文献[62]提出一个迭代剪枝的优化方案来寻找最佳指导路线。

方法实现:将所有教师网络和学生网络特征图尺寸一致的层构成的指导路径作为指导路径集合,在训练超参数相同的情况下遍历所有可能的路径,动态确定最佳指导路径。对学生网络的特征图使用1×1 的卷积核进行分析,这个操作可以降低特征图的维度和计算复杂度,并过滤出独特的通道特征。经过1×1 的卷积核提取的新特征图用来与教师网络的特征图计算损失,损失函数如下所示:

Fig.7 Candidate paths of knowledge transfer图7 知识传递的候选路径

其中,u和v分别表示指导层和被指导层的深度嵌套函数,WT和WS分别表示教师网络参数和学生网络参数。r是应用在u上的知识投影函数,参数WTP是卷积适配层的参数。u、v和r必须在空间维度上具有可比性。

2.4 其他方法

2.4.1 相关性知识蒸馏

(1)关系知识蒸馏

研究动机:文献[63]提出了个体知识蒸馏(individual knowledge distillation,IKD)和关系知识蒸馏(relational knowledge distillation,RKD)的概念,IKD[23-24,51,55,60,64]使用单个输入样本在网络特征提取过程中生成的特征图或网络的输出作为知识进行蒸馏,使学生网络的输出模拟教师网络的输出,以此来模拟大模型的拟合能力。IKD 中每个输入样本都是独立的,学生网络只能学习教师网络对单个输入样本的推理过程和输出结果,无法学习到多个输入样本在教师网络特征空间的相关性,这种相关性包含了教师网络对类内样本的聚合能力和类间样本的区分能力,以及教师网络的结构信息。

Fig.8 Individual knowledge distillation and relational knowledge distillation图8 个体知识蒸馏与关系知识蒸馏

方法实现:如图8[63]所示,RKD 算法的核心是以教师网络的输出为结构单元,取代IKD 中以教师网络单个输出为知识的蒸馏方式,RKD 利用多输出组合成结构单元,更好地获取教师网络的结构化特征。RKD 学习的损失函数如式(11)所示,其中t1,t2,…,tn表示教师网络的多个输出,s1,s2,…,sn表示学生网络的多个输出,∂是构建结构信息的函数,由两个样本之间的欧几里德距离或三元组之间的角距离实现,l表示计算二者之间的差距。

(2)样本关系图蒸馏

研究动机:知识蒸馏的主要挑战是如何从教师网络中提取一般的、适度的、充足的知识来指导学生网络。文献[65]提出了一种用于知识提取的样本关系图(instance relationship graph,IRG),它对样本特征、样本关系和特征空间变换这三种知识进行建模,其概念图如图9[58]所示。

Fig.9 Concept diagram of instance relationship graph distillation图9 样本关系图蒸馏示意图

方法实现:首先,构造IRG,其中顶点表示训练样本,两个顶点之间的边权重表示样本之间的相似性程度。然后,使用IRG 变换对从低层到更高层的特征空间转换进行建模,尽管输入样本的特征在不同的网络结构中通常具有不同的维度,但图的大小总是相同的,因为节点的数量等于单次输入训练样本的数量。最后,设计IRG 损失、IRG 变换损失以及目标任务损失的联合损失函数,使用联合损失函数指导学生网络训练。

(3)图知识蒸馏

使用图作为网络中间层的拓扑表示,可以用来解释网络正在学习什么[66-67]或增强其鲁棒性[68]。图知识蒸馏(graph knowledge distillation,GKD)[69]可以看作是RKD 欧几里德版本的拓展。在RKD 的基础上,利用图捕捉隐藏空间的几何特征,建模多个样本之间的关系距离,提取相关性知识,进行知识蒸馏。GKD 使用余弦距离来度量样本相似性,余弦距离相对于欧氏距离,更多的是从方向上区分差异,而对绝对的数值不敏感,可以更准确地衡量样本特征之间的相似性。为了避免过分重视离群值,对邻接矩阵进行了规范化处理,使用huber损失作为损失函数。

文献[70]在此基础上对损失函数进行了扩展,提出了三元组蒸馏(triplet distillation),使用三元组损失[71],通过自适应地改变正负对之间的距离,将相似信息从教师网络转移到学生网络。

(4)相似性保留知识蒸馏(SPKD)

研究动机:语义相似的输入往往会在一个经过训练的神经网络中产生相似的激活模式,文献[65]提出了相似性保留知识蒸馏(similarity-preserving knowledge distillation,SPKD),并提出输入样本之间的相似性反映了教师网络在特征空间中表示特征的规律,有助于在特征空间中减小类内间距和增大类间间距,以提高学生网络的学习效果。SPKD 使学生网络不用去模仿教师网络提取到的特征,只需要在自己的特征空间中保持样本之间的相似性与教师一致即可。其概念图如图10[72]所示。

Fig.10 Similarity preserving knowledge distillation图10 相似性保留知识蒸馏

方法实现:对于输入的样本数为b个的小批量图像,选择某一层特征图计算形状为b×b的相关矩阵,蒸馏损失定义在学生和教师产生的相关矩阵上。教师和学生网络生成的相关矩阵的形状都是b×b,因此不用刻意保证师生网络的特征图大小和通道数相等,放宽了教师网络和学生网络的选择范围,方法实现了更好的泛化。

(5)相关同余知识蒸馏(CCKD)

文献[73]提出了相关同余知识蒸馏(correlation congruence for knowledge distillation,CCKD),将教师网络对输入样本的预测输出和样本间相似性知识都传递给学生网络。此外,为了更好地捕捉样本之间的相关性,CCKD 使用高斯径向基函数(Gaussian-RBF)去衡量样本之间的相关性,该函数如下所示:

高斯径向基函数是一种常用的核函数,其值只依赖于距离原点空间的欧氏距离。相比于双线性池化[74],高斯径向基函数在捕捉样本之间复杂的非线性关系方面更为灵活和强大。

CCKD 的采样策略:样本之间的相关性是在小批量输入中计算的,因此一个合适的采样器对于平衡类内的一致性和类间的相关性非常重要。一种简单的策略是均匀随机抽样,但是当类数较多时,所有样本都属于不同的类,这会导致类内相关性梯度的高偏差估计。为了解决这个问题,CCKD 采用两种小批量采样器策略:类均匀随机采样器和超类单形随机采样器。均匀随机抽样按类抽样并随机为每个抽样类别选择固定k个样本数(例如,一个批次中包含5个类别,每个类别包含k=8 个样本,组成一个包含40个样本的批次)。超类单形随机采样器与类均匀随机采样器相似,不同之处在于,它通过超类对样本进行采样,超类是通过聚类生成的真实类的一种更软的形式。为了得到训练样本的超类,首先使用教师网络提取特征,然后使用K-均值聚类,样本的超类被定义为它所属的集群。由于超类改变了特征空间中样本的粗糙结构,超类单形随机采样器比类均匀随机采样器更灵活,更能容忍不平衡标记。

(6)多头图蒸馏(MHGD)

文献[75]提出了多头图蒸馏(multi-head graph distillation,MHGD)方法获取输入样本的嵌入知识。首先提取网络两个层对应的特征映射,使用KD-SVD[56](knowledge distillation using singular value decomposition)通过径向基函数将特征映射压缩为特征向量,然后将小批量样本输入教师网络,生成两个特征向量集。通过计算两个特征向量集之间的关系提取知识,使用传递知识的损失联合目标任务损失同时指导学生网络训练。

2.4.2 基于生成对抗网络的知识蒸馏

研究动机:基于生成对抗网络(GAN)[26]的知识蒸馏,利用生成对抗策略以实现知识从教师网络到学生的传递。当学生网络比教师网络小很多时,强迫学生网络精确模拟教师网络是很困难的,而GAN有助于保持输出分布的多模态性质[60],并减小手工调参的误差,学生网络可以自动学习到良好的损失,转移类间的相关性,提升学生网络的性能。

方法实现:对抗知识蒸馏[76-78]将学生网络作为生成器,先分别获取生成器和教师网络生成对输入样本的输出概率分布,再使用判别器来区分学生网络的输出与教师网络的输出。学生网络和判别器交替更新参数,其中判别器的更新为了更好地区分教师网络的输出与学生网络的输出,学生网络的更新为了更好地欺骗判别器,使判别器无法区分学生网络的输出与教师网络的输出。经过学生网络和判别器的多次交替更新后,并达到使判别器无法区分学生网络的输出与教师网络的输出的效果,最终实现学生网络模拟教师网络的目的。图11 描述了基于生成对抗网络的知识蒸馏的一般思想。

Fig.11 Knowledge distillation based on generative adversarial network图11 基于生成对抗网络的知识蒸馏

虽然判别器捕获了教师和学生输出的高级统计数据,但是缺少低级对齐,并且对抗性训练过程很困难[76]。文献[79]提出了更严格的训练方式,其增加了判别器的预测目标,判别器除了预测真、假之外,还预测类别标签,使对抗训练变得更加稳定,鉴别器还可以在学生和教师的输出之间提供类别级的对齐,判别器的输出是一个C+2 维向量,带有C个标签预测和一个真/假预测。文献[77]提出了KDGAN(knowledge distillation with generative adversarial networks)的框架,利用生成对抗网络提取知识用于多标签学习。KDGAN 框架定义为一个极大极小博弈,其中学生网络、教师网路和判别器对立地训练,极大极小博弈具有均衡性,有利于学生网络更好地模拟真实数据的分布。在对抗性训练中,利用具体的分布来控制梯度的方差,得到低方差的梯度估计以加速训练。

2.5 知识蒸馏目前的评价体系

目前知识蒸馏的评价体系尚未完善,本文在展望部分针对知识蒸馏评价标准的规范化提出一些建议,下面仅介绍目前知识蒸馏普遍使用的评价方法。

目前知识蒸馏的评价是通过图像分类任务实现的,使用的数据集包括CIFAR-10、CIFAR-100、ImageNet、SVHN、ILSVRC2012、MNIST。其中CIFAR-10、CIFAR-100 为最常用的数据集。

CIFAR-10 是一个普适物体的小型彩色图像数据集。一共包含10 个类别的RGB 彩色图片:飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车。每个图片的尺寸为32×32,每个类别有6 000 个图像,数据集中一共有50 000 张训练图片和10 000 张测试图片。

CIFAR-100 包含100 个类别的RGB 彩色图片,每个类包含600 个图像,每类各有500 个训练图像和100 个测试图像。CIFAR-100 中的100 个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)。

评价指标包括3 个:(1)学生网络相对于教师网络参数的减少量;(2)通过知识蒸馏后的学生网络相比于教师网络准确率的降低量;(3)通过知识蒸馏后的学生网络相比于正常训练的学生网络准确率的提升量。第一个指标体现了算法对网络的压缩程度;第二个指标体现了在第一个指标对应的压缩程度下,算法对准确率的损失程度;第三个指标体现了在第一个指标对应的压缩程度下,该知识蒸馏算法的有效程度。

评价流程:(1)在实验数据集上训练多个教师网络(如ResNet152、ResNet101、WRN40-2 等),训练多个教师网络的目的是为了后续测试算法对网络结构和复杂度的泛化性。(2)对每一个教师网络,都选择多个不同复杂度的学生网络(如ResNet50、WRN40-1、WRN16-2、WRN4016-1 等)进行蒸馏训练,学生网络的训练与教师网络使用相同的数据集,以进行准确率的对比,选择多个不同复杂度的学生网络的目的是为了测试算法对压缩程度的鲁棒性。一般情况下,当压缩程度超出一定范围时,蒸馏的效果会急剧下降。(3)使用正常的训练方式,对学生网络在相同的数据集上进行训练,以测试蒸馏的有效性。

2.6 知识蒸馏技术的对比实验与评价

2.6.1 不同知识蒸馏技术的对比实验

表4 展示了各种知识蒸馏方法的性能,实验在CIFAR-100 数据集上对WRN40-2 进行两种程度的压缩,将WRN40-2 压缩为WRN16-2 和WRN40-1。在两种程度的压缩中,KD 表现均最优;在WRN40-2 到WRN16-2 的压缩中,AT 表现第二好;在WRN40-2 到WRN40-1 的压缩中,VID 表现第二好。

表5 展示了不同知识蒸馏方法与KD 组合表现的性能,实验在CIFAR-100 数据集上进行。将WRN40-2 压缩为WRN16-2,有6 种知识蒸馏方法与KD 组合表现的性能超越KD 单独使用的性能,其中AT+KD表现最优,这表明这6 种方法提取到了KD 缺乏的知识,与KD 存在互补关系。

2.6.2 对各种知识蒸馏技术的分析评价

知识蒸馏的发展关系如图12 所示,其中第一部分为基于softmax 输出层的知识蒸馏方法,第二部分为基于中间层的知识蒸馏方法,第三部分为相关性知识蒸馏,第四部分为对抗性知识蒸馏。下面对上述四种类型的知识蒸馏方法的优缺点进行分析评价,并对其拓展研究提供一些思路:

Table 4 Experiment of different knowledge distillation methods on CIFAR-100表4 不同知识蒸馏方法在CIFAR-100 上的实验

Table 5 Combination experiment of different knowledge distillation methods and KD表5 不同知识蒸馏方法与KD 组合实验

(1)基于softmax 输出层的KD

优点:KD 能够有效地将大型教师网络压缩为小型学生网络,实现思路简单,适用于任意网络结构,在多分类任务中表现了优秀的性能。

Fig.12 Development of knowledge distillation图12 知识蒸馏的发展关系

缺点:该方法也存在着一定的局限性,由于它是基于softmax 层输出的概率分布,严重依赖类的数量,因此应用场景只能局限于多分类问题,在二分类甚至目标类别较少的情况以及回归问题的表现并不理想;并且softmax 输出层位于网络的最后,特征经过多次池化降维,所包含的信息量较少,提取到的知识语义程度太高,单纯地拟合教师网络的输出可能会造成学生网络的过拟合,影响学生网络的学习效果。

拓展研究:KD 在知识蒸馏的快速训练方向有着良好的发展潜力,由于KD 传递的知识位于网络的输出层,KD 可以通过多模型集成的思路,将多个小模型同时训练,把小模型的预测输出通过集成产生知识,同时使用知识对其中的小模型进行指导,从而实现一阶段训练的知识蒸馏,达到快速训练的效果;探索可以与KD 结合使用的中间层知识蒸馏方法,实现对输出层知识的补充,从而达到更好的蒸馏性能。

(2)基于中间层的知识蒸馏

优点:大量的研究人员提出了各式各样的知识提取方法,包括AT、FSP、NST、VID、FT 等,基于中间层的知识蒸馏取得了较好的效果,相对于基于softmax 输出层的知识蒸馏,其拥有更丰富多样的知识提取和传递的手段,同时也拥有更广阔的发展潜力和研究价值,其应用范围也取得了极大的扩展,不再依赖分类任务以及类的数量,可以应用在检测和分割任务上。通过实验发现,AT 实现了最好的性能,FSP和FT 可以帮助学生网络提高收敛速度。

缺点:由于中间层的特征维度比输出层庞大很多,因此加剧了训练难度;并且在学生网络固定的时候,很难确定最优的指导路线以及最佳的指导教师,增加了人工调参的难度,可能需要多次调参才能获得训练最佳的学生网络;基于中间层特征图的知识蒸馏方法实现相对复杂,AT 需要教师网络和学生网络的特征图适配,实际应用中可能会需要额外的适配操作,FT 需要提前对释义器进行额外的训练,同时释义器和适配器会增加额外的参数;基于中间层知识蒸馏的研究动机大多从试探的角度出发,该方向的研究缺乏明确的理论知识指导,需要较高创新直觉。

拓展研究:基于中间层的知识蒸馏是目前知识蒸馏领域的热点研究,该方向可以结合神经网络最新的研究成果,探索更有效的知识提取和传递的手段。在AT 的基础上可以探索结合更多类型的注意力机制的蒸馏方法,如空间注意力机制、通道注意力机制、混合型注意力机制以及自注意力机制等;如何选择教师到学生的指导路径也是重要的研究方向。

(3)相关性知识蒸馏

优点:相关性知识蒸馏有利于减少特征空间中的类内间距,扩大类间间距,对不同的网络结构具有较强的鲁棒性。

缺点:相关性知识蒸馏传递的知识太杂乱,各个损失分量之间的权重比例缺乏规律性,需要多次调参和试错才能找到较好的训练效果;由于相关性知识需要从批量数据中提取,输入数据的类别分布对蒸馏的效果也有较大的影响。

拓展研究:相关性知识蒸馏从样本的角度出发,因此,对输入样本进行预处理和采样策略可以作为重点研究方向。

(4)基于生成对抗网络的知识蒸馏

优点:基于生成对抗网络的知识蒸馏提供了知识蒸馏的一种全新的思路,通过使用鉴别器和学生网络交叉迭代训练使学生网络不断向教师网络靠近,该方法可以实现端到端的训练,解决了人工调参带来的误差和麻烦,而且训练效果较好。

缺点:由于这种训练方式使学生网络仅仅模拟教师网络的输出端,无法学习到教师网络内部更丰富的知识,并且鉴别器和学生网络的交叉迭代训练造成网络收敛速度慢,训练时间长。

拓展研究:基于生成对抗网络的知识蒸馏作为知识蒸馏的一个新的领域,以对抗训练作为训练手段,探索可以结合网络中间层知识的方法,以实现更好的蒸馏效果和更快速的训练。

3 展望知识蒸馏的拓展方向

随着深度神经网络研究的不断深入以及对神经网络网络轻量化日益扩大的应用需求,知识蒸馏技术在未来一定会大放异彩,未来的研究工作可参考如下几方面。

(1)更有效的知识提取

在知识蒸馏中,最重要的一个环节就是如何从教师网络中提取能够有效地指导学生网络进步的知识,基于注意力机制和相关性等提取知识的方法展现了不错的效果,但提取到的知识还是不够准确和有效,学生网络需要更精准的教师网络知识以获得更好的指导效果,因此如何改进知识提取的方法有很大的研究意义也是目前研究亟需解决的问题。

(2)知识蒸馏技术的研究领域扩展

现阶段知识蒸馏技术的研究主要是在分类问题上的,对于检测、分割等复杂任务的应用上还存在一定的局限性。对于同样的知识蒸馏算法,应用在分类问题上的压缩有着很好的效果,而应用到目标检测任务时性能可能会大幅降低,主要有以下几点原因:基于输出层的知识蒸馏方法是针对分类问题提出来的,它的假设是所有的输出类别有着相同的重要性,但是目标检测任务中,通常背景类所占比例要远高于目标类;检测任务相对于分类任务更复杂,需要同时处理目标分类和边框回归问题,对网络能力有更强的要求;检测任务主要关注物体真实标签重叠的局部区域,而分类模型更关注全局背景,在检测任务中,知识蒸馏将整个教师网络的知识提取给学生网络,其中包含了学生不需要的知识,冗余的知识会影响蒸馏的效果。因此知识蒸馏技术在目标检测的应用还存在着许多问题需要克服,这也正是知识蒸馏技术未来重要的研究方向。

(3)与网络剪枝技术等策略结合

基于知识蒸馏的网络压缩技术使小型网络超越自己正常的训练极限,达到与大型网络相当的准确率,但是经过知识蒸馏训练完成的小型网络的参数仍然存在大量冗余,网络剪枝技术刚好可以很好地解决这个问题,通过知识蒸馏技术和网络剪枝技术的联合使用可以更大程度地压缩网络,因此如何将两种压缩技术不冲突地联合起来,减少人工调参的难度,实现端到端的快速训练有进一步的研究价值。

(4)边缘端AI芯片限制条件下的应用

民用方面如在手机、智能监控摄像头以及移动穿戴式设备对神经网络能够部署到边缘端智能芯片的应用日益增多,军用方面如无人机敌情侦察、卫星导弹的智能化也有着同样迫切的需求。但是在面对边缘端AI 芯片的算力和功耗等限制条件下,知识蒸馏技术压缩得到的小型网络参数的精度仍然很高,会消耗非常多的计算资源,因此知识蒸馏技术结合参数量化技术对神经网络从学术研究到工业落地有着巨大的应用潜力,需要结合特定的应用场景、计算环境约束、待分析的目标特性、特殊的知识类型,展开个性化研究。

(5)评价标准规范化

目前对网络压缩中的知识蒸馏技术的评价主要侧重于准确率、模型内存等方面,但使用更加全面的评价指标对于发现不同算法的优缺点是大有裨益的。

由于在工程上经常有快速训练的需求,不同算法训练时消耗的计算资源和训练时间也可以作为一种衡量算法的评价指标;由于简化后的网络模型往往是在资源受限的设备上运行,乘加运算量、硬件能耗也是重要的评价指标。

由于知识蒸馏压缩的效果与教师、学生网络的选取以及压缩的程度有密切的关系,在超出一定压缩程度后,某些知识蒸馏方法的压缩效果会急剧下降。因此,在知识蒸馏的理论研究中,非常有必要建立标准完备的用于压缩效果评价的网络集合。该集合包含多个网络压缩对,每个网络压缩对都单独对应一个教师网络和一个学生网络(如网络压缩对ResNet152 与ResNet101,ResNet152 与ResNet50,WRN40-2 与WRN40-1,WRN40-2 与WRN16-2 等),每个网络压缩对也都标志着具体的网络结构和压缩程度。网络压缩中各种知识蒸馏算法都使用这个集合在固定的公开数据集上进行蒸馏效果的比较,以呈现该算法在不同网络结构、不同压缩程度下的压缩效果,以使实验结果更加具有说服力,以更清晰地呈现不同算法的优劣性和泛化性。

4 结束语

本文简述了网络压缩方法的发展渊源,在简单对比典型网络压缩技术的基础上,重点针对近年深度神经网络压缩知识蒸馏技术进行了详细的梳理,全面介绍了近年知识蒸馏技术的典型探索,并给出了未来该技术研究拓展的初步思考,希望对当前及未来知识蒸馏技术的研究工作有所帮助。

猜你喜欢

卷积神经网络样本
基于全卷积神经网络的猪背膘厚快速准确测定
基于神经网络的船舶电力系统故障诊断方法
基于图像处理与卷积神经网络的零件识别
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
规划·样本
人大专题询问之“方城样本”
三次样条和二次删除相辅助的WASD神经网络与日本人口预测