资源技术动态自然语言处理的中的 Attention

自然语言处理的中的 Attention

2020-03-06 | |  105 |   0

原标题: 自然语言处理的中的 Attention

来源:AI研习社     链接:https://www.yanxishe.com/TextTranslation/2037


在这篇博文中,我将描述关于最近自然语言处理深度学习模型中的注意力工作。我将从Bahdanau介绍的注意力机制开始。然后,我们将继续讲解自注意力、双向注意力、key-value-predict模型和层次注意力。


在许多任务中,例如机器翻译或对话生成,我们有一个单词序列作为输入(例如: 英文原文),并希望生成另一个单词序列作为输出(例如:朝鲜语翻译)。神经网络,特别是递归神经网络(RNN)非常适合于解决这类问题。在此,假设你熟悉RNN和LSTM,否则,我建议你去先去阅读一下Christopher Olah的著名( blog post)。


“序列到序列”神经网络模型广泛应用于NLP。其中一种流行的模型是“编码器-解码器”。在这里,网络的一部分:编码器,将输入序列编码成一个固定长度的上下文向量。这个向量是文本的内部表示。然后,解码器将该上下文向量解码成输出序列。请参见示例:

01.png

上图是一种编码解码神经网络结构。机器翻译的一个例子:输入序列是一个英文句子“how are you”,系统的回答是一个朝鲜翻译:“잘지냈어요”。


这里h表示编码器的隐藏状态和s是解码器的隐藏状态。Tx和Ty分别是输入和输出字序列的长度。q是一个函数,它从编码器的隐藏状态中生成上下文向量。例如,它可以是q({h{i})=h},因此,我们将最后一个隐藏状态作为整个句子的内部表示。

您可以很容易地使用这些模型进行实验,因为大多数深度学习库都有通用的编码器-解码器框架。举几个例子,请参阅Google对Tensorflow的实现和IBM对PyTorch的实现。

然而,常用的编码器-解码器方法有一个缺陷:神经网络将输入源语句的所有信息压缩成一个固定长度的向量。研究表明,这会导致处理长句时的性能下降。在paper“Neural Machine Translation by Jointly Learning to Align and Translate”中介绍了attention原理,来缓解这个性能下降问题。


Attention

基本思想是:每次模型预测一个输出单词时,它只使用输入中相关信息最集中的部分,而不是整个句子。换句话说,它只关注一些输入词。让我们研究一下,这是如何实现的。

02.png

注意力机制是由[Bahdanau,2014]提出。我们没有将整个输入序列转换为单个上下文向量,而是为每个输出(目标)字创建单独的上下文向量。这些向量由编码器隐藏状态的加权和组成。

编码器相同,区别只在解码器部分。从图片中可以看到,解码器的隐藏状态是通过上下文向量、上一个输出和上一个隐藏状态计算出来的。但现在我们不是使用单个上下文向量c,而是为每个目标词使用单独的上下文向量c。

这些上下文向量被计算为编码器annotationsgenerated的加权和。在Bahdanau的论文中,它们使用双向LSTM,因此这annotationsgenerated是隐藏状态在向前和向后方向上的串联。


每个annotationsgenerated的权重由一个alignment模型计算,该模型对输入和输出匹配的程度进行打分。例如,alignment模型是一个前馈神经网络。一般来说,它也可以是任何其他模型。


结果,alphas(计算上下文向量时隐藏状态的权重)显示了给定注释在决定下一个状态和生成输出单词方面的重要性。这些是注意力得分。

如果你想更多地了解这背后的原理,请访问WildML的博客文章。您还可以在District博客中享受交互式可视化。同时,让我们来看看更先进的注意机制。

记忆网络

一组注意力机制通过多层重复进行query向量和上下文之间的注意力向量的计算。它被称为多跃式。它们主要是端到端记忆网络的变体,我们现在将讨论这些变体。


在【Sukhbaatar,2015年】中Bahdanau提出了一种注意力机制,被认为是另一种记忆形式。他们将此机制扩展到多跃式设置。这意味着网络在产生输出之前多次读取相同的输入序列,并在每个步骤更新记忆内容。另一个修改是,该模型使用多个源语句而不是单个源语句。

03.png

端到端记忆网络             


       让我们来看看内部工作原理。首先,让我描述一下单层案例(a): 它实现一个记忆多跃式操作。整个输入句子集被转换成记忆向量m,query q也被嵌入以获得内部状态u。我们通过获取记忆向量m中与之的匹配每个向量,然后查询状态向量u与之乘积后经一个softmax进行计算。这样我们就得到了输入上的概率向量p(这是注意力部分)。每个输入也有相应的输出向量。我们使用权重p来加权这些输出向量的和。这个和是记忆中的响应向量o。现在我们有一个输出向量o和输入嵌入u,我们将它们相加,乘以一个权重矩阵W,然后使用一个softmax来预测一个标签。


现在,我们可以扩展模型来处理K跃操作(b)。记忆层被堆叠,使得到k+1层的输入是前k层输入的总和。每个层都有自己的输入嵌入矩阵。

