最容易理解的ConViT: Improving Vision Transformerswith Soft Convolutional Inductive Biases

  • Post author:
  • Post category:其他


之前的博客介绍了transformer和transformer在CV领域应用的VIT论文,有兴趣的同学可以参考

transformer



VIT

。VIT虽然在性能上已经达到了目前图像分类的SOTA的程度,但是它需要依赖巨大的数据集,比如Google的JFT都是以亿为单位计算的。显然,作为我们这种个人玩家是无法应用的,那么Facebook继VIT之后,推出ConVit解决了该问题。本想看看哪位大神对这篇文章解读的比较好我就不看原文了,看看原理得了^_^,因为我想跳过它直接看看Swin Transformer^_^,但是在网上并没有看到有大神对它完整的解读,那索性就先把ConViT写上吧,正好预告一下下一篇写Swin Transformer(虽然它真是被各位大神写的非常透彻了,但是我还是想看看原文自己再更深入的理解一下它^_^)。今天这篇博客介绍大家可以应用的在CV领域的transformer-ConVit,话不多说,还是先上连接:

ConVit



ConVit代码地址


论文摘要

CNN已经被证明在CV领域任务中是非常成功的。作者认为CNN的硬归纳偏置确实可以利用少量的样本进行有效的学习,但是有着非常低的上限。VIT依赖更灵活的自注意力层,并且在图像分类任务上已经超越了CNN模型。 但是之前的transformer在CV的工作中,transformer需要依赖非常巨大的数据集,或者需要从其他CNN模型中进行知识蒸馏。这篇文章中,作者提出了这个问题:可以利用transformer和CNN相结合的办法来规避他们各自的局限性吗?为此,作者提出一个门控自注意力机制(


gated positional self-attention,这个中文我就是直译过来的,之后文章简称GPSA


)。GPSA是一种带有一个“软”卷积归纳偏差的位置自注意力的形式。然后通过模仿卷积操作的局部性,通过调节门控参数(

a



gating parameter


)来调整位置对内容信息的关注度,从而对每个注意头的自由规避这个布局的位置(有点绕,看后面理解吧)。作者对由此思路产生的VIT架构称作ConVit,它比DeiT(Deit是在VIT之后解决transformer需要大量图片数据训练的模型,我之后会写一个简短的博文简单介绍一下它)在ImageNet上分类想过更好,并且可以利用更小的数据集。我们进一步研究了局域性在模型训练学习中的作用,首先量化了它是如何在普通的自注意层中被利用的,然后分析了它是如何在GPSA层中起到作用的。作者最后通多不同的消融实验更好的理解ConVit的成功。最后作者开源了论文代码。

引言

过去十年,深度学习的成功在很大程度上是因为有着归纳偏置的模型的推动,比如CV中的CNN,这使得跨领域研究有着非常大的可能。自从2012年AlexNet的成功,CNN已经是CV领域不可或缺的存在。归纳偏差以硬编码形式以两种强约束关系应用到cnn的架构结构中,这两种强约束关系分别是:局部操作和权值共享。通过利用旋转同变形(不包括池化层)和平移不变性(包括池化层),卷积操作的归纳偏置可以使CNN模型更好的利用样本和参数的使用。类似地,对于基本的序列化的任务,带有硬编码记忆核的递归神经网络已经被证明可以简化对长期依赖(LSTM)的学习,并在各种情况下优于普通递归神经网络。

然而,近年来纯基于注意力的模型的兴起,对硬编码归纳偏见的必要性提出了质疑。首先介绍作为递归神经网络的一个附加组件用于

Sequence-to-Sequence的

模型,通过transformer模型的自注意力机制(

Self-Attention (SA)

)的出现导致了NLP领域有了突破性进展。transformer通过模型在大数据集上进行预先训练时的强大性能很快就完全占据了NLP领域。

在CV领域,CNN的卷积的局部操作导致模型对长期依赖进行了弱化,但是注意力机制不会受到这种影响。正式由于卷积操作有局部操作的归纳偏置的性质和注意力机制可以使模型拥有长期依赖的性质,通过这种互补性来达到模型性能的平衡。最近,有研究人员进行了一系列实验,用注意力机制替换ResNets中的部分或所有卷积层,并且通过浅层网络使用卷积,深层网络使用注意力机制的办法使模型性能达到最优。Dosovitskiy等人在2020年提出的Transformer (ViT)通过在enbeding图片patch执行SA,完全没有用到卷积的归纳偏置性质。VIT完全可以媲美甚至超越CNN模型,但是它需要巨量的数据集的进行预训练。VIT之后的DeiT模型通过将CNN网络的知识蒸馏的方式,可以在不适用大规模的巨量的数据集进行预训练的情况下,达到了和VIT的同样的效果。

“软”归纳偏置

ViT最近的成功表明,虽然卷积约束可以在小数据模式下实现强有效的训练,但是当数据集充足的时候,CNN的上限并没有那么高。作则认为,当数据集的数据充足的时候,CNN的硬归纳偏置制约了模型的性能,只有合适的归纳偏置才是对模型训练最有效的。因此,实践者面临两难的选择:是使用卷积模型,它有一个高的性能下限,但由于硬归纳偏差,可能有一个较低的性能上限;还是使用基于自我注意的模型,它有一个较低的下限,但有一个较高的上限。综上所述,作者的动机就是,能否有一种模型既可以CNN的归纳偏置的性质,并且还解决了它的上限问题?就是说,作者在不使用超大规模数据集的情况下,既想获得到CNN的下限,又能获得到transformer的上限。请看下图,图1:

图1

图1中,红色部分表示没用的信息,左边的硬归纳偏置对有用信息和没用信息有着清楚的分割,而右边的软归纳偏置是柔和的进行数据的分析。软归纳偏置可以拒绝模型的上限问题。像CNN这种的硬归纳偏置结构,可以有效地利用数据,但是当数据集大小没有限制,可以获得无限大的数据集时,这种硬的归纳偏置是有上限的。ConVit提出的软归纳偏置意思是,当数据量足够大,不需要归纳偏置的时候,是可以自动消失的,利用这种办法来去掉硬归纳偏置的上限的限制。

按照作者的想法来说,一种成功的方法是在“混合”模型中使用这两种模型,这些交叉或结合的模型利用卷积和自注意力层已经在各种任务中产生了不错的效果(2020、2021出了好几篇这方面的文章,有兴趣的同学可以自行搜一下)。除了这种将卷积和自注意力集合的方式,还有另一种方式就是知识蒸馏,比如DeiT,已经将基于教师网络的归纳偏置的性质蒸馏到了基于自注意力相关的学生网络里面。作者认为,虽然这两种方法提供了一个不错的解决方案,但它们在Transformer中强制引入了卷积的归纳偏置性质,可能会因其硬归纳偏置的原因导致的上限问题而影响Transformer的作用。

本文的贡献

在本文中,作者采取了新的方法来弥补CNN和Transformer之间的不足,提出了一种新的方法,将卷积的硬归纳偏置变为软归纳偏置引入到ViT中,其思想是让每个SA层可以根据上下文自行决定是否作为卷积层出现。本文的贡献如下:

1、提出另一种名为


gated posi




tional self-attention

(GPSA)的结构,并且可以像卷积层一样初始化。

每个注意头可以通过调整一个gate参数自由恢复其本身作用。

2、参考Deti进行试验,使用GPSA代替部分SA层,在不需要巨量数据的情况下,ConVIT的实验结果已经超过的Deit的结果(参考图2结果)。

3、作者分析了为什么局部的注意力为什么会超过VIT的实验结果的部分原因,调研了ConVit的内部工作原理,并进行了消融实验研究它到底从卷积操作中获得了多大的收益。

图2

通过图2可以看出,ConVit无论在同样的数据集下还是同样的参数下,都要优于VIT。左侧图:作者通过在ImageNet-1k的部分数据训练ConViT-S和DeiT-S的样本利用率进行比较,其中只保留每个类别图像的一部分作为数据集。两个模型都使用了‘

Training data-effificient image transformers & distillation through attention

’论文实验中的超参数进行训练。右图:比较了ConViT模型与其他VIT或者CNN模型在ImageNet-1k的top -1准确率。

最后作者进行总结陈述,总的来说,他认为他的工作证明了“软”归纳偏置的有效性,特别是在数据集不是那么庞大的情况下,他觉得他开创了这条可以持续研究的道路。

相关工作

作者是受到最近比较火的利用原始的transformer和CNN结合的启发,事实上,Cordonnier等人(2019)表明,如果每个头聚焦于内核patch中的一个像素,那么具有N个头的SA层可以表示核大小为N的开平方的卷积。通过研究在

CIFAR-10

上训练的模型的注意力图的,表明具有相对位置编码的SA层自然地收敛到类似卷积的配置,这表明一定程度的卷积归纳偏置是可取的(这块是直译的,说的不是人话,哎,意思就是卷积操作是可以用注意力操作来代替的,关于这段后续出一个“On the relationship between self-attention and convolutional layers”的博客解释一下,算个预告吧)。



Revisiting spatial invariance with low-rank local connectivity

”证明了CNN模型硬局部操作的限制问题。非常多非局部操作的方法被应用到了CNN中。除了将非局部操作引入CNN,还有另外的研究方向也被引入到CNN里面。另一个研究方向是利用不同架构的卷积归纳偏置,例如“

Neyshabur, B. Towards learning convolutions from scratch.

Advances in Neural Information Processing Systems



, 33, 2020.

”论文指出使用正则化方法来促使全连接网络(FCNs)在训练过程中从头学习卷积。

论文研究背景

首先介绍一下SA层的基础知识,并且表明带位置的自注意力层可以代替卷积层的操作。



Multi-head self-attention


自注意力是使用K、Q的向量操作形成的关联性,将一个L1(query)的序列化向量进行embedding操作到Q∈

,Q是与L2匹配的另一个序列L2(key)的K∈

。K与Q使用內积,它们內积的结果就是一个注意力矩阵,(ij)量化了Qi与Kj在语义上的相关性,这就是自注意力操作,也是transformer的核心,公式如下:

利用一个序列化的数据进行自我与自我的比较用来提取自身与其他信息的语义关系,自注意力是注意力机制的一种比较特殊的存在。在VIT中,query和key是

linear projections,将一副图像划分为16×16像素的patches,然后进行embedding。所以,


多头注意力就是利用几个平行的自注意力头,从不同的角度进行依赖关系的学习。这些多头注意力模块以size为

的序列化数据L进行embedding,并通过下面公式的机制输出相同尺寸的L的embedding序列,下面的公式(2)和公式(3)就是transformer中的多头注意力计算公式,如果又不太明确的同学可以参考我之前写的关于transformer的文章:

但是在公式1中,这种自注意力是位置无关的,意思是说patches里面它们是彼此不知道位置关系的。为了将位置信息融入注意力里面,已经有研究人员使用了几种方法。其中一种就是在进入SA层之前的embedding操作中add位置信息,就是VIT中使用的方法。另一种方法就是使用位置自注意力(

positional self-attention (PSA)

)来代替SA模块,利用patch i和j的相对位置的rij进行编码,其实这个过程就是将原来位置信息是在embedding中加入了位置向量信息,PSA是在输入数据做embedding时候不需要添加位置信息,而是修改了做Attention时候在K里面通入了位置信息,就是带位置的SA,即PSA,就像“

Stand-alone self-attention in vision models

”作者使用的方式:

这种方法中逐个地计算矩阵中的每个元素。取出Q的第i行,尺寸为1*Demb,K的第j行,并转置K的第j行,尺寸为Demb*1,因此两者相乘得到一个数,其实这个数就是原来的A的第i行j列的数。但是,该注意力机制引入了一个可训练的嵌入v,长度为Dpos,Dpos>=3,和只由像素i与j的距离决定的r,这个数实际上由一个二维向量
\gamma _{ij}
表示。

