NLP 中的 attention 机制
source link: https://www.tuicool.com/articles/3mqu2iI
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本篇介绍在 NLP 中各项任务及模型中引入相当广泛的 Attention 机制。在 Transformer 中,最重要的特点也是 Attention。首先详细介绍其由来,然后具体介绍了其编解码结构的引入和原理,最后总结了 Attention 机制的本质。
1 注意力机制的由来
在深度学习领域,注意力机制模仿的是人类认知的过程。当人看到如下“美女伤心流泪”图时,细细想一下,人在做出图片中美女是在伤心流泪的过程,应该是先整体扫描该图片;然后将视觉注意力集中到美女的脸部;集中到脸部之后,再进一步将视觉注意力集中到眼睛部位。最后发现了眼泪,得出美女是在伤心流泪的结论。
人类在对信息进行处理的过程中,注意力不是平均分散的,而是有重点的分布。受此启发,做计算机视觉的朋友,开始在视觉处理过程中加入注意力机制 (Attention)。随后,做自然语言处理的朋友们,也开始引入这个机制。在 NLP 的很多任务中,加入注意力机制后,都取得了非常好的效果。
那么,在 NLP 中,Attention 机制是什么呢?从直觉上来说,与人类的注意力分配过程类似,就是在信息处理过程中,对不同的内容分配不同的注意力权重。下面我们详细看看,在自然语言处理中,注意力机制是怎么实现的。
2 seq2seq 结构及其中的 Attention
如上图所示,是标准的编解码 (seq2seq) 机制的结构图,在机器翻译、生成式聊天机器人、文本摘要等任务中均有应用。其处理流程是通过编码器对输入序列进行编码,生成一个中间的语义编码向量 C,然后在解码器中,对语义编码向量 C 进行解码,得到想要的输出。例如,在中英文翻译的任务中,编码器的输入是中文序列,解码器的输出就是翻译出来的英文序列。
可以看出,这个结构很 " 干净 ",对于解码器来说,在解码出 y1,y2,y3 时,语义编码向量均是固定的。我们来分析下这样是否合理。
假设输入的是 " 小明 / 喜欢 / 小红 ",则翻译结果应该是 "XiaoMing likes XiaoHong"。根据上述架构,在解码得到 "XiaoMing",“likes”," XiaoHong" 时,引入的语义编码向量是相同的,也就是 " 小明 ",“喜欢”,“小红 " 在翻译时对得到 "XiaoMing”,“likes”," XiaoHong" 的作用是相同的。这显然不合理,在解码得到 "XiaoMing" 时," 小明 " 的作用应该最大才对。
鉴于此,机智的 NLP 研究者们,认为应该在编解码器之间加入一种对齐机制,也就是在解码 "XiaoMing" 时应该对齐到 " 小明 "。在《Neural Machine Translation By Jointly Learning To Align And Translate》中首次将这种对齐机制引入到机器翻译中。我们来看看,这是怎样的一种对齐机制。
我们先回顾一下刚才的编解码结构,其语义编码向量和解码器状态,通过如下的公式得到:
通常在解码时语义编码向量是固定的。若要实现对齐机制,在解码时语义编码向量应该随着输入动态的变化。鉴于此,《Neural Machine Translation By Jointly Learning To Align And Translate》提出来一种对齐机制,也就是 Attention 机制。
如上图示,论文中采用双向 RNN 来进行语义的编码,这不是重点,我们先不关注。其对齐机制整体思想是:编码时,记下来每一个时刻的 RNN 编码输出 (h1,h2,h3,…hn);解码时,根据前一时刻的解码状态,即 yi-1,计算出来一组权重 (a1,a2,…an),这组权重决定了在当前的解码时刻,(h1,h2,h3,…hn) 分别对解码的贡献。这样就实现了,编解码的对齐。
下面我们用数学语言描述一下上面的过程。
首先,进行编码计算 (h1,h2,…hn),i 时刻的编码状态计算公式如下:
然后,开始解码,加入此时在解码的 i 时刻,则需要计算 i 时刻的编码向量 Ci,通过如下的公式计算:
aij 是对不同时刻的编码状态取的权重值。由此可见,i 时刻的语义编码向量由不同时刻的编码状态加权求和得到。
下面看看,如何取得权重向量 a:
权重向量 ai 通过加入解码器前一个时刻的状态进行计算得到。eij 表示,在计算 Ci 时,hj 的绝对权重。通过对其使用 softmax 函数,得到 aij。aij 就是在计算 Ci 时,hj 编码状态的权重值。
得到权重向量 ai 及语义编码向量 Ci 后,就可以计算当前时刻的解码状态了:
这就是编解码机制中注意力机制的基本内容了,本质上就是为了实现编解码之间的对齐,在解码时根据前一时刻的解码状态,获取不同时刻编码状态的权重值并加权求和,进而获得该时刻语义编码向量。
那么,抽离编解码机制,Attention 机制的本质是什么呢?我们下面来看看。
3 Attention 机制的本质
我们回想一下,引入 Attention 机制的本意,是为了在信息处理的时候,恰当的分配好”注意力“资源。那么,要分配好注意力资源,就需要给每个资源以不同的权重,Attention 机制就是计算权重的过程。
如下图所示,
如上图所示,我们由资源 Value,需要根据当前系统的其他状态 Key 和 Querry 来计算权重用以分配资源 Value。
也就是,可以用如下的数学公式来描述 Attention 机制:
F 函数可以有很多,在 transformer 中用的是点积。
总结
Transformer 中最重要的特点就是引入了 Attention,其对于 Transformer 性能的重要性我们下一篇介绍。总的来说,Adttention 机制是一种对齐机制,它通过对系统当前的某些状态进行评估,来对系统资源进行权重分配,实现对齐,具体可以看机器翻译的例子。
作者介绍
小 Dream 哥,公众号“有三 AI”作者。该公号聚焦于让大家能够系统性地完成 AI 各个领域所需的专业知识的学习。
原文链接
Recommend
-
33
为期六天的 ACL 于上周在墨尔本会展中心落下帷幕,在这六天时间内,共计八场 tutorial,三百多篇论文展示,十五场 workshop,涉及机器翻译、机...
-
34
-
41
1. 什么是Attention机制 在“编码器—解码器(seq2seq)”⼀节⾥,解码器在各个时间步依赖相同的背景变量来获取输⼊序列信息。当编码器为循环神经⽹络时,背景变量来⾃它最终时间步的隐藏状态。 现在,让我们再次思考那...
-
39
加入极市专业CV交流群,与 1 0000+来自港科大、北大、清华、中科院、CMU、腾讯、百度 等名校名企视觉开发者互动交流! 同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业...
-
55
本文以QA形式对自然语言处理中注意力机制(Attention)进行总结,并对Transformer进行深入解析。 目录 一、Attention机制剖...
-
25
作者:哈工大SCIR 顾宇轩 参考来源 NAACL 2019《Attention is Not...
-
33
↑ 点击 蓝字 关注极市平台 作者丨pprp
-
32
编辑推荐: 本文以QA形式对自然语言处理中注意力机制(Attention)进行总结,并对Transformer进行深入解析。 本文来自于知乎,由火龙果软件Alice编辑、推荐。
-
14
2020 年回看最近一两年的 CTR(Clicked Through Rate,点击率)预估算法论文就会发现,这两年新提出的一系列 CTR 预估算法都能看到 attention 的影子,足以见得 attention 逐渐成为 CTR 预估算法的一个标配。 其中比较有代表性...
-
5
NLP教程(6) - 神经机器翻译、seq2seq与注意力机制 原创
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK