炼数成金 门户 商业智能 深度学习 查看内容

Attention注意力机制的前世今身

2020-6-29 14:26| 发布者: 炼数成金_小数| 查看: 10287| 评论: 0|原作者: 马敏博|来自: PaperWeekly

摘要: 注意力机制(Attention Mechanism)最早应用 CV 任务上 ,但最初的论文引用,作者没有找到,如有知晓的,还望在评论中给出。在 NLP 中的最早应用,应该是文献 ,机器翻译中对齐与翻译联合学习。直观地说,注意力机制 ...
总体介绍
注意力机制(Attention Mechanism)最早应用 CV 任务上 ,但最初的论文引用,作者没有找到,如有知晓的,还望在评论中给出。在 NLP 中的最早应用,应该是文献 [1],机器翻译中对齐与翻译联合学习。

直观地说,注意力机制是衡量重要性权重的向量,或元素之间相关性的表示。

先引入 seq2seq 框架,由编码器和解码器组成,广泛用于机器翻译、自动文摘等任务。

由编码器对原始输入进行编码,压缩为固定长度的上下文向量;
编码器最后的一个隐藏层状态送入解码器,进行解码输出。
可以解决变长的输入与输出,用于不同语言、不同长短的输入与输出。常用的网络结构为 RNN,具体为 LSTM 或 GRU。

Attention最初的样子
但是上述任务面临一个问题,仅靠编码层最后一个隐层状态能否包含整个输入的信息,特别当翻译的语句特别长时,这种问题更加显著。

文献 [1] 提出将编码层所有隐层状态经过线性加权后,送入解码层,进行每一步的输出,如下图所示。这样能够保证在解码不同词时,每个词的编码贡献是不同的,也能反映出源语言与目标语言中哪些词是较为相关的。

文献1中编解码图

公式也特别简单,下面来复述一下:

论文还通过对齐分数矩阵可视化所提模型的翻译对齐效果,通过颜色的深浅反应两者之间的联系紧密,这也成为后面应用注意力机制解决其他问题的常用实验结果分析方法。

文献1中的对齐分数矩阵图

注意力统一化描述
将 Attention 从 seq2seq 框架中抽取出来,可以描述为下图所示:

来自张俊林blog分享 [2]

source 中包含键值对(相当于文献 [1] 中的编码层隐层状态),计算 Target 中query(前一时刻的解码层隐层状态)与 key 的相关性,得到 key 对应 value 的权重(),最后对 value 加权求和得到 attention value。

将上述描述公式化:

其计算过程可以分为三个阶段,如下图所示:
计算 query 和 key 之间的相似性或相关性;
对权重进行归一化处理;
依据权重对 value 进行加权求和。


来自张俊林blog分享 [2]

其中,计算相似度或相关性函数是上节提到的 score 函数,在文献 [3] 中给出了其他几种常用的配分函数计算形式:

来自文献 [3]


Attention的分类
注意力机制发展至今,研究者从各个方面对其进行了改进,也就产生了注意力的各种形式,下面将分类对其进行介绍。

注:内容参考了文献 [2]、[6]、[7]。
Soft attention v.s. Hard attention
Global attention v.s. Local attention
Self-attention
Multi-head attention
Hierarchical attention
Attention over attention
Memory-based attention
Soft Attention VS Hard Attention
这种分类方式由文献 [8] 提出,该研究任务是由图片生成文字描述(Image Caption),文中使用注意力捕获文字与图中特定区域的联系。

Soft Attention
NLP 中尝试用的注意力方式,取值为 [0, 1] 的权重概率分布,使用了所有编码层的隐层状态,与上两节的介绍相同,可以直接在模型训练过程中,通过后向传播优化对参数进行优化。

Hard Attention
Hard attention 在原文中被称为随机硬注意力(Stochastic hard attention),这里的随机是指对编码层隐状体的采样过程,Hard attention 没有使用到所有的隐层状态,而是使用 one-hot 的形式对某个区域提取信息,使用这种方式无法直接进行后向传播(梯度计算),需要蒙特卡洛采样的方法来估计梯度。