当输入和输出嵌入在不同的层上是相同的时,记忆与Bahdanau的注意机制是相同的。不同的是,它在内存中进行多次跳跃(因为它试图整合来自多个句子的信息)。

该方法的一个更细粒度扩展是由一位[Hermann,2015]细心读者介绍而来。

注意力变种

      [Luong,2015]介绍了全局和局部注意力的区别。全局注意力思想是在计算每个上下文向量时使用编码器的所有隐藏状态。全局注意力模型的缺点是,它必须注意源端每个目标词的所有单词,所以计算上消耗是很高的。为了克服这个问题,局部注意力首先在源句中选择一个位置。这个位置将决定一个模型关注的窗口词。与Bahdanau的工作相比,作者还试验了不同的对齐函数,简化了计算路径。

      注意力阅读阅读器[Kadlec,2016]将注意力用于文本中离散标记的指针。任务是从上下文段落中选择给定问题的答案。与其他方法不同的是,该模型直接使用计算出的注意力从上下文中选择答案,而不是使用注意力得分来衡量隐藏向量的总和。

04.png

注意力阅读总结


      作为一个例子,让我们考虑问题和上下文对。假设上下文是“A UFO was observed above our city in January and again in March.”,问题是“

An observer has spotted a UFO in … .”,1月和3月同样是很好的候选者,因此之前的模型将分配相同的关注分数。然后,他们将计算这两个单词的表示之间的向量,并提出嵌入最接近单词的单词作为答案。同时,注意力总结阅读器会正确地提出一月或三月,因为它直接从文章中选择单词。

双向注意力 & 协同注意力

      正如您可能已经注意到的,在前面的模型中,我们关注的是源到目标。这在翻译中是有意义的,但其他领域呢?例如,考虑文本蕴涵。我们有一个前提“如果你帮助穷人,上帝会奖励你”和一个假设“给穷人钱有好的结果”。我们的任务是理解前提是否包含假设(在本例中,它包含假设)。这将有助于注意力不仅从假设到文本,而且从其他方面。

       这引入了双向注意力概念[Rocktäschel,2015]。我们的想法是使用同样的模型来注意前提以及假设。在最简单的形式中,您可以简单地交换这两个序列。这将生成两个可连接的有关联表示。


05.png

上图:模型来自[Rocktäschel,2015]。


底部:来自[Wang,Jiang,2016]的MatchLSTM。

第一个模型中的h向量仅是前提的加权版本,而在第二个模型中,它们“表示前提和假设之间的匹配,直到位置k”

然而,这样的模型不会让你强调更重要的匹配结果。例如,停止词之间的对齐不如内容词之间的对齐重要。此外,该模型仍然使用一个向量来表示前提。为了克服这些限制,[Wang,Jiang,2016]开发了MatchLSTM。为了处理匹配的重要性,他们添加了一个特殊的LSTM,该LSTM将记住重要的匹配结果,而忘记其他匹配结果。这个额外的LSTM还增加粒度级别。我们现在将把注意力权重与每个隐藏状态相乘。它在问答和文本蕴涵任务中表现良好。

回答问题的任务提出了更先进的方法来结合双方。Bahdanau的模型,我们在一开始已经看到,使用查询的摘要向量来处理上下文。与此相反,coattention被计算为所有上下文和查询词对上的对齐矩阵。作为这种方法的一个例子,让我们来研究动态协同注意力网络[Xiong,2016]。

06.png

 动态协作注意力网络[Xiong,2016]。



     让我们来看看图片上发生了什么。首先,我们计算所有文档和疑问词对的关联矩阵。然后我们得到问题中每个单词在文档和AD中的注意权重AQ。接下来,根据问题中的每个单词计算文档的摘要或注意上下文。同样地,我们可以根据文档中的每个单词来计算问题的答案。最后,我们计算出文档中每个单词之前的注意上下文的摘要。结果向量被连接成问题和文档的一个共同依赖的表示。这称为协同注意力上下文。

自注意力

      另一个问题是,尽管递归网络具有一定的理论能力,但它在实际应用中只能记忆有限的上下文和语境。例如,在问答中,一个回答者往往不知道段落其他部分的线索。[Cheng,2016]提出了自注意力,有时称为内部注意力。它是一种将单个序列的不同位置联系起来计算其内部表示的机制。

     自我注意已经成功地应用于各种任务中。其中一个用例是情绪分析。对于像这样的任务,标准注意力并不直接适用,因为没有额外的信息:模型只给出一个句子作为输入。一种常见的方法是使用最终的隐藏状态或池化。然而,这种方式很难保持语义。在回答问题时,SQuAD 竞赛中使用的模型有:r-net[Wang,2017]和Reinforced Mnemonic Reader[Hu,2017]。在自然语言推理-可分解注意模型中[Parikh,2016]。在机器翻译中,自注意力也会产生令人印象深刻的效果。例如,最近在一篇论文中引入了一个名为Transformer的模型,其标题相当大胆:“Attention Is All You Need”【Vaswani,2017年】。你可以猜到,这个模型只依赖自注意力,而不是RNNs。因此,它具有高度的并行性,并且在WMT2014上建立最新的结果时需要更少的时间进行训练。


但对于语言学家来说,最令人兴奋的特性可能是自注意力似乎能学习复杂的句法模式。看看网络学习如何解决句子中的回指的例子:

07.png


通过Transformer学习句法模式仅使用自注意力。

Key-Value(-Predict) attention

在讨论的算法中,我们要求输出向量同时存储用于预测下一个单词、计算注意力和编码与未来步骤相关的内容的信息。过度使用输出表示可能会使训练变得不必要的困难。为了解决这个问题,提出了一个A key-value(-predict) attention[Daniluk,2017]。在 key-value部分,我们将输出向量分为:

  • 计算注意力的键,以及编码下一个单词分布和上下文表示的值

但是,我们仍然使用value部分同时实现两个目标。因此,作者再次将其分割,最后,模型在每个时间步输出三个向量。第一个用于编码下一个单词分布,第二个用作计算注意力向量的键,第三个用作注意力机制的值。

08.png

Key-value(-predict) attention。我们将输出向量分为键、值(和预测)部分,以降低在同一向量中存储三个不同目标的信息的负担。


层次&嵌套注意

文本往往具有层次结构,单词和句子的重要性高度依赖于上下文。为了包含这一观点,杨元庆(Yang,2016)提出的层次模型使用了两级注意力——一个是单词级,一个是句子级。这样的体系结构还允许更好的可视化——突出显示文档的高信息性组件。文献中也提出了一个类似的概念,即单词和字符级别,并在[Pappas,2017]中适应了多语言环境。

09.png

另一种观点是Attention-over-Attention[Cui,2016]。其思想是将另一个注意力放在主要注意力之上,以表明每个注意力的“重要性”。

10.png

Attention-over-Attention


Attention-over-Attention是我们以前看到的注意力总结阅读的动机。他们首先通过将每对单词的LSTM产生的上下文嵌入相乘来计算成对匹配矩阵M。然后,他们应用一个按列的softmax来获取文档注意力权重(alphas)的查询向量。权重表示整个文档和单个查询词之间的对齐方式。然后,通过应用softmax行方式获得查询注意力权重的文档。这又是一种双向注意。但现在我们计算这些权重的点积,以获得attention-over-attention。

注意力流

我想提到的最后一个更成熟的概念是注意力流网络。在这种网络中,注意模型与RNN是分离的。BiDAF模型引入了一个想法[Seo,2016]。每一个时间步都计算注意力,关注向量和前一层的表示一起,被允许流向下一个建模层。其目的是减少由于早期摘要而造成的信息损失。多跳阶跃是 Ruminating Reader [Gong,2017]。

11.png

双向注意力流模型[Seo,2016]。



       在上图中,我们可以看到注意力流层。它通过双向注意力来连接和融合来自上下文和查询词的信息。输入层是上下文和查询的上下文向量表示。该层的输出是上下文单词的查询感知表示和上下文嵌入。注意,我们不会产生一个向量,而是让注意力信息在每个时间步流向下一层。


注意机制的分类器

已有几次尝试使用现有的注意力模型进行分类。我将概述不同文献综述中提到的主要差异。

12.png

[Huang,2017]几种类型的注意力融合过程的区别:(1)词级别融合。(2) 高级别的融合。(2’)高水平融合(可选)。(3) 自增强融合。(3’)自增强融合(可选)。详细内容可以见paper。


1.注意权重计算-见[Seo,2016]

.动态注意力机制-根据查询和之前上下文的注意来更新注意力权重:RNNSearch、Attentive Reader、MatchLSTM…

.计算一次注意权重,然后输入到输出层进行最终预测:Attention Sum Reader


.通过多层重复计算查询和上下文之间的注意力向量:End-to-End Memory Networks

2.多道和单道-见[Gong,2017]
3.一维注意力与二维注意力


在一维注意力中,整个源文本由一个嵌入向量表示。相反,在二维注意力的情况下,源中的每个词都有自己的嵌入向量。


4.单向和双向注意力(特别是与文本蕴涵和问答相关)
5.不同的匹配和融合功能

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:情感分析纵览

下一篇:如何用 tf.estimators 进行文本分类?

用户评价
全部评价

热门资源

  • 应用笔画宽度变换...

    应用背景:是盲人辅助系统,城市环境中的机器导航...

  • GAN之根据文本描述...

    一些比较好玩的任务也就应运而生,比如图像修复、...

  • 端到端语音识别时...

    从上世纪 50 年代诞生到 2012 年引入 DNN 后识别效...

  • 人体姿态估计的过...

    人体姿态估计是计算机视觉中一个很基础的问题。从...

  • 谷歌发布TyDi QA语...

    为了鼓励对多语言问答技术的研究,谷歌发布了 TyDi...