SWIN TRANSFORMERv2论文翻译

摘要

大型 NLP 模型已被证明可以显着提高语言任务的性能,而且没有饱和迹象。他们还展示了与人类一样惊人的少发能力。本文旨在探索计算机视觉中的大规模模型。我们解决了大型视觉模型训练和应用中的三个主要问题,包括训练不稳定性、预训练和微调之间的分辨率差距以及对标记数据的渴望。提出了三种主要技术:1)residual-post-norm 方法结合余弦注意力以提高训练稳定性; 2) 一种对数空间连续位置偏差方法,可以有效地将使用低分辨率图像预训练的模型转移到具有高分辨率输入的下游任务; 3) 一种自我监督的预训练方法 SimMIM,以减少对大量标记图像的需求。通过这些技术,本文成功训练了一个 30 亿参数的 Swin Transformer V2 模型,这是迄今为止最大的密集视觉模型,并使其能够训练高达 1,536×1,536 分辨率的图像。它在 ImageNet-V2 图像分类、COCO 目标检测、ADE20K 语义分割和 Kinetics-400 视频动作分类等 4 项代表性视觉任务上刷新了性能记录。另请注意,我们的训练比谷歌十亿级视觉模型的训练效率高得多,后者消耗的标记数据少 40 倍,训练时间少 40 倍。

1.简介

扩大语言模型取得了令人难以置信的成功。它显着提高了模型在语言任务上的性能 [19、24、49、50、52、53],并且该模型展示了与人类相似的惊人的少镜头能力 [7]。自从拥有 3.4 亿个参数的 BERT 大型模型 [19] 以来,语言模型在几年内迅速扩大了 1000 多倍,达到 5300 亿个密集参数 [50] 和 1.6 万亿个稀疏参数 [24]。这些大型语言模型还被发现具有越来越强的小样本能力,类似于人类智能,可用于广泛的语言任务 [7]。

另一方面,视觉模型的扩展一直滞后。虽然人们早就认识到更大的视觉模型通常在视觉任务上表现更好 [29,60],但最近模型的绝对大小才能够达到大约 1-20 亿个参数 [17,27,39,56,80] .更重要的是,与大型语言模型不同,现有的大型视觉模型仅应用于图像分类任务 [17,56,80]。

为了成功训练大型通用视觉模型,我们需要解决几个关键问题。首先,我们对大型视觉模型的实验揭示了训练中的不稳定问题。我们发现在大型模型中,跨层激活幅度的差异变得明显更大。仔细看一下原来的架构,发现这是残差单元的输出直接加回主分支造成的。结果是激活值逐层累积,因此较深层的振幅明显大于早期层的振幅。为了解决这个问题,我们提出了一种新的规范化配置,称为 res-post-norm,它将 LN 层从每个残差单元的开头移动到后端,如图 1 所示。我们发现这种新配置产生了更温和的激活跨网络层的值。我们还提出了一个缩放余弦注意力来取代之前的点积注意力。缩放余弦注意力使得计算与块输入的幅度无关,并且注意力值不太可能落入极端。在我们的实验中,所提出的两种技术不仅使训练过程更加稳定,而且还提高了准确性,尤其是对于较大的模型。

其次,许多下游视觉任务,如目标检测和语义分割,需要高分辨率输入图像或大注意力窗口。低分辨率预训练和高分辨率微调之间的窗口大小变化可能非常大。当前的常见做法是对位置偏差图执行双三次插值 [22、46]。这个简单的修复有点特别,结果通常不是最佳的。我们引入了对数空间连续位置偏差 (Log-CPB),它通过在对数空间坐标输入上应用小型元网络为任意坐标范围生成偏差值。由于元网络采用任何坐标,预训练模型将能够通过共享元网络的权重在窗口大小之间自由传输。我们方法的一个关键设计是将坐标转换为对数空间,这样即使目标窗口大小明显大于预训练窗口大小,外推率也可以很低。模型容量和分辨率的扩大也导致现有视觉模型的 GPU 内存消耗过高。为了解决内存问题,我们采用了多项重要技术,包括零优化器 [54]、激活检查点 [12] 和一种新颖的顺序自注意力计算实现。

使用这些技术,大型模型和分辨率的 GPU 内存消耗显着减少,对训练速度的影响很小。通过上述技术,我们使用 Nvidia A100-40G GPU 成功训练了一个 30 亿的 Swin Transformer 模型,并将其有效地转移到图像分辨率高达 1,536×1,536 的各种视觉任务中。在我们的模型预训练中,我们还采用了自我监督的预训练来减少对超大标签数据的依赖。 30 亿模型的标记数据比以前的实践 (JFT3B) 少 40 倍,在广泛的视觉基准测试中达到了最先进的精度。具体来说,它在 ImageNet-V2 图像分类验证集 [55] 上获得了 84.0% 的 top-1 精度,在对象检测的 COCO 测试开发集上获得了 63.1 / 54.4 box / mask AP,在 ADE20K 语义分割上获得了 59.9 mIoU,在 ADE20K 语义分割上获得了 86.8 Kinetics-400 视频动作分类的 top-1 精度百分比,比原始 Swin Transformers [46、47] 中的最佳数字高 +NA%、+4.4/+3.3、+6.3 和 +1.9,并超过之前的最佳记录 +0.8%([80])、+1.8/+1.4([74])、+1.5([4])和 +1.4%([57])。

通过扩大在一般视觉任务上表现出色的视觉模型的容量和分辨率,就像一个好的语言模型在一般 NLP 任务上的表现一样,我们旨在激发更多这方面的研究,以便我们最终能够缩小视觉之间的容量差距和语言模型,并促进这两个领域的联合建模。

2.相关工作

语言网络和扩展自 [65] 的开创性工作以来,Transformer 一直服务于标准网络。扩展该架构的探索已经开始,有效的自我监督学习方法的发明加速了进展,例如屏蔽或自回归语言建模 [19,52],并进一步受到发现的鼓舞比例定律 [36]。从那以后,语言模型的容量在几年内急剧增加了 1000 多倍,从 BERT-340M 到 Megatron-Turing-530B [7, 49, 50, 53] 和稀疏的 Switch-Transformer-1.6T [ 24]。随着容量的增加,各种语言基准的准确性得到了显着提高。零样本或少样本性能也得到显着改善 [7],这是人类通用智能的基础。

视觉网络和扩大规模CNN 长期以来一直是标准的计算机视觉网络 [40、41]。自 AlexNet [40] 以来,架构变得更深、更大,极大地推进了各种视觉任务,并在很大程度上推动了计算机视觉深度学习的浪潮,例如 VGG [60]、GoogleNet [62] 和 ResNet citehe2015resnet。在过去两年中,CNN 架构进一步扩展到大约 10 亿个参数 [27, 39],然而,绝对性能可能并不那么令人鼓舞,这可能是由于 CNN 架构中的归纳偏差限制了建模能力。

去年,Transformers 开始接管一个又一个具有代表性的视觉基准,包括 ImageNet1K 图像级分类基准 [22]、COCO 区域级目标检测基准 [46]、ADE20K 像素级语义分割基准 [46、83]、Kinetics -400 video action classification benchmark [2] 等。自从这些工作以来,已经提出了许多视觉 Transformer 变体以提高相对较小规模的准确性 [14、21、34、42、63、68、71、75、77, 78, 82]。只有少数作品试图扩大变形金刚的视野 [17, 56, 80]。然而,它们依赖于带有分类标签的巨大图像数据集,即 JFT-3B,并且仅适用于图像分类问题。

跨窗口/内核分辨率传输 对于 CNN,以前的工作通常在预训练和微调期间固定内核大小。全局视觉 Transformers,例如 ViT [22],在全局范围内计算注意力,等效的注意力窗口大小与增加的输入图像分辨率成线性比例。对于局部视觉 Transformer 架构,例如 Swin Transformer [46],窗口大小可以在微调期间固定或更改。允许可变窗口大小在使用中更方便,以便被可能可变的整个特征图整除,并调整感受野以获得更好的准确性。为了处理预训练和微调之间的可变窗口大小,双三次插值是以前的常见做法 [22、46]。在本文中,我们提出了一种对数间隔连续位置偏差方法 (Log-CPB),该方法可以在低分辨率下更平滑地传输预训练模型权重以处理更高分辨率的窗口。

偏置项研究在LP 中,与原始 Transformer [65] 中使用的绝对位置嵌入相比,相对位置偏差方法被证明是有益的 N[53]。在计算机视觉中,相对位置偏差方法更常用[31,46,75],可能是因为视觉信号的空间关系在视觉建模中起着更重要的作用。一种常见的做法是直接学习偏差值作为模型权重。还有一些工作专门研究如何设置和学习偏差项 [38, 69]。

连续卷积和变体我们的 Log-CPB 方法也与早期关于连续卷积和变体的工作有关 [30、45、58、67],它们利用元网络来处理不规则数据点。我们的 Log-CPB 方法受到这些努力的启发,同时解决了跨任意窗口大小传递视觉 Transformer 中的相对位置偏差的不同问题。我们还提出了对数空间坐标,以减轻在大尺寸变化之间转移时外推的难度。

3. Swin TransformerV2

3.1. Swin Transformer 简述

Swin Transformer 是一个通用的计算机视觉主干,在区域级目标检测、像素级语义分割和图像级图像分类等各种粒度识别任务中取得了强大的性能。 Swin Transformer 的主要思想是在 vanilla Transformer encoder 中引入了几个重要的视觉先验,包括 hierarchy、locality 和 translation invariance,结合了两者的长处:基本的 Transformer 单元具有强大的建模能力,而视觉先验使得它对各种视觉任务友好。

规范化配置 众所周知,规范化技术 [3, 35, 64, 70] 对于稳定训练更深层的架构至关重要。原始的 Swin Transformer 继承了语言 Transformers [52] 和 vanilla ViT [22] 中的常见做法,无需广泛研究即可使用预规范化配置,如 图1 所示。在以下小节中,我们将研究此默认规范化配置 1。

 图1  为了更好地扩大模型容量和窗口分辨率,在原来的 Swin Transformer 架构(V1)上做了一些调整: 1)一个 res-post-norm 来取代之前的 prenorm 配置; 2) 一个缩放的余弦注意力来代替原来的点积注意力; 3) 一种对数间隔连续相对位置偏差方法来取代以前的参数化方法。适应 1) 和 2) 使模型更容易扩展容量。适应 3) 使模型可以更有效地跨窗口分辨率传输。改编后的架构被命名为 Swin Transformer V2。

相对位置偏差是原始 Swin Transformer 中的一个关键组成部分,它引入了一个额外的参数偏差项来编码自注意力计算中的几何关系:

Attention(Q,K,V)=SoftMax(QK^{T}/\sqrt{d} +B)V(1)

其中 B ∈ \mathbb{R}^{M^{^{2}}\times M^{2}} 是每个头的相对位置偏差项; Q, K, V ∈ \mathbb{R}^{M^{2}\times d}是查询、键和值矩阵; d 是查询/键维度,M^{2}是窗口中的补丁数。相对位置偏差对视觉元素的相对空间配置进行编码,并且在各种视觉任务中显示出至关重要,特别是对于密集识别任务(例如对象检测)。在 Swin Transformer 中,每个轴的相对位置在 [−M + 1, M − 1] 范围内,相对位置偏差被参数化为偏差矩阵 \widehat{B}\mathbb{R}^{(2M-1)\times (2M-1)}, B 中的元素取自 \widehat{B}。当跨不同窗口大小进行迁移时,使用预训练中学习的相对位置偏差矩阵来初始化不同大小的偏差矩阵,通过双三次插值进行微调。

扩大模型容量和窗口分辨率的问题当我们扩大 Swin Transformer 的容量和窗口分辨率时,我们观察到两个问题。

 图 2. 各种模型尺寸的信号传播图 [6, 76]。 H 尺寸的模型在自监督学习阶段进行训练,其他尺寸的模型通过图像分类任务进行训练。 * 表示我们在崩溃前使用了一个 40-epoch 模型。

表 1. 使用 Swin-T 的不同位置偏差计算方法的比较。 * 表示从头开始训练的 ImageNet-1k 上的 top-1 精度。 * 列中的模型将用于使用更大的图像/窗口分辨率在 ImageNet-1K 图像分类任务上进行测试,标有 †。对于这些结果,我们报告了 w.o./with fine-tuning 的结果。这些模型还用于微调 COCO 对象检测和 ADE20K 语义分割任务。 

图 3. 训练中的 SwinV1-H 与 SwinV2-H [72]。

扩展模型容量时的不稳定问题。图 2 所示,当我们将原始 Swin Transformer 模型从小尺寸放大到大尺寸时,更深层的激活值急剧增加。振幅最高和最低的层之间的差异达到了 104 的极值。当我们将其进一步放大到一个巨大的尺寸(6.58 亿个参数)时,它无法完成训练,如图 3 所示。

跨窗口分辨率传输模型时性能下降。表 1 的第一行所示,当我们通过双三次插值方法。可能值得重新审视原始 Swin Transformer 中的相对位置偏差方法。

在以下小节中,我们将介绍解决这些问题的技术,包括用于解决不稳定问题的残差后归一化和缩放余弦注意力,以及用于解决跨窗口分辨率传输问题的对数空间连续位置偏差方法。

3.2.扩大模型容量

如3.1节所述,原始的Swin Transformer(以及大多数视觉Transformer)在每个块的开头采用了一层范数层,继承自vanilla ViT。当我们扩大模型容量时,在更深层观察到激活值的显着增加。事实上,在预归一化配置中,每个残差块的输出激活值直接合并回主分支,并且主分支的幅度在更深的层变得越来越大。不同层的大幅度差异会导致训练不稳定。

后归一化 为了缓解这个问题,我们建议使用残差后归一化方法,如图 1 所示。在这种方法中,每个残差块的输出在合并回主分支之前被归一化,主分支的幅度当层变深时,分支不会累积。如图 2 所示,这种方法的激活幅度比原始预归一化配置中的激活幅度要温和得多。在我们最大的模型训练中,我们在主分支上每 6 个 Transformer 块引入一个额外的层归一化层,以进一步稳定训练。

Scaled cosine attention 在最初的自注意力计算中,像素对的相似性项被计算为查询和关键向量的点积。我们发现,当这种方法用于大型视觉模型时,学习到的一些块和头的注意力图经常由少数像素对支配,尤其是在 res-post-norm 配置中。为了缓解这个问题,我们提出了一种缩放余弦注意力方法,通过缩放余弦函数计算像素对 i 和 j 的注意力逻辑:

Sim\left ( q_{i},k_{j} \right )=cos\left ( q_{i},k_{j} \right )/\tau +B_{ij},(2)

其中 Bij 是像素 i 和 j 之间的相对位置偏差; \tau是一个可学习的标量,不跨头和层共享。 \tau 设置为大于 0.01。余弦函数自然归一化,因此可以具有更温和的注意力值。

 3.3.放大窗口分辨率

在本小节中,我们介绍了一种对数间隔的连续位置偏差方法,以便可以在窗口分辨率之间平滑地传递相对位置偏差。

连续相对位置偏差不是直接优化参数化偏差,连续位置偏差方法在相对坐标上采用小型元网络:

B(∆x, ∆y) = G(∆x, ∆y), (3)

其中 G 是一个小型网络,例如,一个 2 层 MLP,默认情况下其间有 ReLU 激活。

元网络 G 为任意相对坐标生成偏置值,因此可以自然地转移到具有任意变化的窗口大小的微调任务。在推理中,可以预先计算每个相对位置的偏差值并将其存储为模型参数,这样的推理与原始参数化偏差方法相同。

对数空间坐标 当在变化很大的窗口大小之间传输时,需要推断大部分相对坐标范围。为了缓解这个问题,我们建议使用对数空间坐标而不是原始的线性空间坐标:

\widehat{\Delta x}=sign(x)\cdot log(1+|\Delta x|), \widehat{\Delta y}=sign(y)\cdot log(1+\left | \Delta y \right |)(3)

其中 ∆x, ∆y 和, \widehat{\Delta x},\widehat{\Delta y} 分别是线性标度坐标和对数空间坐标。

通过使用对数空间坐标,当我们跨窗口分辨率传递相对位置偏差时,所需的外推比将比使用原始线性空间坐标小得多。例如,从预训练的 8 × 8 窗口大小转移到微调的 16 × 16 窗口大小,使用原始原始坐标,输入坐标范围将从 [−7, 7]×[−7, 7] 到 [−15, 15]×[−15, 15]。外推比为原始范围的 8 7 = 1.14 倍。使用对数空间坐标,输入范围将从 [−2.079, 2.079] × [−2.079, 2.079] 到 [−2.773, 2.773] × [−2.773, 2.773]。外推比为原始范围的 0.33 倍,比使用原始线性空间坐标的外推比小约 4 倍。

表 1 比较了不同位置偏差计算方法的传输性能。可以看出,对数间隔的 CPB(连续位置偏差)方法表现最好,尤其是在转移到较大的窗口尺寸时。

3.4.自监督预训练

更大的模型需要更多的数据。为了解决数据饥饿问题,以前的大型视觉模型通常使用大量标记数据,例如 JFT-3B [17、56、80]。在这项工作中,我们利用一种自我监督的预训练方法 SimMIM [72] 来减轻对标记数据的需求。通过这种方法,我们成功地训练了一个强大的 30 亿参数 Swin Transformer 模型,该模型在 4 个具有代表性的视觉基准上达到了最先进 (SOTA),仅使用 7000 万张标记图像(JFT 中的 1/40) 3B)。

3.5.节省 GPU 内存的实现

另一个问题在于,当容量和分辨率都很大时,常规实施的 GPU 内存消耗无法承受。为了解决内存问题,我们采用以下实现:

·零冗余优化器 (ZeRO) [54]。在优化器的一般数据并行实现中,模型参数和优化状态被广播到每个 GPU。这种实现方式对GPU显存的消耗非常不友好,例如一个30亿参数的模型在使用AdamW优化器和fp32权重/状态时会消耗48G GPU显存。使用 ZeRO 优化器,模型参数和相应的优化状态将被拆分并分配给多个 GPU,从而显着降低内存消耗。我们采用 DeepSpeed 框架并在我们的实验中使用 ZeRO stage-1 选项。这种优化对训练速度影响不大。

·激活检查点 [12]。 Transformer 层中的特征映射也会消耗大量 GPU 内存,当图像和窗口分辨率较高时,这会造成瓶颈。激活检查点技术可以显着降低内存消耗,同时训练速度最多降低 30%。

·顺序自注意计算。要在非常大的分辨率上训练大型模型,例如 1,536×1,536 分辨率的图像,窗口大小为 32×32,即使采用上述两种优化技术,普通 A100 GPU(40GB 内存)仍然无法承受。我们发现在这种情况下,selfattention 模块构成了瓶颈。为了缓解这个问题,我们顺序实施自注意力计算,而不是使用以前的批量计算方法。这种优化应用于前两个阶段的层,对整体训练速度影响不大。

通过这些实现,我们成功地使用 Nvidia A100-40G GPU 训练了一个 3B 模型,用于输入图像分辨率为 1,536×1,536 的 COCO 对象检测和输入分辨率为 320 × 320 × 8 的 Kinetics-400 动作分类。

3.6.模型配置

我们为 Swin Transformer V2 的 4 个配置保留原始 Swin Transformer 的阶段、块和通道设置:

• SwinV2-T: C = 96, #. block = {2, 2, 6, 2}

• SwinV2-S/B/L: C=96/128/192, #.block={2, 2, 18, 2}

C 是第一阶段的通道数。

我们进一步将 Swin Transformer V2 扩展到它的巨大尺寸和巨大尺寸,分别具有 6.58 亿个参数和 30 亿个参数:

• SwinV2-H: C = 352, #. block = {2, 2, 18, 2}

• SwinV2-G: C = 512, #. block = {2, 2, 42, 4}

对于 SwinV2-H 和 SwinV2-G,我们每 6 层在主分支上添加一个额外的层归一化层。为了节省实验时间,我们只使用 SwinV2-G 进行大规模实验。 SwinV2-H 用于另一项关于自我监督学习的平行研究 [72]。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值