【论文翻译_知识蒸馏】Distilling Knowledge via Knowledge Review

请添加图片描述
(以下的“审查”皆可替换为“复习”,2021年)

摘要

知识蒸馏将知识从教师网络转移到学生网络,目的是大大提高学生网络的性能。以往的方法大多侧重于提出同级特征之间的特征转换和损失函数,以提高效率。通过对师生网络连接路径跨层因素的不同研究,揭示了其重要性。首次在知识提取中提出了跨级连接路径。我们的新复习机制有效,结构简单。我们最终设计的嵌套且紧凑的框架所需的计算开销可以忽略不计,并且在各种任务上优于其他方法。我们将我们的方法应用于分类、对象检测和实例分割任务。所有这些都见证了学生网络性能的显著提高。

附上一篇作者的知乎解读文章,看了下挺清晰的:https://zhuanlan.zhihu.com/p/363994781

一、介绍

深度卷积神经网络(CNN)在各种计算机视觉任务中取得了显著的成功。然而,CNN的成功往往伴随着大量的计算和内存消耗,这使得将其应用于资源有限的设备成为一个具有挑战性的话题。已经有了训练快速紧凑的神经网络的技术,包括设计新的结构[10,2,11,26]、网络修剪[20,15,34,4,19]、量化[13]和知识提炼[9,25]。

考虑到知识蒸馏的实用性、效率,以及最重要的潜在实用性,本文重点讨论了知识提炼。它形成了一条非常通用的路线,适用于几乎所有的网络架构,并可以与许多其他策略相结合,如网络修剪和量化[32],以进一步改进网络设计。

文献[9]首次提出了知识蒸馏。这个过程是在一个更大的网络(又称教师)的监督下训练一个小的网络(也称为学生)。在[9]中,知识是通过教师的逻辑进行提炼的,这意味着学生同时受到基本真理标签和教师逻辑的监督。最近,人们努力提高蒸馏效率。FitNet[25]通过中间功能提炼知识。A T[38]进一步优化了FitNet,并使用功能的注意力地图来传递知识。PKT[23]将教师的知识建模为概率分布,而CRD[28]使用对比目标来传递知识。所有这些解决方案都侧重于转换和损失函数。

我们的新发现:我们在本文中从一个新的角度来解决这个具有挑战性的问题,即教师和学生之间的联系路径。为了简单地理解我们的想法,我们首先展示之前的工作是如何处理这些路径的。如图1(a)-(c)所示,之前的所有方法都只使用相同的级别信息来指导学生。例如,在监督学生的第四阶段输出时,始终使用教师的第四阶段信息。这个过程看起来直观且易于构建。但我们有趣地发现,它实际上是整个知识提炼框架中的一个瓶颈——结构的快速更新出乎意料地提高了许多任务的整个系统性能。

我们研究了在知识提炼中设计连接路径的重要性,并提出了一个新的有效框架。关键的修改是使用教师网络中的低级功能来监督学生的深层功能,从而大大提高整体表现。

我们进一步分析了网络结构,发现学生高水平阶段具有从教师低水平特征中学习有用信息的巨大能力。更多分析见第4.4节。这个过程类似于人类的学习曲线[35],在这个曲线中,幼儿只能理解所教知识的一小部分。在成长的过程中,越来越多的过去的知识可能会逐渐被理解为记忆和经验。

我们的知识回顾框架:基于这些发现,我们建议使用教师的多层次信息来指导学生网络的一级学习。我们的新管道如图1(d)所示,我们称之为“知识回顾”。复习机制是使用以前的(较浅的)功能来指导当前功能。这意味着学生必须经常检查之前学习过的内容,以更新对“旧知识”的理解和语境。我们人类研究的一种常见做法是,在一段时间的研究中,将不同阶段所教授的知识联系起来。

然而,如何从教师提供的多层次信息中提取有用的信息,并将其传递给学生,是一个具有开放性和挑战性的问题。为了解决这些问题,我们提出了一个剩余学习框架,使学习过程稳定高效。此外,还设计了一种新的基于注意力的融合(ABF)模块和层次上下文丢失(HCL)功能来提高性能。我们提出的框架使学生网络大大提高了学习的有效性。

通过应用这一思想,我们在许多计算机视觉任务中获得了更好的性能。在第二部分中进行了大量实验,展示我们提出的知识复习策略的巨大优势。

主要贡献:
1.我们提出了一种新的知识蒸馏复习机制,利用教师的多层次信息指导学生网络的一级学习。

