超越自注意力:External Attention
论文名称:Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks
作者:Meng-Hao Guo, Zheng-Ning Liu, Tai-Jiang Mu, Shi-Min Hu, Senior Member
Code:https://github.com/MenghaoGuo/EANet
自从 Self−Attention 在 NLP 中被提出之后,许多工作尝试将其引入计算机视觉的各种任务之中,即使其被证明是一种行之有效的方法,其 缺点终将会阻碍自身的进一步发展:
- Self−Attention 的计算复杂度呈二次增长
- 只能学习到单个样本中的长距离关系,但是无法考虑所有样本之间的关联
因此,提出了 External−Attention,仅仅通过两个可学习的单元,实现了线性的时间复杂度,并且能够考虑到所有样本之间的关联,与此同时,对整个网络起着重要的正则作用,有利于增强网络的泛化性
External Attention

Self Attention
公式为:
Fout=softmax(WQF(WKF)T)WVF
具体内容移步 此
另一个简化 SelfAttention 的公式为
Fout=softmax(FFT)F
其时间复杂度为 O(dN2)
在计算机视觉的各类任务中,显然,我们不需要 NXN 的注意力图,因为像素点之间关系并不想 NLP 中词语之间的关系那么密切,因而有的工作提出了在 patch 上计算注意力。
即便能在一定程度上缓解计算消耗,Self−Attention 忽略了不同样本间数据的关系,在一定程度上限制了其灵活度和泛化性
External Attention
不再通过原始输入来获得 K,V,而使用两个独立的 MemoryUnit,公式如下:
A=αi,j=Norm(FMKT)
在原文中,这里的 αi,j 指的是第 i 个像素与 Mk 中第 j 行的相似度,我认为体现的并不明显(emmmm 我太菜了)
让我们做一个简单的推理(这里的矩阵的长宽都假设为 N):
FMKT=f1fn+1⋮fn2−n+1f2fn+2⋮fn2−n+2⋯⋯⋱⋯fnf2n⋮fn2m1,1m1,2⋮m1,nm2,1m2,2⋮m2,n