将自注意力作为一种通用卷积操作

还是这篇文章“On the relationship between self-attention and convolutional layers” 的作者

Cordonnier 认为一

个有着

个的头的和embedding 的深度为
D_{pos}\geqslant 3
的MSA层可以表达为任何大小为
\sqrt{N_{h}}
x
\sqrt{N_{h}}
的卷积块,它的计算公式如下:

\Delta ^{h}
表示注意力头h最关注的像素是哪一个patch,它是一个相对的坐标值。每个自注意力头关心的是patch的相对位置关系,比如图3(c)所描述的,从左至右1的相对位置为(-1,1),2的相对位置为(-1,-1),3的相对位置为(1,1),4的相对位置为(1,-1)。

公式(5)中的
\alpha ^{h}
>0表示局部位置的强度,就是注意力的关注点在哪。如果
\alpha ^{h}
比较小,则关注点比较分散,则注意力是一个比较大的区域,例如图(3)的c部分。如果
\alpha ^{h}
比较大,则说明关注的地方比较具体,则关注的地点比较集中,如图(3)d部分。

图3

位置自注意力层可以像卷积操作一样初始化。图3中,(a):来自ImageNet的输入图像,其中查询patches的位置用红色框表示。图3中,b表示未经过预处理的SA层,c和d分别是参数a=0.5和a=2的局部强度参数利用公式5像卷积操作一样进行初始化。注意,当仅仅关注纯粹的位置信息时,图像的内容可以很容易地在(b)中分辨出来,但在(c)或(d)中很难分辨出来。

所以,多头PSA可以完成类似于卷积操作通过设置注意力中心的
\Delta ^{h}
到 大小为
\sqrt{N_{h}}
x
\sqrt{N_{h}}
的卷积块的每一个可能的位置偏移量,并将局域强度
\alpha ^{h}
趋近于某个比较大的值,可以更突出注意力。

实现方法

作者在VIT的基础上通过gated positional self-attention(GPSA)来代替一部分SA层,称之为ConVit。其核心思想是在初始化GPSA层中利用公式(5)实现类似于卷积的操作,然后让GPAS决定是否在后面的层中使用“卷积”操作。然而,标准的参数化的PSA层(公式(4))存在两个局限性,所以作者进行量两处修改。

1、自适应注意力

PSA的第一个问题就是需要巨大的训练参数,因为相对位置编码数
\gamma _{\delta }
在patches中为平方的。这就导致一些研究者的解决办法是将注意力分配到patches里面的一部分数据,这肯定会丢失长距离的依赖信息。为了遍这种情况,作者将
\gamma _{\delta }
固化,只训练
\nu _{pos}^{h}
用来决定多注意力头关注的中心和广度。
\gamma _{\delta }

\nu _{pos}^{h}
根据公式(5)进行初始化,由于位置向量远小于数据向量,所以位置的注意力向量的计算其实是很小的。

2、位置控制

标准PSA的第二个问题是公式(4)的内容和位置向量可能有不同的量级,在这种情况下,softmax必然将两个中最小的一个省略掉。在实践中,观察到在通常的PSA层上,使用卷积初始化方案可以在早期提升性能,但会降低后期性能,因为注意机制会忽略内容信息。

使用GPSA层而不是标准PSA层的,后者的内容和位置信息在softmax之前被相加到一起,导致注意力头只关注位置信息。为了证明PSA确实有这个问题,作者进行了实验,如图9所示:

作者使用了ConVit-B模型训练了300个epoch在ImageNet数据集上,但是只用了标准的PSA,没有使用GPSA。在训练早期,PSA的卷积初始化仍然使ConViT比DeiT基线有很大的优势。但是随着训练,ConVit依然使用这PSA的卷积初始化并且忽视了内容信息。到了训练后期,Deti利用内容信息,准确率已经超过了ConVit。

所以为了避免这个问题,GPSA 是在softmax之后再将内容和位置信息相加,它们的相对重要程度由一个可学习的门参数
\lambda _{h}
控制(每个注意头都有一个
\lambda _{h}
),GPSA的计算过程如下所示:

其中,

并且再进行sigmod。如果初始化时候设置
\lambda _{h}
为一个较大数,所以

,所以这样的话初始时候GPSA的注意力进本都在位置信息上。不能让
\lambda _{h}
一直保持在一个较大的数,这样经过sigmod之后,注意力就一直都在位置信息上,所以
\lambda _{h}
的初始值设为1,且Q=K=0,当Q=K=0时,注意力头都在位置上,更关注局部信息,它的输出才类似于卷积。

ConVit详细的架构设计

ViT将输入的224×224的图像切成16 × 16个14 × 14像素不重叠的patch块,并使用卷积将其嵌入到
D_{emb}=64N_{h}
的向量中(通道数为64)。然后,它将这些patches传播到12个保持其维数不变的block中(就是transformer encoder)。每个block首先是SA层,然后跟着两个FFN层使用GeLU激活函数,并且都是用了残差连接。ConViT类似于ViT,其中前10个块通过带卷积初始化的GPSA替换SA层。

类似BERT一样,VIT也采用了一个class token添加到patches中进行类别预测。VIT的SA层是不带位置注意力机制的,VIT只是将位置信息在进入第一个SA成之前的embedding 时候添加到了patches中。由于GPSA层涉及到了位置注意力机制,所以它们不太适合使用token。为解决位置问题,ConVit是在最后一层的GPSA之后,并且是SA层之前添加了类别token,如图(4)所示:

图4

图(4)就是ConVit的详细架构图。上图中(左)是ConViT的主要架构模块,它与ViT的主要区别是前面的SA被GPSA所取代。再者就是,VIT做embedding时候的class token现在没有了,但是在做完GPSA之后,进入SA层之前被隐藏的添加到了最后一层GPSA输出的向量中。论文是使用了10个GPSA和2个SA。相对位置编码(固定)。

训练过程

ConViT以DeiT为基础,使用ViT的超参数优化版本,地址

地址

。 由于DetT能够在不使用任何外部数据的情况下实现比较好的训练结果。并且DeiT也相对容易训练,它最大的模型(DeiT-B)只需要在8个GPU上进行大概3天的时间进行训练,这可比VIT强得多的多。

为了模拟2 × 2、3 × 3和4 × 4的卷积,如表1所示:

表1是从零开始在ImageNet上进行的训练。Speed是指在batch size为128的情况下,GPU为Nvidia Quadro GP100 每秒处理的图像数量。 Top-1精度是在ImageNet-1k测试集上没用知识蒸馏的测量准确率。

为了获得相似大小的模型,作者使用了两种比较方法。模仿2×2,3×3和4×4卷积核,作者考虑三种不同的ConViT模型分别是4、9和16头(表1)。ConViT的头略大于DeiT-Ti, ConViT-S ConViT-B,DeiT分别使用3、6和12头的自注意力层(同时也做了相同头数量的情况下的比较(表1))。为了获得相似大小的模型,我们使用了两种比较方法

1、embedding的通道数由64降维48,不改变任何的超参数,数据增强等。全部都用相同的条件下,得到的模型被命名为ConViT-Ti、ConViT-S和ConViT-B。

2、DeiT和ConViT的embedding的通道数都为64,以确保ConViT带来的改善不仅仅是由于头的数量增加。ConViT更大的模型以+来表示。在8个gpu上拟合这些模型的同时,为了保持稳定的训练,作者将学习速率0.0005调整到0.0004,批大小从1024到512。这些最小的超参数变化导致DeiTB+的性能不如DeiT-S+,而ConViT的情况则不同,这表明它对超参数变化具有更高的稳定性。

在表1中,展示了这些模型分别在参数量、

Flops和速度上,

在ImageNet数据集上训练300个次epoch的训练结果。同样的条件下ConViT都要超过DeiT的结果。

同样的,ConViT也可以使用知识蒸馏,使用硬蒸馏效果提升明显,如下表所示:

使用蒸馏,从上表可以看出来与未进行蒸馏的模型相比,DeiT和ConViT模型大小降低了一般,并且准确率还有了提升。然而,虽然知识蒸馏在每一步的训练中都需要通过一个预先训练的CNN进行额外的知识传递,但ConViT没有这样的要求,在不增加蒸馏的计算量的情况下达到了和Deit同样的效果,甚至超过了它。

目前transformer在CV领域的应用肯定逃不过对样本效率的研究,作者也同样的做了这方面的工作,如表(2)所示:

表2

卷积归纳偏置极大地提高了样本效率,作者比较了DeiT和ConViT在top-1和top-5的准确率,都使用了原始的DeiT的超参数,以及ConViT相对于DeiT的相对改进之后的对比。两个模型都在ImageNet-1k的子样本上进行训练,其中只保留每个类图像的一小部分进行训练。从表2可以看出来作则分别用{0.05,0.1,0.3,0.5,1}的比例缩小数据集进行训练,可以看出来DeiT和ConVitT的Top-1和Top-5的准确率都收到了不同程度的影响,但是从Gap列可以看出来,DeiT明显比ConViT的准确率要低得多(Gap计算结果=(ConViT-DeiT)/Deit的结果),可以看到DeiT受数据集大小影响更严重。从结果可以看出来,ConViT对数据集的依赖并没有那么大,它对样本利用率还是非常高的。

所以,从上诉结果可以看出,卷积偏置是对数据集利用影响最大的。



Investigating the role of locality


本节将介绍SA层的局部偏置确实是有帮助的,并且ConViT确实从局部偏置上获益了。

SA层被拉向局部

作者首先调查PSA层在训练过程中受到局部偏置的收益是否适用于ConViT的普通SA层,这些SA层没有从位置注意力获得更多信息。作者采用公式(8)进行DeiT和ConViT的非局部关系进行试验:

实验结果请看图5:

图5

从图5中可以看出,DeiT和ConViT都经过300个epochs进行训练,DeiT从开始训练就保持着很高的非局部特性(意味着自注意力有着很高的长期依赖性和全局性),随着训练的进行,DeiT尝试进行关注到局部信息,但是训练到中后期,非局部特性又开始向上反升,说明自注意力是尝试着进行局部注意力的关注的,但是并没有成功。图5中的右侧是ConViT,可以看到除了最后两层的SA是初始化就是非局部特性的,前面10层的GPSA都是从非局部特性随着训练的深入慢慢变为具有全局注意力特点的。这说明GPSA兼容了CNN的局部偏置和自注意力的全局特性。

图15

上图中,揭示了DeiT训练结束时的平均注意力图的位置信息。为了更好地看到注意力的中心,作者平均了100多张图像的注意力图。作者给出了一些可视化的证据,将普通SA层通过平均100多张图像,让DeiT的第一层和第十层的注意力特征图提取局部信息。训练开始前,图15(a)图像看起来是随机的。但是在训练后图15(b)Layer1看起来是查询像素及其周围的信息,而Layer10则是捕获到了全局的相关性。看一看出来SA在开始的浅层网络还是想去收集局部信息,但是最后并没有成功,最后依然是全局信息。

GPSA层摆脱局部性

在ConViT开始的时候,由于强行利用类卷积操作进行初始化,所以GPSA层是有着非常强的非局部特性的,如图5右侧所示。我们看到,随着非局部性特性在所有GPSA层中增长,局部配置在整个训练过程中被转为全局注意力了。然而,GPSA训练结束时的非局部性比DeiT所达到的要低,这表明在整个训练过程中还是保留了一些类卷积操作的初始化信息。

图6

图6中是门控参数在ConViT的内部作用,图中的彩色线表示注意力头,一共九个注意力头。可视化了注意力头对位置信息和内容信息的关注程度,也就是公式(7)的σ(
\lambda _{h}
)的值。黑线代表8个注意力头值的平均数。作者用ConViT-S在ImageNet上训练了300 epochs。