2.我们提出了一个剩余学习框架,以更好地实现学习过程中的复习机制。

3.为了进一步改进知识复习机制,我们提出了基于注意的融合(ABF)模块和层次上下文丢失(HCL)功能。

4.通过应用我们的蒸馏框架,我们在多个计算机视觉任务中实现了许多紧凑模型的最先进性能。

二、相关工作

文献[9]中提出了知识蒸馏的概念,学生网络从教师提供的真实标签和软标签中学习。FitNet[25]通过一个阶段的中间功能提炼知识。FitNet的想法很简单,学生网络功能通过卷积层转移到教师的相同形状。L2距离用于测量它们之间的距离。

许多方法遵循FitNet,使用单阶段特征提取知识。PKT[23]将教师的知识建模为概率分布,并使用KL散度来测量距离。RKD[22]使用多示例关系来指导学生的学习。CRD[28]将对比学习与知识蒸馏相结合,并使用对比目标来传递知识。

也有使用多阶段信息传递知识的方法。T[38]使用多层注意力图来传递知识。FSP[36]根据图层特征生成FSP矩阵,并使用该矩阵指导学生。SP[29]进一步改进了T,它使用示例之间的相似性来指导学生,而不是单一输入信息。OFD[8]包含了一个新的距离函数,用于使用marginal ReLU提取教师和学生之间的主要信息。

之前的所有方法都没有讨论“回顾知识”的可能性,但是,我们的工作发现,这对于快速提高系统性能非常有效。

三、我们的方法

我们首先将知识蒸馏过程和复习机制形式化。然后,我们提出了一个新的框架,并引入了基于注意的融合模块和分层上下文丢失函数。

3.1复习机制

给定输入图像X和学生网络S,我们让Ys=S(X)表示学生的输出逻辑。S可以分为不同的部分(S1、S2、…、Sn、Sc),其中Sc是分类器,S1、…、Sn是由下采样层分隔的不同阶段。因此,生成输出Ys的过程可以表示为:
请添加图片描述
我们指的是“◦” 作为函数的嵌套,其中g◦ f(x)=g(f(x))。Ys是学生的输出,中间特征是请添加图片描述。第i个特征计算为:
请添加图片描述

对于教师网络T,过程几乎相同,我们省略了细节。按照前面的符号,单层知识蒸馏可以表示为:
请添加图片描述
其中,M是将特征转换为 注意力地图[38]或factor[14]的 目标表示 的转换。D是距离函数,用于测量师生之间的差距。类似地,多层知识蒸馏被写成:请添加图片描述
其中,I存储了用于传递知识的功能层。

请添加图片描述
图2。(a) 根据复习机制监督一层学生的架构。(b) 从一层直接推广到多层。这个过程很简单,但成本很高。(c) (b)中的架构通过融合模块进行优化,以获得紧凑的框架。(d) 我们以渐进的方式进一步改进了程序,并将重新视觉学习作为最终架构。ABF和HCL的结构如图3所示。这个数字最好用彩色显示。

我们的复习机制是使用以前的功能来指导当前的功能。将带有复习机制的单层知识蒸馏形式化为 请添加图片描述

虽然乍一看,它与多层知识蒸馏有一些相似之处,但实际上是根本不同的。在这里,学生的特征固定在F i s上,我们使用教师的第一个i级特征来指导Fis。审查机制和多层蒸馏是互补的概念。当将审查机制与多层知识提取相结合时,损失函数变为 请添加图片描述
在我们的实验中,在训练过程中,只需将L(M-KD-R)损失与原始损失单独相加,推理结果与原始模型完全相同。所以我们的方法在测试时是完全免费的。我们使用因子λ来平衡蒸馏损失和原始损失。以分类任务为例,将整体损失函数定义为:请添加图片描述

在我们提出的复习机制中,我们只使用教师较浅的特征来监督学生较深的特征。我们发现,相反的结果带来的是边际效益,反而浪费了很多资源。直观的解释是,更深层次、更抽象的特征对于早期学习来说过于复杂。更多分析见第4.4节。

请添加图片描述
图3。(a)ABF的架构。不同层次的学生特征通过注意力图聚合在一起。(b) HCL的架构。学生和教师的特征被金字塔合并,以提取不同的上下文信息进行蒸馏。

3.2剩余学习框架

在前面的工作之后,我们首先设计一个简单的框架,如图2(a)所示。转换请添加图片描述简单地由卷积层和最近的插值层组成,以转换学生的第i个特征,以匹配教师的第j个特征的大小。我们不将教师特征转换为Ft。学生特征转换为与教师特征相同的大小。

图2(b)显示了直接将该思想应用于多段蒸馏,蒸馏出所有阶段特征。然而,由于各阶段之间存在巨大的信息差异,这种策略并不是最优的。此外,它还产生了一个复杂的过程,使用了所有功能。例如,一个有n个阶段的网络需要计算n(n+1)/2对关于损失函数的特征,这使得学习过程很麻烦,并且需要花费很多资源。

为了使程序更加可行和优雅,我们将图2(b)的公式(6)重新表述为: 请添加图片描述
为了简单起见,省略了特征的变换。现在我们切换i和j的两个求和的顺序:请添加图片描述
当j固定时,等式(9)累加教师特征Fj t和学生特征请添加图片描述之间的距离。通过特征融合[40,16],我们将距离之和近似为融合特征的距离。它会导致 请添加图片描述

其中U是用于融合功能的模块。这种近似如图2(c)所示,其结构现在更加有效。但是,为了提高效率,可以按照图2(d)所示的渐进方式进一步优化融合计算。Fjs、…、Fns的融合通过Fjs和请添加图片描述的组合来计算,其中融合操作递归定义为U(·,·),应用于连续的特征图。将请添加图片描述表示为从Fj+1 s到Fns的特征的融合,损失写为:
请添加图片描述

这里我们从n− 1开始循环到1来利用F(j+1,n) s。请添加图片描述。详细结构如图2(d)所示,其中ABF和HCL分别是为该结构设计的融合模块和损失函数。其细节在第3.3节中讨论。

图2(d)中的结构非常优雅,利用剩余学习的概念简化了蒸馏过程。例如,将学生的第四阶段特征与学生的第三阶段特征聚合,以模仿教师的第三阶段特征。因此,第四阶段的学生特征学习了第三阶段特征在学生和教师之间的剩余部分。剩余信息很可能是教师获得高质量结果的关键因素。

这种剩余学习过程比直接让学生的高水平特征从教师的低水平特征中学习更稳定、更有效。在剩余学习框架下,学生的高级特征可以更好地逐步提取有用信息。此外,使用公式(11),我们消除了求和,并将总复杂度降低到n对距离。

请添加图片描述
表2。在CIFAR-100上的结果,教师和学生有不同的体系结构。

3.3. ABF和HCL

图2(d)中有两个关键部分。它们是基于注意的融合(ABF)和层次上下文丢失(HCL)。我们在这里解释。
ABF模块利用了[30,12]的观点,如图3(a)所示。较高级别的要素首先被调整为与较低级别要素相同的形状。然后将两个不同层次的特征连接在一起,生成两个H×W注意图。这些地图分别与两个特征相乘。最后,把这两个特征相加得到最终的输出。

ABF模块可以根据输入特征生成不同的注意图。因此,这两个特征映射可以动态聚合。自适应求和优于直接求和,因为这两个特征映射来自网络的不同阶段,并且它们的信息是多样的。低级和高级功能可能集中在不同的分区上。注意力图可以更合理地聚合它们。更多实验结果见第4.4节。

HCL的详细情况如图3(b)所示。通常,我们使用L2距离作为两个特征映射之间的损失函数。L2距离可以有效地在同一级别的特征之间传递信息。但在我们的框架中,不同级别的信息被聚合在一起,以便向老师学习。琐碎的全局L2距离不足以传递混合级别的信息。

受[41]的启发,我们提出了HCL,利用空间金字塔池,将知识转移分离为不同层次的上下文信息。这样,信息在不同的抽象层次上得到了更好的提炼。结构非常简单:我们首先使用空间金字塔池从特征中提取不同层次的知识,然后使用L2距离分别提取它们之间的距离。尽管结构简单,但HCL适合我们的框架。更多实验结果见第4.4节。
请添加图片描述
表3。ImageNet上的结果。(a) MobileNet是学生,ResNet50是老师。(b) ResNet18是学生,ResNet34是老师。

四、实验

我们对各种任务进行实验。首先,我们将我们的方法与其他关于分类的知识提取方法进行比较。我们用不同的设置、不同的体系结构和数据集进行实验。此外,我们还将该方法应用于目标检测和实例分割任务中。我们的方法还持续大幅度地改进了基线模型。

4.1. 分类

数据集:(1)CIFAR-100包含50K训练图像,每类0.5K图像和10K测试图像。(2) ImageNet[3]是分类方面最具挑战性的数据集,它提供120万张图像用于培训,提供50K张图像用于1000多个类的验证。
实现细节:我们对不同的代表性网络架构在CIFAR-100数据集上进行了实验,包括VGG[27]、ResNet[7]、WideResNet[37]、MobileNet[26]和ShuffleNet[39,21]。我们使用与[28]相同的训练设置,除了线性增加初始学习率,并在[5]之后设置批量大小。

具体来说,我们用240个epoch训练所有模型,在前150个epoch之后,每30个epoch的学习率下降0.1。我们将MobileNet和ShuffleNet的学习率初始化为0.02,其他模型的学习率初始化为0.1。所有类型的batch-size为128。我们对所有模型进行三次训练,并报告平均精度。为了公平起见,以前的方法结果要么在以前的论文中报告(当训练设置与我们相同时),要么使用作者发布的代码与我们的训练设置一起获得。

在ImageNet上,我们使用标准的训练过程,对模型进行100个阶段的训练,并每30个阶段降低学习率。我们将学习率初始化为0.1,并将批量大小设置为256。

在CIFAR-100上的结果 :表1总结了教师和学生拥有相同风格架构的CIFAR-100结果。我们根据使用的特征将以前的方法分为不同的组。KD是唯一使用logits的方法。FitNet组的方法使用单层信息,而T组的方法使用多层信息。我们的方法采用多层特征和复习机制。它在所有体系结构上都优于以前的所有方法。

我们还对学生和教师有不同结构风格的设置进行了实验,结果如表2所示。OFD[8]和我们的方法使用多层蒸馏。它们的表现优于从最后一层蒸馏的情况,这表明我们的知识复习机制成功地缓解了之前强调的中间层或最后一层蒸馏条件[28]。

在ImageNet上的结果 :CIFAR100中的图像数量较少。因此,我们也在ImageNet上进行了实验,以验证我们的方法的可扩展性。我们分别对从ResNet50到MobileNet[11]和从ResNet34到ResNet18的两种蒸馏设置进行了实验。如表3所示,我们的方法再次优于所有其他方法。由于架构差异,设置(a)具有挑战性。但我们的方法的优势一直很突出。在设置(b)时,学生和教师之间的差距已经通过之前的最佳方法减小到了非常小的值2.14。我们进一步将其降低到1.70,实现了20%的相对性能改进。

4.2目标检测

我们还将我们的方法应用于其他计算机视觉任务。在目标检测方面,就像分类任务的过程一样,我们提取学生和教师的主干输出特征。更多细节见补充文件。我们使用具有代表性的COCO2017数据集[18]来评估我们的方法,并将最流行的开源报告Detectron2[33]作为我们的强基线。我们使用Detrctron2提供的最佳预训练模型作为教师。学生模型按照传统的标准训练政策进行训练[31]。所有性能均在COCO2017验证集上进行评估。我们在两个阶段和一个阶段的方法上进行实验。

由于只有少数方法[31,8]被认为是可行的检测方法,我们复制了流行的方法[9,25]和最新的方法[31]。表4给出了比较结果。我们注意到知识提炼方法, 例如KD和FitNet,也提高了检测性能,但收益有限。FGFI[31]直接设计用于检测,在这项任务上比其他方法效果更好。尽管如此,我们的方法还是大大优于它。

(表4和表5见原文。)

我们还改变了实验设置,以检查通用性。在两阶段方法FasterRCNN[24]中,我们改变了主干结构。同一风格的体系结构之间的知识提炼使ResNet18和ResNet50的mAP分别提高了3.49和2.43。它们是重要的数字。ResNet50和MobileNetV2之间的蒸馏仍然将基线从29.47提升到33.71。在单级探测器视网膜网[17]上,学生和教师之间的差距很小,我们的方法也将mAP提高了2.33。在具有挑战性的目标检测任务上的成功证明了我们方法的通用性和有效性。

请添加图片描述
表6。教师和学生不同阶段知识提炼的结果。该学生的基线结果为69.1。我们用红色标记低于基线的数字,用蓝色标记高于基线的数字。显然,利用教师较低层次的信息来监督学生更深层次的学习是有帮助的。

4.3. 实例分割

在本节中,我们将我们的方法应用于更具挑战性的实例分割任务。据我们所知,这是第一次将知识蒸馏方法应用于实例分割。我们还使用Detectron2[33]提供的强基线。我们以Mask R-CNN[6]为模型,在不同的主干架构之间进行提取。模型在COCO2017培训集上进行培训,并在验证集上进行评估。结果如表5所示。

我们的方法显著提高了实例分割任务的性能。对于同一风格的架构之间的升华,我们将ResNet18和ResNet50的性能分别提高了2.37和1.74,并相对减少了32%和51%的师生差距。即使是对不同风格的架构进行蒸馏,我们也最好将MobileNet V2提高到3.19。

我们的方法在所有图像分类、目标检测和实例分割任务上都表现良好,并完成了所有SOTA结果,这表明我们的方法具有显著的有效性和适用性。
请添加图片描述
表7。RM:拟议的复习机制(第3.1节)。RLF:剩余学习框架(第3.2节)。ABF:基于注意力的融合模块(第3.3节)。HCL:分层上下文丢失功能(第3.3节)。

4.4更多细节

跨阶段的知识蒸馏:我们分析了跨阶段知识转移的有效性。在CIFAR-100数据集上,我们使用ResNet20作为学生,ResNet56作为教师。ResNet20和ResNet56分为四个阶段。我们在学生身上选择不同的阶段,在老师身上选择不同的阶段来监督他们。结果汇总在表6中。

这些结果表明,从教师那里提取具有相同阶段信息的学生是最好的解决方案。这符合我们的直觉。此外,有趣的是,观察到来自较低层的信息也很有用。但是,从教师的更高层次中提炼出来的知识会对学生的训练产生负面影响。

这表明学生的更深层阶段是能够从较低层次的老师那里学习有用的信息。另一方面,对于学生的早期阶段来说,来自老师的更深层次和更抽象的特征过于复杂。这与我们的理解和我们提出的复习机制是一致的,该机制利用教师的浅层阶段来监督学生的深层阶段。

消融实验:进行了烧蚀实验,将烧蚀元件逐一添加,测量其效果。表7总结了方差和精度。在CIFAR100数据集上,我们使用WRN16-2作为学生,WRN40-2作为教师。基线是用学生和教师同一水平特征之间的二语距离来训练的。

通过我们提出的复习机制,结果比基线有所改善,如第二行所示,该行使用了图2(b)所示的繁琐结构。当我们用剩余学习框架进一步细化结构时,学生会获得更大的收益。基于注意的融合模块和分层上下文丢失功能在单独使用时也有很大的改进。当我们把它们聚集在一起,就会得到最好的结果。令人惊讶的是,他们甚至比老师更好。

五、结论

在本文中,我们从一个新的角度研究了知识蒸馏,并据此提出了一种复习机制,即使用教师的多个层次来监督学生的一个层次。与以前的SOTA相比,我们的方法在所有分类、目标检测和实例分割任务上都取得了显著的改进。我们只使用阶段的输出,总体上已经取得了不错的效果。
对于未来的工作,我们还将在阶段内使用功能。此外,我们还将在我们的框架中研究其他损失函数。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
将神经网络中的知识进行提取,是一种将模型的信息转化为更为简洁和易于理解形式的过程。 神经网络是一种由许多神经元组成的复杂计算模型,它们通过学习和调整权重来解决各种问题。然而,神经网络通常具有大量的参数和复杂的结构,这使得它们难以解释和应用到其他领域。因此,我们需要一种方法来提取和总结神经网络中的知识,以便更好地理解和应用这些模型。 在进行神经网络知识提取时,有几种常见的方法。一种常见的方法是使用可视化技术,如热力图、激活图和网络结构图等,来可视化网络中不同层的活动模式。这些可视化技术能够帮助我们发现网络中的模式和特征,并从中推断出网络的知识。 另一种方法是使用特征提取技术,如卷积神经网络(CNN)的滤波器、自动编码器的隐藏层和循环神经网络(RNN)的隐状态等,来提取网络学习到的重要特征。这些重要特征可以帮助我们更好地理解网络学习到的信息,并将其应用到其他问题中。 此外,还有一种被称为知识蒸馏的技术,它通过训练一个较小的模型来提取大型模型中的知识。知识蒸馏通过引入目标函数和额外的训练策略,使小模型能够学习到大模型中的重要知识,并在不损失太多性能的情况下将其应用到实际问题中。 总而言之,提取神经网络中的知识是一项重要任务,它能够帮助我们更好地理解和应用这些复杂的模型。通过可视化、特征提取和知识蒸馏等方法,我们能够从神经网络中提取出有用的信息,并将其应用到其他领域或解决其他问题中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值