External Attention(EA):超越自注意力,仅用两个线性层

论文地址:2105.02358.pdf (arxiv.org)

GitHub:MenghaoGuo/-EANet: External Attention Network (github.com)

目录

1、动机

2、方法

2.1、self-attention

2.2、External Attention

2.3、Normalization方法

2.4、Multi-head external attention

3、实验结果


1、动机

注意力机制,尤其是self-attention(SA),在CV任务中越来越重要了。self-attention通过计算同一个样本所有位置之间的相关性,来捕获长距离依赖。然而,其计算复杂度是平方级的,且忽略了不同样本间的联系。针对这些缺点,本文提出了一个新颖的注意力方法——External Attention(EA),仅由两个线性层和两个归一化层构造,且具备线性的计算复杂度。此外,作者还进一步提出了multi-head EA,对标multi-head SA,还提出了一个纯MLP的架构——EAMLP。

2、方法

External Attention(EA):超越自注意力,仅用两个线性层_第1张图片

2.1、self-attention

对于自注意力机制,如图1(a),其将输入的feature map(F)先经过三个线性变换得到query(Q)、key(K)、value(V),然后针对QKV三个向量,先将Q和K矩阵乘得到注意力矩阵A,然后A再和V相乘得到self-attention的最终输出,该过程如下式所示:

\begin{aligned} A &=(\alpha)_{i, j}=\operatorname{softmax}\left(Q K^{T}\right), \\ F_{\text {out }} &=A V, \end{aligned}(1)

self-attention的简化示意图,如图1(b),其对应公式为:

\begin{aligned} A &=\operatorname{softmax}\left(F F^{T}\right) \\ F_{\text {out }} &=A F \end{aligned}(2)

总而言之,self-attention有两个缺点:

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

2.2、External Attention

鉴于self-attention的两个缺点,作者提出了一个新颖的注意力模块——External Attention,其结构如图1(c),其公式如下:

\begin{aligned} A &=(\alpha)_{i, j}=\operatorname{Norm}\left(F M^{T}\right) \\ F_{\text {out }} &=A M \end{aligned}(3)

可见,相比SA,EA使用一个外部矩阵M来建模第i个像素和第j行之间的相似性,且M是可学习的、大小可变的,同时,M还可以随着训练过程的进行建模整个数据集不同样本间的联系。由此,EA就解决了SA的上述两个缺点。

在实际应用中,M分为两个:M_k、M_v,分别对应SA中的K和V:

\begin{aligned} A &=\operatorname{Norm}\left(F M_{k}^{T}\right) \\ F_{\text {out }} &=A M_{v} . \end{aligned}(4)

EA的伪代码如下:

External Attention(EA):超越自注意力,仅用两个线性层_第2张图片

2.3、Normalization方法

在SA中,使用的Normalization是SoftMax,其对输入feature的尺度非常敏感。作者在EA中使用的double-normalization,其对列和行分别计算:

\begin{aligned} (\tilde{\alpha})_{i, j} &=F M_{k}^{T} \\ \hat{\alpha}_{i, j} &=\exp \left(\tilde{\alpha}_{i, j}\right) / \sum_{k} \exp \left(\tilde{\alpha}_{k, j}\right) \\ \alpha_{i, j} &=\hat{\alpha}_{i, j} / \sum_{k} \hat{\alpha}_{i, k} \end{aligned}(5)

2.4、Multi-head external attention

在Transformer中,self-attention在不同输入尺寸下计算了多次,形成Multi-head self-attention。Multi-head机制可以捕获token之间不同的关系,对提升性能至关重要。因此,作者也提出了一个Multi-head external attention:

\begin{aligned} h_{i} &=\text { ExternalAttention }\left(F_{i}, M_{k}, M_{v}\right) \\ F_{\text {out }} &=\operatorname{MultiHead}\left(F, M_{k}, M_{v}\right) \\ &=\operatorname{Concat}\left(h_{1}, \ldots, h_{H}\right) W_{o} \end{aligned}(6)

其示意图如图2所示,伪代码如算法2所示:

External Attention(EA):超越自注意力,仅用两个线性层_第3张图片

External Attention(EA):超越自注意力,仅用两个线性层_第4张图片

3、实验结果

External Attention(EA):超越自注意力,仅用两个线性层_第5张图片

External Attention(EA):超越自注意力,仅用两个线性层_第6张图片

External Attention(EA):超越自注意力,仅用两个线性层_第7张图片

External Attention(EA):超越自注意力,仅用两个线性层_第8张图片

External Attention(EA):超越自注意力,仅用两个线性层_第9张图片

External Attention(EA):超越自注意力,仅用两个线性层_第10张图片

External Attention(EA):超越自注意力,仅用两个线性层_第11张图片

External Attention(EA):超越自注意力,仅用两个线性层_第12张图片

External Attention(EA):超越自注意力,仅用两个线性层_第13张图片

你可能感兴趣的:(DeepLearning,论文笔记,EA,SA,Attention,Transformer,MLP)