Self-Attention 加速方法一览:ISSA、CCNet、CGNL、Linformer

2020 年 11 月 2 日 极市平台
↑ 点击 蓝字  关注极市平台

作者丨林天威@知乎
来源丨https://zhuanlan.zhihu.com/p/270898373
编辑丨极市平台
本文仅作学术分享,著作权归作者所有。若侵权,请联系后台作删文处理。

极市导读

 

Self-attention机制是神经网络的研究热点之一。本文从self-attention的四个加速方法:ISSA、CCNe、CGNL、Linformer 分模块详细说明,辅以论文的思路说明。>>加入极市CV技术交流群,走在计算机视觉的最前沿


Attention 机制最早在NLP 领域中被提出,基于attention 的transformer结构近年在NLP的各项任务上大放异彩。在视觉任务中,attention也收到了很多的关注,比较有名的方法包括Non-Local Network,能够在时空volume中对全局的关系进行建模,获得了很好的效果。但视觉任务中的self-attention模块通常需要进行大矩阵的矩阵乘法,显存占用大且比较耗时。所以近年有许多优化self-attention模块速度的方法,这篇笔记主要讨论几篇相关方法,有错误之处欢迎指正。

Self-Attention 简介

Attention 机制通常可以表达为如下的形式

其中, 为query, 为key, 为value。从检索任务的角度来看,query是要检索的内容,key是索引,value则是待检索的值。attention的过程就是计算query 和key之间的相关性,获得attention map,再基于attention map去获得value中的特征值。而在如下图所示的self-attention中,Q K V均为同一个feature map。

上图是一个self-attention模块的基本结构,输入为 , 分别通过1x1卷积获得 (记 )。则可以获得attention map为 。最后与 做矩阵乘法获得与输入shape想同的self-attention feature map。

在self-attention中,计算量和显存占用比较大的主要是生成attention map时的 和 最后的 两个步骤。对于64大小的feature map, 的大小为 。因此,self-attention 模块通常放在分辨率较低的网络后半段特征。

如何了优化attention的显存和计算量效率内,今天介绍的方法主要有两个方向的思路:

  • 改变attention的形式,避免直接全图attention

    • Long + Short range attention:Interlaced Sparse Self-Attention
    • 水平+垂直attention:Ccnet: Criss-cross attention for semantic segmentation
    • A2-Nets: Double Attention Networks
  • 降低attention计算过程中的某个维度

    • 降低N维度:Linformer: Self-Attention with Linear Complexity
    • 降低C维度:常用方法了,通常就是C/2 或者C/4
  • 其他

    • 优化GNL:Compact generalized non-local network

Attention 形式优化

ISSA: Interlaced Sparse Self-Attention

  • 论文基本思路:这篇论文的基本思路是“交错”。如下图所示,首先通过permute将feature以一定规律打乱,然后将feature map分为几个块分别做self-attention,这样获得的是long-range 的attention信息;此后,再进行一次permute还原回原来的特征位置,再次进行分块attention,获得了short-range 的attention。通过拆解long/short range的attention,能够大大降低计算量。
  • 具体的性能表现如下图所示,可以看出,下降最明显的是显存的占用,主要是因为避免了attention过程中的大矩阵。而由于permute,divide等操作虽然不占flop,但是在inference的时候需要一定的时间,所以实际速度没有flops提升的那么多。不过总体而言,在效果没有明显下降的前提下,这个速度/显存的优化已经很优秀了。
  • 这篇文章在看的时候感觉既视感好强,后来想到这不就是hw上的shufflenet嘛。

CCNet: Criss-cross attention for semantic segmentation

  • 论文主要思路:区别与Non-Local 中的全局attention,这篇文章提出只在特征点所对应的十字上进行attention。从而将复杂度从 降低到
  • CCNet 的具体做法是,对于 上的一个点 ,我们都可以得到对应的特征向量 ,对于这个点对应的十字形区域,我们可以从 中提取对应的特征,构成 ,针对 进行矩阵乘法,则可以得到attention map 为 。最后对 以同样的方式提取十字形特征并进行矩阵乘法,则可以得到最后的结果。
  • 那么如何从十字attention过渡到全局attention呢,方法其实很简单,只需要做两次十字attention,每个点就可以获得全局的信息了。
  • CCNet 的理论计算量(Flops and memory)比起Non-Local 是很有优势的。但是提取十字形特征这一步的效率可能并不是很高,论文中也并没有放出具体的代码实现。

A2-Nets: Double Attention Networks

  • 这篇论文的attention 方式看下图即可
  • 第一个 feautre gathering,可以理解为对每个channel,softmax找到最重要的位置,再去gathering所有channel上这个最重要位置上的特征;得到 CxC
  • 第二个 feautre distribution,可以理解为对每个channel,softmax找到最重要的位置,然后给每个channel的这个位置都分配一遍特征。
  • 这篇文章的attention 方式很有趣,值得仔细琢磨一下的。不过速度方面比起NL应该没有提升特别多。

Attention 维度优化

Linformer: Self-Attention with Linear Complexity

  • Attention的过程如上所说,可以看作是 ,这篇文章对N做降维,将attention 转化为 ,在K是定值的情况下,既将复杂度从 降低到了
  • 这篇文章大部分的篇幅,是在证明这样降低维度和原来的结果是近似的,没看太懂证明部分
  • 实验部分,K取得越大效果越好,但是并不明显。即降维会非常略微地影响效果,同时非常有效地提升速度。

其他

CGNL: Compact generalized non-local network

这篇文章主要是来优化一种计算量更大的Self-attention方法:Generalized Non-local (GNL)。这种方法不仅做H W两个spatial尺度上的non-local attention,还额外考虑了C维度。因此复杂度是

这篇文章的主要思路是:利用泰勒展开,将 _ 近似成了 _ 。从而可以通过先计算后两项,将复杂度从 降低到了

  • 这篇文章在视频理解、目标检测等任务上的实验效果都还不错,但是并没有给出速度方面的实验结果和分析。



推荐阅读




    添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~

    △长按添加极市小助手

    △长按关注极市平台,获取 最新CV干货

    觉得有用麻烦给个在看啦~   
    登录查看更多
    1

    相关内容

    Attention机制最早是在视觉图像领域提出来的,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。
    【CIKM2020】利用自注意力网络使搜索结果多样化
    专知会员服务
    13+阅读 · 2020年11月6日
    专知会员服务
    17+阅读 · 2020年10月18日
    专知会员服务
    116+阅读 · 2020年8月22日
    专知会员服务
    74+阅读 · 2020年5月21日
    神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
    专知会员服务
    35+阅读 · 2020年4月15日
    【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
    专知会员服务
    39+阅读 · 2020年2月21日
    深度神经网络模型压缩与加速综述
    专知会员服务
    129+阅读 · 2019年10月12日
    【论文笔记】自注意力图池化
    专知
    82+阅读 · 2019年11月18日
    从三大顶会论文看百变Self-Attention
    PaperWeekly
    17+阅读 · 2019年11月11日
    语义分割中的Attention和低秩重建
    极市平台
    37+阅读 · 2019年9月1日
    Deep Compression/Acceleration:模型压缩加速论文汇总
    极市平台
    14+阅读 · 2019年5月15日
    Self-Attention GAN 中的 self-attention 机制
    PaperWeekly
    12+阅读 · 2019年3月6日
    硬件加速神经网络综述
    计算机研究与发展
    26+阅读 · 2019年2月1日
    自注意力机制在计算机视觉中的应用
    GAN生成式对抗网络
    19+阅读 · 2018年12月20日
    自注意力机制在计算机视觉中的应用【附PPT与视频资料】
    人工智能前沿讲习班
    17+阅读 · 2018年12月20日
    《pyramid Attention Network for Semantic Segmentation》
    统计学习与视觉计算组
    44+阅读 · 2018年8月30日
    论文笔记之Feature Selective Networks for Object Detection
    统计学习与视觉计算组
    21+阅读 · 2018年7月26日
    Arxiv
    4+阅读 · 2019年12月2日
    Arxiv
    6+阅读 · 2019年3月19日
    Neural Speech Synthesis with Transformer Network
    Arxiv
    5+阅读 · 2019年1月30日
    Neural Architecture Optimization
    Arxiv
    8+阅读 · 2018年9月5日
    Arxiv
    13+阅读 · 2017年12月5日
    VIP会员
    相关VIP内容
    【CIKM2020】利用自注意力网络使搜索结果多样化
    专知会员服务
    13+阅读 · 2020年11月6日
    专知会员服务
    17+阅读 · 2020年10月18日
    专知会员服务
    116+阅读 · 2020年8月22日
    专知会员服务
    74+阅读 · 2020年5月21日
    神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
    专知会员服务
    35+阅读 · 2020年4月15日
    【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
    专知会员服务
    39+阅读 · 2020年2月21日
    深度神经网络模型压缩与加速综述
    专知会员服务
    129+阅读 · 2019年10月12日
    相关资讯
    【论文笔记】自注意力图池化
    专知
    82+阅读 · 2019年11月18日
    从三大顶会论文看百变Self-Attention
    PaperWeekly
    17+阅读 · 2019年11月11日
    语义分割中的Attention和低秩重建
    极市平台
    37+阅读 · 2019年9月1日
    Deep Compression/Acceleration:模型压缩加速论文汇总
    极市平台
    14+阅读 · 2019年5月15日
    Self-Attention GAN 中的 self-attention 机制
    PaperWeekly
    12+阅读 · 2019年3月6日
    硬件加速神经网络综述
    计算机研究与发展
    26+阅读 · 2019年2月1日
    自注意力机制在计算机视觉中的应用
    GAN生成式对抗网络
    19+阅读 · 2018年12月20日
    自注意力机制在计算机视觉中的应用【附PPT与视频资料】
    人工智能前沿讲习班
    17+阅读 · 2018年12月20日
    《pyramid Attention Network for Semantic Segmentation》
    统计学习与视觉计算组
    44+阅读 · 2018年8月30日
    论文笔记之Feature Selective Networks for Object Detection
    统计学习与视觉计算组
    21+阅读 · 2018年7月26日
    相关论文
    Arxiv
    4+阅读 · 2019年12月2日
    Arxiv
    6+阅读 · 2019年3月19日
    Neural Speech Synthesis with Transformer Network
    Arxiv
    5+阅读 · 2019年1月30日
    Neural Architecture Optimization
    Arxiv
    8+阅读 · 2018年9月5日
    Arxiv
    13+阅读 · 2017年12月5日
    Top
    微信扫码咨询专知VIP会员