注意力机制新综述笔记,21年

21年注意力机制小综述的翻译
A review on the attention mechanism of deep learning

Abstract

可以说,注意力已经成为深度学习领域最重要的概念之一。它的灵感来自于人类的生物系统,即在处理大量信息时倾向于关注独特的部分。随着深度神经网络的发展,注意力机制已被广泛用于不同的应用领域。本文旨在对近年来提出的最先进的注意力模型进行概述。为了更好地理解注意力机制,我们建立了一个适用于大多数注意力结构的统一模型。模型中实现的每一步注意机制都有详细的描述。此外,我们根据四个标准对现有的注意力模型进行了分类:注意力的软度、输入特征的形式、输入表示和输出表示。此外,我们总结了与注意机制结合使用的网络结构,并描述了注意机制的一些典型应用。最后,我们讨论了注意力给深度学习带来的可解释性,并介绍了其潜在的未来趋势。

1 Introduction

注意是一种复杂的认知功能,对人类来说是不可或缺的[1,2]。知觉的一个重要特性是,人类并不倾向于一次性处理整个信息。相反,人类倾向于在需要时有选择地集中处理一部分信息,但同时忽略其他可感知的信息。例如,人类在视觉上感知事物时,通常不会从头到尾看到所有的场景,而是根据需要观察和注意特定的部分。当人类发现一个场景的某个部分经常有他们想要观察的东西时,他们就会学会在类似的场景再次出现时关注这个部分,并把更多的注意力放在有用的部分。这是人类利用有限的处理资源从大量信息中快速选择高价值信息的一种手段。注意机制极大地提高了知觉信息处理的效率和准确性。
人类的注意机制根据其产生方式可以分为两类[3]。第一类是自下而上的无意识注意,称为基于显著性的注意,它由外部刺激驱动。例如,人们在谈话中更有可能听到响亮的声音。它类似于深度学习中的最大集合和门控机制[4,5],它将更合适的值(即更大的值)传递给下一步。第二类是自上而下的有意识的注意,称为集中注意。集中注意力指的是有预定目的并依赖于特定任务的注意力。它使人类能够有意识地、积极地将注意力集中在某一对象上。深度学习中的大多数注意力机制都是根据特定的任务设计的,因此它们中的大多数都是集中注意力。本文所介绍的注意力机制除了特殊的说法外,通常指的是集中注意力
如上所述,注意力机制可以作为一种资源分配方案,是解决信息过载问题的主要手段。在计算能力有限的情况下,它可以用有限的计算资源处理更多的重要信息。因此,一些研究人员把注意力带到了计算机视觉领域。[6]提出了一个基于显著性的视觉注意模型,该模型提取局部低级别的视觉特征来获得一些潜在的显著区域。在神经网络领域,[7]将注意力机制用于递归神经网络模型,对图像进行分类。Bahdanau等人[8]利用注意力机制在机器翻译任务上同时进行翻译和对齐。随后,注意力机制已经成为神经架构中越来越常见的成分,并被应用于各种任务,如图像标题生成[9,10]、文本分类[11,12]、机器翻译[13-16]、动作识别[17-20]、基于图像的分析[21,22]、语音识别[23-25]、推荐[26,27]和图表[28,29]。图1显示了几种典型的注意力方法的概况,这些方法将在第3节详细描述。
除了提供性能上的改进,注意力机制还可以作为一种工具来解释难以理解的神经结构行为。近年来,神经网络在金融[31]、材料[32]、计量学[33-36]、医学[37-41]、自动驾驶[42]、人机交互[43-45]、行为和动作分析[46,47]、工业[48]和情感检测[49,50]方面取得了巨大成功,但缺乏可解释性面临着实际和伦理问题[51]。到目前为止,深度学习的可解释性一直是一个问题。虽然注意力机制是否可以作为解释深度网络的可靠方法仍然是一个有争议的问题[52,53],但它在一定程度上可以提供一个直观的解释[54-57]。例如,图2显示了注意力权重的视觉化的例子。
本调查报告的结构如下。在第2节中,我们介绍了一个由[8]提出的著名模型,并定义了一个一般的注意力模型。第3节描述了注意力模型的分类。第4节总结了与注意力机制相关的网络架构。第5节阐述了注意力在各种计算机视觉(CV)和自然语言处理(NLP)任务中的应用。在第6节中,我们讨论了注意力给神经网络带来的可解释性。在第7节中,我们剖析了注意力机制的公开挑战、当前趋势和创新方法。在第8节中,我们总结了本文。

2 Attention mechanism

2.1. An example of attention model: RNNsearch

一个著名的使用attention的机器翻译结构

编码器

计算BiRNN基于输入序列 ( x 1 , … , x T ) \left(x_{1}, \ldots, x_{T}\right) (x1,,xT)的hidden states: ( h 1 , … , h T ) = BiRNN ⁡ ( x 1 , … , x T ) \left(\boldsymbol{h}_{\mathbf{1}}, \ldots, \boldsymbol{h}_{\boldsymbol{T}}\right)=\operatorname{BiRNN}\left(x_{1}, \ldots, x_{T}\right) (h1,,hT)=BiRNN(x1,,xT)

前向RNN, 反向RNN各自提取的hidden states被连接得到一个词 x i x_i xi的一个annotation
h i = [ h i → ⊤ ; h i → ] ⊤ \boldsymbol{h}_{\boldsymbol{i}}=\left[\overrightarrow{\boldsymbol{h}_{\boldsymbol{i}}}^{\top} ; \overrightarrow{\boldsymbol{h}_{\boldsymbol{i}}}\right]^{\top} hi=[hi ;hi ]
解码器

由一个attention块和RNN组成

attention块计算上下文向量 c \bold{c} c ,该向量表示当前输出符号和整个输入序列的每项的关系。每个时间步 t t t,上下文向量 c t \boldsymbol{c}_{t} ct为计算为注释 h j \boldsymbol{h}_{j} hj的加权和
c t = ∑ j = 1 T α t j h j \boldsymbol{c}_{t}=\sum_{j=1}^{T} \alpha_{t j} \boldsymbol{h}_{j} ct=j=1Tαtjhj
每个 h j \boldsymbol{h}_{j} hj的注意力权重 α t j \alpha_{t j} αtj计算如下
e t j = a ( s t − 1 , h j ) , α t j = exp ⁡ ( e t j ) ∑ k = 1 T exp ⁡ ( e t k ) \begin{aligned} &e_{t j}=a\left(\mathbf{s}_{t-1}, \boldsymbol{h}_{j}\right),\\ &\alpha_{t j}=\frac{\exp \left(e_{t j}\right)}{\sum_{k=1}^{T} \exp \left(e_{t k}\right)} \end{aligned} etj=a(st1,hj),αtj=k=1Texp(etk)exp(etj)
a a a是一个可学习的函数,它表示根据状态 s t − 1 \boldsymbol{s}_{t-1} st1,注释 h j \boldsymbol{h}_{j} hj对下一个隐藏状态 s t \boldsymbol{s}_{t} st的重要性。

之后RNN输出当前步最可能的符号 y t y_t yt
p ( y t ∣ y 1 , … , y t − 1 , x ) = RNN ⁡ ( c t ) p\left(y_{t} \mid y_{1}, \ldots, y_{t-1}, \boldsymbol{x}\right)=\operatorname{RNN}\left(\boldsymbol{c}_{t}\right) p(yty1,,yt1,x)=RNN(ct)
通过这种方式,源句子的信息可以分布在整个序列中,而不是通过编码器将所有的信息编码成一个固定长度的向量,而解码器可以在每个时间步骤中选择性地检索它。这个公式使神经网络能够专注于输入的相关元素,而不是无关的部分。

2.2. A unified attention model

总的来说,实施注意力机制可分为两步:一是根据输入信息计算注意力分布,二是根据注意力分布计算上下文向量

图4展示了统一的注意力模型,包括调查文献中发现的大多数注意力模型所共享的核心部分。

在计算注意力分布时,神经网络首先将源数据特征编码为 K \boldsymbol{K} K,称为key。 K \boldsymbol{K} K可以根据特定的任务和神经结构用不同的表示方法来表达。例如, K \boldsymbol{K} K可以是图像的某个区域的特征、文件的词嵌入或RNN的隐藏状态,就像RNNsearch中的注释那样。此外,通常需要引入一个与任务相关的表示向量 q \boldsymbol{q} q,即query,就像RNNsearch中输出 s t − 1 \boldsymbol{s}_{t-1} st1的前一个隐藏状态。在某些情况下, q \boldsymbol{q} q也可以是一个矩阵[16]或两个向量[59]的形式,符合特定的任务。

然后,神经网络通过评分函数 f f f(也称为能量函数[61]或兼容性函数[62])计算queries和keys之间的相关性,以获得能量分数 e \boldsymbol{e} e,该分数反映了queries相对于keys在决定下一个输出中的重要性。
e = f ( q , K ) \boldsymbol{e}=f(\boldsymbol{q}, \boldsymbol{K}) e=f(q,K)
评分函数 f f f是注意力模型的一个关键部分,因为它规定了key和query的匹配或组合方式。在表1中,我们列出了一些常见的评分函数 f f f

