知识蒸馏:好老师是耐心且一致的

Knowledge distillation: A good teacher is patient and consistent

9 Jun 2021

CVPR2022 Oral

作者:Lucas Beyer, Xiaohua Zhai, Amélie Royer, Larisa Markeeva, Rohan Anil, Alexander Kolesnikov

单位:Google Research, Brain Team

原文:https://arxiv.org/abs/2106.05237

开源:https://github.com/google-research/big_vision

摘要:在实现最先进性能的大型模型和实际应用中代价合理的模型之间,计算机视觉的差异越来越大。在本文中,我们解决了这个问题,并显著地弥合了这两种模型之间的差距。在我们的实证研究中,我们的目标不一定是提出一种新的方法,而是努力确定一种稳健有效的方法,使最先进的大型模型在实践中代价合理。我们证明,如果执行正确,知识蒸馏可以成为一种强大的工具,在不影响性能的情况下减少大型模型的大小。特别是,我们发现存在某些隐含的设计选择,这可能会极大地影响蒸馏的有效性。我们的主要贡献是明确确定了这些设计选择,而这些选择之前在文献中没有明确阐述。我们通过一项全面的实证研究来支持我们的发现,在广泛的视觉数据集上展示了令人信服的结果,特别是,我们为ImageNet获得了最先进的ResNet-50模型,该模型达到了82.8%的top-1准确度。我们将代码和模型发布在:https://github.com/google-research/big_vision

图1.我们证明,当我们耐心地训练大量时间段,并为教师和学生模型提供一致的图像视图(绿线和蓝线)时,蒸馏效果最佳。 这可以与使用预先计算的教师目标(黑线)进行蒸馏的常用设置形成对比,后者的效果要差得多。

1.    引言

大规模视觉模型目前在计算机视觉的许多领域占据主导地位。用于图像分类[7,23,40,42,49]、对象检测[8,27]或语义分割[53]的最新模型将模型大小推到了现代硬件允许的极限。尽管这些模型的性能令人印象深刻,但由于计算成本高,在实践中很少使用。相反,实践者通常使用更小的模型,如ResNet-50[23]或MobileNet[15],这些模型的运行成本要低几个数量级。根据Tensorflow Hub五位模型的下载数量,最小的ResNet-50[12]模型的下载次数明显多于较大的模型。因此,视觉方面的许多最新改进并没有转化为实际应用。

为了解决这个问题,我们将重点放在以下任务上:给定一个特定的应用程序和一个性能非常好的大型模型,我们的目标是在不影响性能的情况下将模型压缩为一个更小、更高效的体系结构。针对这项任务,有两种广泛使用的范例:模型修剪[19]和知识蒸馏[13]。模型修剪通过剥离大模型的各个部分来减小其大小。该过程在实践中可能具有限制性:首先,它不允许更改模型族,例如从ResNet更改为MobileNet。其次,可能存在与体系结构相关的挑战,例如,如果模型使用组归一化[47],修剪通道可能导致需要动态重新平衡通道组。

相反,我们专注于知识蒸馏方法,该方法没有这些缺点。知识蒸馏背后的理念是将教师模型(在我们的例子中是一个庞大而繁琐的模型或模型集合)“蒸馏”为一个小型而高效的学生模型。这是通过强制学生的预测(或内部激活)与教师的预测相匹配来实现的,因此自然允许作为压缩的一部分更改模型族。我们密切遵循[13]中的原始蒸馏设置,发现如果操作得当,效果惊人:我们将蒸馏解释为匹配教师和学生实现的函数的任务,如图2所示。通过这种解释,我们发现了用于模型压缩的知识蒸馏的两个原则。首先,教师和学生应该处理完全相同的输入图像视图,或者更具体地说,相同的裁剪和增强。其次,我们希望在大量支持点(support points)上匹配的函数能够很好地推广。使用混合[52]的一种激进变体,我们可以在原始图像流形之外生成支持点。考虑到这一点,我们通过实验证明,一致的图像视图、积极的增强和非常长的训练计划是通过知识蒸馏实现模型压缩的关键。

Second, we want the functions to match on a large number of support points to generalize well. Using an aggressive variant of mixup [52], we can generate support points outside the original image manifold.

