ViT,及扩展ViT

目录:

•    ViT (原始ViT, 发表于2020年10月)

•    ImageNet1K上更好的ViT基线 (发表于2022年3月)

•    扩展ViT (扩展到更高容量和数据, 发表于2021年6月)


•    ViT (原始ViT, 发表于2020年10月)

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

https://arxiv.org/abs/2010.11929v2

https://openreview.net/pdf?id=YicbFdNTTy    ICLR2021

虽然Transformer架构已经成为自然语言处理任务的事实标准(the de-facto standard),但它在计算机视觉中的应用仍然有限。在视觉上,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构。我们证明了这种对CNNs的依赖是不必要的,直接应用于图像块序列的纯Transformer可以很好地执行图像分类任务。当对大量数据进行预训练并将其传输到多个中型或小型图像识别基准(ImageNet、CIFAR-100、VTAB等)时,与最先进的卷积网络相比,Vision Transformer(ViT)可以获得优异的结果,同时训练所需的计算资源大大减少。微调代码和预训练模型在:https://github.com/google-research/vision_transformer

1 引言

基于自注意的体系结构,特别是Transformers(Vaswani等人,2017),已经成为自然语言处理(NLP)的首选模型。主要方法是对大型文本语料库进行预训练,然后对较小的任务特定数据集进行微调(Devlin等人,2019年)。由于Transformers的计算效率和可扩展性,它已经能够训练具有超过100B参数的空前规模的模型(Brown等人,2020;Lepikhin等人,2020年)。随着模型和数据集的增长,性能仍然没有饱和的迹象。

然而,在计算机视觉中,卷积结构仍然占主导地位(LeCun等人,1989;Krizhevsky等人,2012年;他等人,2016年)。受NLP成功的启发,多部作品尝试将CNN式架构与自注意相结合(Wang等人,2018;Carion等人,2020年),其中一些完全取代了卷积(Ramachandran等人,2019年;王等人,2020a,Non-local neural networks)。后一种模型虽然在理论上是高效的,但由于使用了专门的注意力模式,因此尚未在现代硬件加速器上有效地扩展。因此,在大规模图像识别中,经典的类似于ResNets结构仍然是最先进的(Mahajan et al.,2018;谢等,2020年;Kolesnikov等人,2020年)。

受NLP中Transformer扩展成功的启发,我们尝试将标准Transformer直接应用于图像,并进行尽可能少的修改。为此,我们将图像分割为图像块,并将这些图像块的线性嵌入序列作为Transformer的输入。图像块的处理方式与NLP应用程序中的token(单词)相同。我们以有监督的方式训练图像分类模型。

在中等规模的数据集(如ImageNet)上进行训练时,如果没有很强的正则化,这些模型只能产生一般的精度,比同等规模的ResNet低几个百分点。这似乎令人沮丧的结果是可以预期的:Transformer缺少CNN固有的一些归纳偏置,例如平移等变和局部性,因此,当在数据量不足的情况下进行训练时,不能很好地泛化。

但是,如果模型在更大的数据集(14M-300M图像)上进行训练,情况会发生变化。我们发现,大规模训练胜过归纳偏置。我们的视觉Transformer(ViT)在足够规模的预训练和迁移到数据点较少的任务中时,可获得优异的效果。当在公共ImageNet-21k数据集或非公开的JFT-300M数据集上进行预训练时,ViT在多个图像识别基准上接近或超过最新水平。特别是,最佳模型在ImageNet上的精度达到88.55%,在ImageNet ReaL上达到90.72%,在CIFAR-100上达到94.55%,在VTAB suite(共19项任务)上达到77.63%。

2    相关工作

Vaswani等人(2017)提出了用于机器翻译的Transformer,并已成为许多NLP任务中最先进的方法。基于Transformer的大型模型通常在大型语料库上进行预训练,然后针对手头的任务进行微调:BERT(Devlin等人,2019)使用去噪自监督预训练任务,而GPT系列工作使用语言建模作为其预训练任务(Radford等人,2018;2019; 布朗等人,2020年)。

单纯地将自注意应用于图像需要每个像素关注其他像素。由于相对于像素数量的二次成本,因此无法按实际输入大小进行缩放。因此,为了将Transformer应用于图像处理,过去曾尝试过几种近似方法。Parmar等人(2018年)仅在每个查询像素的局部邻域应用自注意,而不是全局应用。这种局部多头点积自注意块可以完全取代卷积(Hu等人,2019;Ramachandran等人,2019年;赵等人,2020年)。在另一种工作中,Sparse Transformers (Child et al.,2019)采用可伸缩的全局自注意近似,以便适用于图像。扩展注意力的另一种方法是将其应用于不同大小的块(Weissenborn等人,2019年),在极端情况下,仅沿单个轴(Ho等人,2019年;王等人,2020a)。许多这些专门的注意力体系结构在计算机视觉任务上展示了有希望的结果,但需要在硬件加速器上高效地实施复杂的工程。

与我们最相关的是Cordonnier等人(2020)的模型,该模型从输入图像中提取大小为2×2的块,并在顶部应用完全的自注意。该模型与ViT非常相似,但我们的工作进一步证明,大规模的预训练使vanilla transformers能够与最先进的CNN竞争(甚至优于CNN)。此外,Cordonnier等人(2020年)使用了2×2像素的小图像块大小,这使得该模型仅适用于小分辨率图像,而我们也处理中分辨率图像。

人们还对将卷积神经网络(CNN)与自注意的形式相结合感兴趣,例如通过增强图像分类的特征图(Bello等人,2019年)或通过使用自注意进一步处理CNN的输出,例如用于目标检测(Hu等人,2018年;Carion等人,2020),视频处理(Wang等人,2018;Sun等人,2019),图像分类(Wu等人,2020),无监督目标发现(Locatello等人,2020),或统一文本视觉任务(Chen等人,2020c;Lu等人,2019年;李等人,2019年)。

另一个最近的相关模型是图像GPT(iGPT)(Chen等人,2020a),该模型在降低图像分辨率和颜色空间后,将Transformer应用于图像像素。该模型以无监督的方式作为生成模型进行训练,然后可以对结果表示进行微调或线性探测,以提高分类性能,在ImageNet上实现72%的最大精度。

我们的工作增加了在比标准ImageNet数据集更大范围内探索图像识别的论文的数量。使用额外的数据源可以实现标准基准的最新结果(Mahajan等人,2018年;Touvron等人,2019年;谢等人,2020年)。此外,Sun等人(2017年)研究了CNN的性能如何随数据集大小而变化,Kolesnikov等人(2020年);Djolonga等人(2020年)从大规模数据集(如ImageNet-21k和JFT-300M)对CNN迁移学习进行了实证探索。我们也关注后两个数据集,但训练Transformer,而不是先前工作中使用的基于ResNet的模型。

图1:模型概述。我们将图像分割成固定大小的图块,线性嵌入每个图块,添加位置嵌入,并将生成的向量序列馈送给标准的Transformer编码器。为了执行分类,我们使用标准方法向序列中添加额外的可学习“分类标记”。Transformer编码器的图示受Vaswani等人(2017)的启发。

3    方法

在模型设计中,我们尽可能遵循原始Transformer(Vaswani et al.,2017)。这种有意设计的简单设置的一个优点是,可扩展的NLP Transformer架构及其高效实现几乎可以开箱即用。

3.1    视觉Transformer(VIT)

模型概述如图1所示。标准Transformer接收1-Dtoken嵌入序列作为输入。为了处理2D图像,我们将原始形状为[H,W,C]的图像\mathrm{x}reshape成展平的2维图块的序列(a sequence of flattened 2D patches){\mathrm{x}}_{p} \in R^{N\times (P^2C )},其中H,W是图像高和宽,C是通道数,(P,P)是每个图块的分辨率,而N=HW/P^2是生成的图块的数量,这也是Transformer的有效输入序列长度。Transformer在其所有层中使用恒定的潜在向量大小D,因此我们将图像块展平,并使用可训练的线性投影将其映射到D维(等式1)。我们将该投影的输出称为图像块嵌入。

与BERT的[class]标记类似,我们为嵌入图像块序列预先准备了一个可学习的嵌入\mathrm{z}_{0}^0=\mathrm{x}_\mathrm{class },其在Transformer编码器\mathrm{z}_{L}^0输出处的状态用作图像表示\mathrm{y}(等式4)。在预训练和微调期间,将分类头连接到\mathrm{z}_{L}^0。分类头在预训练时由一个具有一个隐藏层的MLP实现,在微调时由一个线性层实现。

位置嵌入将添加到图像块嵌入以保留位置信息。我们使用标准的可学习一维位置嵌入,因为我们没有观察到使用更先进的二维感知位置嵌入带来的显著性能提升(附录D.4)。生成的嵌入向量序列用作编码器的输入。

Transformer编码器(Vaswani等人,2017年)由交替的多头自注意层(MSA,见附录A)和MLP块(等式2、3)组成。在每个块之前应用Layernorm(LN),在每个块之后应用残差连接(Wang等人,2019;巴耶夫斯基和奥利,2019年)。

MLP包含两个具有GELU非线性的层

归纳偏置。

我们注意到,视觉Transformer比CNN具有更少的图像特定归纳偏置。在CNN中,局部性、二维邻域结构和平移等变被利用到整个模型的每一层中。在ViT中,只有MLP层是局部的和平移等变的,而自注意层是全局的。二维邻域结构的使用非常少:在模型开始时,将图像切割成小块,并在微调时调整不同分辨率图像的位置嵌入(如下所述)。除此之外,初始化时的位置嵌入没有关于图像块2D位置的信息,并且图像块之间的所有空间关系都必须从头开始学习。

混合结构。

作为原始图像块的替代方案,输入序列可以由CNN的特征图形成(LeCun等人,1989)。在该混合模型中,将图像块嵌入投影\mathrm{E}(等式1)应用于从CNN特征图中提取的图像块。作为一种特殊情况,图像块可以具有空间大小1x1,这意味着通过简单地展平特征图的空间维度并投影到Transformer维度来获得输入序列。如上所述,添加了分类输入嵌入和位置嵌入。

3.2微调和更高的分辨率

通常,我们在大型数据集上预训练ViT,并对(较小的)下游任务进行微调。为此,我们移除预训练好的预测头,并附加一个零初始化的D×K前馈层,其中K是下游类的数量。以比预训练更高的分辨率进行微调通常是有益的(Touvron等人,2019年;Kolesnikov等人,2020年)。当馈送更高分辨率的图像时,我们保持图像块大小不变,这会导致更大的有效序列长度。Vision Transformer可以处理任意序列长度(最多内存限制),但是,预训练的位置嵌入可能不再有意义。因此,我们根据预训练位置嵌入在原始图像中的位置,对其执行2D插值。请注意,此分辨率调整和图像块提取是手动将图像2D结构的归纳偏置注入视觉Transformer的唯一点。

4    实验

我们评估了ResNet、vision transformer(ViT)和hybrid的表征学习能力。为了理解每个模型的数据需求,我们对不同大小的数据集进行预训练,并评估许多基准任务。当考虑到预训练模型的计算成本时,ViT表现非常出色,以较低的预训练成本在大多数识别基准上达到了最先进的水平。最后,我们使用自监督进行了一个小实验,表明自监督的ViT对未来是有希望的。

4.1 设置

数据集。

为了探索模型的可扩展性,我们使用了ILSVRC-2012 ImageNet数据集,该数据集包含1k类和130万幅图像(我们在下文中将其称为ImageNet),其超集ImageNet-21k包含21k类和14M图像(邓等人,2009年),JFT(孙等人,2017年)包含18k类和303M高分辨率图像。我们按照Kolesnikov等人(2020年)的要求,根据下游任务的测试集,对预训练数据集进行去重。我们将在这些数据集上训练的模型迁移到几个基准任务中:原始验证集标签上的ImageNet和清理后的ReaL标签(Beyer等人,2020年)、CIFAR-10/100(Krizhevsky,2009年)、Oxford IIIT Pets(Parkhi等人,2012年)和Oxford Flowers-102(Nilsback&Zisserman,2008年)。对于这些数据集,预处理遵循Kolesnikov et al.(2020年)

我们还评估了19项任务VTAB分类套件(翟等人,2019b)。VTAB评估向不同任务的低数据迁移,每个任务使用1000个训练示例。这些任务分为三组:自然任务——如上述任务、Pets、CIFAR等。专业任务——医学和卫星图像,以及结构化任务——需要几何理解的任务,如定位。

模型变体。

我们将ViT配置基于用于BERT的配置(Devlin等人,2019),如表1所示。直接采用BERT的“Base”和“Large”模型,并添加了更大的“Huge模型。在下文中,我们使用简短的符号表示模型大小和输入补丁大小:例如,ViT-L/16表示输入的图块的分辨率是16×16,型号为“Large”。请注意,Transformer的序列长度与图像块大小的平方成反比,因此图像块大小越小的模型计算成本越高。

对于基线CNN,我们使用ResNet(He等人,2016年),但将批量归一化层(Ioffe&Szegedy,2015年)替换为组归一化层(Wu&He,2018年),并使用常规卷积(Qiao等人,2019年)。这些修改改进了迁移(Kolesnikov等人,2020年),我们将修改后的模型称为“ResNet(BiT)”。对于混合体,我们将中间特征映射以一个“像素”的图像块大小提供给ViT。为了试验不同的序列长度,我们要么(i)获取常规ResNet50的第4阶段输出,要么(ii)移除第4阶段,在第3阶段增加相同数量的层(保持总层数),然后获取第3阶段输出。选项(ii)导致序列长度增加4倍,还有更昂贵的ViT型号。

训练和微调。

我们使用β1=0.9、β2=0.999、批量为4096的Adam(Kingma&Ba,2015)对所有模型(包括Resnet)进行训练,并应用0.1的高权重衰减,我们发现这对所有模型的迁移非常有用(附录D.1显示,与常规做法相比,Adam在我们的设置中对Resnet的效果略好于SGD)。我们使用线性学习率预热和衰减,详见附录B.1。对于微调,我们使用带有动量的SGD,批量512,对于所有型号,请参见附录B.1.1。对于表2中的ImageNet结果,我们在更高分辨率下进行了微调:ViT-L/16为512,ViT-H/14为518,并且还使用了Polyak&Juditsky(1992)的平均做法,系数为0.9999(Ramachandran等人,2019;王等人,2020b)。

度量。

我们报告下游数据集的少样本或微调结果。微调精度捕获每个模型在各自数据集上微调后的性能。通过解决将训练图像子集的(冻结)表示映射到 \left\{  {−1, 1} \right\} ^K目标向量的常规最小二乘回归问题,获得少样本精度。(Few-shot accuracies are obtained by solving a regularized least-squares regression problem that maps the (frozen) representation of a subset of training images to {−1, 1}^K target vectors)这个公式允许我们恢复精确的闭式解。以闭合形式恢复精确解。虽然我们主要关注微调性能,但我们有时使用线性少样本精度进行快速动态评估,因为微调成本太高。

4.2    与最新技术的比较

首先,我们将我们最大的模型——ViT-H/14和ViT-L/16——与文献中最先进的CNN进行比较。第一个比较点是Big Transfer(BiT)(Kolesnikov et al.,2020),它使用大的ResNets执行有监督的迁移学习。第二个是Noisy Student (Xie et al.,2020),这是一个使用ImageNet和JFT300M上的半监督学习(去除标签)训练的大型EfficientNet。目前,在ImageNet和本文报告的其他数据集上,Noisey Student是最先进的。所有模型都在TPUv3硬件上进行了训练,我们报告了对每个模型进行预训练所需的TPUv3-core-days,即用于训练的TPU v3核数量(每个芯片2个)乘以训练时间(以天为单位)。

表2显示了结果。在JFT-300M上预训练的较小ViT-L/16模型在所有任务上都优于BiT-L(在同一数据集上预训练),同时训练所需的计算资源大大减少。更大的型号ViT-H/14进一步提高了性能,特别是在更具挑战性的数据集上–ImageNet、CIFAR-100和VTAB suite.。有趣的是,该模型的预训练所需的计算量仍然大大低于现有技术水平。然而,我们注意到,预训练的效率可能不仅受到架构选择的影响,还受到其他参数的影响,如训练计划、优化器、权重衰减等。我们在第4.4节中对不同架构的性能与计算进行了受控研究。最后,在公共ImageNet-21k数据集上预训练的ViT-L/16模型在大多数数据集上也表现良好,同时预训练所需资源较少:它可以在大约30天内使用8个核的标准云TPUv3进行训练。

图2将VTAB任务分解为各自的组,并与该基准上以前的SOTA方法进行比较:BiT、VIVI——在ImageNet和Youtube上共同训练的ResNet(Tschannen等人,2020年)和S4L——在ImageNet上监督加半监督学习(翟等人,2019a)。ViT-H/14在自然和结构化任务上的性能优于BiT-R152x4和其他方法。就专业任务上,top-2模型的性能相似。

4.3    预训练数据要求

Vision Transformer在对大型JFT-300M数据集进行预训练时表现良好。与ResNet相比,视觉的归纳偏置更少,那么数据集的大小有多重要?我们进行了两个系列的实验。

首先,我们在越来越大的数据集上预训练ViT模型:ImageNet、ImageNet-21k和JFT300M。为了提高较小数据集的性能,我们优化了三个基本正则化参数——权重衰减、dropou和标签平滑。图3显示了微调到ImageNet后的结果(其他数据集的结果如表5所示)。当在最小的数据集ImageNet上进行预训练时,ViT-Large模型与ViT-Base模型相比表现不佳,尽管(适度)正则化。在ImageNet-21k预训练中,他们的表现相似。只有使用JFT-300M,我们才能看到更大模型的全部好处。图3还显示了不同大小的BiT模型所跨越的性能区域。BiT CNN在ImageNet上的性能优于ViT,但在更大的数据集上,ViT更佳。

其次,我们在9M、30M和90M的随机子集以及完整的JFT300M数据集上训练我们的模型。我们不在较小的子集上执行额外的正则化,并且对所有设置使用相同的超参数。通过这种方式,我们评估内在的模型属性,而不是正则化的效果。然而,我们确实使用提前停止,并报告在训练期间达到的最佳验证准确性。为了节省计算,我们报告了few-shot的线性精度,而不是完全微调精度。图4包含了结果。在较小的数据集上,Vision Transformers相比计算量相当的Resnet,更过拟合。例如,ViT-B/32比ResNet50稍快;它在9M子集上的性能更差,但在90M+子集上的性能更好。ResNet152x2和ViT-L/16也是如此。这一结果强化了这样一种直觉,即卷积归纳偏差对于较小的数据集是有用的,但对于较大的数据集,直接从数据中学习相关模式就足够了,甚至是有益的。

总的来说,ImageNet上的few-shot结果(图4)以及VTAB上的低数据结果(表2)对于非常低的数据迁移似乎是有希望的。进一步分析ViT的few-shot特性是未来工作的一个令人振奋的方向。

4.4 扩展研究

通过评估JFT-300M的迁移性能,我们对不同模型进行了受控扩展研究。在此设置中,数据大小不会限制模型的性能,我们评估每个模型的性能与预训练成本。模型集包括:7个RESNET,R50x1、R50x2、R101x1、R152x1、R152x2,预训练7个epochs,另外R152x2和R200x3预训练14个epochs;6个视觉Transformer,ViT-B/32、B/16、L/32、L/16,预训练7个epochs,另外,L/16和H/14预训练14个epochs;5个混合结构,R50+ViT-B/32、B/16、L/32、L/16,预训练7个epochs,加上R50+ViT-L/16预训练14个epochs(对于混合结构,型号名称末尾的数字代表的不是图块大小,而是ResNet主干中的总体下采样率total dowsampling ratio)。

图5包含了迁移性能与总预训练计算(有关计算成本的详细信息,请参见附录D.4)。每个模型的详细结果见附录中的表6。可以观察到一些模式。首先,视觉Transformers在性能/计算权衡方面占主导地位。ViT使用大约2到4倍更少的计算以达到相同的性能(在5个数据集上平均)。其次,混合模型在较小的计算预算下略优于ViT,但在较大的模型中,差异消失。这一结果有点令人惊讶,因为人们可能期望卷积局部特征处理能够在任何大小的ViT中提供帮助。第三,视觉Transformer似乎不会在我们尝试的这些范围内饱和,从而激发未来的扩展努力。

4.5    检查视觉Transformer

为了开始理解Vision Transformer如何处理图像数据,我们分析了其内部表示。视觉Transformer的第一层线性地将展平的图像块投影到较低维空间(等式1)。图7(左)显示了习得的嵌入滤波器的top principal成分。这些组件类似于每个图像块内精细结构的低维表示的合理的偏置函数。

投影后,一个习得的位置编码被添加到图块表示中。图7(中间)显示,模型会以位置编码的相似性来学习图像内的距离,即越近的图像块往往具有更相似的位置嵌入(Figure 7 (center) shows that the model learns to encode distance within the image in the similarity of position embeddings, i.e. closer patches tend to have more similar position embeddings.)。此外,行-列结构出现;同一行/列中的图块具有类似的嵌入。最后,对于较大的网格,正弦结构有时很明显(附录D)。位置嵌入学习表示2D图像拓扑解释了为什么人工设计的2D感知嵌入变体不能产生改进(附录D.4)。

自注意使ViT能够在整个图像中整合信息,即使是在最底层。我们调查网络在多大程度上利用了这种能力。具体来说,我们根据注意力权重计算图像空间中整合信息的平均距离(图7,右图)。这种“注意距离”类似于CNN中的感受野大小。我们发现,即使在最底层,一些注意力头也会关注图像的大部分区域,这表明模型确实使用了全局集成信息的能力。其他注意头在低层的注意距离一直很小。这种高度局部化的注意力在混合结构(前几层ResNet,后面再接着Transformer)中不太明显(图7,右图),这表明它可能与CNN中的早期卷积层具有类似的功能。此外,注意距离随着网络深度的增加而增加。全局地(Globally),我们发现该模型关注与分类语义相关的图像区域(图6)。

图7左
图7中
图7右

4.6自监督

Transformers在NLP任务中表现出令人印象深刻的性能。然而,他们的大部分成功不仅源于其出色的可扩展性,还源于大规模的自监督预训练(Devlin等人,2019年;Radford等人,2018年)。我们还模拟了BERT中使用的屏蔽语言建模任务,对用于自监督的屏蔽图像块预测进行了初步探索。通过自监督预训练,我们较小的ViT-B/16模型在ImageNet上实现了79.9%的准确率,与从头开始的训练相比显著提高了2%,但仍落后于监督预训练4%。附录B.1.2包含更多详细信息。我们将对比预训练的探索(Chen等人,2020b;He等人,2020年;Bachman等人,2019年;Henaff等人,2020年)留给未来的工作。

5    结论

我们探索了Transformer在图像识别中的直接应用。与以前在计算机视觉中使用自注意的工作不同,除了最初的图像块提取步骤外,我们没有在体系结构中引入图像特定的归纳偏置。相反,我们将图像解释为一系列图块,并使用NLP中使用的标准Transformer编码器对其进行处理。这种简单但可扩展的策略在与大型数据集的预训练相结合时出人意料地有效。因此,Vision Transformer在许多图像分类数据集上都达到或超过了最新水平,同时预训练成本相对较低。虽然这些初步结果令人鼓舞,但仍然存在许多挑战。一种是将ViT应用于其他计算机视觉任务,如检测和分割。我们的结果,加上Carion等人(DETR,2020年)的结果,表明了这种方法的前景。另一个挑战是继续探索自监督的预训练方法。我们的初步实验表明,自监督预训练效果有所改善,但自监督预训练与大规模监督预训练仍存在较大差距。最后,进一步扩展ViT可能会提高性能。

致谢

这项工作在柏林、苏黎世和阿姆斯特丹进行。我们感谢谷歌许多同事的帮助,特别是安德烈亚斯·施泰纳在基础设施和开源代码发布方面提供的重要帮助;Joan Puigcerver和Maxim Neumann为大型训练基础设施提供帮助;Dmitry Lepikhin、Aravindh Mahendran、Daniel Keysers、Mario Luciˇc、Noam'Shazeer和Colin Raffel进行了有益的讨论

附录

A    多头的自注意

标准qkv自注意(SA,Vaswani et al.(2017))是神经架构的一个流行构建块。对于输入序列\mathrm{z}\in R^{N\times D}中的每个元素,我们计算序列中所有值\mathrm{v}的加权和。注意权重A_{ij} 基于序列的两个元素及其各自的查询\mathrm{q}^i和键\mathrm{k}^j表示之间的成对相似性。

多头自注意(MSA)是SA的一个扩展,在该扩展中,我们并行运行称为“头”的k个自注意操作,并投影它们的拼接输出。为了在改变k时保持计算和参数数量不变,公式(5)中的D_{h} 通常设置为D/k

B    实验细节

B.1    训练

表3总结了我们针对不同型号的训练设置。我们发现,在ImageNet上从头开始训练模型时,强正则化是关键。如果用dropout的话,dropout用在在每一dense layer(qkv投影除外)后以及紧接在位置编码加到图块嵌入之后。混合模型的训练与ViT的训练的设置完全一样。最后,所有训练的图像分辨率都是224。

