哪有什么岁月静好,不过是有人替你负重前行!

Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks概述

0.前言

    • 发表时间:arxiv2021(2021.5.5)

    • 发表单位:清华大学图形学实验室Jittor团队

1.针对的问题

  self-attention自身存在两个缺点:(1)计算量太大,计算复杂度与pixel的平方相关;(2)没有考虑不同样本之间的潜在关联,只是单独处理每一个样本,在单个样本内去捕获这类long-range dependency。

2.主要贡献

  •一种新的注意机制,外部注意,具有O(n)的复杂性;它可以取代现有架构中的自我注意。它可以挖掘整个数据集的潜在关系,提供一个强烈的正则化作用,并提高注意机制的泛化能力。

  •多头外部注意,这有利于构建一个全MLP架构;它在ImageNet-1K数据集上达到了79.4%的前1个精度。

  •利用外部注意力对图像分类、目标检测、语义分割、实例分割、图像生成、点云分类和点云分割进行了广泛的实验。在计算量必须保持在较低水平的情况下,它获得了比原来的自我注意机制及其一些变体更好的结果。

3.方法

  基于两个外部的,小的,可学习的和共享的存储器,用两个级联的线性层和归一化层取代了现有流行的学习架构中的Self-attention。

  提出了一个external attention模块,仅仅通过两个可学习的external unit,就可以简化self-attention的时间复杂度,简化到与pixel数量线性相关;同时由于两个unit是external的,对于整个数据集来说都是shared,所以还可以隐式地考虑到不同样本之间的关联,学习整个数据集的特征。两个unit在实现的时候是两个linear layer,因此可以直接end2end优化。

  (a)和(b)分别表示经典的self-attention和简化版self-attention,计算复杂度均为O(dN2),N表示特征图pixel数,d表示feature维度,(c)为本文提出的external-attention。经作者观察发现,这两种方法都是建立一个N-to-N的attention关联,即attention map的生成。而attention map自身是稀疏的,也就是说只有很少量的pixel之间有关联,所以N-to-N的attention map可能会显得redundant。公式推理过程如下:

  对于输入的Nxd维空间的特征向量F,自注意力机制使用基于自身线性变换的Query,Key和Value特征去计算自身样本内的注意力,并据此更新特征:
  

  由于QKV是F的线性变换,简单起见,可以将自注意力计算公式简记如下:

 

  这是 F 对 F 的注意力,也就是所谓的 Self-attention。如果希望注意力机制可以考虑到来自其他样本的影响,那么就需要一个所有样本共享的特征。为此,引入一个外部的Sxd维空间的记忆单元M,来刻画所有样本最本质的特征,并用M来表示输入特征。

 

  由于M的维度是Sxd,所以external attention的计算复杂度降为O(dSN),由于S是超参数,所以可以设置的远小于pixel数目N。这种新的注意力机制就是External-attention。可以发现,上面两个公式中的计算主要是矩阵乘法,就是常见的线性变换,一个自注意力机制就这样被两层线性层和归一化层代替了。作者还使用了之前工作中提出的Norm方式来避免某一个特征向量的过大而引起的注意力失效问题。

  为了增强External-attention的表达能力,与自注意力机制类似,采用两个不同的记忆单元。

 

  关于上面的Norm,attention map对于输入特征的scale比较敏感,因此作者没有采用简单的softmax,而是利用了一种double-normalization,分别对行和列进行归一化,公式如下:

  作者也使用了多头机制,与自注意力对比如下

  公式如下

  其中hi是第i个头,H是头的数量,Wo是一个线性变换矩阵,使输入和输出的维数一致。Mk∈RS×d和Mv∈RS×d是不同头的共享memory units。这种体系结构的灵活性能够在共享内存单元中的头H数量和元素S数量之间取得平衡,比如H扩大K倍,S减小K倍。

  EANet模型结构如下:

 

 

posted @ 2022-10-18 19:33  Lhiker  阅读(324)  评论(0)    收藏  举报