Attention注意力机制的前世今身

©PaperWeekly 原创 · 作者|马敏博

学校|西南交通大学硕士生

研究方向|命名实体识别

总体介绍

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

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

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

  • 由编码器对原始输入进行编码,压缩为固定长度的上下文向量;

  • 编码器最后的一个隐藏层状态送入解码器,进行解码输出。

可以解决变长的输入与输出,用于不同语言、不同长短的输入与输出。常用的网络结构为 RNN,具体为 LSTM 或 GRU。

Attention最初的样子

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

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

Attention注意力机制的前世今身_第1张图片

▲ 文献1中编解码图

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

2.1 首先定义符号:

表示输入序列;

表示输出序列;

表示编码层的第 i 时刻的隐藏层状态;

表示解码层第 t 时刻的隐藏层状态;

表示第 t 时刻解码时注意力分布,这是本篇论文的关键

总体是为了计算条件概率分布:

2.2 计算 

表示解码输出第 t 个词时,与第 i 个输入序列词之间的相关因子。

2.3 计算 

这里就是一个 softmax 函数,归一化所有的注意力权重。

2.4 计算 

在文中为对齐模型(前馈神经网络)。

至此,公式就介绍结束。这里需要注意的一点是,计算 的函数又被统称为配分函数,即 score 函数。后面会介绍多种配分函数的计算方式。

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

Attention注意力机制的前世今身_第2张图片

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

注意力统一化描述

将 Attention 从 seq2seq 框架中抽取出来,可以描述为下图所示:

Attention注意力机制的前世今身_第3张图片

▲ 来自张俊林blog分享 [2]

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

将上述描述公式化:

Attention注意力机制的前世今身_第4张图片

其计算过程可以分为三个阶段,如下图所示:

  1. 计算 query 和 key 之间的相似性或相关性;

  2. 对权重进行归一化处理;

  3. 依据权重对 value 进行加权求和。

Attention注意力机制的前世今身_第5张图片

▲ 来自张俊林blog分享 [2]

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

Attention注意力机制的前世今身_第6张图片

▲ 来自文献 [3]

这里的  等价于上节的 , 第一项为点积运算,在计算相似度上还有常用的 cosine 计算(文献 [4]);第二项常用于输入输出维度不对等,使用中间矩阵相乘将其对齐;第三项为二者进行拼接后,使用 tanh 函数进行激活。

此外,还有 Transfomer 中使用到的缩放点积注意力, (文献 [5]),是点积计算的延伸,增加了一个缩放因子。

Attention的分类

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

注:内容参考了文献 [2]、[6]、[7]

  1. Soft attention v.s. Hard attention

  2. Global attention v.s. Local attention

  3. Self-attention

  4. Multi-head attention

  5. Hierarchical attention

  6. Attention over attention

  7. 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。

Attention注意力机制的前世今身_第7张图片

▲ global attention model

Local Attention

Global Attention 存在以下两个缺点:

  1. 每次解码目标词,都要计算所有的编码隐层向量,在翻译或处理长文本序列时计算代价高。

  2. 文本序列过长,也有可能导致注意力不集中、过度分散(这个不是论文中介绍,只是借鉴他人介绍,可不做参考)。

Local attention 相对于 global attention 直观的感受,专注于小窗口的上下文,也就是不考虑所有的编码隐层状态,模型结构图如下所示。为实现该想法,要在每一时刻解码时构造一个位置变量 ,记录当前解码位置,该窗口就可以表示为 ,其中 D 为窗口大小,为实验选值。

不同于 global attention 中对齐向量是变长的,Local attention 中 是定长的,文中给出了两种方法定义该对齐向量:

  1. local-m 固定的, ;

  2. local-p 预测的,利用 预测 ,计算公式为:,其中 S 为原句长度, 为待学习的模型参数。此外,为了使对齐点更接近 ,引入了高斯分布计算对齐权重 ,公式这里就不给出了,感兴趣的可以看论文公式 10。

Attention注意力机制的前世今身_第8张图片

Self-attention

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

Attention注意力机制的前世今身_第9张图片

▲ self attention 可视化

具体来讲,self attention 具有以下优点:

  1. 可以捕获句法特征和语义特征(可视化结果);

  2. 相比 RNN 依次序列计算,在长距离依赖特征上表现更好;可并行化计算。

在文献 [5] 中给出了不同层模型(self-attention\RNN\CNN)在层复杂度、序列操作、最大路径长度的对比,结果如下图所示。

Attention注意力机制的前世今身_第10张图片

▲ 文献5

Multi-Head attention [5]

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

Attention注意力机制的前世今身_第11张图片

Hierarchical attention

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

Attention注意力机制的前世今身_第12张图片

attention over attention

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

Attention注意力机制的前世今身_第13张图片

memory-based attention

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

  1. 计算新来的 question 与历史 question 的相似度,即

  2. 归一化,

  3. 得到新的答案,

网上有一个例子,比较能够说明问题,不过没找到最初的来源,如下图所示:

Attention注意力机制的前世今身_第14张图片

写在最后

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

更多阅读

Attention注意力机制的前世今身_第15张图片

Attention注意力机制的前世今身_第16张图片

Attention注意力机制的前世今身_第17张图片

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:[email protected] 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

你可能感兴趣的:(Attention注意力机制的前世今身)