尽管我们的发现很简单,但有多个原因可能会妨碍研究人员(和从业者)做出我们建议的设计选择。首先,为了节省计算量,特别是对于非常大的教师来说,很容易将教师对图像的激活预计算一次。正如我们将要展示的,这种固定的教师方法并不奏效。第二,知识蒸馏也常用于不同的环境(模型压缩除外),作者推荐不同甚至相反的设计选择[41,49,51],见图2。第三,知识蒸馏需要大量的epochs才能达到最佳性能,远远超过监督训练的常用时间。最后,在常规长度的训练中看起来不太理想的选择,在长期训练中反而表现最好,反之亦然。

在我们的实证研究中,我们主要集中于压缩[23]中的BiT-ResNet-152x2,其在ImageNet-21k数据集[37]上进行了预训练,并对相关数据集进行了微调。我们在一系列中小型数据集上将其蒸馏为标准的ResNet-50体系结构[12](但用组标准化代替批量标准化),而不影响准确性。我们在ImageNet[36]数据集上也取得了非常出色的结果:在总共9600个蒸馏epoch的情况下,我们将ImageNet上的新ResNet-50 SOTA设置为82.8%。这比[23]中的ResNet-50模型好4.4%,比文献中使用更复杂设置的最佳ResNet-50模型好2.2%[38]。最后,我们证明了当同时压缩和更改模型族时,我们的蒸馏配方也有效,例如,BiT ResNet体系结构到MobileNet体系结构。

图2.进行知识蒸馏时各种设计选择的示意图。 上左:教师收到固定图像,学生收到随机增强。 上右:教师和学生接受独立的图像增强。 下左:教师和学生收到一致的图像增强。 下右:教师和学生接收到一致的图像增强,加上输入图像流形通过在图像对之间包含线性段而扩展(称为mixup[52]增强)(input image manifold is extended by including linear segments between pairs of images)

2    实验装置

在本节中,我们将介绍本文中使用的实验设置和基准测试。给定一个在特定任务上具有高精度的大规模视觉模型(teacher,或T),我们的目标是在不影响其性能的情况下将该模型压缩为更小的模型(student,或S)。我们的压缩配方依赖于[13]中介绍的知识蒸馏,以及对训练设置中几个关键成分的仔细调查。

数据集、指标和评估协议。

我们在五个流行的图像分类数据集上进行了实验:Flower102[31]、pets[33]、food101[21]、sun397[48]和ILSVRC-2012(“ImageNet”)[36]。这些数据集跨越不同的图像分类场景;特别是,它们在类别数量上有所不同,从37到1000个类别,训练图像的总数从1020到1281167个训练图像。这使我们能够在广泛的实际设置中验证我们的蒸馏配方,并确保其鲁棒性。

作为衡量标准,我们始终报告分类精度。对于所有数据集,我们使用验证集来执行设计选择和超参数选择,并在测试集上报告最终结果。验证集和测试集的划分的定义在附录E中。

教师和学生模型。

在整篇论文中,我们选择使用BiT[23]中预训练的教师模型,该模型提供了大量在ILSVRC-2012和ImageNet-21k数据集上预训练的ResNet模型,具有最先进的精度。BiT-ResNets和标准ResNets之间唯一的显著差异是它们使用了组归一化层[47]和权重标准化[34],而不是使用批量归一化[17]。

我们特别关注BiT-M-R152x2架构:在ImageNet-21k上预训练的BiT-ResNet-152x2(152层,'x2'表示宽度倍增器)。该模型在各种视觉基准上表现出优异的性能,并且仍然可以使用它进行广泛的消融研究。部署成本很高(需要的计算量大约是标准ResNet-50的10倍),因此有效压缩该模型具有实际意义。对于学生的架构,我们使用了BiT-ResNet-50变体,为简洁起见,称为ResNet-50。

蒸馏损失。

我们使用教师预测的类别概率向量和学生的之间的KL散度作为蒸馏损失,正如最初在[13]中介绍的那样。对于原始数据集的硬标签,我们不使用任何额外的损失项:

    (1)

其中是一组类别。此外,如[13]中所述,我们引入了一个温度参数,用于在计算损失之前调整预测的softmax概率分布的熵:和。

训练设置。

为了优化,我们使用Adam优化器[22]对模型进行训练,并使用默认参数,除了初始学习率会作为要搜索的超参数。

