DeiT

Facebook 提出Data-efficient image Transformers(DeiT),需要更少的数据和更少的计算资源就能生成高性能的图像分类模型。仅用一台 8-GPU 的服务器对 DeiT 模型进行 3 天训练,就在 ImageNet 基准测试中达到了 84.2% 的 top-1 准确率,并且训练阶段未使用任何外部数据,该结果可以与顶尖的卷积神经网络(CNN)媲美。

论文地址:https://arxiv.org/abs/2012.12877v2

GitHub 地址:https://github.com/facebookresearch/deit

摘要:最近,纯粹基于注意力的神经网络被用来处理图像理解任务,如图像分类。然而,这些视觉Transformer使用昂贵的基础设施预训练了数亿张图像,从而限制了它们的采用。

在这项工作中,我们仅通过在Imagenet上进行训练来生产具有竞争力的无卷积Transformer。我们用不到3天的时间在一台电脑上训练他们。在没有外部数据的情况下,我们的参考视觉Transformer(86M参数)在ImageNet上实现了83.1%的top-1精度(单裁剪评估)。

更重要的是,我们引入了针对Transformer的师生策略。它依赖于一个蒸馏标记(distillation token),确保学生通过注意力从老师那里学习。我们展示了这种基于令牌的蒸馏(token-based distillation)的兴趣,特别是当使用convnet作为教师时。这使我们能够报告在Imagenet(我们获得高达85.2%的准确率)和迁移到其他任务时与ConvNet竞争的结果。我们共享我们的代码和模型。

1 引言

卷积神经网络已经成为图像理解任务的主要设计范式,正如最初在图像分类任务中所展示的那样。他们成功的一个因素是提供了一个大型训练集,即Imagenet[13,42]。受自然语言处理中基于注意的模型的成功[14,52]的推动,人们对在convnet中利用注意机制的架构越来越感兴趣[2,34,61]。最近,一些研究人员提出了混合架构,将Transformer成分移植到CONVNET中,以解决视觉任务[6,43]。

Dosovitskiy等人[15]引入的视觉Transformer(ViT)是一种直接继承自自然语言处理[52]的架构,但应用于以原始图像块作为输入的图像分类。他们的论文展示了使用大型私有标记图像数据集(JFT-300M[46],3亿张图像)训练Transformer的出色结果。论文的结论是,Transformer“在数据量不足的情况下不能很好地泛化”,这些模型的训练涉及大量的计算资源。

在本文中,我们在一个8-GPU节点上用两到三天的时间(53小时的预训练和20小时的微调)训练一个vision transformer,这与具有相似数量的参数和效率的ConvNet相比有竞争力。它使用Imagenet作为唯一的训练集。我们建立在Dosovitskiy等人[15]的视觉Transformer架构和timm库[55]中的改进基础上。使用我们的Data-efficient image Transformers(DeiT),我们报告了比以前结果的巨大改进,见图1。我们的消融研究详细说明了成功训练的超参数和关键因素,如重复增强( repeated augmentation)。

我们解决另一个问题:如何蒸馏这些模型?我们介绍了一种基于令牌的策略,该策略专门针对Transformer,由DeiT*表示,并表明它有利于取代通常的蒸馏

总之,我们的工作做出了以下贡献:

•    我们表明,我们的神经网络不包含卷积层,可以在没有外部数据的情况下,与ImageNet上的最新技术相比,获得具有竞争力的结果。在三天内,在单个节点上使用4个GPU学习它们1。我们的两个新模型DeiT-S和DeiT-Ti的参数较少,可以看作是ResNet-50和ResNet-18的对应物。(注释1:如果用8个GPU的话,我们可以加速对大的DeiT-B模型的训练,2天内完成)

•    我们介绍了一种基于蒸馏令牌的新蒸馏过程,蒸馏令牌(tocken)与类令牌的作用相同,只是其目的在于再现教师估计的标签。这两个tokens通过注意在Transformer中交互。这种特定于Transformer的策略大大优于香草蒸馏法。