B.1.1微调

我们使用动量为0.9的SGD微调所有ViT模型。我们对学习率进行小网格搜索,见表4中的学习率范围。为此,我们使用训练集中的小分段(宠物和鲜花10%,CIFAR 2%,ImageNet 1%)作为开发集,并对剩余数据进行训练。对于最终结果,我们对整个训练集进行训练,并对相应的测试数据进行评估。对于微调RESNET和混合模型,我们使用完全相同的设置,唯一的例外是ImageNet,我们在学习速率扫描中添加另一个值0.06。此外,对于RESNET,我们还运行Kolesnikov等人(2020年)的设置,并在运行和扫描过程中选择最佳结果。最后,如果没有另外提及,所有微调实验都以384分辨率运行(以与训练不同的分辨率运行微调是常见做法(Kolesnikov等人,2020))。

当将ViT模型迁移到另一个数据集时,我们移除整个头部(两个线性层),并将其替换为一个零初始化线性层,输出目标数据集所需的类数。我们发现这比简单地重新初始化最后一层要健壮一些。

对于VTAB,我们遵循Kolesnikov等人(2020)中的协议,并对所有任务使用相同的超参数设置。我们使用0.01的学习率,训练2500个步骤(表4)。我们通过在两个学习率和两个时间表上运行小范围扫描来选择此设置,并在200个样本验证集上选择VTAB分数最高的设置。我们遵循Kolesnikov等人(2020年)中使用的预处理,但我们不使用特定于任务的输入分辨率。相反,我们发现视觉Transformer在所有任务中都从高分辨率(384×384)中获益最大。

B.1.2    自监督

我们使用 masked patch prediction 目标进行初步的自监督实验。为此,我们corrupt 50%的图块嵌入,要么用可学习的[mask]嵌入(80%)、随机的其他图块嵌入(10%)替换它们的嵌入,要么保持它们的原样(10%)。该设置与Devlin等人(2019年)用于语言的设置非常相似。最后,我们使用每个损坏图像块的各自图像块表示预测每个损坏图像块的3位平均颜色(即总共512种颜色)。(Finally, we predict the 3-bit, mean color (i.e., 512 colors in total) of every corrupted patch using their respective patch representations. )

我们在JFT上训练了1百万步(约14个epoch)的自监督模型,批量为4096。我们使用Adam,基本学习率为2x10−4、10k步预热和余弦学习率衰减。作为预训练的预测目标,我们尝试了以下设置:1)仅预测平均值,3位颜色(即1个512色预测),2)预测4×4缩小版本的16×16图像块,3位颜色并行(即16个512色预测),3)使用L2(即3个RGB通道上的256次回归)。令人惊讶的是,我们发现这一切都很好,尽管L2稍差一些。我们仅报告选项1)的最终结果,因为它显示了最佳的few shot性能。我们还对Devlin等人(2019年)使用的15%的扰动率进行了试验,但在我们的few shot测试中,结果也稍差。

最后,我们想指出的是,我们的屏蔽图像块预测实例不需要如此大量的预训练,也不需要像JFT这样的大型数据集,以便在ImageNet分类上获得类似的性能增益。也就是说,我们观察到在100k预训练步骤后下游性能的回报递减,并且在ImageNet上预训练时看到类似的收益。

C    其他结果

我们报告了与本文中给出的数字相对应的详细结果。表5对应于论文中的图3,显示了在不断增大的数据集上预训练的不同ViT模型的迁移性能:ImageNet、ImageNet-21k和JFT-300M。表6对应于图5,显示了不同大小的ViT、ResNet和混合模型的迁移性能,以及预训练的估计计算成本。

D其他分析

D.1    SGD VS. ADAM FOR RESNETS

resnet通常使用SGD进行训练,我们使用Adam作为优化器是非常不传统的。这里我们展示了比较两者的实验。也就是说,我们比较了在JFT上预训练的两个RESNET(50x1和152x2)与SGD和Adam的微调性能。对于SGD,我们使用Kolesnikov等人(2020)推荐的超参数。结果如表7所示。Adam预训练在大多数数据集和平均值上优于SGD预训练。这证明选择Adam在JFT上预训练resnet是合理的。请注意,绝对数值低于Kolesnikov等人(2020年)报告的数值,因为我们只预训练了7个时期,而不是30个。

D.2    Transformer形状

我们在缩放Transformer架构的不同维度上运行烧蚀,以找出哪一个最适合缩放到非常大的模型。图8显示了ImageNet在不同配置下的5-shot的性能。所有配置均基于ViT模型,具有8层,D=1024,D_{MLP}=2048,图像块大小为32,即所有线的交集。我们可以看到,缩放深度会带来最大的改进,直到64层都很明显。然而,在16层之后,收益递减。有趣的是,缩放网络的宽度似乎会产生最小的变化。减少图像块大小,从而增加有效序列长度,在不引入参数的情况下显示出惊人的稳健改进。这些发现表明,计算可能比参数数量更好地预测性能,如果有,缩放应该强调深度而不是宽度。总的来说,我们发现按比例缩放所有维度会带来稳健的改进。

D.4 HEAD TYPE AND CLASS TOKEN

为了尽可能接近原始Transformer模型,我们使用了一个附加的 [class] token,作为图像表示。然后,该token的输出通过一个小型多层感知器(MLP)转换为类预测,其中tanh为单个隐藏层中的非线性函数。

此设计继承自Transformer文本模型,我们在整个主应用程序中都使用它。最初尝试只使用图块嵌入,全局平均池(GAP)嵌入,然后使用线性分类器,就像ResNet的最终特征图一样,效果非常差。然而,我们发现这既不是由于额外的token,也不是由于GAP操作。相反,不同学习率的需求充分解释了性能的差异,见图9。

D.4    位置嵌入

我们使用位置嵌入对不同的空间信息编码方式进行了研究。我们检查了以下情况:

•    不提供位置信息:将输入视为一包图块。(a bag of patches)

•    一维位置嵌入:将输入视为raster order的一串图像块(a sequence of patches in the raster order,本文中所有其他实验的默认值)。

•    二维位置嵌入:将输入视为二维图像块网格(a grid of patches in two dimensions. )。在这种情况下,我们学习了两组嵌入,每个用于其中一个轴,X嵌入和Y嵌入,每个大小为D/2。然后,基于输入中路径上的坐标(based on the coordinate on the path in the input,),我们拼接X和Y嵌入,以获得该图像块的最终位置嵌入。

•    相对位置嵌入:考虑图像块之间的相对距离来编码空间信息编码,而不是绝对位置。为了做到这一点,我们使用了一维相对注意,其中我们定义了所有可能的图像块对的相对距离。因此,对于每个给定的对(一个作为查询,另一个作为注意机制中的键/值),我们都有一个偏移p_q− p_k,其中每个偏移量与嵌入关联。然后,我们只需运行额外的注意力机制,使用原始查询(查询的内容),但使用相对位置嵌入作为键。然后,我们使用相对注意的logits作为偏差项,并在应用softmax之前将其添加到主要注意(基于内容的注意)的logits中。

除了编码空间信息的不同方式外,我们还尝试了将这些信息合并到我们的模型中的不同方式。对于1维和2维位置嵌入,我们尝试了三种不同的情况:

(1)将位置嵌入相加到输入端,在模型的stem之后,在将输入端馈送到Transformer编码器之前 (afetr the stem of them model and before feeding the inputs to the Transformer encoder)(本文中的所有其他实验都以此为默认设置)(add)

(2) 学习并将位置嵌入相加到每层开头的输入中(at thebeginning of each layer)(learn and add)

(3)在每个层的开始处(在层之间共享)向输入相加学习到的位置嵌入。(add a learned)

表8总结了ViT-B/16模型消融研究的结果。正如我们所看到的,虽然没有位置嵌入的模型和有位置嵌入的模型的性能之间有很大的差距,但是不同的位置信息编码方式之间几乎没有差别。我们推测,由于我们的Transformer编码器在图像块级输入上运行,而不是在像素级,因此空间信息编码方式的差异就不那么重要了。更准确地说,在图像块级输入中,空间维度比原始像素级输入小得多,例如,14×14而不是224×224,并且对于这些不同的位置编码策略,学习以该分辨率表示空间关系同样容易。即使如此,网络学习到的位置嵌入相似性的具体模式取决于训练超参数(图10)。

D.5    实测计算成本(EMPIRICAL COMPUTATIONAL COSTS)

我们还对硬件上的架构的真实速度感兴趣,由于车道宽度和缓存大小(lane widths and cache sizes.)等细节,理论上的FLOPs并不总能很好地预测这种速度。为此,我们在TPUv3加速器上对感兴趣的主要模型进行推理速度计时;推理速度和反向传播速度之间的差异是一个恒定的模型独立因素。(the difference between inference and backprop speed is a constant model-independent factor.)

图12(左)显示了一个内核在不同的输入大小下每秒可以处理多少个图像。每一个点都是指在大批量范围内测量的峰值性能。可以看出,ViT的理论双二次缩放与图像大小仅在最大分辨率下的最大模型中才开始发生。

另一个有趣的数量是每个模型可以容纳到核上的最大批量,越大越好扩展到大型数据集。图12(右)显示了同一组型号的此数量。这表明,与ResNet模型相比,大型ViT模型在内存效率方面具有明显优势。

D.6    轴向注意

轴向注意(Huang等人,2020年;Ho et al.,2019)是一种简单而有效的技术,可以对组织为多维张量的大输入进行自注意。轴向注意的一般思想是执行多个注意操作,每个操作沿着输入张量的一个轴,而不是将一维注意应用于展开的输入。在轴向注意中,每个注意沿特定轴混合信息,同时保持沿其他轴的信息独立(each attention mixes information along a particular axis, while keeping information along the other axes independent.)。沿着这条路线,Wang等人(2020b)提出了AxialResNet模型,其中ResNet50中所有核大小为3×3的卷积都被轴向自注意所取代,即行和列注意,并通过相对位置编码进行增强。我们已经实现了AxialResNet作为基线模型。(注释3:我们的实现基于https://github.com/csrhddlam/axial-deeplab的开源PyTorch实现。在我们的实验中,我们复制了(Wang等人,2020b)但是,我们的实现复现了开源实现报告的精度,但是,与开源实现类似,我们的实现在TPU上非常慢。因此,我们无法将其用于大规模的实验。这些可以通过仔细优化的实现解锁。)

此外,我们修改了ViT以处理二维形状的输入,而不是一维的图像块序列,并纳入了轴向Transformer块,其中不是一个自注意后接一个MLP,而是一个行自注意后接一个MLP,后接一个列自注意后接一个MLP。

图13显示了当在JFT数据集上预训练时,ImageNet 5-shot linear精度 vs.预训练计算量,模型有轴向ResNet、轴向ViT-B/32和轴向ViT-B/16,预训练计算量包括在FLOPs数和推断时间(每秒处理样本数)方面的性能。正如我们所看到的,Axial-ViT-B/32和Axial-ViT-B/16在性能方面都比它们的ViT-B同类产品要好,但这需要更多的计算。这是因为在轴向ViT模型中,每个具有全局自注意的Transformer块被两个轴向Transformer块替换,一个具有行,一个具有列自注意,尽管在轴向情况下,自注意操作的序列长度较小,但每个轴向ViT块有一个额外的MLP。对于AxialResNet,尽管它在精度/计算权衡方面看起来是合理的(图13,左图),但在TPU上的朴素实现速度非常慢(图13,右图)。

D.7    注意距离

为了了解ViT如何利用自注意整合图像中的信息,我们分析了不同层次上注意权重所跨越的平均距离(图11)。这种“注意距离”类似于CNN中的感受野大小。在浅层,不同头部的平均注意力距离差异很大,一些头部处理大部分图像,而其他头部处理查询位置处或附近的小区域。随着深度的增加,所有头部的注意距离都会增加。在网络的后半部分,大多数头部的关注范围都很广阔。

D.8    注意力映射

为了计算注意力从输出标记到输入空间的映射(图6和图14),我们使用了Attention Rollout(Abnar和Zuidema,2020)。简单地说,我们平均了所有头部ViTL/16的注意力权重,然后递归地乘以所有层的权重矩阵。这解释了在所有层中,token之间的注意力混合。

D.9    OBJECTNET 结果

我们还根据Kolesnikov等人(2020年)的评估设置,在ObjectNet基准上评估了我们的旗舰( flagship)ViT-H/14模型,获得了82.1%的前5名准确率和61.7%的前1名准确率。

D.10    VTAB BREAKDOWN

表9显示了每个VTAB-1k任务的得分。



•    ImageNet1K上更好的ViT基线 (发表于2022年3月)

Better plain ViT baselines for ImageNet-1k

https://arxiv.org/abs/2205.01580

人们普遍认为,视觉Transformer模型需要复杂的正则化技术才能处理ImageNet-1k规模数据。令人惊讶的是,我们发现情况并非如此,标准数据增强就足够了。本说明对原始Vision Transformer(ViT)原始训练设置进行了一些小的修改,显著提高了普通ViT模型的性能。值得注意的是,在TPUv3-8上,90epoch训练在7小时内超过76%的top-1准确率,类似于经典的ResNet50基线,300次训练在不到一天的时间内达到80%。

1.导言

ViT论文[4]只关注大规模的预训练方面,其中ViT模型比经过良好调整的ResNet[6](BiT[8])模型更出色。仅在ImageNet-1k上进行预训练时添加结果是之后的,主要是为了消除数据规模的影响。尽管如此,ImageNet-1k仍然是计算机视觉研究中的一个关键测试平台,拥有尽可能简单有效的基线非常有益。

因此,随着用于开发ViT[4]、MLPMixer[14]、ViT-G[19]、LiT[20]和各种其他研究项目的big vision代码库的发布,我们现在提供了一个新的基线,它保持了原始ViT的简单性,同时达到了与类似方法[15,17](编者注:指DeiT和timm)和并行[16](编者注:指DeiT III)竞争的结果,后者也力求简化。

2.实验装置

我们完全专注于ImageNet-1k数据集(ILSVRC2012),用于(预)训练和评估。由于广泛接受[1,2,5,9,15],简单性和可扩展性,我们坚持最初的ViT模型体系结构,并且只重新讨论了几个非常小的细节,没有一个是新颖的。我们选择将重点放在[15]引入的较小的ViT-S/16变体上,因为我们认为它在迭代速度、常用硬件和最终精度之间提供了一个很好的折衷。然而,当有更多的计算和数据可用时,我们强烈建议使用ViT-B/32或ViT-B/16迭代[12,19],并注意增加图像块大小几乎等同于降低图像分辨率。

所有实验都使用224px²分辨率的“初始裁剪”[13]、随机水平翻转、RandAugment[3]和Mixup增强。我们对前99%的训练数据进行训练,并将1%保留给minival,以鼓励社区停止在验证(事实测试)集上选择设计选项。完整设置如附录A所示。

We train on the first 99% of the training data, and keep 1% for minival to encourage the community to stop selecting design choices on the validation (de-facto test) set.

3.结果

图1显示了我们改进设置的结果,以及一些相关的重要基线。很明显,以这种方式训练的简单、标准的ViT既可以匹配90个时期基线的开创性ResNet50,也可以匹配更现代的ResNet[17]和ViT[16]训练设置。此外,在一个小的TPUv3-8节点上,90个epoch的跑步只需要6小时30秒,一个人在不到一天的时间内训练300个epoch就可以达到80%的准确率。

[4,12]的主要区别在于批量大小为1024而不是4096,使用全局平均池(GAP)而不是类标记[2,11],固定的二维sin-cos位置嵌入[2],以及引入少量RandAugment[3]和Mixup[21](分别为10级和概率0.2,小于[12])。这些微小的变化导致的性能明显优于[4]中最初报告的性能。

The main differences from [4, 12] are a batch-size of 1024 instead of 4096, the use of global average-pooling (GAP) instead of a class token [2, 11], fixed 2D sin-cos position embeddings [2], and the introduction of a small amount of RandAugment [3] and Mixup [21] (level 10 and probability 0.2 respectively, which is less than [12]). These small changes lead to significantly better performance than that originally reported in [4].

值得注意的是,该基线中没有进一步的体系结构变化、正则化器(如辍学或随机深度[7])、高级优化方案(如SAM[10])、额外的增强(如CutMix[18])、重复增强[15]或模糊,“tricks”如高分辨率微调或检查点平均,以及通过知识提炼从一位优秀教师那里得到的监督。

表1显示了我们提出的各种微小变化。它举例说明了一系列几乎微不足道的变化是如何累积成重要的整体改进的。唯一在分类精度上没有显著差异的变化是,分类头是单个线性层,还是像原始变压器公式中那样,是带有一个隐藏tanh层的MLP。

4.结论

追求简单总是值得的。致谢。我们感谢Daniel Suo和Naman Agarwal在90个时代的推动和对报告的反馈,感谢Google Brain团队提供的支持性研究环境。





•    扩展ViT (扩展到更高容量和数据, 发表于2021年6月)

Scaling Vision Transformers

https://arxiv.org/pdf/2106.04560v1.pdf

Xiaohua Zhai,Alexander Kolesnikov,Neil Houlsby,Lucas Beyer

基于注意力的神经网络,如视觉Transformer(ViT),最近在许多计算机视觉基准上取得了最先进的结果。扩展是获得优异结果的主要因素,因此,了解模型的扩展特性是有效设计后代的关键。虽然已经研究了扩展Transformer语言模型的规律,但视觉Transformer的扩展方式尚不清楚。为了解决这个问题,我们对ViT模型和数据进行了上下扩展,并描述了错误率、数据和计算之间的关系。在此过程中,我们改进了ViT的网络结构和训练,减少了内存消耗,提高了结果模型的准确性。因此,我们成功地训练了一个具有20亿个参数的ViT模型,该模型在ImageNet上达到了90.45%top-1精度的最新水平。该模型在少样本学习方面也表现良好,例如,在ImageNet上达到84.86%的top-1准确率,每类只有10个样本。

1导言

基于注意力的Transformer结构[36]已经风靡了计算机视觉领域[11,5],并成为研究和实践中日益流行的选择。在此之前,Transformers已被广泛应用于自然语言处理(NLP)领域[10,4]。在[17]中仔细研究了NLP中Transformer的最佳扩展,主要结论是大型模型不仅性能更好,而且更有效地使用大型计算预算。然而,目前尚不清楚这些发现在多大程度上转移到了视觉领域,这有几个重要的区别。例如,与NLP领域中的无监督预训练相比,视觉领域中最成功的预训练方案是有监督的。

在这篇论文中,我们集中研究了在图像分类任务中预先训练的ViT模型的迁移性能的扩展律。特别是,我们实验了500万到20亿个参数的模型,3000万到30亿个训练图像的数据集,以及从低于一个TPUv3核心日到超过10000个核心日的计算预算。我们的主要贡献是描述了ViT模型的性能计算前沿。

一路上,我们创造了一个改进的大规模训练配方。我们研究了训练超参数,并发现了一些微妙的选择,这些选择可以极大地改善少样本的转移性能。具体地说,我们发现非常强的L2正则化(仅应用于最终线性预测层)会产生一种学习的视觉表示,这种视觉表示具有非常强的镜头学习能力。例如,在ImageNet数据集(有1000个类)上,每个类只有一个样本,我们的最佳模型的准确率达到69.52%;每班10例,占84.86%。此外,我们大大减少了[11]中提出的原始ViT模型的内存占用。我们通过改变特定于硬件的网络结构和使用不同的优化器来实现这一点。因此,我们训练了一个具有20亿个参数的模型,并在ImageNet上获得了最新的90.45%的精度

图1:左/中:表示质量,测量为ImageNet精细度和线性10样本错误率,作为总训练计算的函数。饱和幂律相当精确地逼近帕累托边界。请注意,较小的模型(蓝色底纹)或在较少图像上训练的模型(较小的标记)在训练较长时间后会饱和并从边界上脱落。右上角:模型尺寸限制时的表示质量。对于每个模型大小,都会使用大量的数据集和计算量,因此模型容量是主要的瓶颈。阴影模糊的标记表示每个模型的次优运行。右下角:数据集大小的表示质量。对于每个数据集大小,都会突出显示具有最佳大小和计算量的模型,因此数据集大小是主要瓶颈。

2核心成果

在第3节介绍详细的网络结构和训练协议改进之前,我们首先介绍了我们关于扩展趋势的主要结果。在接下来的实验中,我们在多达30亿张弱标记图像上训练了几个ViT模型。我们改变架构大小、训练图像的数量和训练持续时间。所有模型均在TPUv3上进行训练,因此总计算量以TPUv3核心天数计量。为了评估模型学习到的表示的质量,我们测量(i)通过在冻结权重上训练线性分类器的少量镜头转移,(ii)通过微调所有数据上的整个模型,将镜头转移到多个基准任务。

2.1将计算、模型和数据一起放大

图1显示了ImageNet上的10次线性评估和微调评估[9]。其他数据集、牛津IIIT Pets[23]、CIFAR-100[19]和加州理工大学UCSD鸟类[38]的类似趋势如附录图8所示。对于模型尺寸和数据尺寸的每一种组合,我们预先训练了不同数量的步骤。在图1中,连接点表示为不同数量的步骤训练的相同模型。我们进行以下高级别观察。

首先,将计算、模型和数据一起放大可以提高表示质量。在左图和中图中,右下角点显示了具有最大大小、数据集大小和计算实现最低错误率的模型。然而,似乎在最大尺寸时,模型开始饱和,并落后于幂律边界(图1中对数图上的线性关系)。

第二,表示质量可能会受到模型大小的限制。右上角的图显示了每种型号的最佳性能。由于容量有限,小型模型无法从最大的数据集或计算资源中获益。图1(左和中)显示了Ti/16模型趋向于高错误率,即使在对大量图像进行训练时也是如此。

第三,大型模型受益于附加数据,甚至超过1B图像。当放大模型尺寸时,表示质量可能受到较小数据集的限制;即使是30-300米的图像也不足以使最大的模型饱和。在图1,center中,30M数据集上L/16模型的错误率没有超过27%。在较大的数据集上,该模型达到19%。此外,当增加数据集大小时,我们观察到大模型的性能提升,而不是小模型。最大的模型甚至可以获得性能改进,训练集大小从1B图像增加到3B图像(图1,右下角)。但是,对于小型模型,如Ti/16或B/32,增加数据集大小没有帮助。例如,在图1(左和中)中,Ti/16的所有曲线重叠,表明无论数据集大小如何,该模型都实现了相同的性能。

图2:ImageNet上与预训练期间看到的图像相关的错误率。大模型的采样效率更高,这在不同的设置中是一致的:在冻结表示上进行少量快照学习,在ImageNet上微调网络,并在v2测试集上评估微调模型。

2.2双饱和幂律

图1(左和中)显示了表示质量与训练计算的帕累托边界。前沿包含计算量与模型形状和训练时间的最佳分配的模型。

对于超过两个数量级的计算,计算和性能之间的关系遵循幂律(E=aCb),从而在对数图上形成一条直线。然而,我们在计算谱的两端观察到“饱和”。在计算的高端,最大的模型不倾向于零错误率。如果我们根据观察结果推断,无限容量模型将获得非零误差。在生成模型中也观察到了这种效应[14]。[14]的作者将此残差称为任务的“不可约熵”。由于我们绘制了错误率,信息理论解释不适用,但我们的观察支持ImageNet的基本性能上限概念[3]。根据该定律,该饱和度对应于误差率的加性常数:E=aC中的c−b+c。

在计算谱的低端,我们看到较小模型的饱和;最小模型的性能比幂律预测的要好。出现这种饱和是因为即使是微不足道的解决方案也可以实现非零误差。例如,预测多数类(几乎为零计算)将获得与其在测试集中出现频率相关的精度。[14]中未观察到该下限,这可能是因为它们的最小模型足够大,可以避免该区域,或者是因为对数损耗饱和的性能甚至比精度差(最终会饱和)。该饱和度对应于x轴上的位移:E=a(C+d)中的d−b+c。该常数表示零计算模型仍将获得非零精度。

2.3大型号的样本效率更高

图2显示了在预训练期间“看到”的图像总数(批量大小乘以步骤数)的表示质量。除了公共验证集上的ImageNet微调和线性10样本结果外,我们还报告了ImageNet-v2测试集[27]上ImageNet微调模型的结果,作为鲁棒泛化的指标。图中显示了三个在30亿张图像上预训练的ViT模型。我们观察到,更大的模型更具样本效率,在看到较少图像的情况下达到相同的错误率水平。对于10样本,Ti/16模型需要看到近100倍的图像,以匹配L/16模型的表示质量。当进行微调时,该因子从100降低到约20。我们的结果表明,在数据充足的情况下,最好用较少的步骤训练更大的模型。这种观察反映了语言建模和机器翻译的结果[17,21]。

2.4 ViT-G/14结果

我们训练了一个大型的视觉TransformerViT-G/14,它包含近20亿个参数。第3.6节详细介绍了网络结构的形状。我们评估了一系列下游任务的ViT-G/14模型,并将其与最新的最新结果进行比较。我们在ImageNet上进行微调,并报告ImageNet[28]、ImageNet-v2[27]、ReaL[3]和ObjectNet[1]的精度。此外,我们还报告了VTAB-1k基准上的迁移学习结果,该基准包括19项不同的任务[43]。

图3显示了ImageNet上的几个快照学习结果。ViT-G/14比之前最好的ViT-H/14模型[11]有很大的优势(超过5%),达到84.86%的准确率,每类10个样本。每类10幅图像少于ImageNet数据的1%(每类13个样本),这在自监督和半监督学习中是常用的[42]。作为参考,图3显示了两种最先进的自监督学习模型,SimCLR v2[6]和BYOL[12],使用1%的ImageNet数据。然而,请注意,这些方法是完全不同的:ViT-G/14使用大量弱监督数据源,并且只经过一次预训练并转移到不同的任务中。同时,自监督学习模型使用未标记但在域内的数据进行预训练,并针对单个任务。

表1显示了其余基准的结果。ViT-G/14在ImageNet上实现了90.45%的top-1精度,开创了最新水平。在ImageNet-v2上,ViT-G/14比基于EfficientNet-L2的嘈杂学生模型[39]提高了3%。实际上,ViT-G/14的性能仅比ViT-H[11]和BiT-L[18]好一小部分,这再次表明ImageNet分类任务可能达到饱和点。对于ObjectNet,ViT-G/14的性能大大优于BiT-L[18],比嘈杂的学生好2%,但比CLIP[26]落后约2%。请注意,与其他方法不同,CLIP不会在ImageNet上进行微调,而是直接在ObjectNet上进行计算,这可能会提高其鲁棒性。最后,当将ViT-G/14模型迁移到VTAB时,只需在所有任务中使用一个超参数即可获得一致的更好结果。在VTAB上使用每任务权重级超参数扫描的最新技术是79.99[16],我们将使用ViT-G/14进行大规模扫描留给未来的工作。

3方法详情

我们对ViT模型和训练进行了一些改进。这些改进大多易于实现,并且可以显著提高内存利用率和模型质量。它们允许我们仅使用数据并行性来训练ViT-G/14,整个模型都安装在一个TPUv3内核上。

图4:左侧和中部:5-shot ImageNet精度和上游性能的依赖性取决于权重衰减强度。通常,单个权重衰减值应用于所有权重(对应于热图上的对角线)。我们表明,通过使用“头部”和其他权重的权重衰减值,可以显著提高少样本的迁移性能。右图:ImageNet上针对不同类型头部的少量快照性能。头部的高权重衰变对所有人都同样有效。

3.1“头部”的解耦权重衰减

在低数据区,权重衰减对模型适应性有很大影响。我们在中等规模上对这一现象进行了研究。

我们发现,模型中最终线性层(“头部”)和剩余权重(“身体”)的解耦权重衰减强度可使人受益。图4显示了这种效果:我们在JFT-300M上训练了一组ViT-B/32模型,每个单元对应于不同头/体重衰减值的性能。对角线对应于对两个衰减使用相同的值。可以观察到,最佳性能出现在对角线之外(即头部和身体的权重衰减解耦)。有趣的是,我们观察到头部的高权重衰减会降低训练前(上游)任务(未显示)的表现,尽管转移表现有所改善。

我们对这种现象没有一个完整的解释。然而,我们假设头部更强烈的权重衰减会导致类别之间的差异更大的表征,从而更好地适应少样本。这与支持向量机背后的主要思想相似[8]。这种较大的衰减使得在上游预训练期间更难获得高精度,但我们的主要目标是高质量的迁移。

3.2通过删除[class]令牌来节省内存

[11]中最大的VIT模型使用14×14个图像块和224×224个图像。这将产生256个可视“标记”,其中每个标记对应一个图像补丁。除此之外,ViT模型还有一个额外的[class]令牌,用于生成最终表示,使令牌总数达到257。

对于ViT型号,当前TPU硬件将令牌维度增加到128的倍数,这可能导致高达50%的内存开销。为了克服这个问题,我们研究了使用额外[class]标记的替代方法。特别是,我们评估了全局平均池(GAP)和多头注意池(MAP)[20]以聚合所有补丁令牌的表示。我们将地图中的头数设置为与模型其余部分中的注意头数相等。为了进一步简化头部设计,我们在最终预测层之前删除了最终非线性投影,这在最初的ViT论文中出现。

为了选择最佳磁头,我们对[class]标记和GAP/MAP磁头进行并排比较。结果汇总在图4(右)中。我们发现,所有磁头的性能都相似,而GAP和MAP由于前面提到的填充因素,内存效率要高得多。我们还观察到,非线性投影可以安全地去除。因此,我们选择地图头,因为它是最具表现力的,并且产生了最统一的架构。

图5:从JFT-300M切换到JFT-3B的效果,无需进一步扩展。无论是小型还是大型模型,都可以通过近似恒定的因子从这一变化中获益,无论是线性少镜头评估(左)还是使用完整数据集进行迁移(右)。

3.3扩大数据规模

在本研究中,我们使用了专有的JFT-3B数据集,这是JFT-300M数据集的一个更大版本,在以前的许多大型计算机视觉模型工作中使用[31,18,11]。该数据集由近30亿张图像组成,通过半自动管道用大约30k标签的类层次结构进行注释。因此,数据和相关标签是有噪声的。我们忽略了标签的层次性,仅使用指定的标签作为多标签分类的目标,通过sigmoid交叉熵损失,如下[18,11]。我们从JFT-3B中删除了我们在本文中迁移到的任何数据集中的所有几乎重复的图像。

图5显示了从JFT-300M变为JFT-3B对模型性能的影响,即使扩展没有增加。图5(左)显示了整个过程中评估的线性10快照ImageNet性能。我们观察到JFT-3B产生了一个更好的模型,甚至在该模型有一个完整的JFT-300M纪元之前。因此,过度安装JFT-300M不是改进的唯一原因。这种差异甚至在小型B/32模型和大型L/16模型中也可以看到。我们将模型微调到完整的ImageNet数据集(右),并确认这些改进转移到完整的微调设置。总体而言,对于小型和大型模型,数据集中的更改将向ImageNet的迁移提高了约1%。除了性能改进,JFT-300M和JFT-3B上的训练行为类似。最重要的是,JFT-3B允许我们进一步扩大规模,减少对过度拟合和正则化的担忧。

3.4内存高效优化器

在训练大型模型时,模型参数所需的存储成为瓶颈。我们最大的型号,ViT-G,大约有20亿个参数,占用了8Gib的设备内存。更糟糕的是,通常用于训练Transformer的Adam优化器为每个参数存储两个额外的浮点标量,这会导致额外的两倍开销(额外的16 GiB)。为了解决Adam优化器带来的开销,我们探索了两种修改。

亚当有着半精确的动量。我们经验性地观察到,在半精度(bfloat16型)中存储动量不会影响训练动力学,也不会对结果产生影响。这允许将优化器开销从2倍减少到1.5倍。值得注意的是,使用半精度存储第二个动量会导致性能显著下降。

Adafactor优化器。上面的优化器仍然会导致较大的内存开销。因此,我们将注意力转向Adafactor优化器[29],它使用秩1分解存储第二动量。从实际的角度来看,这导致了可以忽略不计的内存开销。但是,默认的Adafactor优化器无法开箱即用,因此我们进行了以下修改:

•以半精度重新引入第一动量,而推荐设置根本不使用第一动量。

•我们禁用相对于权重标准的学习率扩展,这是Adafactor中的默认功能。

由此产生的优化器只带来50%的内存开销。

我们观察到,两个提出的优化器执行与原始Adam optimizer或甚至稍微好一点。

3.5学习率表

在我们的研究中,我们希望将每个模型训练几个不同的持续时间,以便衡量模型大小和训练持续时间之间的权衡。当使用线性衰减时,如[11]中所述,每个训练持续时间都需要从零开始运行自己的训练,这是一个低效的协议。

受[22]的启发,我们通过探索学习率计划来解决这个问题,该计划类似于开始时的热身阶段,包括训练结束时的冷却阶段,其中学习率线性退火为零。在预热和冷却阶段之间,学习率不应太快衰减到零。这可以通过对训练的主要部分使用常数或平方根倒数来实现。图6(底部)描述了其中几个选项,在大约200 k、400 k和500 k步骤后冷却。图6的上半部分显示了每个选项及其冷却的验证分数(越高越好),以及两个供参考的线性时间表。当一个人提前知道训练持续时间并且不打算再训练时,线性计划仍然是可取的,但所有三个备选方案都相当接近,其优点是允许不确定的训练,并从一次跑步中评估多个训练持续时间。对于每一个时间表,我们优化了学习速度和精确形状。我们也曾短暂尝试过循环学习率计划,但他们的表现似乎更差,我们没有进一步调查。因此,我们选择倒数平方根时间表。

3.6选择模型尺寸

ViT模型有许多控制模型形状的参数,我们参考原始出版物了解详细信息。简单地说,这些包括图像块大小、编码块的数量(深度)、图像块嵌入和自注意的维度(宽度)、注意头的数量以及MLP块的隐藏维度(MLP宽度)。最重要的是,我们依靠XLA编译器来优化模型的运行速度和内存占用。在幕后,XLA使用复杂的启发式方法将模型编译成特定硬件的代码,以最佳方式权衡内存和速度。因此,很难预测哪种型号的配置适合单个设备上的内存。

因此,我们运行了一个广泛的模拟,在那里我们实例化了大量不同形状的VIT,并尝试通过几个步骤来训练它们。我们改变深度、宽度、头部和MLP宽度,但将图像块大小保持在14像素。通过这种方式,我们测量它们的速度以及给定的模型是否适合设备的内存。图7总结了该模拟的结果。每个块对应一个模型配置,块的阴影对应于其训练速度(越亮越快)。橙色块显示了未经任何修改的原始ViT型号。绿色块还包括第3.2节所述的内存节省,以及第3.4节所述的半精度Adam。最后,蓝色块与我们改进的AdaFactor优化器一起使用。白色区域中的形状在任何设置下都无法放入内存。出于空间原因,我们在这里仅展示了与实验相关的模型,但请注意,通过我们的修改,我们能够适合深度高达100个编码器块的薄ViT模型。

最初的Vision Transformer出版物在附录D2中包含了一项关于扩展不同组件之间权衡的研究,得出结论认为,以相似的数量同时扩展所有方面(深度、宽度、MLP宽度和图像块大小)是最有效的。我们遵循这一建议,并相应地在适合内存的范围内为ViT-g和ViT-g选择形状,如图7所示,并在表2中总结。

4相关工作

小型视觉Transformer

早期关于视觉Transformer的工作主要集中在CIFAR-10的小型网络[7]。然而,视觉Transformer[11]是在最先进的中大规模图像识别背景下提出的;包含86M参数的最小模型(ViT-B)[33]为训练提供更小的ViT尺寸,从零到ViT Ti,参数为5M。ViT的新变体引入了更小、更便宜的网络结构。例如,T2T ViT[41]减少了参数数量,并使用新的标记化和更窄的网络进行计算。为密集预测任务设计的锥体VIT[37]遵循类似CNN的锥体结构,这也减小了模型的大小。CNN和Transformer的混合通常允许较小的模型运行良好,例如[11]中的ViT CNN混合、僵尸网络[30]和HaloNet[35]。然而,另一个方向,即增加ViT的规模,却很少被探索。虽然语言Transformer仍然比视觉Transformer大得多,但理解本文介绍的扩展特性和改进是朝着这个方向迈出的一步。

扩展律[17]全面研究了神经语言模型的经验扩展律。作者拟合了描述计算、数据大小、模型大小和性能之间关系的幂律。遵循这些规律,成功地训练了175B参数语言模型GPT-3[4][14] 介绍了其他模式中的自回归生成建模法,包括图像生成。我们的论文包含了第一个研究尺度规律的判别模型的图像。

放大视觉模型许多论文放大CNN以获得更好的性能。EfficientNets[32]提出了一种在深度、宽度和分辨率之间平衡计算的扩展策略,并将其应用于MobileNet。[2]中重新讨论了该策略,以进一步提高resnet的性能[13]。大型CNN在视觉识别方面取得了优异的性能,例如使用GPipe管道并行性训练的变形虫-B(18512)(557M参数)[15],在弱标记Instagram图像上预训练的ResNeXt-101 32×48d(829M参数)[22],使用JFT-300M上的ImageNet伪标签训练的EfficientNet-L2(480M参数)[40],以及在JFT-300M上预先训练的BiT-L-ResNet152x4(928M参数)[18]。我们是第一个将视觉Transformer扩展到更大尺寸的公司,并在这方面取得了最新的成果。

5讨论

我们证明了具有足够训练数据的视觉Transformer模型的性能计算边界大致遵循(饱和)幂律。关键的是,为了保持在这一前沿,我们必须同时调整计算总量和模型规模;也就是说,当额外的计算可用时,不增加模型的大小是次优的。我们还证明了更大的模型更具样本效率,并且是非常少的快照学习者。最后,我们提出了一种新的训练方法,可以有效地训练大型和高性能的ViT模型。请注意,我们的结论不一定会推广到我们所研究的范围之外,也不一定会推广到ViT模型家族之外。

这项工作的潜在更广泛的成本是在我们的扩展研究中进行实验所需的能量,特别是在训练最大的ViT-G模型时。然而,该成本可通过两种方式摊销。首先,此类扩展律研究只需进行一次;ViT模型的未来开发人员可能会使用我们的结果来设计可以使用较少计算资源进行训练的模型。其次,训练的模型主要是为迁移学习设计的。转移预先训练的权重比在下游任务中从头开始训练要便宜得多,并且通常达到更高的精度。因此,通过将我们的模型转移到许多任务,训练前的计算将进一步摊销。

致谢

我们感谢James Bradbury和Vivek Sharma在使用大型基础设施方面提供的帮助;阿列克谢·多索维茨基、琼·普伊格塞弗、巴兹尔·穆斯塔法和卡洛斯·里克尔梅进行了许多有见地的讨论;谷歌大脑团队提供了一个支持性的研究环境。

更多的快照学习结果

我们在更多的数据集上观察到类似的扩展规律,包括牛津IIIT宠物[23]、CIFAR-100[19]和加州理工大学UCSD鸟类[38]。结果如图8所示

图8:表示质量作为总训练计算的函数。表示质量通过四个数据集上的少量镜头错误率来衡量。有时候,比如在《宠物5/10》中,法律并不完全符合证据,可能是模型不理想,或者法律不具有普遍性。

B训练前详细信息

我们使用半精度动量adafactor优化器对所有ViT模型进行预训练。我们使用默认的β1=0.9和β2=0.999作为adafactor。对于小于ViT-g的所有型号,我们使用批量4096。对于型号ViT-g和ViT-g,为了加快训练,我们将批量最大扩展到32768,并将训练分配到2048TPUV3芯片。我们将“头部”的权重衰减设置为3.0,将“身体”的权重衰减设置为0.03。所有模型均以224×224分辨率进行预训练,初始裁剪后进行随机水平翻转预处理。我们使用倒数平方根计划,线性学习率预热为10k步。我们在多个步骤中冷却训练,如第E节表格所示。

C适应细节

我们报告了在多个数据集上的少量线性回归和精细调整结果。对于几次线性回归,我们只需解l2−正则化线性回归问题,使用从224×224分辨率图像中提取的冻结嵌入。

对于精细度评估,我们使用带有动量的SGD优化器。我们使用批量大小512和全局范数1的梯度剪裁。我们不使用权重衰减进行微调。在[18,34]之后,我们使用更高的分辨率进行微调。更具体地说,我们对小于ViT-g的ViT模型使用384×384分辨率,对ViT-g和ViT-g使用518×518分辨率。我们在微调期间仅对ViT-G模型使用Polyak平均[25],类似于[11]。默认情况下,我们对20k步数使用余弦学习速率计划,但ViT-G采用Polyak平均的固定学习速率除外。我们将学习速率线性预热500步。我们扫过两个学习率{0.03,0.01},然后使用2%的训练分割选择更好的一个。在VTAB任务中,我们使用固定的0.01学习率和余弦学习率计划。我们总共训练2500步。

D少量放炮结果的完整表格

我们在图8中的四个数据集上提供了5-shot学习和10-shot学习结果。表3总结了ViT-g/14和ViT-g/14。表4、表5、表6、表7、表8、表9、表10、表11和表12总结了所有其他较小的ViT模型。我们知道有几行缺失,这不会影响扩展规律图的趋势。

E细调结果的完整表格

我们提供了ImageNet上的微调结果,以及在其他两个ImageNet V2和ImageNet ReaL测试拆分上评估的结果。所有模型的结果可从表13、表14、表15、表16、表17、表18、表19、表20、表21中找到。我们注意到一些缺失行,它们不会影响扩展律图的趋势。我们展示了每个模型的总步骤和冷却步骤,以及在ImageNet上选择的最佳微调学习率,该学习率可维持2%的训练分割。

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

推荐阅读更多精彩内容