我们使用了无热重启的余弦学习速率调度[28]。我们还扫描了我们所有实验的权重衰减损失系数(为此,我们使用了“解耦”权重衰减惯例[29])。为了稳定训练,我们在梯度的全局L2范数上启用阈值为1.0的梯度剪裁。最后,我们在所有实验中使用批次大小512,除了在ImageNet上训练的模型,在那里我们使用批次大小4096进行训练。对于剩余的超参数,我们将在下一节讨论它们的扫描范围以及相应的实验。

我们配方的另一个重要组成部分是mixup数据增强策略[52]。特别是,我们在“函数匹配”策略中引入了一种mixup变量(见第3.1.1节),其中我们使用了从[0,1]均匀采样的“渐近”混合系数,这可以被视为最初提出的β分布采样的极端情况。

除非另有明确规定,否则我们使用“inception-style”裁剪[39],然后将图像调整为固定的正方形大小。此外,为了使我们的广泛分析在计算上可行(总的来说,我们训练了数万个模型),我们使用相对较低的输入分辨率,并将输入图像调整为128×128大小,但我们的ImageNet实验使用标准输入224×224分辨率。

在我们的所有实验中,我们使用谷歌云TPU加速器[20]。我们还报告了批量大小、epochs或更新步骤总数,从而可以估计任何特定感兴趣实验的资源需求。代码和检查点是公开的https://github.com/google-research/big_vision

3    用于模型压缩的蒸馏

3.1    调查“一致且耐心的教师”假设

在本节中,我们对导言中提出的假设进行了实验验证,如图2所示,当蒸馏被视为函数匹配时,即当学生和教师看到输入图像的一致视图,通过mixup“填充”,学生使用长时间的训练计划进行训练时(即“老师”是耐心的)时,蒸馏效果最佳。

为了确保我们的发现是可靠的,我们对四个中小型数据集进行了非常彻底的分析,即Flower102[31](1020个训练图像)、Pets[33](3312个训练图像),Food101[21](约68k个训练图像)和SUN397[48](76k个训练图)。

为了消除任何混杂因素(confounding factors),对于每个单独的蒸馏设置,我们扫描学习率{0.0003、0.001、0.003、0.01}、权重衰减{1·10^-5、3·10^-5、1·10^-4、3·10^-4、1·10^-3}、蒸馏温度{1,2,5,10}的所有组合。在所有报告的图中,我们将每次运行显示为低不透明度曲线,并突出显示具有最佳最终验证精度的运行。我们在附录A中提供了相应的测试精度。

3.1.1    “一致”教学的重要性

首先,我们证明了一致性标准,即学生和教师看到相同的视图,是执行蒸馏的唯一方法,在所有数据集中,学生的表现都会一致达到峰值。在本研究中,我们定义了多个蒸馏配置,这些配置对应于图2中绘制的所有四个选项的实例,具有相同的颜色字体:

•    固定教师。我们探索了几个选项,其中教师对给定图像(预计算目标)的预测是恒定的。最简单(也是最差)的方法是fix/rs,在这种方法中,学生和教师都只需将图像大小调整为224^2px。fix/cc遵循一种更常见的方法,即为教师使用固定中心裁剪,为学生使用温和的随机裁剪。fix/ic_ens是一种大量数据扩充方法,其中教师的预测是1k初始裁剪的平均值,我们验证这一点提高教师的性能。学生还使用随机作物。后两种设置类似于“嘈杂学生”论文[49]中的输入噪声策略。

•    独立噪声。我们以两种方式实例化了这一常用策略:ind/rc分别为教师和学生计算两个独立的轻度随机裁剪,而ind/ic使用较重的inception裁剪。[41]中使用了类似的设置。

•    一致性教学。在这种方法中,我们只随机裁剪图像一次,无论是轻度随机裁剪(same/rc)还是重度inception裁剪(same/ic),并将此相同裁剪用于学生和教师的输入。

•    函数匹配。这种方法扩展了一致性教学,通过mixup(mix)扩展图像输入流形,再次为学生和教师提供一致的输入。为了简洁起见,我们有时将这种方法称为“FunMatch”。

图3显示了所有这些配置下Flower102数据集上的10000条epoch训练曲线。这些结果清楚地表明,“一致性”是关键:所有“不一致”蒸馏设置的分数都较低,而一致性设置显著提高了学生的成绩,函数匹配方法效果最好。此外,训练损失表明,对于如此小的数据集,使用固定教师会导致严重的过度拟合。相反,函数匹配在训练集上从未达到这样的损失,而在验证集上的推广效果更好。由于空间限制,我们在附录C中显示了其他数据集和训练持续时间的类似结果。

图3.Flowers102数据集“一致性”必要性的实验验证。 颜色与图2和第3.1.1节中介绍的不同知识蒸馏设计选择相对应。 请注意,虽然固定的教师设置可以显著降低蒸馏损失,但会导致学生不能很好地泛化。 相反,一致的教学和函数匹配方法会显著提高学生的成绩。附录C报告了更多数据集的类似结果。

3.1.2    “耐心”教学的重要性

人们可以将蒸馏解释为监督学习的一种变体,其中标签(可能是软的)由强大的教师模型提供。当对单个图像视图(预先)计算教师预测时,尤其符合这种解释。这种方法继承了标准监督学习的所有问题,例如,激进的数据增强可能会扭曲实际图像标签,而温和的增强可能会导致过度拟合。

然而,如果我们将蒸馏理解为函数匹配,情况就会发生变化,至关重要的是,要确保为学生和教师提供一致的输入。在这种情况下,我们可以非常激进地进行图像增强:即使图像视图过于扭曲,我们仍将在匹配此输入上的相关函数方面取得进展。因此,我们可以在增强上做更多的尝试,并通过进行激进的图像增强来避免过拟合,如果是这样的话,可以进行很长时间的优化,直到学生的函数接近教师的函数。

在图4中,我们根据经验证实了我们的直觉,其中对于每个数据集,我们展示了在不同训练epoch训练最佳函数匹配学生(根据验证)期间测试精度的演变。老师被显示为红线,并且学生总是在经历了比在监督训练设置中使用的次数多得多的epoch之后达到老师模型的精度。至关重要的是,即使我们优化了100万个epoch,也没有过度拟合。

图4.蒸馏时需要耐心和一致性。最终,老师将被匹配;这在不同规模的各种数据集中都是如此。

我们还训练和调整了另外两条基线,以供参考:使用数据集原始硬标签从头开始训练ResNet-50,以及迁移在ImageNet-21k上预训练的ResNet-50。对于这两个基线,我们严格调整学习率和权重衰减,如第3.1节所述。使用原始标签从头开始训练的模型大大落后于我们的学生模型。迁移模型的表现要好得多,但最终我们的学生模型还是会胜出。

值得注意的是,相对较短但通常持续100个epoch的训练会导致比迁移基线差得多的表现。总的来说,ResNet-50学生耐心且一致地与非常强大但计算量大的ResNet-152x2教师进行全面匹配。

3.2    扩展到ImageNet

基于我们从前面章节中获得的见解,我们现在研究拟议的蒸馏配方如何扩展到广泛使用且更具挑战性的ImageNet数据集[36]。按照与之前相同的方案,在图5(左)中,我们报告了三种蒸馏设置的整个训练过程中的学生精度曲线:(1)固定教师,(2)一致教学,(3)函数匹配。作为参考,我们的基础教师模型达到了83.0%的最高精度。Fixed teacher再次遭受长时间的训练,并在经历了600个阶段后开始过度适应。相反,随着训练时间的增加,一致的教学方法不断提高性能。由此我们可以得出结论,一致性是使蒸馏在ImageNet上工作的关键,类似于之前讨论的中小型数据集上的行为。

图5.上:三个蒸馏装置的ImageNet上的最高精度: (1) 固定教师;(2) 一致性教学;(3) 函数匹配(“FunMatch”)。 浅颜色曲线显示整个训练的准确性,而实体散点图是最终结果。 固定教师的学生最终会饱和并过拟合。 一致性教学和函数匹配都不会表现出过拟合或饱和。 中间:通过Shampoo preconditioning降低优化成本;对于1200个epoch,它能够匹配4800个历元的基线训练。 右图:用预训练权重初始化学生可以提高短期训练,但会损害最长的训练计划

与简单一致的教学相比,在短时间内,函数匹配的表现稍差,这可能是由于拟合不足。但是,当我们增加训练计划的长度时,函数匹配的改进变得显而易见:例如,仅使用1200个epoch,它就能够匹配4800个epoch的一致教学性能,从而节省75%的计算资源。最后,对于我们实验的最长时间的函数匹配,vanilla ResNet-50 student架构在ImageNet上实现了82.31%的顶级精度。

3.3    跨不同输入分辨率蒸馏

到目前为止,我们假设学生和教师都接收到相同的标准输入分辨率224px。但是,可以将不同分辨率的图像传递给学生和教师,同时保持一致:只需对原始高分辨率图像执行裁剪,然后根据学生和教师的不同调整其大小:他们的视图将保持一致,尽管分辨率不同。这种洞察可以用于向更好、更高分辨率的教师学习[23,43],也可以用于训练更小、更快的学生[2]。我们研究了两个方向:首先,在[2]之后,我们训练了一名输入分辨率为160px的ResNet-50学生,同时保持教师分辨率不变(224px)。这导致模型速度提高了两倍,仍然达到了80.49%的顶级精度(见表1),这比[2]使用一系列修改在该分辨率下的最佳精度为78.8%要好。

其次,在[23]之后,我们蒸馏了一个分辨率为384px的教师(达到83.7%的顶级精度),这次保持了学生分辨率不变,即224px的输入图像。如表1所示,与基准教师相比,这在整体上提供了适度但一致的改进。

3.4    优化:二阶预处理器second order preconditioner(Shampoo)提高了训练效率

我们观察到,“函数匹配”的角度的优化效果因为要训练很长的时间造成了计算瓶颈。直觉上,我们认为优化困难源于这样一个事实,即用多变量输出拟合一般函数比用固定的图像级标签拟合要困难得多。因此,我们对更强大的优化器是否能够更好地完成任务进行了初步探索。为此,我们将基础优化器从Adam更改为Shampoo[1],使用二阶预处理器。在图5(中间)中,我们观察到Shampoo在1200个时间段内达到了Adam在4800个时间段达到的相同测试精度,并且步长时间开销最小。总的来说,我们在所有实验环境中都观察到了与Adam相比的持续改善。关于Shampoo优化器的实验细节见附录D。

3.5    优化:良好的初始化可以改善短期训练,但最终会落后

受迁移学习文献[11,23]和[38]的启发,良好的初始化能够显著缩短训练成本并获得更好的解决方案,我们尝试使用预训练的BiT-M-ResNet50权重初始化学生模型,结果如图5(下)所示。

当蒸馏持续时间较短时,BiT-M初始化提高了2%以上。然而,当训练计划足够长时,差距就会缩小。我们的观察结果与[11]的结论相似。从1200个epoch开始,从头开始蒸馏与BiT-M初始化学生匹配,并在4800个epoch略微超过它。

3.6    跨不同模型族蒸馏

除了为学生和教师使用不同的输入分辨率之外,原则上没有任何东西阻止我们完全使用不同家族的架构,因为我们一贯的耐心教师方法仍然适用于这种情况。这使我们能够有效地从更强大、更复杂的教师(如集成模型)那里迁移知识,同时保持ResNet50学生的简单架构,还可以将大型ResNet模型的最先进性能迁移到更高效的架构(如MobileNet)。我们通过两个实验证明了这一点。首先,我们使用两个模型的集合作为教师,并表明这进一步提高了性能。其次,我们训练了一名MobileNet v3[14]学生,并获得了迄今为止报道的最好的MobilenetV3模型。

MobileNet学生。

我们使用MobileNet v3(大型)作为学生,对于大多数实验,我们选择使用GroupNorm(默认为8组)而不是BatchNorm的变体。我们没有使用原始文件中使用的任何训练技巧,我们只是执行函数匹配。我们的学生在300个epoch后达到74.60%,在1200个epoch后为76.31%,从而获得了最佳发布的MobileNet v3模型。更多结果见附录A。

集成模型教师。

我们现在尝试一个更好的老师:我们创建了一个模型,该模型包括以224px分辨率默认老师的logits,以及上一节的384px分辨率老师的logits的平均值。这是一种不同的、虽然密切相关的教师类型,其能力明显更强,但速度也较慢。在我们尝试的每个训练长度(附录A),该教师的学生都比我们默认的教师的学生要好,并且在9600个epoch后,达到了82.82%的最先进的top-1 ImageNet准确率。

3.7    与文献结果的比较。

现在,当我们介绍我们的关键实验时,我们将我们的最佳ResNet-50模型与文献中可用的最佳ResNet-50模型进行了比较,见表2。特别是,对于224×224输入分辨率,我们将其与[12]中的原始ResNet-50模型、在ImageNet-21k数据集[37]上预训练的BiT-M-ResNet-50以及[38]中的先前最先进模型进行了对比。对于160×160输入分辨率,我们将其与[2]中最近的竞争模型进行比较。我们观察到,我们的蒸馏配方在这两种情况下都领先于最先进的性能,并且在很大程度上领先。

3.8    蒸馏“域外”数据

通过将知识蒸馏视为“函数匹配”,可以得出一个合理的假设,即可以对任意图像输入进行蒸馏。在本节中,我们研究这一假设。

我们在pets和sun397数据集上进行实验。我们使用我们的蒸馏配方,使用来自food101和ImageNet数据集的域外图像蒸馏pets和sun397模型,为了参考,还使用来自pets和sun397数据集的“域内”图像进行蒸馏。

图6总结了我们的结果。首先,我们观察到使用域内数据进行蒸馏效果最好。有些令人惊讶的是,即使图像完全不相关,蒸馏在一定程度上仍然有效,尽管结果会变得更糟。例如,这意味着学生模型可以通过仅看到食物图像软标签来对宠物粗分类(30%准确度)as breeds of pets.(This, for example, means that the student model can learn to classify pets with roughly 30% accuracy by only seeing food images (softly) labeled as breeds of pets)

最后,如果蒸馏图像与实际的“域内”图像(如Pets和ImageNet,或sun397和ImageNet)有些关联或重叠,则结果可能与使用“域内”(in-domain)数据一样好(或几乎一样好),但可能需要更长的优化计划。

图6.在不同数据源上蒸馏pet和sun397数据集。 结果表明,对完全无关的图像进行蒸馏在一定程度上有效,尽管最终结果相对较低。 对“域内”数据进行蒸馏是最好的,对相关/重叠图像进行蒸馏可以很好地工作,但可能需要较长的训练计划。

3.9    带增强的微调ResNet-50

为了确保我们观察到的最先进的蒸馏结果不是我们精心调整的训练调试的产物,即非常长的时间表和激进的mixup增强,我们训练了相应的基线ResNet-50模型。更具体地说,我们重复使用蒸馏训练设置,在没有蒸馏损失的情况下对ImageNet数据集进行监督训练。为了进一步加强我们的基线,我们还尝试了带有动量的SGD优化器,这通常比Adam优化器更适合ImageNet。

结果如图7所示。我们观察到,带标签和无蒸馏损失的训练会导致明显更差的结果,并且在长期训练下开始过拟合。因此,我们得出结论,蒸馏对于使我们的训练配方工作良好是必要的。

4    相关工作

有许多压缩神经网络的范例。其中之一是剪枝,其总体思想是丢弃训练模型的一部分,同时使其更有效,并且在性能上几乎没有或根本没有损失。模型修剪有许多不同的风格:它可以是非结构化的(即专注于修剪单个连接)或结构化的(例如专注于修剪更大的构建块,例如整个通道)。它还可以附带或不附带额外的微调步骤,也可以是迭代的或不迭代的。对这一主题的平衡和公平的讨论超出了本文的范围,因此我们请感兴趣的读者参考最近的概述作为起点[4,45]。

知识蒸馏[13]是一种通过优化学生模型以匹配教师模型的某些输出(或中间激活),将知识从一个模型(教师)迁移到另一个模型的技术。这种技术用于许多不同的环境,例如半监督学习[41,49],甚至是自监督学习[9]。在本文中,我们只考虑将知识蒸馏作为模型压缩的工具。蒸馏的效率已经在许多作品中得到了展示,例如[5,35],在学生和教师架构的不同深度/宽度模式下,甚至与其他压缩技术相结合[30]。值得注意的是,MEIN[38]建议将大型ResNet教师集合蒸馏到较小的ResNet学生中,以对抗性损失,并取得了很好的效果。我们的工作与压缩知识蒸馏方面的类似工作的主要区别在于,我们的方法同时是最简单和性能最好的:我们不引入任何新组件,而是发现正确的训练设置足以获得最先进的结果。

权重量化[18,26,32,46]和分解[6,10,24,44]旨在通过用轻量级近似代替大型矩阵运算来加速和减少CNN的内存占用。这条研究路线在很大程度上与这项工作正交,通常可以与本文中的方法相结合,尤其是在最终模型部署阶段。我们将这一主题的探索留给未来的研究。

最后,还有一系列工作,从不同的角度接近我们的目标(紧凑和高性能的模型),重点是改变架构,从头开始训练好的紧凑模型,因此无需压缩大型模型。一些值得注意的例子包括ResNeXt[50]、挤压和激励网络[16]和选择性核[25],它们提出了改进,以提高固定计算预算的模型精度。这些改进是对本文所述研究问题的补充,可以进行复合。

5    结论

我们没有提出一种新的模型压缩方法,而是密切关注现有的常识蒸馏过程,并确定如何在模型压缩的背景下使其真正工作良好。我们的主要发现源于对知识蒸馏的具体解释:我们建议将其视为一项函数匹配任务。这不是知识蒸馏的典型观点,因为通常情况下,它被视为“一个优秀的教师会产生更好的(软)标签,有助于培养更好、更小的学生模型”。

根据我们的解释,我们同时纳入了三个要素:(i)确保教师和学生始终获得相同的输入,包括噪声,(ii)引入激进的数据增强,以丰富输入图像流形(通过mixup),以及(iii)使用非常长的训练计划。尽管我们的配方中的每一个组成部分看起来都很普通,但我们的实验表明,必须将它们结合起来才能获得最佳结果。

我们将非常大的模型压缩为更实用的ResNet-50体系结构,获得了非常强的经验结果。我们相信,从实用的角度来看,它们非常有用,并且是未来压缩大规模模型研究的一个非常强大的基线。

感谢。

我们感谢Daniel Keysers和Frances Hubis对本文的宝贵反馈;Ilya Tolstikhin和Google Brain团队提供了一个支持性的研究环境

A     完整的结果表

我们在表3中提供了我们在ImageNet上的实验的完整总结,并在我们认为没有必要运行的设置上加了一个“-”标记,因为成本超过了潜在的见解。

此外,表4给出了图4所示模型的数值结果,这是我们在128px分辨率的四个较小数据集上的最佳模型(根据验证),以及基线和参数。

B    BiT模型下载统计

在图8中,我们显示了不同大小模型的下载统计信息:ResNet50、ResNet50x3、ResNet101、ResNet101x3和ResNet152x4。很明显,最小的ResNet50模型使用最多,与其他模型相比有很大差距。从业者的行为激励我们努力获得最佳的ResNet50模型。

C    更多的一致性图

在图9至图12中,我们展示了所有数据集和所有训练持续时间的“一致性”图(参见主要论文中的图3)。值得注意的是,(相对)短时间运行可能会在最佳方法上提供欺骗性信号,并且只有在添加“耐心”的情况下,例如,当长时间蒸馏时,才能清楚地看出全函数匹配方法是最佳选择。

D    Shampoo优化细节

对于所有实验,学习速率计划是一个最多1800步的线性预热,然后是衰减至零的二次衰减。由于分块技巧(每个preconditioner为最多128x128),Shampoo的开销非常小,并且每一步inverse都以分布式方式在TPU核心上运行,具有nesterov动量。这些设置与[1]中的训练配方相同,用于在大批量下从零开始有效地在ImageNet上训练ResNet50架构。所有实验均使用0.000375的权重衰减。

E     训练、验证和测试集划分

在整个实验过程中,我们依靠tensorflow数据集库(https://www.tensorflow.org/datasets)访问所有数据集。该库的一个巨大优势是,它能够以统一且可重复的方式访问不同的数据集。为此,我们在表5中报告了我们的训练、验证和测试划分(按照库的符号)

F    ImageNet蒸馏的配置文件

我们根据big vision[3]约定,给出了在ImageNet上执行蒸馏的配置

你可能感兴趣的:(知识蒸馏:好老师是耐心且一致的)