论文阅读笔记——Swin Transformer V2

论文标题:Swin Transformer V2: Scaling Up Capacity and Resolution

摘要:大规模NLP模型已被证明可以显著提高语言任务的性能,而没有饱和的迹象。他们还展示了惊人的很少有人像那样的射击能力。本文旨在探索计算机视觉中的大规模模型。我们解决了大型视觉模型训练和应用中的三个主要问题,包括训练的不稳定性预训练和微调之间的分辨率差距以及对标记数据的渴望

提出了三种主要技术:1)残差后范数方法与余弦注意相结合,提高训练稳定性;2) 一种对数间隔连续位置偏移方法,用于有效地将使用低分辨率图像预先训练的模型转移到具有高分辨率输入的下游任务;3) 一种自监督预训练方法SimMIM,可以减少对大量标记图像的需求。

通过这些技术,本文成功地训练了一个30亿参数的Swin Transformer V2模型,这是迄今为止最大的密集视觉模型,并使其能够训练高达1536×1536分辨率的图像。它在ImageNet-V2图像分类、COCO对象检测、ADE20K语义分割和Kinetics-400视频动作分类等4项具有代表性的视觉任务上创造了新的性能记录。还要注意的是,我们的训练比谷歌的十亿级视觉模型效率高得多,后者消耗的标记数据减少了40倍,训练时间减少了40多倍。

1.引言

一方面,大型语言模型迅速发展并且模型参数量增大,在语言任务中取得了越来越高的性能表现;另一方面,视觉模型的发展一直比较滞后,我们已经里了解到更大的视觉模型通常在视觉任务中表现更好,但现存的一些大视觉模型仅应用在图像分类问题上。

我们的目的是训练大规模的通用视觉模型。需要解决以下几个关键性问题:

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

这两种方法的主要目的是提高模型的容量,前面我们已经提到更大的视觉模型在视觉任内中的表现更好。

论文阅读笔记——Swin Transformer V2_第1张图片

2.许多下游视觉任务,如对象检测和语义分割,需要高分辨率的输入图像或大的注意力窗口。低分辨率预训练和高分辨率微调之间的窗口大小变化可能相当大。利用对数间隔连续位置偏移(LogCPB)将低分辨率图像预先训练的模型转移到高分辨率输入的下游任务。同时,为解决内存问题,我们结合了一些重要的技术,包括零优化器[54]、激活检查点[12]和序列自注意计算的新实现。使用这些技术,大模型和分辨率的GPU内存消耗显著降低,对训练速度的影响很小。

这一种方法可以有效的实现跨窗口分辨率传输

 综上,我们成果训练了具有30亿参数的Swin Transformer V2模型,结合自我监督的预训练,减少对标记数据的依赖;结果是新模型在图像分类、目标检测、语义分割等视觉任务中都取得了最优表现。

2.相关工作

语言模型及其扩展:以Transformer为基础架构的语言模型的容量,近年来急剧增加,并且随着模型的增大,语言基准的准确性得到了显著提升。零样本或少速性能也显著提高[7],这是人类通用智能的基础。

视觉模型及其扩展:卷积神经网络是标准的视觉神经网络,虽然神经网络的架构越来越深,然而,绝对性能可能并不那么令人鼓舞,可能是由于CNN架构中的归纳偏差限制了建模能力。Transformer提出后,应用于多个应用场景,近年来提出Transformer变体,旨在在小范围内提高准确性。只有少数作品放大Transformer,然而它依赖大量标注图像以及旨在图像分类任务中具有较多的应用。

跨窗口/内核分辨率传输:对于卷积神经网络,以前的工作通常在预训练和微调期间固定内核大小。全局视觉转换器,如ViT[22],全局计算注意力,等效注意力窗口大小与增加的输入图像分辨率成线性比例。对于局部视觉转换器架构,如Swin-Transformer[46],窗口大小可以在微调期间固定或更改。为了处理预训练和微调之间的可变窗口大小,双三次插值是以前的常见做法[22,46]。在本文中,我们提出了一种对数间隔连续位置偏移方法(log-CB),该方法在低分辨率下更平滑地传输预先训练的模型权重,以处理更高分辨率的窗口。

偏项研究:在NLP中,与原始Transformer[65]中使用的绝对位置嵌入相比,相对位置偏移方法被证明是有益的[53]。一种常见的做法是直接学习偏差值作为模型权重。还有一些工作专门研究如何设置和学习偏差项[38,69]。

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

3.Swin Transformer V2

3.1 浅谈Swin Transformer

3.2 扩大模型容量

后规范化:

论文阅读笔记——Swin Transformer V2_第2张图片

缩放余弦注意力:

3.3 扩大窗口分辨率

对数间隔连续位置偏移方法

3.4 自监督预训练策略

3.5 节省GPU内存的实现

  • ZeRO优化器:ZeRO是将模型参数和优化器状态参数均分到不同的GPU上,这样就可以降低显存使用,这里采用DeepSpeed库的ZeRO-1,它可以降低显存消耗但是几乎不影响训练速度。
  • Activation check-pointing:模型的中间特征也会消耗大量的GPU,可以采用activation check-pointing来缓解这个问题,目前PyTorch已经支持,具体见https://pytorch.org/docs/stable/checkpoint.html。这个优化虽然降低了显存消耗,但是也将训练速度降低了30%。
  • Sequential self-attention computation:不再对self-attention进行batch运算,而是序列地逐个执行,从而降低显存使用,不过这个优化只在前两个stages使用,对训练速度只有少量的影响。

3.6 模型配置

4. 实验

5. 结论

我们已经提出了将Swin Transformer的参数缩放到30亿的技术,并使其能够使用高达1536×1536分辨率的图像进行训练,包括分辨率后范数和缩放余弦注意力,以使模型更容易进行容量缩放,以及对数间隔连续相对位置偏移方法,该方法使模型能够更有效地跨窗口分辨率传输。经过调整的架构被命名为Swin Transformer V2,通过提高容量和分辨率,它在4个具有代表性的视觉基准上创下了新纪录。通过这些强有力的结果,我们希望激发更多这方面的研究,从而最终缩小视觉和语言模型之间的能力差距,促进这两个领域的联合建模。

6.自我总结

首先为提高模型的容量以及解决模型容量增大带来的训练不稳定问题,提出后规范化策略以及缩放预先注意力方法;

其次,针对图像分类任务分辨率较低,而一些下游任务图像分割、检测任务输入的图像分辨率往往较高,当把分类模型迁移到其他任务时,需要增大window_size来提高感受野,那么就需要对相对位置偏差进行插值,直接插值的效果比较差,采用Log-CPB策略;

其次,采用自监督训练策略,减少对标记数据的依赖;

最后,采用一些措施来节省GPU内存。

你可能感兴趣的:(论文阅读,笔记,transformer)