为了获得更多的理解,作者在图6中检查了门控参数的作用。可以看到,在所有层中平均控制参数 σ(
\lambda _{h}
)(黑色),反映了对位置信息相对于内容的平均关注量,在整个训练过程中有所下的。 σ(
\lambda _{h}
)在第6-10层达到0,从公式(7)看出,这意味着位置信息实际上被忽略了。然而,在1-5层,部分注意头保持较高的 σ(
\lambda _{h}
)值,说明利用位置信息其实起着关键作用。作者发现,ConViT-Ti只使用位置信息到第4层,而ConViT-B使用位置信息到第6层,如下图(a)(b)所示,表明可能更大的模型从类卷积初始化的收益更少。

模型越大,图层越注重位置。作者绘制了在ImageNet-1k上训练的300个epochs中,各个头和各个层的门控参数,如图6所示(越浅层,对位置信息的关注越少)。注意,ConViT-Ti只有4个注意头,而ConViT-B有16个,因此曲线的数量不同。

图7

为了进一步说明ConViT的内部工作原理,作者继续做实验,如图7所示。这是通过输入一个embedding的图像通过注意力层和选择一个查询patch在图像的中心的可视化。图7中,ConViT血多了不同种类的注意力,得到了不同的注意力图。a是输入图像,经过embedding之后被送入ConViT,要查询patch用红色框突出显示,颜色图是经过对数处理后的,以便更好地揭示细节。b是DeiT在ImageNet经过300个epoch训练之后的展示效果。c是ConViT在ImageNet经过300个epoch训练之后的展示效果,下面是更全的展示图:

更关注内容信息的  σ(
\lambda _{h}
)用白色颜色展示,更关注位置信息的用红色演示展示。图7中,在第10层,DeiT和ConViT的注意图在性质上很相似,它们都是基于内容的注意力图。但是在第二层却却有着明显的变化,ConViT前2个头更关注内容信息,但是3和4更关注位置信息。虽然3和4注意力头都更关注位置,但是头4保持高度局部化,而头3则扩大它们的注意力跨度,也就是头4更集中注意力,而头3更发散。其实从上图可以看出来更关注位置信息的话,局部偏置就更明显,位置信息稍低的话(0.73>0.51)注意力更发散。



Strong locality is desirable


接下来,我们研究ConViT的两个重要超参数对其性能的影响:局部性强度α,它决定了头部围绕其关注中心的聚焦程度,以及GPSA层取代SA层的数量。作者检查了这些超参数对ConViT-S的影响,在ImageNet的前100个类别上进行训练。如图8所示,最终测试精度随局部强度和GPSA层数的增加而增加,换句话说,越关注局部相关性越好。

图8

图8中,展示了GPSA层在不同训练阶段的表现是如何受到影响的。可以看到,在训练的早期阶段,随着GPAS的数量的增加效果持续特生,尤其早期提升最为明显。在20个epoch之后,使用9个GPSA层导致测试精度几乎翻倍,这表明卷积初始化给模型一个很大的“优势”。

消融实验研究

作者做了一些消融实验,如表3所示,ConViT用a表示。移除位置信息关注的版本记为b。用类似卷积初始化记为c。门控参数和类卷积初始化都用的是d。全部去掉的记为e,与DeiT一样了。

表3

从表3可以看出没有门控的、仅适用GPSA就比DeiT要提高2.5个点(全数据集),使用了卷积初始化的增加了2.9个点。对于都使用的a是增加了3.1个点。说明门控参数和归纳偏置全部带来了性能上的提升。

结论和观点

目前的工作研究了初始化和归纳偏差在

vision transformer

中的重要性。不像在混合模型中那样将卷积层与SA层联合使用,而是让模块通过调整一组门控超参数来决定是否为局部的类似卷积操作。

在未来的工作中将探索的另一个方向是,如果SA层受益于被初始化为随机卷积,是否可以通过将它们初始化为预训练的卷积来更大幅度地提升效果呢?以上就是ConViT的全部内容,下一篇介绍一下Swin Transformer。



版权声明:本文为wind82465原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。