Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

注意力机制

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

来源:机器之心
简介

谷歌在原论文中展示了注意力机制的一般化定义,即它和 RNN 或 CNN 一样也是一种编码序列的方案。一个注意力函数可以描述为将 Query 与一组键值对(Key-Value)映射到输出,其中 Query、Key、Value 和输出都是向量。输出可以通过值的加权和而计算得出,其中分配到每一个值的权重可通过 Query 和对应 Key 的适应度函数(compatibility function)计算。

在不同的应用场景中注意力机制有不同的分类,我们给出一些常见的分类和例子。

在翻译任务中,Query 可以视为原语词向量序列,而 Key 和 Value 可以视为目标语词向量序列。一般的注意力机制可解释为计算 Query 和 Key 之间的相似性,并利用这种相似性确定 Query 和 Value 之间的注意力关系。

以下是点积注意力的结构示意图,我们称这种特殊的结构为「缩放点积注意力」:

它的输入由维度是 d_k 的 Query 和 Key 组成,Value 的维度是 d_v。如下所示,我们会先计算 Query 和所有 Key 的点乘,并每一个都除上 squre_root(d_k) 以防止乘积结果过大,然后再馈送到 Softmax 函数以获得与 Value 对应的权重。根据这样的权重,我们就可以配置 Value 向量而得出最后的输出。

在上图中,Q 和 K 的运算有一个可选的 Mask 过程。在编码器中,我们不需要使用它限制注意力模块所关注的序列信息。而在解码器中,我们需要它限制注意力模块只能注意到当前时间步及之前时间步的信息。这一个过程可以很简洁地表示为函数 Attention(Q, K, V)。

Attention(Q, K, V) 函数在输入矩阵 Q、K 和 V 的情况下可计算 Query 序列与 Value 序列之间的注意力关系。其中 Q 的维度为 n×d_k,表示有 n 条维度为 d_k 的 Query、K 的维度为 m×d_k、V 的维度为 m×d_v。这三个矩阵的乘积可得出 n×d_v 维的矩阵,它表示 n 条 Query 对应注意到的 Value 向量。

两个最常见的注意力函数是加性注意力(additive attention)和点乘(乘法)注意力。除了要除上缩放因子 squre_root(d_k),标准的点乘注意力与原论文中所采用的是相同的。加性注意力会使用单隐藏层的前馈网络计算适应度函数,它们在理论复杂度上是相似的。点积注意力在实践中更快速且参数空间更高效,因为它能通过高度优化的矩阵乘法库并行地计算。

[描述来源: 基于注意力机制,机器之心带你理解与训练神经机器翻译系统|机器之心]

在图像描述生成(Image Caption Generation)领域,一般两种 attention 模式,即 hard attention 和 soft attention,下图给出了一个例子:

可以看到,hard attention 会专注于很小的区域,而 soft attention 的注意力相对发散。模型的 encoder 利用 CNN (VGG net),提取出图像的 L 个 D 维的向量a_i,i=1, 2, ..., L.每个向量表示图像的一部分信息。

记 St 为 decoder 第 t 个时刻的 attention 所关注的位置编号, Sti 表示第 t 时刻 attention 是否关注位置 i , Sti 服从多元伯努利分布(multinoulli distribution), 对于任意的 t ,Sti,i=1,2,...,L 中有且只有取 1,其余全部为 0,所以 [St1,St2,...,stL] 是 one-hot 形式。这种 attention 每次只 focus 一个位置的做法,就是“hard”称谓的来源。 Zt 也就被视为一个变量,计算如下:

问题是 αti 怎么算呢?把 αti 视为隐变量,研究模型的目标函数,进而研究目标函数对参数的梯度。直观理解,模型要根据 a=(a1,...,aL) 来生成序列 y=(y1,...,yC) ,所以目标可以是最大化 log p(y|a) ,但这里没有显式的包含 s ,所以作者利用著名的 Jensen 不等式(Jensen's inequality)对目标函数做了转化,得到了目标函数的一个 lower bound,如下:

这里的 s ={ s1,...,sC },是时间轴上的重点 focus 的序列。 然后就用 log p(y|a) 代替原始的目标函数,对模型的参数 W 算 gradient。然后利用蒙特卡洛方法对 s 进行抽样。

相对来说 soft attention 很好理解,在 hard attention 里面,每个时刻 t 模型的序列 [ St1,...,StL ] 只有一个取 1,其余全部为 0,也就是说每次只 focus 一个位置,而 soft attention 每次会照顾到全部的位置,只是不同位置的权重不同罢了。这时 Zt 即为 ai 的加权求和:

这样 soft attention 是光滑的且可微的(即目标函数,也就是 LSTM 的目标函数对权重 αti 是可微的,原因很简单,因为目标函数对 Zt 可微,而 Zt 对 αti 可微,根据 chain rule 可得目标函数对 αti 可微)。

常见的分类还有global attention和local attention。在提出global attention、local attention的论文中通过作者的描述可以看出global attention、local attention和 soft attention 并无本质上的区别,两篇 paper 模型的差别只是在 LSTM 结构上有微小的差别。 另外比较重要的注意力机制还有自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

[描述来源:Attention模型方法综述 | 多篇经典论文解读|机器之心]

发展历史

2014年,Ilya Sutskever等学者提出了著名的Sequence to Sequence(Seq2Seq)模型,但其中存在两个问题:

1)encoder 最后一个 hidden state,与句子末端词汇的关联较大,难以保留句子起始部分的信息。因此当句子过长时,模型性能下降很快。

2)句子中每个词都赋予相同的权重的做法是不合理的,这样没有足够的区分度。

同样的,在计算机视觉领域中,CNN模型也存在着这样的问题,特别是当图像尺寸很大时,这个问题更加明显。

针对以上缺陷,Dzmitry Bahdanau, Yoshua Bengio等人发表《Neural machine translation by jointly learning to align and translate》,提出了Attention Mechanism,希望实现软区分,并给出了一些 attention 的可视化效果图。同年,Kelvin Xu等人发表论文《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,将注意力机制引入了计算机视觉领域。他们同时提出了两种注意力机制,即Soft Attention和Hard Attention。

也是在2015年,Minh-Thang Luong, Hieu Pham, Christopher D. Manning发表论文提出了两种 attention 的改进版本,即 global attention 和 local attention。文章指出,local attention 可以视为 hard attention 和 soft attention 的混合体(优势上的混合),因为它的计算复杂度要低于 global attention、soft attention,而且与 hard attention 不同的是,local attention 几乎处处可微,易于训练。

2017年,Karim Ahmed等人提出一种新型的网络结构——Transformer——里面所包含的注意力机制称之为 self-attention。

同年,针对传统基于会话过程的推荐工作仅仅使用了一次会话过程中用户的点击行为序列。Jing Li,  Jun Ma 等人在论文中引入了注意力机制来获取用户点击的主要目标。具体而言作者使用GRU模型的最后一个隐层状态输出作为全局编码表示,使用GRU每个时刻的隐层状态输出结合注意力权重的结果作为局部编码表示。全局编码表示代表了用户在当前会话过程中点击的全局目标,局部编码表示代表了用户在当前会话过程中点击的主要目标。最后将两个表示拼接,通过双线性解码输出每个商品的排名得分,根据得分输出预测结果。

2018年,Jian Liu,Yubo Chen,Kang Liu,Jun Zhao针对Event Detection任务中数据稀疏和单语歧义的问题,提出一种Gated MultiLingual Attention (GMLATT) 框架,利用多语言信息,并结合注意力机制来完成Event Detection任务。该方法在ACE2005数据集上取得了SOTA结果。论文中使用了一种语言作为目标语言,但是可以将目标语言扩展到多种,并且可以将该方法运用在其他任务之上。

同年,由于以往注意力机制模型通过加权所有局部特征计算和提取关键特征,忽略了各局部特征间的强相关性,特征间存在较强的信息冗余。为解决此问题,来自美图云视觉技术部门和中科院自动化所的研发人员借鉴 PCA(主成分分析)思想,提出了一种引入局部特征交互感知的自注意机制模型,并将模型嵌入到 CNN 网络中,提出一个端到端的网络结构。该算法在多个学术数据集和美图公司内部工业界视频数据集上的行为分类表现都非常出色。

主要事件

年份事件相关论文/Reference
2014DeepMind在RNN模型上使用了attention机制来进行图像分类Mnih, V.; Heess, N.; Graves, A.; Kavukcuoglu, K. (2014). Recurrent Models of Visual Attention. arXiv:1406.6247.
2014Dzmitry Bahdanau, Yoshua Bengio等人提出了Attention MechanismBahdanau, D.; Cho, K.; Bengio, Y. (2014).Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
2015Kelvin Xu等人发表论文,将注意力机制引入了计算机视觉领域Xu, K. et al. (2015). Show, attend and tell: Neural image caption generation with visual attention. arXiv preprint arXiv:1502.03044.
2015Minh-Thang Luong, Hieu Pham, Christopher D. Manning发表论文提出了两种 attention 的改进版本,即 global attention 和 local attentionLuong, M-T.; Pham, H.; Manning, C. D. (2015). Effective Approaches to Attention-based Neural Machine Translation. arXiv:1508.04025.
2017Karim Ahmed等人提出一种新型的网络结构——Transformer——里面所包含的注意力机制称之为 self-attentionAhmed, K.; Keskar, N. S.; Socher, R. (2017). Weighted Transformer Network for Machine Translation. arXiv:1711.02132.
2018Jian Liu,Yubo Chen,Kang Liu,Jun Zhao针对Event Detection任务中数据稀疏和单语歧义的问题,提出一种Gated MultiLingual Attention (GMLATT) 框架Liu, J.; Chen, Y.; Liu,K.; Zhao, J. (2018). Event Detection via Gated Multilingual Attention Mechanism. AAAI 2018.
2018来自美图云视觉技术部门和中科院自动化所的研发人员借鉴 PCA(主成分分析)思想,提出了一种引入局部特征交互感知的自注意机制模型,并将模型嵌入到 CNN 网络中,提出一个端到端的网络结构Yang, Z. et al. (2018). Interaction-aware Spatio-temporal Pyramid Attention Networks for Action Classification. ECCV 2018.

发展分析

瓶颈

在NLP任务中,注意力机制不能捕捉语序顺序,因为它不是distance-aware的,而自然语言的语序往往也包含了一些信息。另外,注意力机制不像人一样可以忽略某些部位,它是通过权重来分配注意力,因此需要矩阵来存储权重,增加了开销。

未来发展方向

注意力机制的优点在于它能够全局捕捉联系,不像序列RNN捕捉长期依赖关系的能力那么弱。另外,它可以并行化计算,且与CNN和RNN比较模型更简单、参数更少,适合轻量级应用。

Contributor: Yuanyuan Li

简介