两种最常用的注意力机制是加法注意力(如RNNsearch中的对齐模型)[8]和计算成本较低的乘法(点乘法)注意力[14]。Britz等人[15]对这两种得分函数进行了经验比较。在他们对WMT’15的英语!德语任务的实验中,他们发现参数化的加法注意力机制略微但一直优于乘法注意力机制。此外,Vaswani等人[16]提出了一个多乘法的变体,加上缩放因子 1 d k \frac{1}{\sqrt{d_{k}}} dk 1,其中 d k d_k dk是keys的维度。虽然对于小的 d k d_k dk值来说,这两种机制的表现相似,但对于较大的 d k d_k dk值来说,加法注意力的表现优于没有缩放的多乘法注意力。另外,Luong等人[14]提出了General attention、concat attention和location-based attention。General attention通过引入一个可学习的矩阵参数 W \boldsymbol{W} W,扩展了乘法注意力的概念,它可以应用于具有不同表示的keys和queries。concat attention的目的是得出keys和queries的联合表征,而不是对它们进行比较。除了单独计算 q \boldsymbol{q} q K \boldsymbol{K} K外,它与加法注意力相似。在location-based attention中,对齐分数只从目标隐藏状态中计算出来。换句话说,能量分数只与 q \boldsymbol{q} q有关。相反,self-attention[63]只基于 K \boldsymbol{K} K计算,不需要 q \boldsymbol{q} q。此外,Graves等人[60]提出了一个比较 K \boldsymbol{K} K q \boldsymbol{q} q之间的相似性的模型,它依赖于余弦相似性。
之后,能量分数 e \boldsymbol{e} e通过注意力分布函数 g g g被映射到注意力权重 α \alpha α
α = g ( e ) \boldsymbol{\alpha}=\mathrm{g}(\boldsymbol{e}) α=g(e)
分布函数 g g g对应于RNNsearch中的softmax,它将所有的能量得分归一到一个概率分布。除softmax外,一些研究人员还尝试了其他分布函数。softmax函数的一个局限性是,所产生的概率分布总是具有完全的支持,即softmax(z)>0的每项z。在需要稀疏概率分布的应用中,这是一个缺点。
在这种情况下,[64]提出了sparsemax,它可能给某些输出变量分配的概率正好为零。此外,[65]使用了另一个分布函数,即Logistic sigmoid,它在0和1之间对能量分数进行了缩放。他们还在实验中比较了sigmoid和softmax,结果显示sigmoid函数在不同的任务中表现更好或更差。
当神经网络计算上下文向量时,通常需要引入一个新的数据特征表示 V \boldsymbol{V} V,称为值。 V \boldsymbol{V} V中的每个元素都对应于 K \boldsymbol{K} K中的一个且仅有一个元素。在许多架构中,两者是输入数据的相同表示,就像RNNsearch中的注释。基于之前的工作[66-68],Daniluk等人[69]假设这些表示法的过度使用会使模型的训练变得困难,因此他们提出了对注意力机制的修改,将这些功能明确分开。他们使用不同的输入表征来计算注意力分布和上下文信息。换句话说,在他们的键值对注意机制中, V \boldsymbol{V} V K \boldsymbol{K} K是同一数据的不同表示。特别是,在自我注意机制中, Q \boldsymbol{Q} Q K \boldsymbol{K} K V \boldsymbol{V} V是同一数据的三种不同表征[16]。
一旦注意力权重和值被计算出来,上下文向量 c \boldsymbol{c} c就被计算出来。
c = ϕ ( { α i } , { v i } ) \boldsymbol{c}=\phi\left(\left\{\alpha_{i}\right\},\left\{\boldsymbol{v}_{i}\right\}\right) c=ϕ({αi},{vi})
其中, ϕ \phi ϕ是一个函数,它返回一个单一的向量,给定的是一组值和它们相应的权重。
z i = α i v i  and  c = ∑ i = 1 n z i \begin{aligned} &\boldsymbol{z}_{i}=\alpha_{i} \boldsymbol{v}_{i}\\ &\text { and }\\ &\boldsymbol{c}=\sum_{i=1}^{n} \boldsymbol{z}_{i} \end{aligned} zi=αivi and c=i=1nzi
其中, z i \boldsymbol{z}_{i} zi是值的每个元素的加权表示, n n n Z \boldsymbol{Z} Z的维度。还有另一种表示 ϕ \phi ϕ的方法在3.1节描述。无论哪种方式,上下文向量的确定主要是由于与该值相关的较高的注意权重。
以上是我们对注意力模型中常见架构的描述。这里我们引用Vaswani等人[16]的观点,注意机制’'可以描述为将一个查询和一组键值对映射到一个输出,其中查询、键、值和输出都是向量。输出被计算为数值的加权和,其中分配给每个数值的权重是由查询与相应的键的兼容性函数计算出来的"。
此外,我们还想讨论一下评价注意力机制的性能指标。一般来说,深度学习中的注意力机制是附着在神经网络模型上的,以增强其处理信息的能力。因此,如果没有深度学习模型,很难评估注意力机制的性能。一个常见的方法是消融研究,即分析有/无注意力机制的模型之间的性能差距。此外,注意力机制可以通过可视化的注意力权重进行评估(如图2所示),但这种方式不能被量化

3.Taxonomy of attention

在上一节中,我们总结了一个通用的注意力模型,并详细解释了注意力机制实现的每个步骤。作为一种提高神经网络信息处理能力的方法,注意力机制可以应用于深度学习各个领域的大多数模型。虽然注意力模型的原理是相同的,但研究人员对注意力机制进行了一些修改和改进,以使其更好地适应特定的任务。我们根据四个标准对注意力机制进行分类(如表2所示)。在这一节中,我们通过回顾几篇具有开创性的论文来阐述每个标准中不同类型的注意机制。此外,我们想强调的是,不同标准中的注意机制并不是相互排斥的,所以在一个注意模型中可能有多个标准的组合(见第5节和表3)。

3.1. The softness of attention

上面提到的Bahdanau等人[8]提出的注意力属于soft (deterministic) attention,它使用所有键的加权平均来构建上下文向量。对于软注意,注意模块相对于输入是可分的,所以整个系统仍然可以通过标准的反向传播方法进行训练。
相应的,hard (stochastic)注意力是由Xu等人提出的[9],其中上下文向量是由随机采样的keys计算的。这样一来,公式(8)中的函数/可以实现为以下几种。
α ~ ∼ Multinoulli ⁡ ( { α i } )  and  c = ∑ i = 1 n α ~ i v i \begin{aligned} &\tilde{\alpha} \sim \operatorname{Multinoulli}\left(\left\{\alpha_{i}\right\}\right)\\ &\text { and } \end{aligned}\\ \boldsymbol{c}=\sum_{i=1}^{n} \tilde{\alpha}_{i} \boldsymbol{v}_{i} α~Multinoulli({αi}) and c=i=1nα~ivi
与软注意模型相比,硬注意模型的计算成本较低,因为它不需要每次都计算所有元素的注意权重。然而,在输入特征的每个位置做出硬性决定会使模块变得不可区分,难以优化,因此整个系统可以通过最大化近似变量下限或通过REINFORCE[70]来训练。
在此基础上,Luong等人[14]提出了机器翻译的全局注意和局部注意机制。全局注意类似于软注意。局部注意可以被看作是硬注意和软注意之间的一种有趣的混合,在这种情况下,每次只考虑源词的一个子集。这种方法在计算上比全局注意或软注意的成本低。同时,与硬注意不同,这种方法几乎在任何地方都是可分的,这使得它更容易实现和训练。

3.2. Forms of input feature

根据输入特征是否为项目序列,注意力机制可分为项目式和位置式。逐项关注要求输入是明确的项目,或者增加一个额外的预处理步骤以从源数据中生成一个项目序列。例如,项目可以是RNNsearch[8]中的单个单词嵌入,或者是SENet[71]中的单个特征图。在注意力模型中,编码器将每个项目编码为单独的代码,并在解码时给它们分配不同的权重。相反,从位置上看,注意力是针对难以获得不同输入项目的任务,一般来说,这种注意力机制用于视觉任务。例如,解码器在每一步处理输入图像的多分辨率裁剪[7,72],或将任务相关区域转化为典型的、预期的姿势,以简化后续层的推理[73]。
另一个区别是与软/硬注意力机制相结合时的计算方式。逐项软注意为每个项目计算一个权重,然后对它们进行线性组合。定位的软注意力接受整个特征图作为输入,并通过注意力模块生成一个转换版本。而不是对所有项目进行线性组合,逐项硬注意根据它们的概率随机地挑选一个或一些项目。定位硬注意随机地挑选一个子区域作为输入,并由注意模块计算出要挑选的子区域的位置。

3.3. Input representation

在上面提到的大多数注意力模型中,关于输入表示有两个特点。1)这些模型包括一个单一的输入和相应的输出序列;2)键和查询属于两个独立的序列。这种注意力被称为distinctive attention[74]。此外,注意机制有许多不同形式的输入表征(图5)。

Lu等人[75]提出了一个用于视觉问题回答任务的多输入注意力模型,即共同注意力(co-attention),该模型对图像和问题的注意力进行联合重构。共同注意力可以平行地或交替地形成。前者同时产生图像和问题注意,而后者则依次交替产生图像和问题注意。此外,共同注意力可以是粗粒度的,也可以是细粒度的[76]。粗粒度的注意计算每个输入的注意,使用其他输入的嵌入作为查询。细粒度的注意力评估一个输入的每个元素如何影响其他输入的每个元素。共同注意力已经成功地用于各种任务,包括情感分类[77]、文本匹配[78]、命名实体识别[79]、实体消歧[80]、情绪原因分析[81]和情感分类[82]。
Wang等人[83]提出了self (inner) attention,它只根据输入序列来计算注意力。换句话说,查询、键和值是同一输入序列的不同代表。这样的模型已经被一些作者证明是有效的,他们以不同的方式利用了它[16,30,84-87]。一个著名的应用是Transformer[16],这是第一个完全基于self attention的序列转换模型,没有RNN。这个模型在各个领域的应用将在第5节描述。
注意力权重不仅可以从原始输入序列中计算出来,还可以从不同的抽象层次中计算出来,我们称之为分层注意力。Yang等人[63]提出了一个用于文档分类的层次注意网络(HAM),它有两个层次的注意机制:词级和句级。分层注意使HAM能够将重要的词聚合到一个句子中,然后将重要的句子聚合到一个文档中。此外,该层次结构还可以进一步扩展。Wu等人[88]在上面增加了一个用户层,在文档层也应用了注意力。与上述模型权重从低级到高级的学习相反,Zhao和Zhang[61]提出的模型也使用了分层关注,但关注权重是从高级到低级的学习。除了自然语言处理,层次注意也被用于计算机视觉。例如,Xiao等人[89]提出了一种两级注意方法,即对象级和部分级注意。这是第一个不使用额外的部分信息,只依靠模型来产生注意权重的细粒度图像分类方法。

3.4. Output representation

在这一部分,我们讨论了注意力模型中各种类型的输出表示。其中,常见的是单输出注意力,它指的是每个时间步骤中的单一特征表示。具体来说,在每个时间步骤中,能量分数由一个且仅由一个向量表示。然而,在某些情况下,使用单一特征表示可能无法很好地完成下游任务。接下来,我们描述两种多输出的注意力模型:多头和多维,如图6所示。

在卷积神经网络的许多应用中,已经证明多通道比单通道能更全面地表达输入数据。同样在注意力模型中,在某些情况下,使用输入序列的单一注意力分布可能无法满足下游任务的需要。Vaswani等人[16]提出了多头注意力,根据可学习的参数将输入序列(Q,K,V)线性投射到多个子空间,然后对其在每个子空间的再现应用缩放的点乘注意力,最后将其输出连接起来。通过这种方式,它允许模型在不同的位置共同关注来自不同表征子空间的信息。Li等人[90]提出了三种分歧正则,分别用于增强子空间、被关注位置和输出表示上的多头注意模型。这种方法鼓励注意力头之间的多样性,以便不同的头可以学习不同的特征,并通过翻译任务来评估其有效性。
另一种方法是Shen等人提出的多维方法[91],该方法通过用矩阵代替权重分数向量来计算钥匙的特征分数向量。通过这种方式,神经网络可以为同一数据计算出多种注意力分布。这对自然语言的处理特别有用,因为在自然语言中,词的嵌入受到多义词的影响。此外,Lin等人[30]和Du等人[92]增加了Frobenius惩罚,以强制区分相关模型,并成功地将其应用于各种任务,包括作者排序、情感分类、文本的相关性以及远距离监督的关系提取。

4.Network architectures with attention

在本节中,我们描述了三种与注意力有关的神经网络结构。我们首先阐述了大多数注意力模型所使用的编码器-解码器框架。然后,我们描述了注意力模型的一个特殊的网络结构–记忆网络,它配备了长期的外部记忆。最后,我们介绍了与注意力机制相结合的特殊神经网络结构,其中RNNs在捕捉长距离依赖关系的过程中没有被使用。

4.1. Encoder-decoder

编码器-解码器(如图7所示)是一个基于神经网络的通用框架,其目的是处理高度结构化的输入和输出之间的映射。在此,我们首先简要描述Cho等人[5]和Sutskever等人[13]为机器翻译任务提出的RNN编码器-解码器框架。该架构由两个RNN组成,作为编码器和解码器对。

编码器将变长信源序列 x = ( x 1 , ⋯   , x T x ) \boldsymbol{x}=\left(\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{T_{x}}\right) x=(x1,,xTx)映射为固定长向量 c \bold{c} c,最常用的方法是使用RNN:
h t = f ( x t , h t − 1 ) ,  and  c = q ( { h 1 , ⋯   , h T x } ) \begin{aligned} &\boldsymbol{h}_{t}=f\left(x_{t}, \boldsymbol{h}_{t-1}\right),\\ &\text { and }\\ &\mathbf{c}=q\left(\left\{\boldsymbol{h}_{1}, \cdots, \boldsymbol{h}_{T_{x}}\right\}\right) \end{aligned} ht=f(xt,ht1), and c=q({h1,,hTx})
其中 h t h_t ht是时间步骤t的隐藏状态, c c c是由隐藏状态序列产生的上下文向量。 f f f q q q是非线性激活函数。例如, f f f可以是简单的元素逻辑sigmoid函数,也可以是复杂的GRU[5]或LSTM[4],q可以是最后一个时间步骤的隐藏状态 h T x h_{T_x} hTx

解码器用来生成变长目标序列 y = ( y 1 , ⋯   , y T y ) \boldsymbol{y}=\left(y_{1}, \cdots, y_{T_{y}}\right) y=(y1,,yTy),通过预测给定隐藏状态 h t h_t ht预测下一个符号 y t y_t yt。然而,不像编码器, y t y_t yt h t h_t ht都是关于 y t − 1 y_{t-1} yt1和上下文向量 c c c,因此解码器在每个时间步长t的隐藏状态由以下方式计算:
h t = f ( h t − 1 , y t − 1 , c ) \boldsymbol{h}_{t}=f\left(\boldsymbol{h}_{t-1}, y_{t-1}, \mathbf{c}\right) ht=f(ht1,yt1,c)
每个条件概率:
p ( y t ∣ { y 1 , ⋯   , y t − 1 } , x ) = g ( y t − 1 , h t , c ) p\left(y_{t} \mid\left\{y_{1}, \cdots, y_{t-1}\right\}, \boldsymbol{x}\right)=g\left(y_{t-1}, \boldsymbol{h}_{t}, \boldsymbol{c}\right) p(yt{y1,,yt1},x)=g(yt1,ht,c)
该模型的编码器和解码器被联合训练以最大化给定的源序列的目标序列的条件概率。
该框架的一个潜在问题是,神经网络需要能够将源数据的所有必要信息压缩成定长向量。
这可能会使神经网络很难处理长句子,特别是那些比训练语料库中的意义更长的句子。
这个问题可以通过在编解码器框架中添加注意机制来缓解:
c t = att ⁡ ( { h 1 , ⋯   , h T x } )  and  p ( y t ∣ { y 1 , ⋯   , y t − 1 } , x ) = g ( y t − 1 , h t , c t ) . \begin{aligned} &\boldsymbol{c}_{t}=\operatorname{att}\left(\left\{\boldsymbol{h}_{1}, \cdots, \boldsymbol{h}_{T_{x}}\right\}\right)\\ &\text { and }\\ &p\left(y_{t} \mid\left\{y_{1}, \cdots, y_{t-1}\right\}, \boldsymbol{x}\right)=\boldsymbol{g}\left(\boldsymbol{y}_{\boldsymbol{t}-\mathbf{1}}, \boldsymbol{h}_{\mathbf{t}}, \boldsymbol{c}_{\boldsymbol{t}}\right) . \end{aligned} ct=att({h1,,hTx}) and p(yt{y1,,yt1},x)=g(yt1,ht,ct).
其中att是第2节中提到的注意力方法, c t \boldsymbol{c}_{t} ct是注意力机制在时间t解码时产生的上下文向量。注意力机制的引入可以保证在解码不同的目标元素时,源序列中元素的贡献是不同的,如图8所示。

由于这种编码器-解码器框架不限制输入和输出序列的长度,它有广泛的应用,如图像和视频字幕[9,93,94],生成性对话系统[95],视觉问题回答[75]和语音识别[24,96]。此外,编码器和解码器也可以使用其他架构来构建,不一定只有RNN。虽然注意力模型可以被视为一个一般的想法,并不依赖于一个特定的框架本身[7,97,73],但目前大多数注意力模型都伴随着一个编码器-解码器框架。

4.2. Memory networks

除了上一节的编码器-解码器框架外,注意力机制还与记忆网络结合使用。受人脑处理信息过载机制的启发,记忆网络在神经网络中引入了额外的外部记忆。具体来说,记忆网络[99,60,98,100,101]通过引入外部辅助记忆单元将一些与任务相关的信息保存在辅助记忆中,然后在需要时读取,这不仅有效地增加了网络容量,也提高了网络计算的效率。与一般的注意力机制相比,该记忆网络用长期的辅助记忆取代了key,然后通过注意力机制来匹配内容。
一个著名的例子是[98]提出的可区分的端到端记忆网络,它可以多次从读取外部信息。其核心思想是将输入集转换为两个外部存储单元,一个用于寻址,另一个用于输出,如图9、10所示。端到端存储网络可以被看作是一种注意的形式:键值对注意机制。与通常的注意不同的是,它们不是只在单个序列上建立注意模型,而是用两个外部的记忆单元在一个大的序列数据库上建立注意模型。换句话说,我们可以把注意力机制看作是一个将信息的存储和计算分开的界面,这样,网络的容量就可以通过网络参数的少量增加而大大增加

4.3. Networks without RNNs

如上所述,编码器-解码器框架中的编码器和解码器都可以用多种方式实现,如图10所示。基于RNN的编码器-解码器架构通常将计算与输入和输出序列的符号位置一起考虑。这种固有的顺序性导致了计算的不确定性,因为处理过程不能被并行化。另一方面,由于编码器-解码器框架中的注意力机制需要获得上下文信息,因此捕捉长距离的依赖性是至关重要的。然而,对长度为n的序列建立长距离依赖的计算复杂性的计算复杂性是O(n)。在这一部分,我们将描述编码器-解码器框架的其他实现方式,并结合注意力机制。

Gehring等人[102]提出了一个完全依靠卷积神经网络与注意力机制相结合的编码器-解码器架构。与递归网络保持整个过去的隐藏状态相比,卷积网络不依赖于前一个时间步骤的计算,因此它允许对序列中的每个元素进行并行化。这种结构使网络能够通过堆叠多层CNN来捕捉长距离的依赖关系,计算复杂度变为O(n/k),对于一个卷积核大小为k的多层CNN。此外,该卷积方法由于具有层次化的表示形式,更容易发现序列的组成结构。
Vaswani等人[16]提出了另一种网络结构–Transformer,它完全依靠self-attention机制来计算其输入和输出的表示,而不求助于RNNs或CNNs。Transformer由两个部分组成:位置导向前馈网络(FFN)层和多头注意力层。定位前馈网络是一个全连接的前馈网络,它分别适用于每个位置,并且是相同的。这种方法可以在操作过程中保证输入序列中每个符号的位置信息。多头注意力允许模型通过堆叠多个自我注意力层来关注来自不同位置的不同表示子空间的信息,就像CNN的多个通道一样。除了更多的可并行化之外,通过self-attention机制建立长距离依赖的复杂程度是O(1)。

5. Applications

5.1. Applications in computer vision

在这一部分,我们通过介绍几篇关于神经结构不同方面的典型论文来描述CV中的注意机制。
空间注意力Spatial attention允许神经网络学习应该被关注的位置,如图11所示。通过这种注意机制,原始图片中的空间信息被转化为另一个空间,关键信息被保留下来。Mnih等人[7]提出了一个空间注意力模型,该模型被表述为一个单一的RNN,它以一个瞥见的窗口为输入,使用网络的内部状态来选择下一个要关注的位置,以及在一个动态环境中产生控制信号。Jaderberg等人[73]引入了一个differentiable spatial transformer network(STN),它可以通过裁剪、平移、旋转、缩放和倾斜等变换形式找出特征图中需要关注的区域。与集合层不同,空间变换器模块是一个动态机制,它可以通过为每个输入样本产生适当的变换,主动对图像(或特征图)进行空间变换。

通道关注允许神经网络学习应该关注的内容,如图12.Huetal所示。[71]提出了squeeze-and-excitation(SE)网络,该网络通过明确地模拟通道之间的相互渗透,自适应地重新校准通道的特征响应。在该挤压和激发模块中,它使用全局平均集合特征来计算通道明智的注意力。Li等人[103]提出了SKNet,通过自适应内核选择,以通道注意力的方式提高了物体识别的效率和效果。此外,Stollenga等人[104]提出了一种通道硬注意机制,通过允许网络迭代式地关注其过滤器的注意力改善了分类性能。

捕捉长距离的依赖关系在深度神经网络中具有核心意义,这对视觉理解问题很有好处。[87]将自我注意机制应用于计算机视觉任务来解决这个问题,称为non-local attention非局部注意,如图13所示。他们提出了非局部模块,通过计算特征图中每个空间点之间的相关矩阵得到注意力掩码,然后由注意力引导密集的上下文信息进行聚合。然而,这种方法也存在以下问题:1)只涉及位置注意模块,而不是常用的通道注意机制。2)当输入特征图非常大时,存在效率低的问题。虽然有其他方法来解决这个问题,如缩放,但会损失信息,不是处理这个问题的最佳方法。为了解决这些问题,研究人员改进了非局部方法,并结合了通道注意,提出了混合注意[105-111]。

与以前的研究不同,CCNet[112]使用了位置性注意,产生了一个巨大的注意图来记录特征图中每个像素对之间的关系,如图14所示。纵横交错的注意力模块收集了水平和垂直方向的上下文信息,以增强像素的代表能力。此外,循环交叉注意允许以较少的计算成本和较少的内存成本从所有像素中捕捉密集的长距离背景信息。

5.2. Applications in natural language processing

在这一部分中,我们首先介绍了NLP不同任务中使用的一些注意力方法,然后描述了一些常见的预训练单词表征,并为NLP任务实现了注意力机制。
神经机器翻译使用神经网络将文本从一种语言翻译成另一种语言。在翻译过程中,不同语言的句子的对齐是一个关键的问题,特别是对于长句子。Bahdanau等人[8]将注意力机制引入到神经网络中,通过在翻译过程中选择性地关注源句的部分内容来改善神经网络机器翻译。之后,有几个工作被提出来作为改进,如local attention局部注意[14]、supervised attention监督注意[113,114]、hierarchical attention分层注意[61]和self attention自我注意[115,16]。他们使用不同的注意力架构来改善句子的排列,提高翻译的性能。
文本分类的目的是为文本分配标签,并有广泛的应用,包括主题标签[116]、情感分类[117,118]和垃圾邮件检测[119]。在这些分类任务中,自我关注主要用于构建更有效的文档表述[55,91,30]。在此基础上,一些工作将自我注意机制与其他注意方法相结合,如分层自我注意[63]和多维自我注意[30]。此外,这些工作还应用了注意力模型架构(见第4节),如Transformer[120,121]和记忆网络[122,123]。
文本匹配也是NLP和信息检索的一个核心研究问题,包括问题回答、文档搜索、嵌套分类、转述识别和评论推荐。许多研究人员结合注意力的理解提出了新的方法,如记忆网络[98]、注意力过度[124]、内在注意力[83]、结构化注意力[65]和共同注意力[78,75]。
预先训练的单词表征是许多神经语言理解模型的一个关键组成部分。然而,以前的研究[125,126]只确定了同一个词的一个嵌入,不能实现上下文的词嵌入。Peters等人[127]用Bi-LSTM引入了一种上下文依赖性表示的一般方法来解决这个问题。受Transformer模型[62]的启发,研究人员根据编码器和解码器部分提出了bidirec-tional encoder representations from transformers(BERT)[128]和generative pre-training(GPT)[129-131]方法。BERT是一个双向的语言模型,有以下两个预训练任务。1)屏蔽语言模型(MLM)。它只是随机地掩盖了一些百分比的输入标记,然后预测这些被掩盖的标记。2)下一个语序预测。它使用一个线性二进制分类器来确定两个句子是否有联系。GPT是一个单向模型,其训练方法大致上是用前一个词来预测下一个词。实验表明,将其应用于广泛的NLP任务时,有很大的改进。

6. Attention for interpretability

近年来,人工智能得到了快速发展[132-137],特别是在深度学习领域。然而,可解释性是目前许多深度学习模型的一个主要问题。深度学习模型变得越来越复杂,因此,从数据中学习决策功能并确保我们理解为什么会出现一个特定的决策是至关重要的[51]。神经网络模型中的注意层提供了一种推理其预测背后的模型的方法[54-57,138],但这常常被批评为不透明的[52,53]。
如图15(a)所示,Bahdanau等人[8]将注意力权重注释可视化,清楚地显示了生成的翻译(法语)和源句(英语)中的单词之间的(软)对齐。图15(b)显示了神经图像标题生成过程中对应于下划线单词的关注区域[9]。我们可以看到,该模型学习到的排列与人类的直觉非常吻合。此外,图15(c)显示了Vaswani等人[16]提出的Transformer模型中编码器自我注意层的一个可视化例子。不同的颜色代表不同的头。此外,Voita等人[139]评估了个别注意力头对Transformer模型的贡献。他们发现,通过修剪操作,不同的头显示出不同的重要程度。此外,Chan等人[24]观察到,基于内容的注意力机制可以正确识别音频序列中第一个人物的开始位置。

然而,最近的一些研究[52,53]表明,注意力不能被认为是解释深度神经网络的可靠手段。Jain和Wallace[52]在各种NLP任务中进行了广泛的实验,并证明注意力与其他可解释性指标不一致。他们发现,构建对抗性的注意力分布是很常见的,这意味着不同的注意力权重分布会产生同等的预测结果。Serrano和Smith[53]应用了一个基于中间表征的不同分析,发现注意力权重只是中间成分重要性的噪声预测器。相反,Wiegreffe和Pinter[57]用四种不同的测试对他们的工作进行了反驳。因此,注意力是否被用作解释神经网络工程的手段,仍然是一个开放的话题

7. Challenges and prospects

在深度神经网络工程中,注意力模型已经变得无处不在。自从Bahdanau等人[8]将注意力机制用于机器翻译任务中的对齐,Z. Niu, G. Zhong and H. Yu在机器翻译任务中使用对齐机制以来,各种注意力机制的变体层出不穷。Vaswani等人[16]提出的只使用自我注意机制的Transformer模型也是注意机制的一个重要里程碑,其变体[128,129,140-142]已被成功应用于各个领域。在研究注意力模型时,我们发现注意力机制在七个方面都有创新,如得分函数和分配函数的多种实现方式,价值和注意力权重的结合,以及网络结构。
在注意力机制的设计上仍有很大的改进空间。这里我们总结了几个有希望的方向如下。

  • 目前,大多数自我注意模型独立地表示quary和key,然而,最近的一些研究[143,144]通过结合quary和key取得了良好的性能。quary和key是否有必要在自我注意中独立存在,仍然是一个开放的问题。
  • 注意力分布函数对整个注意力模型的计算复杂性有很大影响。最近的一些研究[145,146]表明,通过改进注意力分布函数,可以进一步降低注意力计算的复杂性。
  • 在一个领域开发的注意技术如何应用于其他领域也是一个有趣的方向。例如,当NLP中带有self-attention的注意方法被应用于CV中时,它在提高性能的同时也降低了效率,就像非局部网络[87]。
  • 自适应机制和注意力机制的结合可以自动实现分层注意力的效果,而不需要手动设计每层的结构。
  • 探索更有效的性能指标来评价注意力机制也是一个有趣的话题。Sen等人[147]设计了一套评价方法,使用新的注意力图谱相似度指标来量化人类和基于注意力的神经模型之间的相似度。这也是未来研究的一个开放方向。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用提到了CBAM(Convolutional Block Attention Module)是一种卷积神经网络注意力机制,而引用提到了作者在对注意力机制进行分类总结时,参考了一些综述和网上资料,并加入了一些的内容。由于没有具体提到QKV自注意力机制与CBAM的关系,我们可以通过引用中的文献《An Introductory Survey on Attention Mechanisms in NLP Problems》来了解QKV自注意力机制。 根据中的文献,QKV自注意力机制是自然语言处理问题中的一种注意力机制。在自注意力机制中,输入序列(例如句子中的单词)通过计算查询(query)、键(key)和值(value)之间的相似度,以便为每个输入位置分配一个权重,用于生成上下文相关的表示。具体而言,在QKV自注意力机制中,查询是用于获取与其他输入位置相关信息的位置,键是用于计算查询和其他位置之间的相似度,值是用于生成每个位置的加权和表示。 CBAM是一种卷积神经网络的注意力机制,与QKV自注意力机制在具体实现和应用上可能有所不同。在CBAM中,注意力机制主要用于在卷积神经网络中关注输入特征图的不同通道和空间位置,以提高模型的性能。CBAM主要包括通道注意力和空间注意力两个模块,通道注意力用于对不同通道的特征进行加权,而空间注意力用于对不同空间位置的特征进行加权。 综上所述,QKV自注意力机制和CBAM都是注意力机制的一种,但在具体实现和应用上可能有所差异。QKV自注意力机制主要应用于自然语言处理问题,而CBAM是一种卷积神经网络的注意力机制,用于提高模型性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [学习笔记|NLP中的注意力机制汇总](https://blog.csdn.net/qq_33648725/article/details/106770048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值