•    有趣的是,通过我们的蒸馏,图像Transformer从convnet中学到的东西比从另一个具有类似性能的Transformer中学到的要多。

•    我们在Imagenet上预学习的模型在转移到不同的下游任务(如细粒度分类)时,在几个流行的公共基准上具有竞争力:CIFAR-10、CIFAR-100、Oxford-102 flowers、Stanford Cars和iNaturalist-18/19。

本文的组织结构如下:第2节中,我们回顾了相关工作,并在第3节中重点介绍了用于图像分类的Transformer。我们将在第4节介绍Transformer的蒸馏策略。实验第5节提供了对convnets和最新Transformer的分析和比较,以及对Transformer特定蒸馏的比较评估。第6节详细介绍了我们的训练计划。它包括对我们的数据高效训练选择的广泛消冗,这使我们对DeiT中涉及的关键要素有了一些了解。我们在第7节中得出结论。

图1:我们的方法在Imagenet上的吞吐量和准确性与仅在Imagenet1k上训练的EfficientNets进行比较。吞吐量是指在V100 GPU上每秒处理的图像数。DeiT-B与VIT-B相同,但训练更适合于数据匮乏的情况。这是一台机器在几天内学会的。符号*~表示使用我们的Transformer专用蒸馏装置训练的模型。有关详细信息和更多型号,请参见表5。

2    相关工作

图像分类    是计算机视觉的核心,它经常被用作衡量图像理解进展的基准。任何进展通常转化为其他相关任务(如检测或分割)的改进。自2012年的AlexNet[32]以来,ConvNet一直主导着这一基准,并已成为事实上的标准。ImageNet数据集的最新进展[42]反映了卷积神经网络结构和学习的进展[32、44、48、50、51、57]。

尽管有几次尝试使用Transformer进行图像分类[7],但到目前为止,它们的性能还不如ConvNet。然而,结合了convnet和transformer(包括自注意机制)的混合架构最近在图像分类[56]、检测[6,28]、视频处理[45,53]、无监督对象发现[35]和统一文本视觉任务[8,33,37]方面展示了具有竞争力的结果。

最近,Vision transformers(ViT)[15]在不使用任何卷积的情况下,填补了ImageNet与最新技术的差距。这种性能是显著的,因为用于图像分类的convnet方法得益于多年的调整和优化[22,55]。然而,根据这项研究[15],为了使学习到的Transformer有效,需要对大量的数据进行预训练。在本文中,我们实现了强大的性能,而不需要大量的训练数据集,即仅使用Imagenet1k。

Transformer架构    Vaswani等人[52]为机器翻译引入的Transformer架构目前是所有自然语言处理(NLP)任务的参考模型。convnets在图像分类方面的许多改进都受到Transformer的启发。例如,SE挤压和激发[2]、SK选择内核[34]和Split-Attention网络[61]利用了类似于Transformer自注意(SA)的机制。

知识蒸馏    Hinton等人[24]介绍的知识蒸馏(KD)指的是一种训练范式,其中学生模型利用来自强大教师网络的“软”标签。这是教师softmax函数的输出向量,而不仅仅是分数的最大值(分数的最大值给出的是“硬”标签)。这样的训练提高了学生模型的性能(或者,可以将其视为将教师模型压缩为更小的模型(即学生模型)的一种形式)。一方面,教师的软标签将具有与标签平滑类似的效果[58]。另一方面,如Wei等人[54]所示,教师的监督会受到数据增扩的影响,这有时会出现真实标签和图像之间的错位。例如,给定一张图像,其标签的“猫”,而图像内容是一只小猫在一个大的景观的角落里。如果数据增扩的裁剪将图像中的猫裁掉了,它会隐式地更改图像的标签。如果教师模型使用硬的方式利用归纳偏置,知识蒸馏能以一种软的方式将归纳偏置[1]迁移给学生模型。例如,通过使用卷积模型作为教师,Transformer模型为学生,卷积导致的归纳偏置对Transformer可能是有用的。在本文中,我们研究了以卷积为教师和以Transformer为教师分别对Transformer学生的整理。我们介绍了一种新的Transformer蒸馏方法,并展示了其优越性。

3    视觉Transformer:概述

在本节中,我们简要回顾了与视觉Transformer相关的预备知识[15,52],并进一步讨论了位置编码和分辨率。

多头自注意层(MSA)。

注意机制是基于可训练的成对的(键,值)向量对(The attention mechanism is based on a trainable associative memory with (key, value) vector pairs )。一个查询向量q∈ R^d使用内积与一组k个键向量(打包成矩阵K∈ R^ {k×d})匹配K∈ R^ {k×d})。然后使用softmax函数对这些内积进行缩放和归一化,以获得k个权重。注意力的输出是一组k个值向量(打包成矩阵V∈ R^ {k×d})的加权和。对于N个查询向量序列(打包成矩阵Q∈ R^ {N×d}),它输出矩阵(形状为为N×d):

{\mathrm{Attention}}(Q,K,V)={\mathrm{Softmax}}(QK^T/\sqrt{d}  )V    (1)

其中,Softmax函数应用于输入矩阵的每一行,\sqrt{d} 提供了适当的缩放。在[52]中,提出了自注意层。查询、键和值矩阵本身是从N个输入向量序列(打包成矩阵X\in R^{N\times D})使用线性变换W_QW_KW_V和约束k=N计算出的:Q=XW_QK=XW_KV=XW_V,这意味着注意力发生在所有输入向量之间。

最后,通过考虑h个注意“头”,即应用于输入的h个自注意函数,定义了多头自注意层(MSA)。每个头部提供一个大小为N×d的序列。这h个序列被重新排列成一个N×dh序列,该序列被线性投影成N×D

用于图像的Transformer块。

为了获得如[52]所示的完整Transformer块,我们在MSA层的顶部添加了一个前馈网络(FFN)。该FFN由两个线性层组成,两线性层中间隔着Gelu激活函数[23]。第一个线性层将维度从D扩展到4D,第二个线性层将维度从4D缩减回D。由于跳连,MSA和FFN都作为残差运算符运行,并且具有层归一化[3]。

为了让Transformer处理图像,我们的工作建立在ViT模型的基础上[15]。它是一个简单而优雅的架构,可以像处理一系列输入token一样处理输入图像。将固定大小的输入RGB图像分解为N个分辨率固定为16×16的图像块(N=14×14)。每个图像块被一个线性层投影,将其最终维度转换为3×16×16=768。

上述Transformer块对于图块嵌入的顺序是排列不变的,因为没有考虑它们的相对位置。位置通过固定[52]或可训练[18]位置嵌入组件来利用位置信息。它们在第一个transformer块之前添加到图块token,然后将图块token馈送到transformer块堆栈。

类别token(The class token)

类别token是一个可训练向量,在第一层之前append to the patch tokens,它通过Transformer层,然后用线性层投影以预测类。类别tokentoken继承自NLP[14],与计算机视觉中用于预测类的典型池化层不同。因此,Transformer处理维度为DN+1个tokens的批处理,其中只有类向量(class vector)用于预测输出。该架构迫使自注意在图块token和类别token之间传播信息:在训练时,监督信号仅来自类嵌入,而图块token是模型的唯一变量输入。

修复跨分辨率的位置编码。(Fixing the positional encoding across resolutions.)

Touvron等人[50]表明,最好使用较低的训练分辨率,并以较大的分辨率微调网络。这加快了完整的训练,并提高了当前数据增强方案下的准确性。当增加输入图像的分辨率时,我们保持图块分辨率不变,因此输入图块的数量N会发生变化。由于transformer blocks和类别token的架构,不需要修改模型和分类器来处理更多token。相比之下,需要调整位置嵌入,因为位置嵌入有N个,每个图块一个。Dosovitskiy等人[15]在改变分辨率时对位置编码做插值,并证明该方法适用于随后的微调阶段。

4    注意力的蒸馏

在本节中,我们假设我们可以使用一个强大的图像分类器作为教师模型。它可以是convnet,也可以是混合的分类器(a mixture of classifiers)。我们解决的问题是如何利用这个老师学习Transformer。正如我们将在第5节中通过比较精度和图像吞吐量之间的权衡所看到的,用Transformer代替卷积神经网络是有益的。本节涵盖两个蒸馏轴:硬蒸馏与软蒸馏,以及经典蒸馏与蒸馏token。

软蒸馏

软蒸馏[24,54]最小化了教师模型和学生模型的软最大值之间的Kullback-Leibler散度。

假设Z_t是教师模型的logits,Z_s是学生模型的logits。我们用τ表示蒸馏温度,λ表示平衡Kullback–Leibler散度损失(KL)和真值标签y上的交叉熵(LCE)的系数,ψ表示softmax函数。蒸馏的损失是:

硬标签蒸馏。

我们介绍了蒸馏法的一种变体,我们把老师的hard decision视为标签。假设y_t=\mathrm{argmax}_{c} Z_{t} (c)是教师的hard decision,硬标签蒸馏相应的损失为:

对于给定的图像,教师提供的硬标签会随着数据增强的改变而改变。我们将看到,这种选择比传统的选择更好,没有超参且概念更简单:教师预测y_t与真正的标签y起着相同的作用。

还请注意,硬标签也可以通过标签平滑转换为软标签[47],标签平滑是:真实标签的概率为1− ε、 剩下的ε在剩下的类中共享。在我们所有使用真实标签的实验中,我们将该参数固定为ε=0.1。

蒸馏token。

我们现在关注我们的提案,如图2所示。我们在初始嵌入(图块token和类别token)中添加了一个新的token,即蒸馏token。我们的蒸馏token与类别token类似:它通过自注意与其他嵌入交互,并在最后一层之后由网络输出。其目标是由蒸馏损失的组成部分给出。蒸馏嵌入允许我们的模型从教师的输出中学习,就像在常规蒸馏中一样,同时保持对类别嵌入的补充。

图2:我们的蒸馏过程:我们只是简单地包含一个额外的蒸馏token。它通过自注意层与类别token和图块token交互。此蒸馏token与类别token的使用方式类似,只是在网络输出上,其目标是再现教师预测的(硬)标签,而不是真实标签。输入给transformer的类别token和蒸馏token都是通过反向传播习得的。

有趣的是,我们观察到习得的类别token和蒸馏token收敛到不同的向量:这些token之间的平均余弦相似性等于0.06。随着在每一层计算类和蒸馏嵌入,它们通过网络逐渐变得更相似,一直到最后一层,它们的相似性很高(cos=0.93),但仍然低于1。这是意料之中的,因为它们旨在产生相似但不完全相同的目标。

我们验证了我们的蒸馏token向模型中添加了一些东西,而不是简单地添加与同一目标标签相关联的额外类别token:我们使用一个带有两个类别token的Transformer来代替教师伪标签。即使我们随机且独立地初始化它们,在训练期间它们也会收敛到同一个向量(cos=0.999),并且输出嵌入也是准相同的( quasi-identical)。这个额外的类别token不会给分类性能带来任何影响。相比之下,我们的蒸馏策略比香草蒸馏基线有显著的改进,正如我们在第5.2节中的实验所验证的那样。

通过蒸馏进行微调。

在更高分辨率的微调阶段,我们使用真实标签和教师预测。我们使用具有相同目标分辨率的教师,通常通过Touvron等人[50]的方法从低分辨率教师处获得。我们也测试只使用真实标签的微调,但这会降低教师模型带来的增益,并导致绩效下降。

使用我们的方法进行分类:联合分类器。

在测试时,transformer生成的类别嵌入或蒸馏嵌入都与线性分类器关联,并且能够推断图像标签。然而,我们的参考方法是这两个单独的头部的后期融合( late fusion),为此我们添加两个分类器的softmax输出以进行预测。我们将在第5节中评估这三个选项。

5    实验

本节介绍了一些分析实验和结果。我们首先讨论我们的蒸馏策略。然后对比分析了convnet和vision transformer的效率和准确性。

5.1    Transformer型号

如前所述,我们的架构设计与Dosovitskiy等人[15]提出的架构设计相同,没有卷积。我们唯一的区别是训练策略和技巧。此外,在预训练阶段,我们不使用MLP头,只使用线性分类器。为了避免任何混淆,我们参考了ViT在先前工作中获得的结果,并使用DeiT的前缀。如果未指定,DeiT指的是我们的参考模型DeiT-B,它与ViT-B具有相同的架构。当我们以更大的分辨率微调DeiT时,我们在末尾附加产生的操作分辨率,例如DeiT-B↑384最后,当使用我们的蒸馏过程时,我们用一个alembic符号DeiT*~。

ViT-B(因此也包括DeiT-B)的参数固定为D=768、h=12和d=D/h=64。我们引入了两个较小的模型,即DeiT-S和DeiT-Ti,对于这两个模型,我们在保持d不变的情况下改变头部的数量。表1总结了我们在本文中考虑的模型。

表1:DeiT架构的变体。较大的模型DeiT-B与ViT-B具有相同的结构[15]。模型中唯一不同的参数是嵌入维度和头数,我们保持每个头的维度不变(等于64)。较小的模型具有较低的参数计数和较快的吞吐量。对分辨率为224×224的图像测量吞吐量。

5.2    蒸馏

我们的蒸馏方法产生了一个视觉Transformer,它与最佳的卷积网络在精度和吞吐量之间的权衡一致,见表5。有趣的是,在准确性和吞吐量之间的权衡方面,蒸馏模型的表现优于它的老师。我们在ImageNet-1k上的最佳模型具有85.2%的top-1精度,优于在JFT-300M上以384分辨率预训练的最佳Vit-B模型(84.15%)。作为参考,当前的state of art是88.55%,它使用额外的数据训练,它是ViT-H模型(600M参数)在JFT-300M数据上以512分辨率训练的。此后,我们将提供一些分析和观察结果。

卷积教师。

我们观察到,使用convnet教师比使用Transformer具有更好的性能。表2比较了不同教师架构的蒸馏结果。正如Abnar等人[1]所解释的,convnet是一个更好的老师,这一事实可能是由于学生Transformer可以通过蒸馏而继承归纳偏置。在我们随后的所有蒸馏实验中,默认的教师是一个RegNetY-16GF[40](84M参数),我们使用与DeiT相同的数据和相同的数据增强对其进行训练。该教师在ImageNet上达到82.9%的top-1准确率。

表2:我们在ImageNet[42]上比较了学生的表现 (top-1 acc %) 与教师蒸馏模型的关系

蒸馏方法的比较。

我们在表3中比较了不同蒸馏策略的性能。对于Transformer而言,硬蒸馏显著优于软蒸馏,即使仅使用类别token:硬蒸馏在分辨率为224×224时达到83.0%,而软蒸馏精度为81.8%。第4节提出的蒸馏策略进一步提高了性能,表明这两个token提供了对分类有用的补充信息:这两个标记上的分类器明显优于只使用类别token分类器或只使用蒸馏token分类器,只使用类别token分类器或只使用蒸馏token分类器已经优于蒸馏基线。

蒸馏token比类别token给出的结果稍好一些。它也与convnets预测更相关。这种性能上的差异可能是由于这样一个事实,即它更多地受益于卷积网络的归纳偏置。我们将在下一段中给出更多细节和分析。蒸馏token在初始训练中具有不可否认的优势(initial training)。

表3:使用DeiT在Imagenet上进行的蒸馏实验,300个时期的预训练。我们在最后三行报告了新蒸馏方法的结果。我们分别报告了仅使用类别或蒸馏嵌入进行分类时的性能,然后使用一个分类器将这两个作为输入。在最后一行(类+蒸馏),结果对应于类别和蒸馏分类器的后期融合。

与教师和归纳偏置的一致性? (Agreement with the teacher & inductive bias?)

如上所述,教师的架构具有重要影响。它是否继承了已有的利于训练的归纳偏置?虽然我们认为很难正式回答这个问题,但我们在表4中分析了convnet教师、我们的DeiT(仅从标签中学习)和DeiT*~之间的决策一致性。

相比从头训练的Transformer,蒸馏的模型与convnet的关联性更大。正如预期的那样,相比类别嵌入分类器,蒸馏嵌入分类器要更接近卷积网络;相反,类别嵌入分类器更接近无蒸馏的DeiT。毫不奇怪,类别+蒸馏的联合分类器提供了一个中间地带。

表4: convnet、图像 Transformer 和蒸馏 Transformer 之间的不一致性分析:我们报告了所有两两分类器对的不同分类的样本比例,即不同决策的比率。我们包括两个没有蒸馏的模型(RegNetY和DeiT-B),以便我们可以比较蒸馏模型和分类头与这些教师的关系。

epoch数。

增加epoch的数量可以显著提高蒸馏训练的性能,见图3。我们的蒸馏网络DeiT-B*~有300个epoch,已经比DeiT-B好。但对于后者,性能随着时间的延长而饱和,我们的蒸馏网络显然受益于更长的训练时间。

图3:使用DeiT-B在ImageNet[42]上进行蒸馏:性能与训练次数的函数关系。我们提供无需蒸馏模型的性能(水平虚线),因为它在400个周期后饱和。

5.3    效率与准确性:与convnets的对比研究

在文献中,通常将图像分类方法作为精度和另一个标准(如FLOPs、参数数量、网络大小等)之间的折衷进行比较。

在图1中,我们重点讨论了吞吐量(每秒处理的图像)和ImageNet上top-1的分类精度之间的权衡。我们关注流行的最先进的EfficientNet convnet,它得益于多年来对convnet的研究,并通过ImageNet验证集上的架构搜索进行了优化。

我们的方法DeiT略低于EfficientNet,这表明当仅使用Imagenet进行训练时,我们几乎已经缩小了视觉Transformer和ConvNet之间的差距。与仅在Imagenet1k上训练的先前ViT模型相比,这些结果是一项重大改进(在可比设置中top-1提升6.3%)[15]。此外,当DeiT从相对较弱的RegNetY蒸馏中获益以产生DeiT*~,其性能优于EfficientNet。它的性能也比在JFT300M上以384分辨率预训练的Vit-B型号高出1%(top-1 acc)(85.2%对84.15%),同时训练速度明显加快。

表5更详细地报告了ImageNet V2和ImageNet Real的数值结果和附加评估,这两个测试集不同于ImageNet验证,从而减少了验证集上的过拟合。我们的结果表明,DeiT-B*~和DeiT-B*~↑384在GPU上的准确性和推理时间之间的权衡上,以一定的优势超过了最先进的技术。

表5:Imagenet[42]、Imagenet Real[5]和Imagenet V2matched frequency[41]的DeiT和几种最先进的CONVNET的吞吐量和准确性,模型不使用额外数据训练。吞吐量是指我们在一个16GB V100 GPU上每秒可以处理的图像数。对于每个模型,我们采用模型通常分辨率的最大可能批量大小,并计算处理该批量的30次运行的平均时间。根据这一点,我们计算每秒处理的图像数。吞吐量可能因为实现的不同而变化:为了进行直接比较并尽可能公平,我们对每个模型使用同一GitHub[55](timm)存储库中的定义。★:Regnet使用与我们类似的优化程序进行优化,从而提高了结果。当我们使用蒸馏策略时,这些网络充当教师。

5.4    迁移学习:下游任务的性能

虽然DeiT在ImageNet上表现得很好,但为了衡量DeiT的泛化能力,在其他数据集上使用迁移学习对其进行评估是很重要的。我们通过微调表6中的数据集,对迁移学习任务进行了评估。表7将DeiT迁移学习结果与ViT[15]和最先进的卷积结构[48]的结果进行了比较。DeiT与竞争性的卷积模型相当,这与我们之前对ImageNet的结论一致。

表7:我们将基于不同迁移学习任务的Transformer模型与ImageNet预训练进行了比较。我们还报告了卷积结构的结果,以供参考。

与从头训练比较

我们研究了在没有Imagenet预训练的情况下,在小数据集上从头开始训练时的性能。我们在小型CIFAR-10上获得了以下结果,它的图像和标签数量都很小:

对于这个实验,我们尝试尽可能接近Imagenet预训练对应物,这意味着(1)我们考虑更长的训练时间表(最多7200个epochs,对应于300个Imagenet epochs),这样网络被馈送相当数量的总计图像;(2) 我们将图像重新缩放到224×224,以确保使用相同的数据增强。结果不如Imagenet预训练(98.5%对99.1%)好,这是因为网络的多样性要低得多。然而,他们表明,仅在CIFAR-10上学习合理的Transformer是可能的。

6    训练细节和消冗

在本节中,我们将讨论DeiT训练策略,以数据高效的方式学习视觉变换器。我们以PyTorch[39]和timm库[55](注释2)为基础。我们提供超参数和消融研究,分析每种选择的影响。

注释2:timm实施已经包括一个训练程序,该程序将ViT-B的准确度从77.91%提高到79.35%top-1,并使用8xV100 GPU机器在Imagenet-1k上进行培训。

表8:ImageNet上训练方法的消融研究[42]。顶行(“none”)对应于我们为DeiT使用的默认配置。符号✓ 及✗ 指示我们分别使用和不使用相应的方法。在以224×224分辨率进行初始训练和以384×384分辨率进行微调后,我们报告准确度分数(%)。超参数根据表9固定,可能是次优的。*表明模型训练不好,可能是因为未调整超参数

初始化和超参数。

Transformer对初始化相对敏感。在初步实验中测试了几个选项(其中一些选项不收敛)后,我们按照Hanin和Rolnick[20]的建议,使用截断正态分布初始化权重。表9显示了我们在所有实验的训练时默认使用的超参数,除非另有说明。对于蒸馏,我们遵循Cho等人[9]的建议选择参数τ和λ。对于通常(软)蒸馏,我们取典型值τ=3.0和λ=0.1。

表9:我们的方法和Vit-B的组成和超参数。

数据增强。

与包含更多先验(如卷积)的模型相比,Transformer需要更大的数据量。因此,为了使用相同大小的数据集进行训练,我们依赖于大量的数据增强。我们评估了不同类型的强数据增强,目的是实现数据高效的训练机制。

自动增强Auto-Augment[11]、随机增强Rand-Augment[12]和随机擦除random erasing[62]改善了结果。对于后两种,我们使用timm[55]定制,消融后,我们选择Rand-Augment而不是自动增强。总的来说,我们的实验证实,Transformer需要强大的数据增强:我们评估的几乎所有数据增强方法都证明是有用的。一个例外是dropout,我们将其排除在训练程序之外。

正则化和优化器。

我们考虑了不同的优化器,交叉验证了不同的学习率和权重衰减。Transformer对优化超参数的设置非常敏感。因此,在交叉验证期间,我们尝试了3种不同的学习率(5.10−4, 3.10−4 , 5.10−5)和3个权重衰减(0.03, 0.04, 0.05)。我们根据批量大小用公式:lrscaled=lr/ 512×batchsize来缩放学习率,与Goyal等人[19]类似,只是我们使用512而不是256作为基值。

最好的结果是使用AdamW优化器,其学习率与ViT[15]相同,但权重衰减要小得多,因为论文中报告的权重衰减会影响我们设置中的收敛性。

我们采用了随机深度[29],这有助于Transformer的收敛,特别是深Transformer[16,17]。对于视觉Transformer,Wightman[55]首先在训练程序中采用了它们。像Mixup[60]和Cutmix[59]这样的正则化可以提高性能。我们还使用了重复增强[4,25],它显著提高了性能,是我们建议的训练程序的关键要素之一。

指数移动平均(EMA)。

我们评估训练后获得的网络的EMA。有小的增益,但微调后增益会消失:EMA模型有0.1的边缘精度(has an edge of is 0.1),但微调后两个模型达到相同(改进)的性能。

在不同分辨率下进行微调。

我们采用了Touvron等人[51]的微调程序:我们的 schedule、正则化和优化程序与FixEfficientNet相同,但我们保持了训练时间数据增强(与Touvron等人[51]的dampened data augmentation)。我们还对位置嵌入进行插值:原则上可以使用任何经典的图像缩放技术,如双线性插值。然而,一个向量从相邻向量双线性插值,该向量相比相邻向量会减小L2范数。

这些低范数向量不适配预训练的Transformer,如果我们直接使用而不进行任何形式的微调,我们观察到精度会显著下降。因此,在使用AdamW[36]或SGD微调网络之前,我们采用了一种近似保留向量范数的双三次插值(bicubic)。这些优化器在微调阶段具有类似的性能,请参见表8。

默认情况下,与ViT[15]类似,我们以224分辨率训练DeiT模型,并以384分辨率进行微调。我们将在第3节详细介绍如何进行插值。然而,为了测量分辨率的影响,我们对不同分辨率的DeiT进行了微调。我们在表10中报告了这些结果。

表10:在ImageNet-1k、ImageNet-Real和ImageNet-v2 matched frequency上,在尺寸224^2处训练的DeiT在不同微调尺寸下的性能。 

训练时间。

对于DeiT-B,300个epoch的典型训练需要37小时(2个节点)或53小时(单个节点)。作为比较点,使用RegNetY-16GF[40](84M参数)的类似训练要慢20%。DeiT-S和DeiT-Ti在不到3天的时间内在4个GPU上接受训练。然后,我们可以选择以更高的分辨率微调模型。这需要在单个节点(8 GPU)上20个小时才能生成分辨率为384×384的FixDeiT-B模型,对应为25个epoch。不依赖于批量归一化,可以在不影响性能的情况下减少批量大小,从而更容易训练更大的模型 ( Not having to rely on batch-norm allows one to reduce the batch size without impacting performance, which makes it easier to train larger models )。请注意,由于我们使用了3次重复的重复增强(repeated augmentation)[4,25],我们在一个epoch内只能看到三分之一的图像(注释3)。

(注释3:从形式上讲,这意味着我们有100个epoch,但由于repeated augmentation,每个epoch都要长3倍。我们更愿意将其称为300个epoch,以便直接比较有无epeated augmentation的有效训练时间)

7    结论

在本文中,我们介绍了DeiT,这是一种图像Transformer,由于改进了训练,特别是一种新的蒸馏过程,它不需要大量数据进行训练。卷积神经网络在近十年的时间里,在结构和优化方面都进行了优化,包括通过广泛的结构搜索进行优化,这种搜索容易过度拟合,例如EfficientNets[51]。对于DeiT,我们已经开始使用ConvNet已有的数据增强和正则化策略,除了我们新提的蒸馏token之外,没有引入任何重要的架构。因此,对于Transformer更适合或学习的数据增强的研究可能会带来进一步的收益。

因此,考虑到我们的结果,其中图像Transformer与卷积网络已经相当,我们相信,它们将迅速成为一种选择方法,考虑到它们对于给定精度的较低的内存占用。我们提供了我们方法的开源实现。可于https://github.com/facebookresearch/deit.

感谢Ross Wightman与社区分享他的ViT代码和引导(bootstrapping)训练方法,以及帮助我们解决本文不同方面问题的宝贵反馈。感谢Vinicius Reis、Mannat Singh、Ari Morcos、Mark Tygert、Gabriel Synnave和Facebook的其他同事在这一轴上进行了头脑风暴和一些探索。感谢Ross Girshick和Piotr Dollar的建设性评论。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容