Global Attention VS Local Attention
由文献 [3] 提出,文中小节首句介绍,先打消了字面的意思,不是按照原序列的所有位置和局部位置做 attention 来划分。
These classes differ in terms of whether the “attention”is placed on all source positions or on only a few source positions.
这两者的区别在于 source-side 的上下文向量  的计算,关于  的介绍具体看第一小节。
Global Attention
以下简称 Global attention 为 GA, GA 在推导 c_t 时考虑了所有的编码层隐层状态,模型图如下图所示,其中蓝色表示编码码层,红色表示解码层。

可以看到 global attention 是在计算 c_t 时考虑了当前的目标解码隐层状态和所有编码隐层状态,这里的 a_t 为全局对齐权重。若不指定说明,一般 attention 都是指 global attention。

global attention model

Local Attention
Global Attention 存在以下两个缺点:

每次解码目标词,都要计算所有的编码隐层向量,在翻译或处理长文本序列时计算代价高。
文本序列过长,也有可能导致注意力不集中、过度分散(这个不是论文中介绍,只是借鉴他人介绍,可不做参考)。

Self-attention
Self-attention 又称为 intra attention,顾名思义,其不是计算 source-target 之间的注意力分布,而是单一计算 source 或 target 内部的注意力分布,也可以看作特殊的 source=target 的情况。其可视化的示例如下图所示,文本序列内部不同词之间的联系。

self attention 可视化

具体来讲,self attention 具有以下优点:
可以捕获句法特征和语义特征(可视化结果);
相比 RNN 依次序列计算,在长距离依赖特征上表现更好;可并行化计算。
在文献 [5] 中给出了不同层模型(self-attention\RNN\CNN)在层复杂度、序列操作、较大路径长度的对比,结果如下图所示。

文献5

Multi-Head attention [5]
注意力并行化的代表,缩放点积注意力在前面小节中已经提过,多头注意力不仅计算一次注意力,而是并行化计算多次注意力,这样模型可以同时关注多个子空间的信息。计算公式为:


Hierarchical attention
Hierarchical attention (层次注意力)由文献 [9] 提出,由词级别、句子级别注意力机制组成,在文档级别的任务上,往往由多篇章、多句子、多词语组成,Hierarchical attention 能够更好捕获 global 和 local 的信息。


attention over attention
由文献 [10] 提出,论文研究任务为阅读理解,AOA 从结构图(下图)上来看时 attention 之后再 attention,与 hierarchical attention 有些相似,但是其具体计算却不同。首先对文档与当前 query 进行点积注意力,然后从行、列分别对齐进行归一化,得到两个注意力权重分布,再次求一次点积注意力。


memory-based attention
memory 中存储了的键值对,当 key 和 value 相同时,就是最基本的 attention 形式。以 Q&A 任务 [11] 为例能够更好地说明计算,memory 存储了 question(key)---->>answer(value),现新来一个 question,要依据 memory 中的问题-答案对得到答案。起计算方式为:

写在最后
Attention 的“花样”真的很多,每次看都有很多新的玩法,不过基本也不脱离最本质的 QKV 结构,期待着有更多研究。

参考链接
[1] Neural Machine Translation by Jointly Learning to Align and Translate. https://arxiv.org/abs/1409.0473
[2] https://blog.csdn.net/malefactor/article/details/78767781
[3] Effective approaches to attention-based neural machine translation. https://arxiv.org/abs/1508.04025
[4] Neural Turing Machines. https://arxiv.org/abs/1410.5401
[5] Attention Is All You Need. https://arxiv.org/abs/1706.03762
[6] https://cloud.tencent.com/developer/article/1420941
[7] https://www.jianshu.com/p/270832a34e7f
[8] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. https://arxiv.org/abs/1502.03044
[9] Hierarchical attention networks for document classification. https://www.aclweb.org/anthology/N16-1174
[10] Attention-over-Attention Neural Networks for Reading Comprehension. https://arxiv.org/abs/1607.04423
[11] End-To-End Memory Networks. https://arxiv.org/abs/1503.08895

声明:文章收集于网络,版权归原作者所有,为传播信息而发,如有侵权,请联系小编删除,谢谢!

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括:各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2020-7-14 05:52 , Processed in 0.178239 second(s), 25 queries .