精华内容
下载资源
问答
  • 基于层次注意力机制神经网络模型的虚假评论识别.pdf
  • 融合空洞卷积神经网络与层次注意力机制的中文命名实体识别.pdf
  • 基于层次注意力机制的远程监督关系抽取算法研究,陈元昆,刘建毅,远程监督机制由于其使用机器自动标注数据,能减少大量标注人力的优点,逐渐成为了知识图谱构建中关系抽取任务的主要手段。目前,如何
  • “基于门控卷积与层次注意力机制的多语义词向量计算方法”一文的源码,有源码,有真相。 gthub链接地址:地址 使用本代码请注明引用: “柳杨, 吉立新, 黄瑞阳,等. 基于门控卷积机制与层次注意力机制的多...

    code-for-Multi-sense-Word-Embedding

    “基于门控卷积与层次注意力机制的多语义词向量计算方法”一文的源码,有源码,有真相。

    gthub链接地址:地址

    • 使用本代码请注明引用:

    • “柳杨, 吉立新, 黄瑞阳,等. 基于门控卷积机制与层次注意力机制的多语义词向量计算方法[J]. 中文信息学报, 2018(7).”

    • ...抱歉临近毕业事情较多,代码太多、太乱,忙完这些事情有空再整理上传

    • ...百忙之中抽空翻了翻代码,凭着仅存的记忆注释、整理并上传了一些,不知道对不对。。。

    • ...所以说同志们写代码的时候一定要命名好、做好注释。。。否则你绝对不知道你之前写的什么玩意儿。。。(这是我研一写的,写的贼low,因为临近毕业,忙着改其他小论文,没来得及改源码,欢迎有兴趣的同学folk和贡献自己的力量)

    • ...PS:写代码的时候一定要以一定的规范和标准,否则代码执行效率差、并且可读性差

    • ...PS:emmm,也不知道写了些什么玩意儿,有没有人看。。。欢迎讨论!

      • e-mail:fabyangliu@hotmail.com
      • RG也可以,还是这个邮箱;
      • 原论文邮箱也可以,虽然已经不怎么用了...
    展开全文
  • 注意力机制最新综述解读

    万次阅读 多人点赞 2019-04-16 18:02:24
    我们回顾了注意力机制被纳入的不同的神经网络结构,并展示了注意力如何提高神经网络的可解释性。最后,我们讨论了在实际应用中,注意力机制取得的重要影响。我们希望这项调查能够为注意力模型提供一个简明的介绍,并...

    注意力模型(Attention Model,AM)已经成为神经网络中的一个重要概念,并在不同的应用领域进行了充分的研究。这项调查提供了一个结构化和全面的概述关于attention的发展。我们回顾了注意力机制被纳入的不同的神经网络结构,并展示了注意力如何提高神经网络的可解释性。最后,我们讨论了在实际应用中,注意力机制取得的重要影响。我们希望这项调查能够为注意力模型提供一个简明的介绍,并在开发应用方法的同时指导实践者。

     

    1. Introduction

    注意力模型(AM)最初被用于机器翻译[Bahdanau et al., 2014],现在已成为神经网络领域的一个重要概念。在人工智能(Artificial Intelligence,AI)领域,注意力已成为神经网络结构的重要组成部分,并在自然语言处理、统计学习、语音和计算机等领域有着大量的应用。

    Fig.1 Yelp评论情感分类中的注意建模实例题

    注意力机制可以利用人类视觉机制进行直观解释。例如,我们的视觉系统倾向于关注图像中辅助判断的部分信息,并忽略掉不相关的信息[Xu et al., 2015]。同样,在涉及语言或视觉的问题中,输入的某些部分可能会比其他部分对决策更有帮助。例如,在翻译和总结任务中,输入序列中只有某些单词可能与预测下一个单词相关。同样,在image-caption问题中,输入图像中只有某些区域可能与生成caption的下一个单词更相关。注意力模型通过允许模型动态地关注有助于执行手头任务的输入的某些部分,将这种相关性概念结合起来。使用注意力模型对Yelp评论进行情绪分类的示例如图1所示[Yang et al., 2016]。在这个例子中,AM了解到在五个句子中,第一句和第三句更相关。此外,这些句子中的“美味 delicious ”和“神奇 amazing”这两个词更有意义地决定了评论的情感。

    神经网络中建模注意力的快速发展主要有三个原因。首先,这些模型现在是解决多任务最先进的模型[Young et al., 2018],如机器翻译、问题回答、情绪分析、词性标记、对话系统。其次,除了在主要任务上提高性能外,它们还提供了其他几个优势。它们被广泛用于提高神经网络的可解释性,而神经网络之前常常被视为黑盒模型。这是一个显著的好处,主要是因为人们对影响人类生活的应用程序中的机器学习模型公平性、问责制和透明度越来越感兴趣。第三,它们有助于克服递归神经网络RNN中的一些挑战,例如随着输入长度的增加性能下降,以及输入顺序不合理导致的计算效率低下。因此,在这项工作中,我们的目标是提供一个简短的,全面的注意机制综述。

    • 论文组织结构

    我们在第2节中简要解释了Bahdanau等人提出的注意模型[Bahdanau et al.,2014],并在第3节中描述了我们的分类法。然后,我们分别在第4节和第5节中讨论了使用注意模型的神经网络结构以及attention如何促进神经网络的可解释性。最后,我们在第6节中提出了注意力模型的广泛,并在第7节中总结了本文。

    • 相关的综述文献

    关于attention model在计算机视觉[Wang and Tax, 2016]和图形[Lee et al., 2018]的应用已经有一些综述。另一个类似的工作是由Galassi等人完成的[Galassi et al.,2019],但是我们进一步综述了可行的分类法、关键网络架构、应用程序、以及注意力模型的可解释性。我们希望我们的贡献不仅能够促进对注意力模型的更广泛理解,而且能够帮助人工智能开发人员和工程师为他们的应用领域确定正确的方法。

    2. Attention Model

    Fig.2 编码器-解码器体系结构:(a)传统(b)注意模型

    sequence-to-sequence模型由编码器-解码器体系结构[Cho et al., 2014b]组成,如图2(a)所示。编码器是一个RNN,它接受tokens的输入序列(x1,x2,…,xt),其中t是输入序列的长度,并将其编码为固定长度的向量(h1,h2,…,ht)。解码器也是一个RNN,它以一个固定长度的向量ht作为输入,通过tokens-to-tokens生成一个输出序列(y1,y2,…,ytt),其中tt是输出序列的长度。在每个位置t,ht和st分别表示编码器和解码器的隐状态。

    • 传统编码器-解码器的挑战

    传统的编码器-解码器框架有两个众所周知的挑战。首先,编码器必须将所有输入信息压缩成一个固定长度的向量ht,然后将其传递给解码器。使用一个固定长度的向量压缩长而详细的输入序列可能会导致信息丢失 [Cho et al., 2014a]。其次,它无法对输入和输出序列之间的对齐进行建模,这是结构化输出任务(如翻译或汇总)的一个重要方面[Young et al., 2018]。从直觉上看,在sequence-to-sequence的任务中,我们期望输出的token受到输入序列的某个部分影响很大。然而,解码器缺乏任何机制在生成每个输出tokens时选择性地关注相关的输入tokens。

    • 关键理念

    注意模型旨在通过允许解码器访问整个编码的输入序列(h1,h2,…,ht)来减轻这些挑战。其核心思想是在输入序列上引入注意权重α,以优先考虑存在相关信息的位置集,以生成下一个输出token。

    • Attention的使用

    具有注意模型的相应编码器-解码器体系结构如图2(b)所示。网络结构中的注意力模块负责自动学习注意力权重αij,它可以自动捕获hi(编码器隐藏状态,我们称之为候选状态)和sj(解码器隐藏状态,我们称之为查询状态)之间的相关性。然后,这些注意力权重用于构建内容向量C,该向量作为输入传递给解码器。在每个解码位置j,内容向量cj是编码器所有隐藏状态及其相应注意权的加权和。

    • 学习注意力权重

    注意力权重是通过在体系结构中加入一个额外的前馈神经网络来学习的。该前馈网络学习一个特殊的注意权αij,作为两种状态h(i)和s(j-1)的函数。简单地说,就是用这两种状态作为神经网络的输入,进而学习αij关于他们的函数。、

    3. Taxonomy of Attention

    Table.1 每个类别内的注意力类别和类型

    我们将注意力分为四大类,并说明每一类中不同类型的注意力,如表1所示。我们要强调的是,这些类别并不相互排斥。注意力模型可以应用于多个类别的组合,如多层次的、self和soft注意力组合[Yang et al., 2016]。因此,我们可以将这些类别视为维度,在将注意力用于感兴趣的应用时,可以考虑这些维度。为了使这一概念易于理解,我们提供了一份关键技术论文列表,并在表2中指定了作者在提出的方法中使用的多种注意类型。

    Table.2 注意模型中相关技术方法的关键论文总结
    • Number of sequences

    到目前为止,我们只考虑了涉及单个输入和相应输出序列的情况。当候选状态(candidate state)和查询状态(query state)分别属于两个不同的输入和输出序列时,使用这种注意模型的我们称之为区别性distinctive。大多数用于翻译[Bahdanau et al., 2014]、总结[Rush et al., 2015]、图像字幕[Xu et al., 2015]和语音识别[Chan et al., 2016]的注意力模型都属于区别性distinctive的注意力类型。

    共同注意模型co-attention同时对多个输入序列进行操作,并共同学习它们的注意力权重,以捕获这些输入之间的交互作用。刘等人 [Lu et al.,2016] 使用共同注意力模型构建了视觉问答系统。作者认为,除了对输入图像进行视觉注意建模外,对问题注意建模也很重要,因为问题文本中的所有单词对问题的答案并不同等重要。此外,基于注意力的图像表示用于引导问题的注意力,反之亦然,这基本上有助于同时检测问题中的关键短语和与答案相关的图像的相应区域。

    相反,对于文本分类和推荐等任务,输入是序列,但输出不是序列。在相同的输入序列中,注意力模型可以用于学习输入序列中每个tokens的相关tokens。换句话说,对于这类关注模型,查询和候选状态属于相同的序列。为此,Yang等人[Yang et al. ,2016]提出了自我关注,也就是内在注意力模型。

    • Number of abstraction levels

    在最一般的情况下,只为原始输入序列计算注意力权重。这种注意力模型可以称为单一水平single-level。另一方面,注意力可以按顺序应用于输入序列的多个抽象层次。较低抽象级别的输出(内容向量)成为较高抽象级别的查询状态。此外,使用多层次注意力模型可以根据权重是自上而下(从较高抽象级别到较低级别)[Zhao and Zhang, 2018]还是自下而上学习[Yang
    et al., 2016]
    来进一步分类。

    我们举例说明了这一类别中的一个关键示例,它在两个不同的抽象级别(即单词级别和句子级别)使用注意力模型来完成文档分类任务[Yang et al., 2016]。该模型被称为“层次注意力模型”(HAM),因为它捕获了文档的自然层次结构,即文档由句子组成,句子由单词组成。多层次的注意力模型允许提取句子中重要的单词和文档中重要的句子,如下所示。它首先建立了一种基于attention的句子表示法,并将第一级attention应用于单词嵌入向量序列。然后,它使用第二级注意来聚合这些句子表示,以形成文档的表示。文档的最终表示形式用作分类任务的特征向量。

    Fig.3  Lu等人提出的视觉问答注意模型是一种将共同注意(视觉和文本)与多层次(词级、短语级和问题级)注意相结合的注意模型

    请注意,第3.1节所述的co-attention工作[Lu et al., 2016]也属于多层次的范畴,它在三个层次上共同关注图像和问题:单词级别、短语级别和问题级别。这种co-attention和multi-level attention的组合如图3所示。

    [Zhao and Zhang et al., 2018]提议使用“attention-via-attention”模型处理问答系统的相关任务,即使用多层次的注意力模型(较低层次的字母和较高层次的单词),但以自上而下的方式学习注意力权重。

    • Number of position

    在第三类中,差异来自于计算注意力函数的输入序列的位置。Bahdanau等人引入的注意力模型也被称为软注意力soft attention [Bahdanau et al., 2014]。顾名思义,它使用输入序列所有隐藏状态的加权平均值来构建内容向量。软加权方法的应用使得神经网络易于通过反向传播进行有效的学习,同时也导致了二次计算代价。

    Xu等人提出了一个硬注意模型 hard attention [Xu et al., 2015],其中内容向量是根据输入序列中随机抽样的隐藏状态计算出来的。这是通过使用由注意权重参数化的多努利分布来实现的。由于计算成本的降低,硬注意模型是有益的,但是在输入的每一个位置做出一个艰难的决策,使得所得到的框架不可微分,难以优化。因此,为了克服这一局限性,文献中提出了变分学习法和策略梯度法在强化学习中的应用。

    在机器翻译任务的背景下,Luong等人提出了两种关注模型,即局部Local关注模型和全局Global关注模型[Luong et al. , 2015]。全局注意力模型与软注意力模型相似。另一方面,局部注意模型介于软注意和硬注意之间。关键思想是首先检测输入序列中的注意点或位置,然后在该位置周围选择一个窗口,以创建局部软注意模型。输入序列中的位置可以设置(单调对齐)或通过预测函数(预测对齐)学习。因此,局部关注的优势在于在软关注、硬关注、计算效率、窗口内可微性之间的参数权衡。

    • Number of representations

    一般来说,输入序列的单一特征表示被大多数网络模型使用。但是,在某些情况下,使用输入的一个特征表示可能不足以完成下游任务。在这种情况下,一种方法是通过多个特征表示来捕获输入的不同方面。注意力机制可以用来为这些不同的表示分配重要权重,这些表示可以确定最相关的方面,而忽略输入中的噪声和冗余。我们将此模型称为多表示注意模型,因为它可以确定下游应用程序输入的多个表示的相关性。最终的表达是这些多重特征及其注意模型的权重加权组合。注意力模型的一个好处是通过检查权重,直接评估哪些嵌入是特定下游任务的首选嵌入

    Kiela等人在同一输入句的不同单词嵌入上学习注意力模型权重,以改进句子表示[Kiela et al. , 2018]。同样地,Maharjan等人也利用注意力来动态地给词汇、句法、视觉和体裁信息的书籍的不同特征表示赋予权重[Maharjan et al., 2018]。

    类似地,在多维注意multi-dimensional中,引入权重来确定输入嵌入向量的各个维度的相关性。直觉地将,计算向量的每个特征的分数可以选择在任何给定内容中最能描述词牌token特定含义的特征。这对于自然语言应用程序尤其有用,因为在自然语言中,单词嵌入会遇到一词多义问题。这一方法在Lin等人中展示了更有效的句子嵌入表示[Lin et al. , 2017],在Shen等人中展示了语言理解问题上[Shen et al. 2018]进行了充分的讨论。

    4. Network Architectures with Attention

    在本节中,我们描述了与注意力结合使用的三种的神经网络架构:(1)编码器-解码器框架,(2)将注意力扩展到单个输入序列之外的存储网络,以及(3)利用注意力绕过RNN模型的顺序处理

    • Encoder-Decoder

    最早使用注意力是作为基于RNN的编码器-解码器框架的一部分来编码长的输入语句[Bahdanau et al., 2014]。因此,注意力在这种体系结构中得到了最广泛的应用。一个有趣的事实是,注意力模型可以采用任何长度的输入表示,并将其减少到一个固定长度的内容向量,用于解码步骤。因此,它允许将输入表示与输出分离。我们可以利用这一优势来引入混合编码器解码器,最流行的是卷积神经网络(CNN)作为编码器,RNN或长短期存储器(LSTM)作为解码器。这种类型的体系结构对于多模式任务特别有用,例如图像和视频标注、可视问答和语音识别。

    • Memory Networks

    像问答和聊天机器人这样的应用程序需要能够从事实数据库中的信息中学习。网络的输入是一个知识数据库和一个查询,其中一些事实比其他事实更与查询相关。端到端内存网络[Sukhbaatar et al., 2015]通过使用一组内存块存储事实数据库来实现这一点,并注意内存中每个事实的模型相关性以回答查询。使用注意力还提供了计算优势,使目标连续,并通过反向传播实现端到端训练。端到端存储器网络可以被看作注意力模型的一种推广,它不是只在一个序列上建模,而是在一个大型的序列数据库上建模。

    • Networks without RNNs

    RNN结构依赖于编码步骤输入的顺序处理,因为处理无法并行化,这导致计算效率低下[Vaswani et al., 2017]。为了解决这一问题,作者提出了一种Transformer结构,其中编码器和解码器由,带有两个子层的相同层组成:位置前馈网络(FFN)层和multi-head自注意层。

    Position-wise FFN: 输入是序列的,它要求模型利用输入的时间信息,但是不使用捕获该位置信息的组件(如,RNN/CNN)。为此,在Transformer的编码阶段使用Position-wise FFN为输入序列的每个标记token生成内容嵌入和位置编码。

    Multi-Head Self-Attention: 在每个子层中使用self-attention来关联token及其在相同输入序列中的位置。此外,注意力机制被称为multi-head,因为几个注意力层是平行堆叠的,对相同输入序列进行不同的线性变换。这有助于模型捕获输入的各个方面并提高其表达能力。

    Transformer结构实现了显著的并行处理、更短的训练时间和更高的翻译精度,无需任何循环的组件,这是一个显著的好处。然而,位置编码仅弱合并位置信息,可能不适用于对位置变化更敏感的问题。Shen等人利用时间卷积编码位置信息以及Transformer的自我注意机制 [Shen et al., 2018]

    此外,还有更直接的方法来中断输入的顺序处理。Raffel和Ellis提出了前馈注意模型[Raffel and Ellis, 2015],他们使用注意模型来折叠数据的时间维度,并使用FFN而不是RNN来解决顺序数据问题。在这种情况下,注意力模型被用来从可变长度的输入序列中产生一个固定长度的内容向量,它可以作为一个输入,进而输入到FFN。

    5. Attention for Interpretability

    Fig.4  注意力权重可视化示例

    人们对人工智能模型的可解释性产生了极大的兴趣,模型的性能以及透明性和公平性都体现了这一点。然而,神经网络,特别是深度学习,因其缺乏可解释性而受到批评[Guidotti et al., 2018]

    从可解释性的角度来看,注意力机制特别有趣,因为它允许我们直接检查深度学习体系结构的内部工作。假设是注意力权重的大小与一个特定输入区域的相关性密切相关,用于预测一个序列中每个位置的输出。这可以很容易地通过可视化一组输入和输出对的注意权重来实现。Li等认为注意力是解释神经模型内部工作的重要途径之一[Li et al. 2016]

    如图4(a)所示,Bahdanau等人将注意力权重形象化,尽管主语-动词-名词位置在语言之间有所不同,但它清楚地显示了法语和英语中句子的自动对齐[Bahdanau et al., 2014]。特别是注意模型通过将"environnement marin"与"marine environment
    "非单调对齐。图4(b)显示了注意力权重可以帮助识别用户的兴趣。用户1似乎更喜欢“卡通”视频,而用户2更喜欢“动物”视频[He et al., 2018]。最后,Xu等人对图像字幕任务中,生成的文本与相关图像区域关联(即具有高关注权重)进行可视化[Xu et al. , 2015],如图4(c)所示。

    我们还总结了一些其他有趣的发现,如下所示。De Arteaga等人探讨了职业分类中的性别偏见,并展示了在分类任务中获得更多关注的词汇通常是如何被性别化的[De-Arteaga et al. 2019]。Yang等人注意到,评论内容的好与坏的重要性取决于上下文,从而确定评论的情绪[Yang et al. 2016]。作者考察了这些词的注意权重分布,发现它们的范围从0到1,这意味着模型捕获了不同的上下文,并为这些词分配了上下文相关的权重。Chan等人注意到,在语音识别中,字符输出和音频信号之间的注意能够正确识别音频信号中第一个字符的起始位置,对于声音相似的单词,注意权重相似[Chan et al. 2016]

    作为注意力的另一个有趣的应用,Lee等人[Lee et al.2017]和Liu等人[Liu et al. 2018]提供了一个工具来可视化深层神经网络的注意力权重。目的是解释和干扰注意力权重,以便模拟假设情景并交互观察预测的变化。

    6. Applications

    注意力模型由于其直观性、通用性和可解释性,已成为研究的一个活跃领域。注意力模型的变体已经被用来处理不同应用领域的独特特征,如总结、阅读理解、语言建模、解析等。我们讨论了三个应用领域的注意力建模:(i)自然语言生成NLG(i i)分类(i i i)推荐系统。

    NLG任务包括生成自然语言文本作为输出。一些NLG应用程序从加入注意力模型中获益,包括机器翻译(MT)、问答系统(QAS)和多媒体描述(MD)。机器翻译MT使用算法将文本或语音从一种语言翻译成另一种语言。神经技术中的注意建模使得不同语言的句子能够更好地对齐,这是机器翻译中的一个关键问题。注意模型的优点在翻译较长的句子时也变得更加明显[Bahdanau et al., 2014]。包括Britz等人和Tang等人在内的几项研究表明,使用注意力可以改善MT的性能[Britz et al., 2017] [Tang et al., 2018]。QAS问题利用了注意力:(i)通过关注问题的相关部分来更好地理解问题[Hermann et al., 2015];(i i)使用存储网络来存储大量信息,以帮助找到答案[Sukhbaatar et al., 2015];(i i i)通过使用共同关注来模拟输入中的多种形式来提高性能、无形的QAS任务[Lu et al., 2016]。MD的任务是生成一个自然语言文本描述的多媒体输入序列,可以是语音,图像和视频[Cho et al., 2015]。与QAS类似,这里的注意力执行在语音输入[Chorowski et al., 2015]或输入图像的相关部分[Xu et al., 2015]
    中查找相关声音信号的功能,以预测标题中的下一个单词。此外,Li等人利用视频的时间和空间结构,利用多级关注进行视频字幕任务[Li et al. 2017]。较低的抽象级别提取帧内的特定区域,较高的抽象级别选择性地关注帧的小子集。

    文件分类:如前面第3节所述,分类问题主要利用自我关注来构建更有效的文件表示。Yang等人使用了多层次的自我关注[Yang et al. 2016],而Lin等人则提出了多维的自我关注[Lin et al.2017],Kiela等人则提出了一个多特征表达的自我关注模型[Kiela et al. 2018]

    情绪分析:同样,在情绪分析任务中,自我关注有助于将注意力集中在决定输入情绪的重要词语上。Wang等人和Ma等人提出的基于方面的情感分类方法将与方面相关的概念的额外知识纳入模型 [Wang et al.2016] and [Ma et al. 2018],并利用关注度来适当权衡概念与内容本身的区别。情感分析应用程序也注意到了多种架构的使用,如记忆网络[Tang et al., 2016]和Transformer [Ambartsoumian and Popowich, 2018] and [Song et al., 2019]

    推荐系统:注意力模型也被广泛应用于推荐系统中,用于用户分析,即将注意力权重分配给用户的交互项目,以更有效地捕捉长期和短期的兴趣。这是直观的,因为用户的所有交互都与物品的建议无关,用户的兴趣在长时间和短时间内都是短暂的,并且是变化的。多篇论文使用自我关注机制来查找用户历史中最相关的物品,以改进物品推荐建议,要么使用协作过滤框架[He et al., 2018;] and [ Shuai Yu, 2019],要么使用编码器-解码器体系结构来进行推荐[Kang and McAuley, 2018;] and [Zhou et al., 2018]

    近年来,生物的注意力机制以新颖的方式被利用,为研究开辟了新的途径,包括更平滑地整合外部知识库、训练前嵌入、多任务学习、无监督的特征集成学习、稀疏性学习、原型学习(即样本选择)。

    7.  Conclusion

    在本次综述中,我们讨论了文献中注意力模型的不同使用方式,并试图通过讨论注意力分类法、使用注意力的关键神经网络结构以及受到显著影响的应用领域来概述各种技术。我们讨论了注意力在神经网络中的结合如何显著提高性能,通过促进可解释性,提供了对神经网络内部工作的更深入了解,并通过消除输入的顺序处理提高了计算效率。我们希望本次调查能够更好地了解对这一主题进行研究的不同方向,以及在一个领域中开发的技术如何应用到其他领域。

    Reference

    Artaches Ambartsoumian and Fred Popowich. Self-attention: A better building block for sentiment analysis neural network classifiers. arXiv preprint arXiv:1812.07860, 2018.
    Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate.
    arXiv preprint arXiv:1409.0473, 2014.
    Denny Britz, Anna Goldie, Minh-Thang Luong, and Quoc Le. Massive exploration of neural machine translation architectures. In
    EMNLP, pages 1442–1451. ACL, September 2017.
    William Chan, Navdeep Jaitly, Quoc Le, and Oriol Vinyals. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. In ICASSP, pages 4960–4964. IEEE, 2016.
    Kyunghyun Cho, Bart van Merrienboer, Dzmitry Bahdanau, and Yoshua Bengio. On the properties of neural machine translation: Encoder–decoder approaches. In Proceedings of SSST-8, Eighth Workshop on Syntax, Semantics and Structure in Statistical Translation, pages 103–111, Doha, Qatar, October 2014. ACL.
    Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using rnn encoder–decoder for statistical machine translation. In EMNLP, pages 1724–1734,
    Doha, Qatar, October 2014. ACL. Kyunghyun Cho, Aaron Courville, and Yoshua Bengio. Describing multimedia content using attention-based encoder-decoder networks. IEEE Transactions on Multimedia, 17(11):1875–1886, 2015.
    Jan Chorowski, Dzmitry Bahdanau, Dmitriy Serdyuk, Kyunghyun Cho, and Yoshua Bengio. Attention-based models for speech
    recognition. In NIPS, pages 577–585, Cambridge, MA, USA,
    2015. MIT Press.
    Maria De-Arteaga, Alexey Romanov, Hanna Wallach, Jennifer
    Chayes, Christian Borgs, Alexandra Chouldechova, Sahin Geyik,
    Krishnaram Kenthapadi, and Adam Tauman Kalai. Bias in bios:
    A case study of semantic representation bias in a high-stakes setting. arXiv preprint arXiv:1901.09451, 2019.
    Andrea Galassi, Marco Lippi, and Paolo Torroni. Attention, please!
    a critical review of neural attention models in natural language
    processing. arXiv preprint arXiv:1902.02181, 2019.
    Riccardo Guidotti, Anna Monreale, Salvatore Ruggieri, Franco
    Turini, Fosca Giannotti, and Dino Pedreschi. A survey of methods for explaining black box models. ACM computing surveys
    (CSUR), 51(5):93, 2018.
    Xiangnan He, Zhankui He, Jingkuan Song, Zhenguang Liu, YuGang Jiang, and Tat-Seng Chua. Nais: Neural attentive item similarity model for recommendation. IEEE TKDE, 30(12):2354–2366, 2018.
    Karl Moritz Hermann, Tomas Kocisky, Edward Grefenstette, Lasse Espeholt, Will Kay, Mustafa Suleyman, and Phil Blunsom.
    Teaching machines to read and comprehend. In NIPS, pages 1693–1701, 2015.
    Wang-Cheng Kang and Julian McAuley. Self-attentive sequential recommendation. In ICDM, pages 197–206. IEEE, 2018.
    Douwe Kiela, Changhan Wang, and Kyunghyun Cho. Dynamic meta-embeddings for improved sentence representations. In
    EMNLP, pages 1466–1477, 2018. Jaesong Lee, Joong-Hwi Shin, and Jun-Seok Kim. Interactive visualization and manipulation of attention-based neural machine translation. In EMNLP, pages 121–126. ACL, 2017.
    John Boaz Lee, Ryan A Rossi, Sungchul Kim, Nesreen K Ahmed, and Eunyee Koh. Attention models in graphs: A survey. arXiv
    preprint arXiv:1807.07984, 2018.
    Jiwei Li, Will Monroe, and Dan Jurafsky. Understanding neural networks through representation erasure. arXiv preprint
    arXiv:1612.08220, 2016.
    Xuelong Li, Bin Zhao, Xiaoqiang Lu, et al. Mam-rnn: Multi-level attention model based rnn for video captioning. In IJCAI, pages
    2208–2214, 2017.
    Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured selfattentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.
    Shusen Liu, Tao Li, Zhimin Li, Vivek Srikumar, Valerio Pascucci, and Peer-Timo Bremer. Visual interrogation of attentionbased models for natural language inference and machine comprehension. Technical report, Lawrence Livermore National
    Lab.(LLNL), Livermore, CA (United States), 2018.
    Jiasen Lu, Jianwei Yang, Dhruv Batra, and Devi Parikh. Hierarchical question-image co-attention for visual question answering. InNIPS, pages 289–297, 2016.
    Thang Luong, Hieu Pham, and Christopher D. Manning. Effective approaches to attention-based neural machine translation. In
    EMNLP, pages 1412–1421, Lisbon, Portugal, September 2015. ACL.
    Yukun Ma, Haiyun Peng, and Erik Cambria. Targeted aspect-based sentiment analysis via embedding commonsense knowledge into an attentive lstm. In AAAI, 2018.
    Suraj Maharjan, Manuel Montes, Fabio A Gonzalez, and Thamar Solorio. A genre-aware attention model to improve the likability prediction of books. In EMNLP, pages 3381–3391, 2018.

    Colin Raffel and Daniel PW Ellis. Feed-forward networks with attention can solve some long-term memory problems. arXiv
    preprint arXiv:1512.08756, 2015.
    Alexander M. Rush, Sumit Chopra, and Jason Weston. A neural attention model for abstractive sentence summarization. In
    EMNLP, pages 379–389, Lisbon, Portugal, September 2015. ACL.
    Tao Shen, Tianyi Zhou, Guodong Long, Jing Jiang, Shirui Pan, and Chengqi Zhang. Disan: Directional self-attention network for
    rnn/cnn-free language understanding. In AAAI, 2018.
    Min Yang Baocheng Li Qiang Qu Jialie Shen Shuai Yu, Yongbo Wang. Nairs: A neural attentive interpretable recommendation system. The Web Conference(WWW), 2019.
    Youwei Song, Jiahai Wang, Tao Jiang, Zhiyue Liu, and Yanghui Rao. Attentional encoder network for targeted sentiment classification. arXiv preprint arXiv:1902.09314, 2019.
    Sainbayar Sukhbaatar, Jason Weston, Rob Fergus, et al. End-to-end memory networks. In NIPS, pages 2440–2448, 2015.
    Duyu Tang, Bing Qin, and Ting Liu. Aspect level sentiment classification with deep memory network. In EMNLP, pages 214–224, Austin, Texas, November 2016. ACL.
    Gongbo Tang, Mathias Muller, Annette Rios, and Rico Sennrich. ¨Why self-attention? a targeted evaluation of neural machine
    translation architectures. arXiv preprint arXiv:1808.08946, 2018.
    Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, pages 5998–6008, 2017.
    Oriol Vinyals, Meire Fortunato, and Navdeep Jaitly. Pointer networks. In NIPS, pages 2692–2700, Cambridge, MA, USA, 2015.
    MIT Press.
    Feng Wang and David MJ Tax. Survey on the attention based rnn model and its applications in computer vision. arXiv preprint
    arXiv:1601.06823, 2016.
    Yequan Wang, Minlie Huang, xiaoyan zhu, and Li Zhao. Attentionbased lstm for aspect-level sentiment classification. In EMNLP, pages 606–615. ACL, 2016.
    Wenya Wang, Sinno Jialin Pan, Daniel Dahlmeier, and Xiaokui Xiao. Coupled multi-layer attentions for co-extraction of aspect
    and opinion terms. In AAAI, 2017.
    Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhudinov, Rich Zemel, and Yoshua Bengio. Show, attend and tell: Neural image caption generation with visual attention. In ICML, pages 2048–2057, 2015.
    Zichao Yang, Diyi Yang, Chris Dyer, Xiaodong He, Alexander J. Smola, and Eduard H. Hovy. Hierarchical attention networks for
    document classification. In HLT-NAACL, 2016.
    Haochao Ying, Fuzhen Zhuang, Fuzheng Zhang, Yanchi Liu, Guandong Xu, Xing Xie, Hui Xiong, and Jian Wu. Sequential recommender system based on hierarchical attention network. In IJCAI, pages 3926–3932. AAAI Press, 2018.
    Tom Young, Devamanyu Hazarika, Soujanya Poria, and Erik Cambria. Recent trends in deep learning based natural language processing. IEEE Computational Intelligence magazine, 13(3):55–75, 2018.
    Shenjian Zhao and Zhihua Zhang. Attention-via-attention neural machine translation. In AAAI, 2018.
    Chang Zhou, Jinze Bai, Junshuai Song, Xiaofei Liu, Zhengchao Zhao, Xiusi Chen, and Jun Gao. Atrank: An attention-based user behavior modeling framework for recommendation. In AAAI, 2018.


    文章来源:An Attentive Survey of Attention Models. https://arxiv.org/abs/1904.02874?context=cs


     

    展开全文
  • 综述---图像处理中的注意力机制

    万次阅读 多人点赞 2019-04-15 23:26:56
    论文阅读: 图像分类中的注意力机制(attention) 介绍了Spatial transformer networks、Residual Attention Network、Two-level Attention、SENet、Deep Attention Selective Network 计算机视觉中的注意力机制...

    重磅好文:微软亚研:对深度神经网络中空间注意力机制的经验性研究
    论文:An Empirical Study of Spatial Attention Mechanisms in Deep Networks
    高效Transformer层出不穷,谷歌团队综述文章一网打尽

    论文阅读: 图像分类中的注意力机制(attention)
    介绍了Spatial transformer networks、Residual Attention Network、Two-level Attention、SENet、Deep Attention Selective Network

    计算机视觉中的注意力机制(Visual Attention)

    快速理解图像处理中注意力机制的应用
    主要讲解了2017CPVR文章:Residual Attention Network for Image Classification

    Attention机制的文章总结
    计算机视觉技术self-attention最新进展

    ECCV2018–注意力模型CBAM
    【论文复现】CBAM: Convolutional Block Attention Module
    BAM: Bottleneck Attention Module算法笔记

    基于注意力机制的细腻度图像分类
    讲解RACNN
    此外还有MACNN等方法。

    概要

    为什么需要视觉注意力

    计算机视觉(computer vision)中的注意力机制(attention)的基本思想就是想让系统学会注意力——能够忽略无关信息而关注重点信息。为什么要忽略无关信息呢?

    注意力分类与基本概念

    神经网络中的「注意力」是什么?怎么用?这里有一篇详解
    该文分为: 硬注意力、软注意力、此外,还有高斯注意力、空间变换

    就注意力的可微性来分:

    1. Hard-attention,就是0/1问题,哪些区域是被 attentioned,哪些区域不关注.硬注意力在图像中的应用已经被人们熟知多年:图像裁剪(image cropping)
      硬注意力(强注意力)与软注意力不同点在于,首先强注意力是更加关注点,也就是图像中的每个点都有可能延伸出注意力,同时强注意力是一个随机的预测过程,更强调动态变化。当然,最关键是强注意力是一个不可微的注意力训练过程往往是通过增强学习(reinforcement learning)来完成的。(参考文章:Mnih, Volodymyr, Nicolas Heess, and AlexGraves. “Recurrent models of visual attention.” Advances inneural information processing systems. 2014.)

    硬注意力可以用Python(或Tensorflow)实现为:

    g = I[y:y+h, x:x+w]
    

    上述存在的唯一的问题是它是不可微分的;你如果想要学习模型参数的话,就必须使用分数评估器(score-function estimator)关于这一点,我的前一篇文章中有对其的简要介绍。

    1. Soft-attention,[0,1]间连续分布问题,每个区域被关注的程度高低,用0~1的score表示.

      软注意力的关键点在于,这种注意力更关注区域或者通道,而且软注意力是确定性的注意力,学习完成后直接可以通过网络生成,最关键的地方是软注意力是可微的,这是一个非常重要的地方。可以微分的注意力就可以通过神经网络算出梯度并且前向传播和后向反馈来学习得到注意力的权重。
      然而,这种类型的软注意力在计算上是非常浪费的。输入的黑色部分对结果没有任何影响,但仍然需要处理。同时它也是过度参数化的:实现注意力的sigmoid 激活函数是彼此相互独立的。它可以一次选择多个目标,但实际操作中,我们经常希望具有选择性,并且只能关注场景中的一个单一元素。由DRAW和空间变换网络(Spatial Transformer Networks)引入的以下两种机制很好地别解决了这个问题。它们也可以调整输入的大小,从而进一步提高性能。

    就注意力关注的域来分:

    1. 空间域(spatial domain)
    2. 通道域(channel domain)
    3. 层域(layer domain)
    4. 混合域(mixed domain)
    5. 时间域(time domain):还有另一种比较特殊的强注意力实现的注意力域,时间域(time domain),但是因为强注意力是使用reinforcement learning来实现的,训练起来有所不同

    一个概念:Self-attention自注意力,就是 feature map 间的自主学习,分配权重(可以是 spatial,可以是 temporal,也可以是 channel间)

    软注意力

    The application of two-level attention models in deep convolutional neural network for fine-grained image classification—CVPR2015

    1. Spatial Transformer Networks(空间域注意力)—2015 nips

    Spatial Transformer Networks(STN)模型[4]是15年NIPS上的文章,这篇文章通过注意力机制,将原始图片中的空间信息变换到另一个空间中并保留了关键信息。

    这篇文章认为之前pooling的方法太过于暴力,直接将信息合并会导致关键信息无法识别出来,所以提出了一个叫空间转换器(spatial transformer)的模块,将图片中的的空间域信息做对应的空间变换,从而能将关键的信息提取出来。

    spatial transformer其实就是注意力机制的实现,因为训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换而被框盒提取出来。
    在这里插入图片描述
    比如这个直观的实验图:

    (a)列是原始的图片信息,其中第一个手写数字7没有做任何变换,第二个手写数字5,做了一定的旋转变化,而第三个手写数字6,加上了一些噪声信号;
    (b)列中的彩色边框是学习到的spatial transformer的框盒(bounding box),每一个框盒其实就是对应图片学习出来的一个spatial transformer;
    ©列中是通过spatial transformer转换之后的特征图,可以看出7的关键区域被选择出来,5被旋转成为了正向的图片,6的噪声信息没有被识别进入。

    2. SENET (通道域)—2017CPVR

    在这里插入图片描述
    中间的模块就是SENet的创新部分,也就是注意力机制模块。这个注意力机制分成三个部分:挤压(squeeze),激励(excitation),以及scale(attention)。
    流程:

    1. 将输入特征进行 Global AVE pooling,得到 11 Channel
    2. 然后bottleneck特征交互一下,先压缩 channel数,再重构回channel数
    3. 最后接个 sigmoid,生成channel 间0~1的 attention weights,最后 scale 乘回原输入特征

    详见《论文阅读笔记—SENET》

    轻量模块ECANet(通道注意力超强改进)

    深度解析 | CVPR2020 | 通道注意力超强改进,轻量模块ECANet来了!即插即用,显著提高CNN性能|已开源

    3. Residual Attention Network(混合域)—2017

    文章中注意力的机制是软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。

    文提出的注意力mask,不仅仅只是对空间域或者通道域注意,这种mask可以看作是每一个特征元素(element)的权重。通过给每个特征元素都找到其对应的注意力权重,就可以同时形成了空间域和通道域的注意力机制

    很多人看到这里就会有疑问,这种做法应该是从空间域或者通道域非常自然的一个过渡,怎么做单一域注意力的人都没有想到呢?原因有:

    • 如果你给每一个特征元素都赋予一个mask权重的话,mask之后的信息就会非常少,可能直接就破坏了网络深层的特征信息;
    • 另外,如果你可以加上注意力机制之后,残差单元(Residual Unit)的恒等映射(identical mapping)特性会被破坏,从而很难训练。

    该文章的注意力机制的创新点在于提出了残差注意力学习(residual attention learning),不仅只把mask之后的特征张量作为下一层的输入,同时也将mask之前的特征张量作为下一层的输入,这时候可以得到的特征更为丰富,从而能够更好的注意关键特征。
    在这里插入图片描述
    文章中模型结构是非常清晰的,整体结构上,是三阶注意力模块(3-stage attention module)。每一个注意力模块可以分成两个分支(看stage2),上面的分支叫主分支(trunk branch),是基本的残差网络(ResNet)的结构。而下面的分支是软掩码分支(soft mask branch),而软掩码分支中包含的主要部分就是残差注意力学习机制。通过下采样(down sampling)和上采样(up sampling),以及残差模块(residual unit),组成了注意力的机制。

    模型结构中比较创新的残差注意力机制是:
    在这里插入图片描述
    H是注意力模块的输出,F是上一层的图片张量特征,M是软掩码的注意力参数。这就构成了残差注意力模块,能将图片特征和加强注意力之后的特征一同输入到下一模块中。F函数可以选择不同的函数,就可以得到不同注意力域的结果:
    在这里插入图片描述

    1. f1是对图片特征张量直接sigmoid激活函数,就是混合域的注意力;

    2. f2是对图片特征张量直接做全局平均池化(global average pooling),所以得到的是通道域的注意力(类比SENet);

    3. f3 是求图片特征张量在通道域上的平均值的激活函数,类似于忽略了通道域的信息,从而得到空间域的注意力。

    Non-local Neural Networks, CVPR2018

    FAIR的杰作,主要 inspired by 传统方法用non-local similarity来做图像 denoise

    主要思想也很简单,CNN中的 convolution单元每次只关注邻域 kernel size 的区域,就算后期感受野越来越大,终究还是局部区域的运算,这样就忽略了全局其他片区(比如很远的像素)对当前区域的贡献。

    所以 non-local blocks 要做的是,捕获这种 long-range 关系:对于2D图像,就是图像中任何像素对当前像素的关系权值;对于3D视频,就是所有帧中的所有像素,对当前帧的像素的关系权值。

    网络框架图也是简单粗暴:
    在这里插入图片描述
    文中有谈及多种实现方式,在这里简单说说在DL框架中最好实现的 Matmul 方式:

    1. 首先对输入的 feature map X 进行线性映射(说白了就是 1x1x1 卷积,来压缩通道数),然后得到 θ , ϕ , g \theta, \quad \phi, \quad g θ,ϕ,g 特征
    2. 通过reshape操作,强行合并上述的三个特征除通道数外的维度,然后对 进行矩阵点乘操作,得到类似协方差矩阵的东西(这个过程很重要,计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系)
    3. 然后对自相关特征 以列or以行(具体看矩阵 g 的形式而定) 进行 Softmax 操作,得到0~1的weights,这里就是我们需要的 Self-attention 系数
    4. 最后将 attention系数,对应乘回特征矩阵 g 中,然后再上扩 channel 数,与原输入 feature map X 残差一下,完整的 bottleneck

    嵌入在 action recognition 框架中的attention map 可视化效果:
    在这里插入图片描述

    图中的箭头表示,previous 若干帧中的某些像素 对最后图(当前帧)的脚关节像素的贡献关系。由于是soft-attention,其实每帧每个像素对对其有贡献关系,图中黄色箭头是把响应最大的关系描述出来。

    总结

    Pros:non-local blocks很通用的,容易嵌入在任何现有的 2D 和 3D 卷积网络里,来改善或者可视化理解相关的CV任务。比如前不久已有文章把 non-local 用在 Video ReID [2] 的任务里。

    Cons:文中的结果建议把non-local 尽量放在靠前的层里,但是实际上做 3D 任务,靠前的层由于 temporal T 相对较大,构造及点乘操作那步,超多的参数,需要耗费很大的GPU Memory

    Interaction-aware Attention, ECCV2018

    美图联合中科院的文章

    这文章扯了很多 Multi-scale 特征融合,讲了一堆 story,然并卵;直接说重点贡献**,就是在 non-local block 的协方差矩阵基础上,设计了基于 PCA 的新loss,更好地进行特征交互**。作者认为,这个过程,特征会在channel维度进行更好的 non-local interact,故称为 Interaction-aware attention

    那么问题来了,怎么实现 通过PCA来获得 Attention weights呢?

    文中不直接使用 协方差矩阵的特征值分解 来实现,而是使用下述等价形式:

    CBAM: Convolutional Block Attention Module(通道域+空间域), ECCV2018

    这货就是基于 SE-Net [5]中的 Squeeze-and-Excitation module 来进行进一步拓展,

    具体来说,文中把 channel-wise attention 看成是教网络 Look 'what’;而spatial attention 看成是教网络 Look ‘where’,所以它比 SE Module 的主要优势就多了后者

    在这里插入图片描述

    总体图

    在这里插入图片描述

    通道注意力和空间注意力子图

    通道注意力公式:
    M c ( F ) = σ ( M L P ( A v g P o o l ( F ) ) + M L P ( M a x P o o l ( F ) ) ) = σ ( W 1 ( W 0 ( F  avg  c ) ) + W 1 ( W max ⁡ c ) ) ) \begin{aligned} \mathbf{M}_{\mathbf{c}}(\mathbf{F}) &=\sigma(M L P(A v g P o o l(\mathbf{F}))+M L P(M a x P o o l(\mathbf{F}))) \\ &=\sigma\left(\mathbf{W}_{\mathbf{1}}\left(\mathbf{W}_{\mathbf{0}}\left(\mathbf{F}_{\text { avg }}^{\mathrm{c}}\right)\right)+\mathbf{W}_{\mathbf{1}}\left(\mathbf{W}_{\mathbf{\operatorname { m a x }}}^{\mathrm{c}}\right)\right) ) \end{aligned} Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1(W0(F avg c))+W1(Wmaxc)))

    空间注意力公式:(空间域注意力是通过对通道axis进行AvgPool和MaxPool得来的)
    M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) = σ ( f 7 × 7 ( [ F a v g s ; F max ⁡ s ] ) ) \begin{aligned} \mathbf{M}_{\mathbf{s}}(\mathbf{F}) &=\sigma\left(f^{7 \times 7}([A v g P o o l(\mathbf{F}) ; M a x P o o l(\mathbf{F})])\right) \\ &=\sigma\left(f^{7 \times 7}\left(\left[\mathbf{F}_{\mathbf{a v g}}^{\mathbf{s}} ; \mathbf{F}_{\mathbf{\operatorname { m a x }}}^{\mathbf{s}}\right]\right)\right) \end{aligned} Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))=σ(f7×7([Favgs;Fmaxs]))

    CBAM 特别轻量级,也方便在端部署。

    DANet:Dual Attention Network for Scene Segmentation(空间域+通道域), CPVR2019

    code: https://github.com/junfu1115/DANet
    最近才在arXiv挂出来的,把Self-attention的思想用在图像分割,可通过long-range上下文关系更好地做到精准分割。

    主要思想也是上述文章 CBAM 和 non-local 的融合变形

    把deep feature map进行spatial-wise self-attention,同时也进行channel-wise self-attetnion,最后将两个结果进行 element-wise sum 融合。
    在这里插入图片描述
    这样做的好处是:

    在 CBAM 分别进行空间和通道 self-attention的思想上,直接使用了 non-local 的自相关矩阵 Matmul 的形式进行运算,避免了 CBAM 手工设计 pooling,多层感知器 等复杂操作

    CCNet

    本篇文章的亮点在于用了巧妙的方法减少了参数量。在上面的DANet中,attention map计算的是所有像素与所有像素之间的相似性,空间复杂度为(HxW)x(HxW),而本文采用了criss-cross思想,只计算每个像素与其同行同列即十字上的像素的相似性,通过进行循环(两次相同操作),间接计算到每个像素与每个像素的相似性,将空间复杂度降为(HxW)x(H+W-1),以图为例为下:
    在这里插入图片描述
    整个网络的架构与DANet相同,只不过attention模块有所不同,如下图:在计算矩阵相乘时每个像素只抽取特征图中对应十字位置的像素进行点乘,计算相似度。
    在这里插入图片描述
    经过一轮此attention计算得到的attention map如下图R1所示,对于每个元素只有十字上的相似性,而通过两轮此计算,对于每个元素就会得到整张图的相似性,如R2。
    在这里插入图片描述
    得到此结果的原因如下图,经过一轮计算,每个像素可以得到在其十字上的相似性,对于不同列不同行(不在其十字上)的像素是没有相似性的,但是这个不同行不同列像素同样也进行了相似性计算,计算了在其十字上的相似性,那么两个十字必有相交,在第二次attention计算的时候,通过交点,相当于是间接计算了这两个不同列不同行像素之间的相似性

    实验结果达到了SOTA水平,但没有计算全部像素的attention方法准确率高

    OCNet

    OCNet: Object Context Network for Scene Parsing (Microsoft Research)论文解析
    图像语义分割(13)-OCNet: 用于场景解析的目标语义网络

    摘要
      论文侧重于语义分割中的语义聚集策略,即不再逐像素的进行预测而是将相似的像素点聚集后进行语义分割,由此提出了目标语义池化策略,它通过利用属于同一物体的像素集合的信息来得到某一个该物体包含的像素的标签,其中像素集合被称为目标语义。
      具体实现受到自注意力机制的影响包含两个步骤:1)计算单个像素和所有像素之间的相似性从而得到目标语义和每一个像素的映射;2)得到目标像素的标签。结果比现有的语义聚集策略例如PPM和ASPP这些不区别单一像素和目标语义之间是否存在属于关系的策略更加准确。

    不得不说,这篇论文和DANet撞车了,而且撞的死死的,用的同样的核心内容

    GCNet:Non-local Networks Meet Squeeze-Excitation Networks and Beyond

    Non-local Networks Meet Squeeze-Excitation Networks and Beyond 论文解读
    GCNet 网络结构结构了non-local network和Squeeze-excitation networks.我们知道non-local network(NLNet)可以捕获长距离依赖关系。可以发现NLnet的网络结构采用的是自注意力机制来建模像素对关系。**在这篇文章中non-local network的全局上下文在不同位置几乎是相同的,这表明学习到了无位置依赖的全局上下文,因此这样导致了大量的计算量的浪费。作者在这里提出了一种简化版的模型去获得全局上下文信息。**使用的是query-independent(可以理解为无query依赖)的建模方式。同时更可以共享这个简化的结构和SENet网络结构。因此作者在这里联合了这三种方法产生了一个global context(GC) block

    注意增强型卷积

    用自注意力增强卷积:这是新老两代神经网络的对话(附实现)
    PyTorch 实现地址:https://github.com/leaderj1001/Attention-Augmented-Conv2d

    PS:启示就是在卷积算子的基础上,加入了多个注意力head(每个自注意head就是no-local block。),然后将这些head concat到一起。

    机制
    卷积运算有一个显著缺陷,即仅在局部近邻上工作,也由此会错失全局信息。另一方面,自注意则是获取长程交互性方面的一项近期进展,但还主要应用于序列建模和生成建模任务上。在这篇论文中,我们研究了将自注意(作为卷积的替代)用于判别式视觉任务的问题。我们提出了一种全新的二维相对自注意机制,研究表明这足以在图像分类任务上替代卷积作为一种单独的原语。我们在对照实验中发现,当结合使用卷积与自注意时所得到的结果最好。因此我们提出使用这种自注意机制来增强卷积算子,具体做法是将卷积特征图与通过自注意产生的一组特征图连接起来

    在这里插入图片描述
    图:注意增强型卷积:对于每个空间位置 (h, w),都根据查询和键值在图像上计算出 N_h 个注意图(attention map)。这些注意图被用于计算 N_h 个这些值的加权平均 V。然后将所得结果连接起来,再重新调整形状以匹配原来的体空间维度并与一个逐点卷积混合。多头注意是以并行的方式应用于标准的卷积运算,输出再连接到一起。
    在这里插入图片描述

    单个注意力head

    给定一个形状为 (H, W, F_in) 的输入张量,我们将其展开为一个矩阵 X ∈ R H W × F i n X \in \mathbb{R}^{H W \times F_{i n}} XRHW×Fin,并如 Transformer 架构提出的那样执行多头注意。则单个头 h 的自注意机制输出为
    在这里插入图片描述
    其中, W q , W k ∈ R F i n × d k h , W v ∈ R F i n × d v h W_{q}, W_{k} \in \mathbb{R}^{F_{i n} \times d_{k}^{h}}, W_{v} \in \mathbb{R}^{F_{i n} \times d_{v}^{h}} Wq,WkRFin×dkh,WvRFin×dvh是可学习的线性变换,它们分别将输入 X 映射到查询 Q、键值 K(xys:当矩阵相乘进行自相关时,一个称为query,一个称为key) 和值 V。
    所有头的输出可以连接起来:
    MHA ⁡ ( X ) = \operatorname{MHA}(X)= MHA(X)= Concat [ O 1 , … , O N h ] W O \left[O_{1}, \ldots, O_{N h}\right] W^{O} [O1,,ONh]WO

    我们使用不同规模不同类型的模型(其中包括 ResNet 和一种当前最佳的可移动式受限网络)进行了广泛的实验,结果表明注意增强能在 ImageNet 图像分类与 COCO 目标检测任务上实现稳定的提升,同时还能保证参数数量大体接近。尤其值得提及的是,我们的方法在 ImageNet 上实现的 top-1 准确度优于 ResNet50 基准 1.3%我们的方法还在 COCO 目标检测上超过 RetinaNet 基准 1.4 mAP。
    注意增强仅需极少量的计算负担就能实现系统性的改善,并且在所有实验中都明显优于流行的 Squeeze-and-Excitation 通道式注意方法
    实验还有个让人惊讶的结果:在 ImageNet 上全自注意模型(注意增强的一种特例)的表现仅略逊于对应的全卷积模型,这说明自注意本身就是一种强大的图像分类基本方法。

    PAN: Pyramid Attention Network for Semantic Segmentation(层域)—CVPR2018

    亮点1:论文是将Attention机制与金字塔结构结合作为本文的亮点,这样可以在高层语义指导的基础上来提取相对与较低层的精确的密集特征,取代了其他方法里面的复杂的空洞卷积dilated和多个编码解码器的操作,跳出了以往常常用到的U-Net结构
    亮点2::采用了一个全局pooling进行底层特征的权值加权,对特征的map起到的选取的作用。
    在这里插入图片描述
    模块一:FPA(FeaturePyramid Attention)特征金字塔Attention

    • 解决的问题:不同的scale大小的图片以及不同大小的物体给物体分割带来了困难
    • 现有的方法:类似于PSPNet、DeepLab采用空间金字塔pooling实现不同的尺度以及多孔金字塔池化ASPP结构,问题一:pooling容易丢失掉局部信息,问题二:ASPP因为是一种稀疏的操作会造成棋盘伪影效应,问题三:只是简单地多个scale concat缺乏上下文的信息,没有关注上下文信息情况下效果不佳(下图作图为现有的方法),该部分处理主要是用在处理高层特征上的操作。
    • 提出的方案:如右图所示,在提取到高层特征之后不再进行pooling的操作,而是通过三个继续的卷积实现更高层的语义,我们知道更高层的语义会更加接近ground truth的情况,会关注一些物体信息,所以用更高层的语义来作为一种Attention的指导,与高层特征做完1×1卷积不变化大小的情况下进行相乘,也就是加强了具有物体信息的部位带有的权值,得到了带有Attention的输出,同时因为金字塔卷积的结构采用不同大小的卷积核,代表着不同的感受野,所以也解决不同物体不同scale的问题。

    在这里插入图片描述
    模块二:

    • 解决的问题:对于高层的特征常常可以实现有效的分类,但是重构原始图像的解析度或者说predict上无法精细地实现。
    • 现有的方法:类似于SegNet、Refinenet、提拉米苏结构等等都是采用了U-Net的结构,采用了解码器decoder也就是反卷积之类再加上底层的特征,一层层地往上累加以便恢复图像细节,论文中讲到了这种虽然是可以实现底层和高层的结合以及图像重构,但是computation burden
    • 提出的方案:如下图所示,抛弃了decoder的结构,原始形式是直接用底层特征加FPA得到的高层特征,但在skip底层特征的时候论文采用了高层特征作为指导设置了相应的权重,使得底层与高层的权重保持一致性,高层特征采用了Global Pooling得到权重,底层特征经过一个卷积层实现与高层特征相同数量的map,然后相乘后再高底层相加。这样减少了decoder复杂的计算同时也是一种新的高底层融合的形式。具体地说:
      • 我们对低层次特征执行 3×3 的卷积操作,以减少 CNN 特征图的通道数。
      • 从高层次特征生成的全局上下文信息依次经过 1×1 卷积、批量归一化 (batch normalization) 和非线性变换操作 (nonlinearity),然后再与低层次特征相乘。
      • 最后,高层次特征与加权后的低层次特征相加并进行逐步的上采样过程。
      • 我们的 GAU 模块不仅能够更有效地适应不同尺度下的特征映射,还能以简单的方式为低层次的特征映射提供指导信息。

    在这里插入图片描述

    Multi-Context Attention for Human Pose Estimation

    Tell Me Where to Look: Guided Attention Inference Network

    硬注意力

    一种通过引入硬注意力机制来引导学习视觉回答任务的研究

    软注意力机制已在计算机视觉领域取得了广泛的应用和成功。但是我们发现硬注意力机制在计算机视觉任务中的研究还相对空白。**而硬注意力机制能够从输入信息中选择重要的特征,因此它被视为是一种比软注意力机制更高效、直接的方法。**本次,将为大家介绍一种通过引入硬注意力机制来引导学习视觉回答任务的研究。此外结合 L2 正则化筛选特征向量,可以高效地促进筛选的过程并取得更好的整体表现,而无需专门的学习过程。

    1. Diversified visual attention networks for fine-grained object classification—2016

    2. Deep networks with internal selective attention through feedback connections (通道域)—NIPS 2014

    提出了一种Deep Attention Selective Network (dasNet)。在训练完成后,通过强化学习(Separable Natural Evolution Strategies)来动态改变attention。具体来说,attention调整的是每个conv filter的权重(和SENet一样有木有,都是channel维度)。policy是一个neural network,RL部分的算法如下:
    在这里插入图片描述
    其中每次while循环代表一次SNES迭代,M表示训练好的CNN,u和Sigma是policy参数对应的分布超参,p是采样p个policy参数,n是随机抽取n张图片。

    3.Fully Convolutional Attention Networks for Fine-Grained Recognition

    本文利用基于强化学习的视觉 attenation model 来模拟学习定位物体的part,并且在场景内进行物体分类。这个框架模拟人类视觉系统的识别过程,通过学习一个任务驱动的策略,经过一系列的 glimpse 来定位物体的part。那么,这里的 glimpse 是什么呢?每一个 glimpse 对应一个物体的part。将原始的图像以及之前glimpse 的位置作为输入,下一次 glimpse位置作为输出,作为下一次物体part。每一个 glimpse的位置作为一个 action,图像和之前glimpse的位置作为 state,奖励衡量分类的准确性。本文方法可以同时定位多个part,之前的方法只能一次定位一个part

    4 . 时间域注意力(RNN)

    这个概念其实比较大,因为计算机视觉只是单一识别图片的话,并没有时间域这个概念,但是[7]这篇文章中,提出了一种基于递归神经网络(Recurrent Neural Network,RNN)的注意力机制识别模型。

    RNN模型比较适合的场景是数据具有时序特征,比如使用RNN产生注意力机制做的比较好的是在自然语言处理的问题上。因为自然语言处理的是文本分析,而文本产生的背后其实是有一个时序上的关联性,比如一个词之后还会跟着另外一个词,这就是一个时序上的依赖关联性。

    而图片数据本身,并不具有天然的时序特征,一张图片往往是一个时间点下的采样。但是在视频数据中,RNN就是一个比较好的数据模型,从而能够使用RNN来产生识别注意力。

    特意将RNN的模型称之为时间域的注意力,是因为这种模型在前面介绍的空间域,通道域,以及混合域之上,又新增加了一个时间的维度。这个维度的产生,其实是基于采样点的时序特征

    Recurrent Attention Model [7]中将注意力机制看成对一张图片上的一个区域点的采样,这个采样点就是需要注意的点。而这个模型中的注意力因为不再是一个可以微分的注意力信息,因此这也是一个强注意力(hard attention)模型。这个模型的训练是需要使用增强学习(reinforcementlearning)来训练的,训练的时间更长。

    这个模型更需要了解的并不是RNN注意力模型,因为这个模型其实在自然语言处理中介绍的更详细,更需要了解的是这个模型的如何将图片信息转换成时序上的采样信号的:

    在这里插入图片描述
    这个是模型中的关键点,叫Glimpse Sensor,我翻译为扫视器,这个sensor的关键点在于先确定好图片中需要关注的点(像素),这时候这个sensor开始采集三种信息,信息量是相同的,一个是非常细节(最内层框)的信息,一个是中等的局部信息,一个是粗略的略缩图信息。

    这三个采样的信息是在 l t − 1 l_{t-1} lt1 位置中产生的图片信息,而下一个时刻,随着t的增加,采样的位置又开始变化,至于l随着t该怎么变化,这就是需要使用增强学习来训练的东西了。

    自注意力

    自注意力机制在计算机视觉中的应用
    用Attention玩转CV,一文总览自注意力语义分割进展

    自注意力机制是注意力机制的改进,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。

    在神经网络中,我们知道卷积层通过卷积核和原始特征的线性结合得到输出特征,由于卷积核通常是局部的,为了增加感受野,往往采取堆叠卷积层的方式,实际上这种处理方式并不高效。同时,计算机视觉的很多任务都是由于语义信息不足从而影响最终的性能。自注意力机制通过捕捉全局的信息来获得更大的感受野和上下文信息。

    自注意力机制 (self-attention)[1] 在序列模型中取得了很大的进步;另外一方面,上下文信息(context information)对于很多视觉任务都很关键,如语义分割,目标检测。自注意力机制通过(key, query, value)的三元组提供了一种有效的捕捉全局上下文信息的建模方式。接下来首先介绍几篇相应的工作,然后分析相应的优缺点以及改进方向。

    RelatedWorks

    Attention is all you need [1] 是第一篇提出在序列模型中利用自注意力机制取代循环神经网络的工作,取得了很大的成功。其中一个重要的模块是缩放点积注意力模块(scaled dot-product attention)。文中提出(key,query, value)三元组捕捉长距离依赖的建模方式,如下图所示,key和query通过点乘的方式获得相应的注意力权重,最后把得到的权重和value做点乘得到最终的输出。
    在这里插入图片描述

    Non-localneural network [2] 继承了(key, query, value) 三元组的建模方式, 提出了一个高效的non-local 模块, 如下图所示。在Resnet网络中加入non-local模块后无论是目标检测还是实例分割,性能都有一个点以上的提升(mAP),这说明了上下文信息建模的重要性。在这里插入图片描述

    Danet [3]是来自中科院自动化的工作,其核心思想就是通过上下文信息来监督语义分割任务。作者采用两种方式的注意力形式,如下图所示,分别是spatial和 channel上,之后进行特征融合,最后接语义分割的head 网络。思路上来说很简单,也取得了很好的效果。
    在这里插入图片描述
    Ocnet[4]是来自微软亚洲研究所的工作。同样它采用(key, query, value)的三元组,通过捕捉全局的上下文信息来更好的监督语义分割任务。与Danet [3]不同的是它仅仅采用spatial上的信息。最后也取得了不错的结果。
    在这里插入图片描述

    DFF [5] 是来自微软亚洲研究所视觉计算组的工作。如下图所示,它通过光流来对视频不同帧之间的运动信息进行建模, 从而提出了一个十分优雅的视频检测框架DFF。其中一个很重要的操作是warp, 它实现了点到点之间的对齐。在此以后出现了很多关于视频检测的工作,如, FGFA[6],Towards High Performance [7]等,他们大部分都是基于warp这个特征对其操作。由于光流网络的不准确性以及需要和检测网络进行联合训练,这说明现在视频检测中的光流计算其实不准确的。如何进行更好的建模来代替warp操作,并且起到同样的特征对其的作用是很关键的。通常而言我们假设flow运动的信息不会太远,这容易启发我们想到通过每个点的邻域去找相应的运动后的特征点,具体做法先不介绍了,欢迎大家思考(相关操作和自注意力机制)。
    在这里插入图片描述

    自注意力的缺点和改进策略

    前面主要是简单的介绍了自注意力机制的用途,接下来分析它的缺点和相应的改进策略,由于每一个点都要捕捉全局的上下文信息,这就导致了自注意力机制模块会有很大的计算复杂度和显存容量。如果我们能知道一些先验信息,比如上述的特征对其通常是一定的邻域内,我们可以通过限制在一定的邻域内来做。另外还有如何进行高效的稀疏化,以及和图卷积的联系,这些都是很开放的问题,欢迎大家积极思考。

    接下来介绍其他的一些改进策略,Senet[9] 启发我们channel上的信息很重要,如下图所示。

    CBAW [10] 提出了结合spatial和channel的模块,如下图所示,在各项任务上也取得很好的效果。
    在这里插入图片描述

    最后介绍一篇来自百度IDL的结合channel as spatial的建模方式的工作 [11]。本质上是直接在(key, query, value)三元组进行reshape的时候把channel的信息加进去,但是这带来一个很重要的问题就是计算复杂度大大增加。我们知道分组卷积是一种有效的降低参数量的方案,这里也采用分组的方式。但是即使采用分组任然不能从根本上解决计算复杂度和参数量大的问题,作者很巧妙的利用泰勒级数展开后调整计算key, query, value的顺序,有效的降低了相应的计算复杂度。下表是优化后的计算量和复杂度分析,下图是CGNL模块的整体框架。

    自注意力小结

    自注意力机制作为一个有效的对上下文进行建模的方式,在很多视觉任务上都取得了不错的效果。同时,这种建模方式的缺点也是显而易见的,一是没有考虑channel上信息,二是计算复杂度仍然很大。相应的改进策,一方面是如何进行spatial和channel上信息的有效结合,另外一方面是如何进行捕捉信息的稀疏化,关于稀疏的好处是可以更加鲁棒的同时保持着更小的计算量和显存。最后,图卷积作为最近几年很火热的研究方向,如何联系自注意力机制和图卷积,以及自注意力机制的更加深层的理解都是未来的很重要的方向。

    多尺度,多注意力结合

    ElementAI提出超复杂多尺度细粒度图像分类Attention模型

    展开全文
  • 注意力机制attention和Transformer

    千次阅读 2020-09-30 19:59:56
    文章目录一,注意力机制二,自注意力(self-attention)三,软注意力机制1,空域注意力2,通道注意力机制3,混合域模型4,Non-Local5,位置注意力机制四,强注意力机制 一,注意力机制 attention 机制可以认为是一种...

    参考文献:https://zhuanlan.zhihu.com/p/146130215

    一,注意力机制

    attention 机制可以认为是一种资源分配的机制,可以理解为对于原来平均分配的资源根据对象的重要程度重新分配资源,重要的单位多分一点,不重要不好的的少分一点,attention的资源分配方式就是权重。
    注意力机制的实质
    实质是一个寻址的过程,如上图所示:给定一个任务相关的查询向量q,通过计算与key的注意力分布并附加在Value上,从而计算attention value得分 ,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现:不需要将所有的N个输入信息都输入到神经网络进行计算,只需要从X中选择一些和任务相关的信息输入给神经网络。

    视觉注意力分为几种,核心思想是基于原有的数据找到其之间的关联性,然后突出其某些重要特征,有通道注意力,像素注意力,多阶注意力等,也有把NLP中的自注意力引入

    二,自注意力(self-attention)

    参考文献:http://papers.nips.cc/paper/7181-attention-is-all-you-need
    参考资料:https://zhuanlan.zhihu.com/p/48508221
    GitHub:https://github.com/huggingface/transformers
    self-attention的计算过程如下:

    1. 将输入单词转化成嵌入向量;
    2. 根据嵌入向量得到q,k,v三个向量,分别是query 向量,key向量和value向量
    3. 为每个向量计算一个score:score=q×v;
    4. 为了梯度的稳定,Transformer使用了score归一化,即除以sqrt(dk);
    5. 对score施以softmax激活函数;
    6. softmax点乘Value值v,得到加权的每个输入向量的评分v;
    7. 相加之后得到最终的输出结果z。
      计算过程在这里插入图片描述
      所以输出向量序列可以写为:
      H = V ∗ s o f t m a x ( K T Q d 3 ) H=V*softmax(\frac{K^TQ}{\sqrt{d3}}) H=Vsoftmax(d3 KTQ)

    三,软注意力机制

    软注意力是一个[0,1]间的连续分布问题,更加关注区域或者通道,软注意力是确定性注意力,学习完成后可以通过网络生成,并且是可微的,可以通过神经网络计算出梯度并且可以前向传播和后向反馈来学习得到注意力的权重

    1,空域注意力

    论文地址:http://papers.nips.cc/paper/5854-spatial-transformer-networks
    GitHub地址:https://github.com/fxia22/stn.pytorch
    让神经网络看哪里,感受野位置(原来是权值共享),通过注意力机制,将原始图片中的空间信息变换到一个空间并保留了关键信息,spatial transformer其实就是注意力机制的实现,因为训练出的spatial transformer能够找出图片信息中需要被关注的区域,同时这个transformer又能够具有旋转、缩放变换的功能,这样图片局部的重要信息能够通过变换而被框盒提取出来。

    2,通道注意力机制

    代表是SENet
    论文:Squeeze-and-Excitation Networks(https://arxiv.org/abs/1709.01507)
    GitHub地址:https://github.com/moskomule/senet.pytorch
    告诉神经网络看什么,卷积网络的每一层都有好多卷积核,每个卷积核对应一个特征通道,相对于空间注意力机制,通道注意力在于分配各个卷积通道之间的资源,分配粒度上比前者大了一个级别。
    先Squeeze操作,将各通道的全局空间特征作为该通道的表示,使用全局平均池化生成各通道的统计量
    再Excitation操作,学习各通道的依赖程度,并根据依赖程度对不同的特征图进行调整,得到最后的输出。
    在这里插入图片描述
    整体结构如上所示。
    在这里插入图片描述
    卷积层的输出并没有考虑对各通道的依赖,SEBlock的目的在于然根网络选择性的增强信息量最大的特征,是的后期处理充分利用这些特征并抑制无用的特征。
    SE算法流程如下:
    1,将输入特征进行全局平均池化,变成11channel
    2,然后bottleneck特征交互一下,先压缩channel数,再重构回channel数
    3,最后接个sigmoid,生成channel间0~1的attention weights,最后scale乘回原输入特征

    3,混合域模型

    论文:Residual Attention Network for image classification(CVPR 2017 Open Access Repository)
    文章中注意力的机制是软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。
    论文2:Dual Attention Network for Scene Segmentation(CVPR 2019 Open Access Repository)
    在这里插入图片描述

    4,Non-Local

    论文:non-local neural networks(CVPR 2018 Open Access Repository)
    GitHub地址:https://github.com/AlexHex7/Non-local_pytorch

    这一方法是针对感受野提出的,感受野都是局部信息local的运算,池化也是的。相反的,non-local指的就是感受野可以很大,而不是一个局部领域。全连接就是non-local的,而且是global的。但是全连接带来了大量的参数,给优化带来困难。卷积层的堆叠可以增大感受野,但是如果看特定层的卷积核在原图上的感受野,它毕竟是有限的。这是local运算不能避免的。然而有些任务,它们可能需要原图上更多的信息,比如attention。如果在某些层能够引入全局的信息,就能很好地解决local操作无法看清全局的情况,为后面的层带去更丰富的信息。
    算法流程如下:
    1,首先对输入的 feature map X 进行线性映射(通过1x1卷积,来压缩通道数),然后得到 θ,ϕ,g 特征,2,通过reshape操作,强行合并上述的三个特征除通道数外的维度,然后对 进行矩阵点乘操作,得到类似协方差矩阵的东西(这个过程很重要,计算出特征中的自相关性,即得到每帧中每个像素对其他所有帧所有像素的关系
    3,然后对自相关特征 以列or以行(具体看矩阵 g 的形式而定) 进行 Softmax 操作,得到0~1的weights,这里就是我们需要的 Self-attention 系数;
    4,最后将 attention系数,对应乘回特征矩阵g中,然后再上扩channel 数,与原输入feature map X残差
    在这里插入图片描述

    5,位置注意力机制

    论文:CCNet: Criss-Cross Attention for Semantic Segmentation(ICCV 2019 Open Access Repository)
    Github地址:https://github.com/speedinghzl/CCNet
    该方法的亮点是减少了参数量。
    attention map计算的是所有像素与所有像素之间的相似性,空间复杂度为(HxW)x(HxW),而本文采用了criss-cross思想,只计算每个像素与其同行同列即十字上的像素的相似性,通过进行循环(两次相同操作),间接计算到每个像素与每个像素的相似性,将空间复杂度降为(HxW)x(H+W-1)
    与non-local相比,CCnet的区别。
    在这里插入图片描述
    在计算矩阵相乘时每个像素只抽取特征图中对应十字位置的像素进行点乘,计算相似度。和non-local的方法相比极大的降低了计算量,同时采用二阶注意力,能够从所有像素中获取全图像的上下文信息,以生成具有密集且丰富的上下文信息的新特征图。在计算矩阵相乘时每个像素只抽取特征图中对应十字位置的像素进行点乘,计算相似度。

    四,强注意力机制

    0/1问题,哪些被attention,哪些不被attention。更加关注点,图像中的每个点都可能延伸出注意力,同时强注意力是一个随机预测的过程,更加强调动态变化,并且是不可微,所以训练过程往往通过增强学习。

    基于强化学习的注意力机制

    选择性的Attend输入的某个部分

    全局&局部注意力机制

    多维度注意力机制

    多源注意力机制

    层次化注意力机制

    注意力之上嵌一个注意力机制

    多跳注意力机制

    论文:NIPS2017:Convolutional Sequence to Sequence Learning

    使用拷贝机制的注意力机制

    论文:NIPS2015:Pointer Network

    基于记忆的注意力机制

    NLP中的attention和transformer

    自Attention机制提出后,加入attention的Seq2seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合RNN和attention的模型。之后google又提出了解决Seq2Seq问题的Transformer模型,用全attention的结构代替了lstm,在翻译任务上取得了更好的成绩。下面主要介绍《Attention is all you need》这篇文章.
    attention原理

    1. 核心思想
      Attention的思想理解起来比较容易,就是在decoding阶段对input中的信息赋予不同权重。在nlp中就是针对sequence的每个time step input,在cv中就是针对每个像素点。

    2. 原理解析

    3. 模型分类

    4. 优缺点

    Transformer模型原理详解

    和大多数seq2seq模型一样,transformer的结构也是由encoder和decoder组成。
    是seq2seq模型 Transformer=Transformer Encoder+Transformer Decoder
    在这里插入图片描述
    结构细节图:
    在这里插入图片描述

    1. Encoder编码
      上图所示的Nx部分,由6个相同的layer组成,layer指的就是上图左侧的单元。
      在这里插入图片描述
      一个layer由两个sub_layer组成,分别是multi-head self-attention mechanism,用来self-attention 和fully connected feed-forward network,简单的全连接网络,对每个position的向量分别进行相同的操作,包括连个线性变换和一个ReLU激活输出(输入输出维度都是512,中间层是2048)。其中每个sub-layer都加了residual connection(残差网络连接)和normalisation(归一化),因此可以将sub-layer的输出表示为:
      s u b l a y e r o u t p u t = L a y e r N o r m ( x + ( S u b L a y e r ( x ) ) ) sub_layer_output=LayerNorm(x+(SubLayer(x))) sublayeroutput=LayerNorm(x+(SubLayer(x)))
      下面介绍这两个sub-layer:
      1,multi-head self-attention mechanism
      attention可由以下形式表示: a t t e n t i o n − o u t p u t = A t t e n t i o n ( Q , K , V ) attention _-output=Attention(Q,K,V) attentionoutput=Attention(Q,K,V),multi-head attention则是通过h个不同的线性变换对Q,K,V进行投影,最后将不同的attention结果拼接起来: M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , h e a d 2 , . . h e a d h ) W o MultiHead(Q,K,V)=Concat(head1,head2,..headh)W^o MultiHead(Q,K,V)=Concat(head1,head2,..headh)Wo,其中 h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) head_i=Attention(QW_i^Q,KW_i^K,VW_i^V) headi=Attention(QWiQ,KWiK,VWiV) ,
      其中attention函数为 A t t e n t i o n ( ) = s o f t m a x ( Q K T d k ) ∗ V Attention()=softmax(\frac{QK^T}{\sqrt{d_k}})*V Attention()=softmax(dk QKT)V
      2,Position-wise feed-forward networks
      这层主要是提供非线性变换。Attention输出的维度是[batchsize* seq_len, num_heads*head_size],第二个sub-layer是个全连接层,之所以是position-wise是因为过线性层时每个位置i的变换参数是一样的。
    2. Transformer Decoder解码(N=6层,每层3个sub-layers)
      3个sub-layers分别是:
      **1,Masked multi-head self-attention mechanism,**用来进行self-attention,与Encoder不同:由于是序列生成过程,所以在时刻 i 的时候,大于 i 的时刻都没有结果,只有小于 i 的时刻有结果,因此需要做Mask。
      图中显示与右边编码器中的self-attention编码器的区别
      在这里插入图片描述

    2,Position-wise Feed-forward Networks,同Encoder里的sub-layer2。

    3,Encoder-Decoder attention计算。
    它与self-attention有所不同,都是采用multi-head计算,不过Encoder-Decoder attention采用传统的attention机制,其中的Query是self-attention mechanism已经计算出的上一时间i处的编码值,Key和Value都是Encoder的输出,这与self-attention mechanism不同。体现在代码中:

     ## Multihead Attention ( self-attention)
     self.dec = multihead_attention(queries=self.dec,
                                    keys=self.dec,
                                    num_units=hp.hidden_units,
                                    num_heads=hp.num_heads,
                                     dropout_rate=hp.dropout_rate,
                                      is_training=is_training,
                                      causality=True,
                                      scope="self_attention")
     
    ## Multihead Attention ( Encoder-Decoder attention)
    self.dec = multihead_attention(queries=self.dec,
                                    keys=self.enc,
                                    num_units=hp.hidden_units,
                                    num_heads=hp.num_heads,
                                    dropout_rate=hp.dropout_rate,
                                    is_training=is_training,
                                     causality=False,
                                     scope="vanilla_attention")
    

    Transformer应用于视觉任务

    提起Transformer,会想到NLP中的大杀器BERT和GPT-3。下面大家可以了解到将Transformer应用到计算机视觉任务中的例子。

    图像分类

    论文连接:https://openreview.net/pdf?id=YicbFdNTTy

    图像处理

    论文链接:https://arxiv.org/abs/2012.00364
    论文由北京大学、华为诺亚方舟实验室、悉尼大学、鹏程实验室提出。提出了一个图像处理Transformer(IPT)

    展开全文
  • 注意力机制论文研读

    千次阅读 2019-04-12 19:52:08
    参考: 计算机视觉中的注意力机制 然后找了个博客,里面有论文引用,这篇博客真不错,把其论文好好看看 ... 基于注意力机制的细腻度图像...突然发现一片硕士论文讲述的是注意力机制的,基于注意力机制的图像分类深度...
  • 深度学习中的注意力机制

    万次阅读 多人点赞 2018-06-21 17:07:17
    深度学习中的注意力机制 深度学习中的注意力机制 前言 Sequence to Sequence Sequence to Sequence 的各种形式 Attention Mechanism Attention 于机器翻译 Self-Attention 文字识别中的 Attention 推荐系统中...
  • Self Attention 自注意力机制

    千次阅读 多人点赞 2020-03-09 18:20:02
    self attention是提出Transformer的论文《Attention is all you need》中提出的一种新的注意力机制,这篇博文仅聚焦于self attention,不谈transformer的其他机制。Self attention直观上与传统Seq2Seq attention机制...
  • 自然语言处理中注意力机制综述

    千次阅读 2019-02-11 08:11:20
    https://www.toutiao.com/a6655120292144218637/       ...3.NLP中注意力机制起源 4.NLP中的注意力机制 5.Hierarchical Attention 6.Self-Attention 7.Memory-based Attention 8.Soft/Hard A...
  • 图像超分辨率网络中的注意力机制

    千次阅读 2021-04-24 09:33:42
    注意力机制的引入通过增强静态cnn的表示能力,极大地提高了这些网络的性能。 现有研究表明,注意机制在高绩效超划分模型中非常重要。但是很少有研究真正讨论“注意力为什么起作用以及它是如何起作用的”。 今天要...
  • 注意力机制详解(小白入门)

    千次阅读 2021-01-23 20:08:32
    文章目录产生原因注意力机制类型最大池化与平均池化的注意力机制注意力池化层次池化- 引入时序,更新V循环池化 引入时序更新Q多头注意力池化基于多头注意力的变换器注意力机制的研究进展(待更)注意力机制的好处 ...
  • TensorFlow LSTM 注意力机制图解

    千次阅读 2017-09-29 10:45:39
    TensorFlow LSTM Attention 机制图解深度学习的最新趋势是注意力机制。在接受采访时,现任OpenAI研究主管的Ilya Sutskever提到,注意力机制是最令人兴奋的进步之一,他们在这里进行投入。听起来令人兴奋但是什么是...
  • 点击上方“AI算法修炼营”,选择加星标或“置顶”标题以下,全是干货前面的话上次文章中,我们主要关注了视觉应用中的Self-attention机制及其应用——Non-local网络模块,从...
  • 注意力机制及其理解

    千次阅读 2019-07-30 02:06:00
    注意力机制逐渐在NLP中得地位变得越来越重要,上有Google的"Attention is All You Need"论文,下有 Tranformer、BERT等强大的NLP表征模型,attention 在 NLP 的地位就像卷积层在图像识别一样变得不可缺少的一部分。...
  • 深度学习中的注意力机制概述

    千次阅读 2019-01-11 10:13:17
    在介绍注意力机制之前,先介绍神经网络中的一个重要概念:网络容量(Network Capacity),网络容量指神经网络中可以存储的信息量,一般来讲,一组神经元能够存储信息的容量和神经元的数量以及神经网络的复杂度成正比...
  • 视觉注意力机制 (一) 主要关注了视觉应用中的 Self-attention 机制及其应用 —— Non-local 网络模块,从最开始的了解什么是视觉注意力机制到对自注意力机制的细节把握,再到 Non-local 模块的学习。而本文主要关注...
  • 目录 Abstract 1. Instroduction 2. Attention Model ​ 3.Taxonomy of Attention 注意力机制的分类 3.1 Number of sequences 3.2 Number of abstraction levels 3.3 Number of p...
  • 入门 | 什么是自注意力机制

    千次阅读 2018-08-24 08:52:00
    来源 : 机器之心, 禁止二次转载注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制。注意力机制可以快速提取稀疏数据...
  • 浅谈计算机视觉中的注意力机制

    千次阅读 2019-03-19 16:07:31
    视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节...
  • 战场态势感知中的注意力机制探析

    千次阅读 2018-01-06 00:00:00
    注意力机制入手,综述了 心理学和态势感知理论中注意力机制的理论研究以及建模方法, 提出了战场态势感知中的注意力机 制的概念和框架,并展望了在作战目标价值评估中的应用 。关键词:战场态势感知;注意力机制;...
  • 注意力机制(Attention)原理详解

    千次阅读 2021-03-28 21:53:39
    在了解Attention之前,首先应该了解为什么我们需要注意力机制。我们以传统的机器翻译为例子来说明为什么我们需要Attention。 传统的机器翻译,也称机器翻译(Neural machine translation),它是由encoder和decoder两...
  • SENET与 CBAM 注意力机制

    千次阅读 2020-10-27 09:31:08
    其包含两个子模块 Channel Attention Module(CAM) 和 Spartial Attention Module(SAM) Convolutional Block Attention Module (CBAM) 表示卷积模块的注意力机制模块。是一种结合了空间(spatial)和通道(channel)...
  • 注意力机制模块——SE、CBAM

    千次阅读 2020-08-09 20:55:21
    https注意力机制模块SENetCBAM SENet SE全称Squeeze-and-Excitation,它注重通道信息。 SE的出现是为了解决在卷积池化过程中feature map的不同通道所占的重要性不同带来的损失问题。在传统的卷积池化过程中,默认...
  • Attention!注意力机制可解释吗?

    千次阅读 2019-10-08 14:59:37
    来源:哈工大SCIR本文约9300字,建议阅读10+分钟。本文将与您探讨注意力机制的可解释性问题。序言自2014年Bahdanau将Attention作为软对齐引入神经机...
  • 多尺度注意力机制的语义分割

    千次阅读 2020-06-19 08:47:43
    多尺度注意力机制的语义分割 Using Multi-Scale Attention for Semantic Segmentation 在自动驾驶、医学成像甚至变焦虚拟背景中,有一项重要的技术是常用的:语义分割。这是将图像中的像素标记为属于N个类(N是任意...
  • 注意力Attention机制

    2020-02-11 11:11:41
    从池化的视角理解注意力机制注意力机制是一种对输入(键项和值项)分配偏好(注意力权重)的通用池化方法。 通用池化:注意力机制通常是含参数的,...层次注意力池化(查询项:q,键项:k,值项:v) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,757
精华内容 19,902
关键字:

层次注意力机制