On the Integration of Self-Attention and Convolution
- 摘要
- [3 重新审视卷积和自注意力](#3 重新审视卷积和自注意力)
-
- [3.1 卷积](#3.1 卷积)
- [3.2 自注意力](#3.2 自注意力)
- [3.3 计算成本(稍后再看)](#3.3 计算成本(稍后再看))
- [4 方法](#4 方法)
-
- [4.1 联系 self-attention 和 convolution](#4.1 联系 self-attention 和 convolution)
- [4.2 融合 self-attention 和 convolution](#4.2 融合 self-attention 和 convolution)
- [4.3 改良的移位(shift)和求和(summation)](#4.3 改良的移位(shift)和求和(summation))
- [4.4 ACmix 的计算复杂度(稍后再看)](#4.4 ACmix 的计算复杂度(稍后再看))
- [4.5 推广到其他 attention modes](#4.5 推广到其他 attention modes)
- [6 结论](#6 结论)
发布时间(2022 CVPR)
标题:关于自注意力机制与卷积的整合
1)具体怎么实现
2)计算复杂度问题
3)三个类似的变体(Patchwise、Swin-Transformer、ViT)
摘要
卷积和自注意力是表示学习的两种强大技术,它们通常被认为是两种截然不同的方法
在本文中,我们表明它们之间存在着强烈的潜在关系,因为这两个范式的大部分计算实际上是通过相同的操作完成的。
具体来说,我们首先证明,核大小为 k×k 的传统卷积可以分解为 k² 个单独的 1×1 卷积,然后进行移位和求和运算。
然后,我们将自注意力模块中 query、key 和 value 的投影解释为多个 1×1 卷积,然后计算注意力权重并聚合值。
因此,两个模块的第一阶段都包含类似的操作。更重要的是,与第二阶段相比,第一阶段贡献了显着的计算复杂度(通道大小的平方)。
这一观察自然导致了这两个看似不同的范式的优雅融合,即混合模型,既享有自注意力和卷积(ACmix)的好处,同时与纯卷积或自注意力相比具有最小的计算开销。
大量实验表明,我们的模型在图像识别和下游任务上取得了比竞争基线持续改进的结果。代码和预训练模型将在 https://github.com/LeapLabTHU/ACmix 和 https://gitee.com/mindspore/models 上发布。
3 重新审视卷积和自注意力
卷积和自注意力以其当前形式广为人知。为了更好地捕捉这两个模块之间的关系,我们从新颖的视角重新审视它们,将它们的操作分解为不同的阶段
3.1 卷积
卷积是现代卷积网络最重要的部分之一。我们首先回顾一下标准的卷积运算,并从不同的角度重新表述它。如图 2(a) 所示。为简单起见,我们假设卷积的步长为 1。
理解卷积:
1)input 特征是三维张量:输入通道、H、W
2)output 特征是三维张量:输出通道、H、W
3)kernel 是四维张量:输入通道(通常是3)、输出通道、卷积核大小 k
4)计算方式:每个输出通道对应一个卷积核,每个卷积核=k* k* Cin
理解本文的卷积公式:
公式(1)求和号里面的是一个张量:以33卷积核为例,那么p,q就对应这9个格子里面的某一个,K是相当于Cout个卷积核 Cin的维度,f就是输入的Cin的维度
公式(6,7,8)就是对于33的卷积核拆解,每个卷积核当作1 1的,独自运算之后再加起来
3.2 自注意力
注意力机制在视觉任务中也被广泛采用。与传统的卷积相比,注意力机制可以让模型在更大范围的上下文中聚焦重要区域。我们在图 2(b) 中展示了这一示例。
理解本文的注意力:
1)gij 可以看作某一个 token 经过 q、k、v 之后得到的向量
2)整体流程就是用三个权重矩阵针对每个 token 都做一次映射,也就是类似于 1*1 的卷积,然后得到的结果进行一个对应的组合求和
3.3 计算成本(稍后再看)
4 方法
卷积和注意力共享第一阶段,第一阶段耗费计算复杂度;第二阶段耗费时间少,所以能够节省时间
4.1 联系 self-attention 和 convolution
第三节中对自注意力和卷积模块的分解从各个角度揭示了更深层次的关系。首先,这两个阶段扮演着非常相似的角色。 阶段 I 是特征学习模块,两种方法都通过执行 1×1 卷积将特征投射到更深的空间中,从而共享相同的操作。另一方面,阶段 II 对应于特征聚合的过程,尽管它们的学习范式存在差异。
从计算角度来看,卷积和自注意力模块在第一阶段进行的 1×1 卷积都需要关于通道大小 C 的理论 FLOP 和参数的二次复杂度。相比之下,在第二阶段,两个模块都是轻量级的或几乎不需要计算。
综上所述,以上分析表明:(1)卷积和自注意力在通过 1×1 卷积投影输入特征图上实际上共享相同的操作,这也是两个模块的计算开销。(2)尽管对于捕获语义特征至关重要,但第二阶段的聚合操作是轻量级的,不会获取额外的学习参数。
4.2 融合 self-attention 和 convolution
上述观察自然导致了卷积和自注意力的优雅融合。由于两个模块共享相同的 1×1 卷积操作,我们只需执行一次投影,并分别将这些中间特征图重新用于不同的聚合操作。我们提出的混合模块 ACmix 的图示如图 2© 所示。
具体来说,ACmix 也包含两个阶段。在阶段 I,输入特征通过三个 1×1 卷积进行投影,并分别重塑为 N 个部分。因此,我们获得了一组包含 3×N 特征图的丰富中间特征。
在阶段 II,它们按照不同的范例使用。对于自注意力路径,我们将中间特征聚集成 N 组,每组包含三部分特征,每个特征来自一个 1×1 卷积。相应的三个特征图用作查询、键和值,遵循传统的多头自注意力模块(等式 (12))。对于核大小为 k 的卷积路径,我们采用轻量级全连接层并生成 k 2 个特征图。因此,通过移动和聚合生成的特征(等式 (7)、(8)),我们以卷积方式处理输入特征,并像传统方式一样从局部感受野收集信息。
4.3 改良的移位(shift)和求和(summation)
如第 4.2 节和图 2 所示,卷积路径中的中间特征遵循传统卷积模块中的移位和求和操作。 尽管它们在理论上是轻量级的,但将张量移向各个方向实际上会破坏数据局部性,并且很难实现矢量化实现。这可能会极大地损害我们模块在推理时的实际效率。
为了解决这个问题,我们采用固定核的深度卷积来代替低效的张量移位,如图 3 (b) 所示。以 Shift(f, −1, −1) 为例,移位特征的计算如下:
因此,通过精心设计特定移位方向的核权重,卷积输出相当于简单的张量移位(等式(14))。为了进一步结合不同方向的特征总和,我们分别连接所有输入特征和卷积核,并将移位操作公式化为单组卷积,如图 3(c.I)所示。这种修改使我们的模块具有更高的计算效率。
在此基础上,我们额外引入了一些调整来增强模块的灵活性。如图 3 (c.II) 所示,我们将卷积核释放为可学习的权重,以移位核作为初始化。这在保持原有移位操作能力的同时提高了模型容量。我们还使用多组卷积核来匹配卷积和自注意力路径的输出通道维度,如图 3 (c.III) 所示。
4.4 ACmix 的计算复杂度(稍后再看)
4.5 推广到其他 attention modes
随着自注意力机制的发展,大量研究致力于探索注意力算子的变体,以进一步提升模型性能。[53] 提出的 Patchwise 注意力将局部区域内所有特征的信息作为注意力权重,取代了原有的 softmax 操作。 Swin-Transformer [31] 采用的窗口注意力使同一局部窗口中的 token 保持相同的感受野,以节省计算成本并实现快速推理速度。 另一方面,ViT 和 DeiT [15,41] 考虑全局注意力以将长距离依赖关系保留在单个层内。这些修改在特定的模型架构下被证明是有效的。
在这种情况下,值得注意的是,我们提出的 ACmix 独立于自注意力公式,并且可以很容易地在上述变体上采用。 具体来说,注意力权重可以总结为:
其中 [·] 表示特征连接,φ(·) 表示两个线性投影层,中间有一个非线性激活,Wk(i, j) 是每个查询标记的专用感受野,W 表示整个特征图(有关更多详细信息,请参阅原始论文)。然后,计算出的注意力权重可以应用于等式 (12) 并符合一般公式。
6 结论
在本文中,我们探讨了卷积和自注意力两种强大技术之间的密切关系。通过分解这两个模块的操作,我们表明它们在投影输入特征图时具有相同的计算开销。在此基础上,我们向前迈进了一步,提出了一种混合运算符,通过共享相同的繁重操作来集成自注意力和卷积模块。图像分类和对象检测基准的大量结果证明了所提出的运算符的有效性和效率。