外部注意力EA阅读

Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks
超越自我注意:使用两个线性层进行视觉任务的外部注意
论文

摘要

——注意机制,尤其是自我注意,在视觉任务的深度特征表示中发挥着越来越重要的作用。自注意力通过使用所有位置的成对亲和力计算特征的加权和来更新每个位置的特征,以捕获单个样本中的长期依赖关系。然而,self-attention 具有二次复杂度,并且忽略了不同样本之间的潜在相关性。
本文提出了一种新的注意力机制,我们称之为外部注意力,它基于两个外部的、小的、可学习的、共享的内存,只需使用两个级联的线性层和两个归一化层就可以轻松实现;它方便地取代了现有流行架构中的 self-attention。外部注意力具有线性复杂性,并隐含考虑所有数据样本之间的相关性。我们进一步将多头机制纳入外部注意,以提供用于图像分类的全 MLP 架构,外部注意 MLP (EAMLP)。在图像分类、对象检测、语义分割、实例分割、图像生成和点云分析方面的大量实验表明,我们的方法提供的结果与自我注意机制及其一些变体相当或更好,而且计算和内存成本要低得多.

1、动机
注意力机制,尤其是self-attention(SA),在CV任务中越来越重要了。self-attention通过计算同一个样本所有位置之间的相关性,来捕获长距离依赖。然而,其计算复杂度是平方级的,且忽略了不同样本间的联系
针对这些缺点,本文提出了一个新颖的注意力方法——External Attention(EA),仅由两个线性层和两个归一化层构造,且具备线性的计算复杂度。
此外,作者还进一步提出了multi-head EA,对标multi-head SA,还提出了一个纯MLP的架构——EAMLP
外部注意力EA阅读_第1张图片
本文的主要贡献总结如下:
• 一种新颖的注意力机制,外部注意力,复杂度为 O(n);它可以取代现有架构中的自注意力。它可以挖掘整个数据集的潜在关系,提供强大的正则化作用,并提高注意力机制的泛化能力。
多头外部注意力,有利于我们构建全 MLP 架构;它在 ImageNet-1K 数据集上达到了 79.4% 的 top1 准确率。
• 利用外部注意力进行图像分类、对象检测、语义分割、实例分割、图像生成、点云分类和点云分割的广泛实验。在必须保持较低计算量的场景中,它比原始的自注意力机制及其一些变体取得了更好的结果。

自注意力机制self-attention(SA)

其将输入的feature map(F)先经过三个线性变换得到query(Q)、key(K)、value(V),然后针对QKV三个向量,先将Q和K矩阵乘得到注意力矩阵A,然后A再和V相乘得到self-attention的最终输出
总而言之,self-attention有两个缺点:

(1)平方级计算复杂度;
(2)仅考虑单个样本自身的值来做注意力;

EA

在本节中,我们首先分析原始的自注意力机制。然后我们详细介绍了我们定义注意力的新方法:外部注意力。只需使用两个线性层和两个归一化层即可轻松实现,如后面的算法 1 所示。
外部注意力EA阅读_第2张图片
我们首先重新审视自我注意机制(见图 1a))。给定一个输入特征图 F ∈ R N ×d,其中 N 是元素(或图像中的像素)的数量,d 是特征维度的数量,self-attention 将输入线性投影到查询矩阵 Q∈ RN ×d0 ,一个关键矩阵 K∈ RN ×d0 和一个值矩阵 V∈ R N ×d [16]。那么self-attention可以表述为:
外部注意力EA阅读_第3张图片
其中 A∈ R N ×N 是注意矩阵,αi,j 是第 i 个和第 j 个元素之间的成对相似度(相似度)。
自注意力的一个常见简化变体(图 1b))直接从输入特征 F 计算注意力图,使用:
外部注意力EA阅读_第4张图片
这里,注意力图是通过计算特征空间中的像素级相似度得到的,输出是输入的细化特征表示。
然而,即使在简化时,O(dN 2) 的高计算复杂度也给使用自注意力带来了明显的缺点。输入像素数量的二次复杂性使得将自注意力直接应用于图像是不可行的。因此,以前的工作 [18] 利用补丁而不是像素上的自注意力来减少计算工作量。
自注意力可以被视为使用自我值的线性组合来细化输入特征。然而,在这种线性组合中,我们真的需要 N × N 自注意力矩阵和一个 N 元素自值矩阵,这一点远非显而易见。此外,self-attention 只考虑数据样本中元素之间的关系,而忽略了不同样本中元素之间的潜在关系,潜在地限制了 self-attention 的能力和灵活性。因此,我们提出了一个新的注意力模块,称为外部注意力,它计算输入像素和外部存储单元 M∈ R S×d 之间的注意力,通过
外部注意力EA阅读_第5张图片
与self-attention不同,等式(5)中的αi,j是第i个像素和M的第j行之间的相似度,其中M是一个独立于输入的可学习参数,它充当整体的记忆训练数据集。 A 是从这个学习到的数据集级先验知识推断出的注意力图;它以类似于自我注意的方式进行归一化(参见第 3.2 节)。最后,我们通过 A 中的相似性来更新 M 中的输入特征。

在实践中,我们使用两个不同的内存单元 Mk 和 Mv 作为键和值,以增加网络的能力。这稍微改变了外部注意力的计算
外部注意力EA阅读_第6张图片
外部注意力的计算复杂度为 O(dSN );由于 d 和 S 是超参数,所提出的算法在像素数上是线性的。事实上,我们发现一个小 S,例如64,在实验中效果很好。因此,外部注意力比自我注意力更有效,可以直接应用于大规模输入。我们还注意到,外部注意力的计算负载大致相当于一个 1×1 的卷积。

**

Normalization

**
在 self-attention 中使用 Softmax 对注意力图进行归一化,使 P jαi,j = 1。但是,注意力图是通过矩阵乘法计算的。与余弦相似度不同,注意力图对输入特征的规模敏感。为了避免这个问题,我们选择了[42]中提出的双重归一化,它分别归一化列和行。这种双重归一化被表述为:
外部注意力EA阅读_第7张图片
算法 1 中列出了用于外部注意的 python 样式的伪代码
外部注意力EA阅读_第8张图片

使用链接

你可能感兴趣的:(深度学习,深度学习)