首页 - 国内时事 - 校花,怎么了解自然语言处理中的注意力机制? | 技能头条,霸气头像

校花,怎么了解自然语言处理中的注意力机制? | 技能头条,霸气头像

发布时间:2019-03-29  分类:国内时事  作者:admin  浏览:300

作者 | yuquanle

责编| 郭芮

近些年来,留意力机制一向频频的出现在目之所及的文献或许博文中,可见在nlp中算得上是个适当盛行的概念,现实也证明其在nlp范畴散发出不小得作用。这几年的顶会paper就能看出这一点。本文浅显易懂地介绍了近些年的天然言语中的留意力机制包含从来源、变体到点评方针方面。

写在前面

据Lilian Weng博主总结以及一些材料显现,Attention机制最早应该是在视觉图画范畴提出来的,这方面的作业应该许多,前史也比较悠长。人类的视觉留意力尽管存在许多不同的模型,但它们都根本上归结为给予需求要点注重的方针区域(留意力焦点)更重要的留意力,一起给予周围的图画低的留意力,然后跟着时刻的推移调整焦点。

而直到Bahdanau等人宣布了论文《Neural Machine Translation by Jointly Learning to Align and Translate》,该论文运用类似attention的机制在机器翻译使命大将翻译和对齐一起进行,这个作业现在是最被认可为是第一个提出attention机制使用到NLP范畴中的作业,值得一提的是,该论文2015年被ICLR选用,到现在,谷歌引用量为5596,可见后续nlp在这一块的研讨火爆程度。

留意力机制首先从人类直觉中得到,在nlp范畴的机器翻译使命上首先取得不错的作用。简而言之,深度学习中的留意力可以广义地解说为重要性权重的向量:为了猜测一个元素,例如语句中的单词,运用留意力向量来估量它与其他元素的相关程度有多强,并将其值的总和作为方针的近似值。已然留意力竹甲虫机制最早在nl校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像p范畴使用于机器翻译使命,那在这个之前又是怎样做的呢?

传统的依据短语的翻译体系经过将源句分红多个块然后逐一词地翻译它们来完结它们的任蜂窝玉米的做法视频务,这导致了翻译输出的不流通。无妨先来想想咱们人类是怎样翻译的?咱们首先会阅览整个待苏引华钱是这样赚的翻译的语句,然后结合上下文了解其意义,最终发生翻译。

从某种程度上来说,神经机器翻译(NMT)的提出正是想去仿照这一进程。而在NMT的翻译模型中经典的做法是由编码器 - 解码器架构拟定(encoder-decoder),用作encoder和decoder常用的是循环神经网络。这类模型大约进程是首先将源语句的输入序列送入到编码器中,提取最终躲藏状况的表明并用于解码器的输入,然后一个接一个地生成方针单词,这个进程广义上可以了解为不断地将前一个时刻 t-1 的输出作为后一个时刻 t 的输入,循环解码,直到输出中止符停止。

经过这种办法,NMT处理了传统的依据短语的办法中的部分翻译问题:它可以捕获言语中的长间隔依靠性,并供给更流通的翻译。

可是这样做也存在许多缺陷,比方,RNN是健忘的,这意味着前面的信息在经过多个时刻进程传达后会被逐渐消弱甚至消失。其次,在解码期间没有进行对齐操作,因而在解码每个元素的进程中,焦点涣散在整个序列中。关于前面那个问题,LSTM、GRU在必定程度可以缓解。而后者正是Bahdanau等人注重的问题。

Seq2Seq模型

在林逐水介绍留意力模型之前,不得不先学习一波Encoder-Decoder结构,尽管说留意力模型可以看作一种通用的思维,自身并不依靠于特定结构(比方文章:Learning Sentence Representation with Guidance of Hum肽极全an Attention),可是现在大多数留意力模型都随同在Encoder-Decoder结构下。

Seq2seq模型最早由bengio等人论文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》。随后Sutskever等人在文章《Sequence to Sequence Learning with Neu皆藤爱子ral Networks》中提出改善模型即为现在常说的Seq2Seq模型。

从广义上讲,它的意图是将输入序列(源序列)转换为新的输出序列(方针序列),这种办法不会受限于两个序列的长度,换句话说,两个序列的长度可以恣意。以nlp范畴来说,序列可以是语句、阶段、华章等,所以咱们也可以把它看作处理由一个语句(阶段或华章)生成别的一个语句(阶段或华章)的通用处理模型。

关于语句对,咱们期望输入语句Source,等待经过Encoder-Decoder结构来生成方针语句Target。Source和Target可以是同一种言语,也可以是两种不同的言语,若是不同言语,就可以处理翻译问题了。若是相同言语,输入序列Source长度为华章,而方针序列Target为小阶段则可以处理文本摘要问题(方针序列Target为语句则可以处理标题生成问题)等等等。

seq2seq模型一般具有编码器-解码器架构:

编码器 - 解码器模型

NLP中留意力机制的来源

前面谈到在Seq2Seq结构中,encoder把一切的输入序列都编码成一个一起的语义向量context,然后再由decoder解码。而c校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像ontext天然也就成了约束模型功能的瓶颈。

比方机器翻译问题,当要翻译的语句较长时,一个context或许存不下那么多信息。除此之外,只用编码器的最终一个躲藏层状况,感觉上权门禄路都不是很合理。

实践受骗咱们翻译一个语句的时分,比方:Source: 机器学习-->Target: machine learning。当decoder要生成"machine"的时分,应该更注重"机器",而生成"learning"的时分,应该给予"学习"更大的权重。所以假定要改善Seq2Seq结构,一个不错的主意天然便是运用encoder一切躲藏层状况处理context约束问题。

Bahdanau等人[3]把attention机制我的风流记事用到了神经网络机器翻译(NMT)上。传统的encoder-decoder模型经过encoder将Source序列编码到一个固定维度的中心语义向量context,然后再运用decoder进行解码翻译到方针言语序列。前面谈到了这种做法的限制性,而且,Bahdanau等人[3]在其文章的摘要中也提到这个context或许是进步这种根本编码器 - 解码器架构功能的瓶颈,那Bahdanau等人又是怎样测验缓解这个问题的呢? 别急,让咱们来一探终究。

作者为了缓解中心向量context很难将Source序列一切重要信息压缩进来的问题,特别是关于那些很长的语句。提出在机器翻译使命上在 encoder–decoder 做出了如下扩展:将翻译和对齐联合学习。这个操作在生成Target序列的每个词时,用到的中心语义向量context是Source序列经过encoder的躲藏层的加权和,而传统的做法是只用encoder最终一个时刻输出作为context,这样就能确保在解码不同词的时分,Source序列对现在解码词的奉献是不相同的。

想想前面那个比方:Source: 机器学习-->Target: machine learning (假定中文依照字切分)。decoder在解码"machine"时,"机"和"器"供给的权重要更大一些,相同,在解码"learning"时,"学"和"习"供给的权重相应的会更大一些,这在直觉也和人类翻译也是一起的。

经过这种attention的规划,作者将Source序列的每个词(经过encoder的躲藏层输出)和Target序列 (当时要翻译的词) 的每个词奇妙的建立了联络。想一想,翻译每个词的时分,都有一个语义向量,而这个语义向量是Source序列每个词经过encodebk2870r之后的躲藏层的加权和。 由此可以得到一个Source序列和Target序列的对齐矩阵,经过可视化这个矩阵,可以看出在翻译一个词的时分,Source序列的每个词对当时要翻译词的重要性散布,这在直觉上也能给人一种可解说性的感觉。

论文中的图也能很好的看出这一点:

生成第t个方针词

更形象一点可以看这个图:

现在让咱们从公式层面来看看这个东东 (加粗变量表明它们是向量,这篇文章中的其他当地也相同)。 假定咱们有一个长度为n的源序列x,并测验输出长度为m的方针序列y:

作者采样bidirectional RNN作为encoder(实践上这儿可以有许多挑选),具有前向躲藏状况和后向躲藏状况。为校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像了取得词的上下文信息,作者选用简略串联办法将前向和后向表明拼接作为encoder的躲藏层状况,公式如下:

关于方针(输出)序列的每个词(假定方位为t),decoder网络的躲藏层状况:

其间,语义向量 是源(输入)序列的躲藏状况的加权和,权重为对齐分数:

(留意:这儿的score函数为原文的a函数,原文的描绘为:is an alignment model)。

对齐模型依据(在i时喜羊羊酷跑之旅刻的输入)和(在t时刻的输出)的匹配程度分配分数。是界说每个方针(输出)单词应该考虑给每个源(输入)躲藏状况的多大的权重(这恰恰反映了对此刻解码的方针单词的奉献重要性)。

在Bahdanau[3]的论文中,作者选用的对齐模型为前馈神经网络,该网络与所提出的体系的一切其他组件一起练习。因而,score函数选用以下办法,tanh用作非线性激活函数,公式如下:

其间,和都是在对齐模型中学习的权重矩校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像阵。对齐分数矩阵是一个很好的可解说性的东东,可以清晰显现源词和方针词之间的相关性。

对齐矩阵比方

而decoder每个词的条件概率为:

g为非线性的,或许是多层的输出概率的函数,是RNN的躲藏状况, 为语义向量。

NLP中的留意力机制

跟着留意力机制的广泛使用,在某种程度上缓解了源序列和方针序列由于间隔约束而难以建模依靠联络的问题。现在现已出现出了一大批依据根本办法的留意力的不同变体来处理更杂乱的使命。让咱们一起来看看其在不同NLP问题中的留意力机制。

其实咱们或许现已认识到了,对齐模型的规划不是仅有的,的确,在某种意义上说,依据不同的使命规划适应于特定使命的对齐模型可以看作规划出了新的attention变体,让咱们再回过头来看看这个对齐模型(函数):。再来看看几个代表性的work。

Hu对此分了个类:

前面谈到的一些Basic Attention给人的感觉可以从序列中依据权重散布提取重要元素。而Multi-dimensional Attention可以捕获不同表明空间中的term之间的多个交互,这一点简略的完成可以经过直接将多个单维表明堆叠在一起构建。Wang等人提出了coupled multi-layer attentions,该模型归于多层留意力网络模型。作者称,经过这种多层办法,该模型可以进一步运用术语之间的直接联络,以取得更准确的信息。

Hierarchical Attention

再来看看Hierarchical Attention,Yang等人提出了Hierarchical Attention Networks,看下面的图或许会更直观:

Hierarchical Attention Networks

这种结构可以反映文档的层后爱肥儿茶次结构。模型在单词和语句等等级离规划了两个不同等级的留意力机制,这样做可以在构建文档表明时差异地对待这些内容。Hierarchical attention可以相应地构建分层留意力,自下而上(即,词级到语句级)或自上而下(词级到字符级),以提取大局和本地的重要信息。自下而上的办法上面刚谈完。

那么自上而下又是怎样做的呢?让咱们看看Ji等人的模型:

Nested Attention Hybrid Model

和机器翻译类似,作者仍旧选用encoder-decoder架构,然后用word-level attention对大局语法和流通性纠错,规划character-level attention对本地拼写错误纠正。

Self-Attention

那Self-Attention又是指什么呢?

Self-Attention(自留意力),也称为intra-啸傲倚天attention(内部消字灵管用吗留意力),是相关单个序列的不同方位的留意力机制,以便核算序列的交互表明。它已被证明在许多范畴非常有用比方机器阅览,文本摘要或图画描绘生成。

比方Cheng等人在机器阅览里边运用了自留意力。当时单词为赤色,蓝色暗影的巨细表明激活程度,自留意力机制使得可以学习当时单词和语句前一部分词之间的相关性。

当时单词为赤色,蓝色暗影的巨细表明激活程度

比方Xu等人运用自留意力在图画描绘生成使命。留意力权重的可视化清楚地表明晰模型注重的图画的哪些区域以便输出某个单词。

咱们假定序列元素为,其匹配向量为。让咱们再来回忆下前面说的根本留意力的对齐函数,attention score经过核算得到,由于是经过将外部u与每个元素匹配来核算留意力,所以这种办法可以看作是外部留意力。当咱们把外部u替换成序列自身(或部分自身),这种办法就可以看作为内部留意力(internal attention)。

咱们依据文章中的比方来看看这个进程,例如语句:"Volleyball match is in progress between 校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像ladies"。语句中其它单词都依靠着"match",抱负情况下,咱们期望运用自留意力来主动捕获这种内涵依靠。换句话说,自留意力可以解说为,每个单词去和V序列中的内部形式匹配,匹配函数。很天然的挑选为V中其它单词 ,这样遍可以核算成对留意力得分。为了彻底捕捉序列中单词之间的杂乱相互作用,咱们可以进一步扩展它以核算序列中每对单词之间的留意力。这种办法让每个单词和序列中其它单词交互了联络。

另一方面,自留意力还可以自适应办法学习杂乱的上下文单词表明。比方经典文章:A structured self-attentive sentence embedding。这篇文章提出了一种经过引进自注重力机制来提取可解说语句嵌入的新模型。 运用二维矩阵而不是向量来代表嵌入,矩阵的每一行都在语句的不同部分,想深化了解的可以去看看这篇文章,别的,文章的公式感觉真的很漂亮

值得一提还有2017年谷歌提出的Transformer,这是一种新颖的依据留意力的机器翻译架构,也是一个混合神经网络,具有前馈层和自留意层。论文的标题挺霸气:Attention is All you Need,毫无疑问,它是2017年最具影响力和最风趣的论文之一。那这篇文章的Transformer的庐山真面目到底是这样的呢?

这篇文章为提出许多改善,在彻底扔掉了RNN的情况下进行seq2seq建模。接下来一起来具体看看吧。

Key, Value and Query

众所周知,在NLP使命中,一般的处理办法是先分词,然后每个词转化为对应的词向量。接着一般最常见的有二类操作,第一类是接RNN(变体LSTM、GRU、SRU等),可是这一类办法没有脱节时序这个限制,也便是说无法并行,也导致了在大数据集上的速度功率问题。第二类是接CNN,CNN便利并行,而且简略捕捉到一些大局的结构信息。很长一段时刻都是以上二种的选择以及改造,直到谷歌供给了第三类思路:纯靠留意力,也便是现在要讲的这个东东。

将输入序列编码表明视为一组键值对(K,V)以及查询 Q,由于文章[6]取K=V=Q,所以也天然称为Self Attention。

K, V像是key-value广寒魔宫的联络从而是一一对应的,那么上式的意思便是经过Q中每个元素query,与K中各个元素求内积然后softmax的办法,来得到Q中元素与V中元素的类似度,然后加权求和,得到一个新的向量。其间因子为了使得内积不至于太大。以上公式在文中也称为点积留意力(scaled dot-product attention):输出是值的加权和,其间分配给每个值的权重由查询的点积与一切键确认。

而Transformer主要由多头自留意力(Multi-Head Self-Attention)单元组成。那么Multi-Head Self-Attention又是什么呢?以下为论文中的图:

Multi-head scaled dot-product attention mechanism

Multi-Head Self-Attention不是只是核算一次留意力,而是屡次并行地经过缩放的点积留意力。 独立的留意力输出被简略地衔接并线性地转换成预期的维度。论文[6]表明,多头留意力答应模型一起注重来自不同方位的不同表明子空间的信息。 只要一个留意力的头,平均值就会按捺这一点。

是需求学习的参数矩阵。已然为seq2seq形式,天然也包含encoder和decoder,那这篇文章又是怎样构建这些的呢?莫急,请持续往下看。

Encoder

The transformer's encoder

编码器生成依据自留意力的表明,其可以从或许无限大的上下文中定位特定信息。值得一提的是,上面的结构文章堆了六个。

Decoder

The transformer's decoder.

解码器可以从编码表明中检索,上面的结构也堆了六个。

与encoder不同的是,第一个多头留意子层被规划成避免注重后续方位,由于咱们不期望在猜测当时方位时检查方针序列的未来。最终来看一看全体架构:

The full model architecture of the transformer.

Memory-based Attention

那Memory-based Attention又是什么呢?咱们先换种办法来看前面的留意力,假定有一系列的键值对存在内存中和查询向量q,这样便能重写为以下进程:

这种解说是把留意力作为运用查询q的寻址进程,这个进程依据留意力分数从memory中读取内容。聪明的童鞋必定现已发现了,假定咱们假定,这不便是前面谈到的根底留意力么?可是,由于结合了额定的函数,可以完成可重用性和添加灵敏性,所以Memory-based attention mechanism可以规划得愈加强壮。

那为什么又要这样做呢?在nlp的一些使命上比方问答匹配使命,答案往往与问题直接相关,因而根本的留意力技能就显得很无力了。那处理这一使命该怎样做才好呢?这个时分就表现了Memory-based attention mechanism的强壮了,比方Sukhbaatar等人经过迭代内存更新(也称为多跳)来模仿时刻推理进程,以逐渐引导留意到答案的正确方位:

在每次迭代中,运用新内容更新查询,而且运用更新的查询来检索相关内容。一种简略的更新办法为相加。那么还有其它更新办法么?

当然有,直觉灵敏的童鞋必定想到了,光是这一点,就可以依据特定使命去规划,比方Kuma等人的作业。这种办法的灵敏度也表现在key和value可以自在的被规划,比方咱们可以自在地将先验常识结合到key和value嵌入中,以答应它们别离更好地捕获相关信息。看到这儿是不是觉得文章灌水其实也不是什么难事了。

Soft/Hard Attention

最终想校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像再谈谈Soft/Hard Attention,是由于在许多当地都看到了这个名词。

据我所知,这个概念由《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》提出,这是对at天赐冤家tention另一种分类。SoftAttention本质上和Bahdanau等人很类似,其权重取值在0到1之间,而Hard Attention取值为0或许1。

Global/Local Attention

Luong等人提出了Global Attention和Localbravotube Attention。Global Attention本质上和Bahdanau等人很类似。

Global办法望文生义便是会注重源语句序列的一切词,具体地说,在核算语义向量时,会考虑编码器一切的躲藏状况。而在Local Attention中,核算语义向量时只注重每个方针词的一部分编码校花,怎样了解天然言语处理中的留意力机制? | 技能头条,霸气头像器躲藏状况。由于Global办法有必要核算源语句序列一切躲藏状况,当语句长度过长会使得核算价值贵重并使得翻译变得不太实践,比方在翻译阶段和文档的时分。

点评方针

在看一些带有attention的paper时,常常会伴跟着为了阐明自己文章attention是work的试验,但实践上测验供给严厉数学证明的文章很少。

Hu把Attention的点评办法分为两类,Quantitative(定量方针)和Qualitative(定性方针)。定量方针望文生义便是对attenti天才j2on的奉献就行量化,这一方面一般会结合下流使命,最常见的当属机器翻译,咱们都知道机器翻译的最盛行点评方针之一是BLEU,咱们可以在翻译使命规划attention和不加attent何亦亦ion进行比照,比照的方针便是BLEU,设置咱们可以规划多种不同的attention进行比照。

定性方针点评是现在使用最广泛的点评技能,由于它简略易行,便于可视化。具体做法一般都是为整个语句构建一个热力求,其热力求强度与每个单词接纳到的标准化留意力得分红正比。也便是说,词的奉献越大,色彩越深。其实这在直觉上也是可以接纳的,由于往往相关使命的关键词的attention权值必定要比其它词重要。比方H牛志美u文中的图:

写在后边

本文参阅了很多文献,对近些年的天然言语中的留意力机制从来源、变体到点评方面都进行了扼要介绍,可是要理解的是,实践上留意力机制在nlp上的研讨特别多,为此,我只是对18、19年的文献进行了简略的调研(AAAI、IJCAI、ACL、EMNLP、NAACL等顶会),就至少有一百篇之多,足见attention仍是很潮的,所以我也把链接放到了我的github上便利查阅,今后渐渐弥补~~

地址:

https://github.com/yuquanle/Attention-Mechanisms-paper/blob/master/Attention-mechanisms-paper.md

作者:yuquanle,硕士,IJCAI、TASLP等文章多篇,运营个人大众号AI小白入门,欢迎注重。

声明:本文为作者投稿,版权归其个人一切,欢迎经过以下办法联络投稿。

规划 人类 技能
声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。