attention的是是非非
基本形式:
图解:
其中Q为query,K为key,V为value。attention就是看看Q和K的相关性,Q代表的是原图中的原始信息的语义映射,一般不改变其维度,K代表想将原图中的信息映射到多少维的空间中,(保持、增大还是减少)。
在self-attention中,计算量和显存占用比较大的主要是生成attention map时的 步骤。因此可以从这个方向减少计算量。
更改示例
ISSA: Interlaced Sparse Self-Attention
先shuffle维度,使得local attention能够看到更远的信息,再tanspose回来,这样也看到了近处的局部信息:
CCNet: Criss-cross attention for semantic segmentation
取十字架区域进行计算:
文章使用十字架区域进行attention,相当于将K的维度由H*W映射成(H+W-1),这样能减少计算量,再做一次attention,那么就能看到全局信息了
Linformer: Self-Attention with Linear Complexity
将HW改成K(K<HW),相对于CCNet更加简单粗暴,完全靠网络学出映射的语义信息,但是文章通过证明说明其影响不大。
CGNL: Compact generalized non-local network
直接上图,通过先计算K*V,来降低计算量,利用talor展开证明了只计算部分主要影响的成分就能得到近似解: