引言

本文介绍常见机器阅读理解模型中的R-NET、FusionNet和QA-Net。



R-NET

R-Net​1​在Attention计算中加入门机制。

作者引入了一个端到端的网络模型来解决基于给定文章回答问题的阅读理解问答任务。首先使用门控的基于注意力的循环网络来匹配问题和文章,以获得问题感知的文章表示。

作者提出了一个自匹配的注意力机制来改善文章表示,通过与文章自己进行匹配,这能有效的编码整个文章的信息。

最后应用指针网络来从文章中定位答案。

核心思想

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积

主要贡献在三个方面:

  1. 考虑到在回答特定问题时,文章中的单词具有不同的重要度,在基于注意力的RNN​2​上增加额外的门控。通过引入门控机制,基于门控注意的RNN根据文章与问题的相关性为其分配不同的重要度,屏蔽不相关的文章部分,强调重要的部分。
  2. 引入了自匹配机制,来动态地修正基于整篇文章信息的文章表示,能有效地压缩整篇文章的信息来回答问题。基于问题感知的文章表示,作者应用门控注意力RNN让文章与本身做匹配,来从文章中的每个单词中收集与当前文章单词相关的信息。
  3. 最后,作者提出了方法达到了当时最高水平。

模型由四部分组成:

  • RNN编码器分别为问题和文章编码(Question & Passage Encoding)
  • 门控匹配层进行问题和文章的匹配(Question-Passage Matching)
  • 自匹配层为整篇文章进行信息压缩(Passage Self-Matching)
  • 基于指针网络的答案边界预测层(Answer Prediction)

下面我们分别看下具体四部分的细节。

首先,一个双向RNN分别为文章和问题编码。然后基于门控注意力RNN匹配问题和文章,获取文章的问题感知表示。接着,应用自匹配注意力从整篇文章中获得信息来修正文章表示。最后喂给输出层去预测答案片段的边界。

问题和文章编码器

给定一个问题【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_02和一篇文章【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_03,首先将这些单词转换为相应的单词级嵌入向量(分别是【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_04【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_05)和字符级嵌入向量(【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_06【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_07)。

通过将单词中的字符嵌入喂给双向RNN,得到最后的隐藏状态作为单词的字符级嵌入。这种字符级嵌入能很好地处理未登录词问题。

然后使用双向RNN来分别产生问题和文章中每个单词的新的表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_08【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_09
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_10

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_11

论文中使用具体使用的RNN模型为GRU。

门控注意力循环网络

作者提出了一个门控注意力循环网络将问题信息融入文章表示中。门控用来控制文章中单词对于问题的重要性。给定义一个问题和文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_12【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_13,Rocktäschel等人提出了通过软对齐问题和文章中的单词生成句子对表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_14:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_15
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_16是一个整个问题【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_17的注意力池化(attention-pooling)向量:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_18

每个文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_19动态地融入从整个问题中聚集的匹配信息。Wang等人​​2​​引入了match-LSTM,使用【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_20作为RNN的一个额外的输入:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_21

为了确定文章各部分的重要性,并注意与问题相关的部分,作者为RNN的输入(【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_22)增加了另一个门:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_23
与LSTM或GRU中的门不同,该额外的门是基于当前文章单词和它关于问题的注意力池化向量,侧重于问题和当前文章单词的相关性。该门有效地建模了阅读理解和问答中只有部分段落与问题相关的现象。【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_24就是用来替换原来的【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_22在后面使用。作者称之为门控注意力循环网络。

自匹配注意力

经过上一层得到了关注文章重要部分的问题感知的文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_14。一个问题是这样的文章表示对上下文的知识非常有限。文章上下文是回答问题的重要条件。

为了解决这个问题,作者提出了直接让问题感知的文章表示与自己匹。这样能动态地从整个文章中收集单词的信息,并将与当前文章相关的信息及其匹配的问题信息编码到文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_27中:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_28
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_29是整个文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_30的注意力池化向量:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_31
将门控注意力循环网络应用于【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_32,以自适应地控制RNN的输入。

自匹配根据当前文章的单词和问题信息,从整个文章中提取信息。

输出层

输出层采用了指针网络来预测答案的起止位置。同时,作者在问题表示上使用一个注意力池化来生成指针网络的初始隐藏向量。

给定文章表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_33,注意力机制被当成一个指针来从原文中选择开始位置【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_34和结束位置【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_35,可以通过以下公式表示:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_36
这里【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_37表示指针网络的上一个隐藏状态。指针网络的输入是基于当前预测概率【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_38的池化向量:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_39
当预测开始位置时,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_37表示指针网络的初始隐藏状态。我们使用问题向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_41作为指针网络的初始状态。

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_42是基于参数【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_43问题注意力池化向量:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_44
为了训练指针网路,作者最小化预测答案开始和结束位置的负对数似然损失之和。

FusionNet

FusionNet​3​引入了一种全新的网络结构,它从三个方法扩展了现有的注意力方法。首先,提出了一个新颖的“单词历史”概念,以描述从最低单词级别嵌入到最高语义级别表示的注意力信息。其次,确定了更好地利用“单词历史”概念的注意力评分函数。最后,提出了一种全感知(fully-aware)的多层次注意力机制,以捕获一个文本(如问题)中的完整信息,并相应地(比如在上下文或文章中)逐层利用它。

重要贡献之一便是对各种注意力方法对一个总结。

全感知注意力

首先介绍一下机器阅读理解的概念架构图,然后引入了单词历史的概念,并提出了一种轻量级的实现。

机器阅读理解的概念架构

在所有最先进的机器阅读理解架构中,都会有如下的重复模式。给定两组向量,A和B,我们使用集合B中的信息增强或修改集合A中的每个向量。我们称之为融合过程,其中集合B融合到集合A中。融合过程通常基于注意力,但有些不是。当时的MRC工作的主要改进方向在于融合过程的设计方式。

图2显示了最先进架构的概念架构,该架构由三个组件构成。

  • 输入向量:上下文(context)和问题中每个单词的嵌入向量。
  • 集成组件: 图中的矩形框,通常是基于RNN实现的。
  • 融合过程: 带有数字的箭头(1),(2),(2’),(3),(3’)。从箭头起始位置向箭头指向位置融合。

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_45


左边几个先进架构的融合过程总结;右边是MRC中最近改进的概念架构图

现在主要的三种融合过程。上图左边的表显示了不同网络结构使用的融合过程。

(1)单词级融合 通过向上下文(Context,或者说文章)提供直接的单词信息,我们可以快速放大上下文中更相关的区域。然而,如果一个单词基于上下文有不同的语义,此时可能用处不大。许多单词级别的融合不是基于注意力,例如有人在上下文单词中添加二进制特征,指示每个上下文单词是否出现在问题中。

(2)高层融合 融合问题中语义信息的上下文可以帮助我们找到正确的答案。但高层信息没有单词信息准确,这可能会导致模型对细节的了解不够。

(2’)高层融合(可选) 类似地,我们也能将问题的高层信息融入上下文的单词信息中。

(3)自提升融合 由于上下文可能会很长,而较远部分的文本可能需要互相依赖来充分理解文本信息。最近的研究建议将上下文融合到自身。由于上下文包含过多的信息,一个常见的选择是在融合问题Q后执行自提升融合(self-boosted fusion)。这使我们能够更好地了解与问题相关的区域。

(3’)自提升融合(可选) 另一种选择是直接在问题Q上调整自提升融合过程,比如DCN​4​论文中提出的共同注意力机制(coattention mechanism)。然后,我们可以在融合问题信息之前执行自提升融合。

现有融合机制的一个共同特点是,它们都没有同时使用所有层的表示。作者认为,应用所有层的表示信息是对达到更好的文本理解来说至关重要。

单词历史上的全感知注意力

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_46

上图是一个展示单词历史的例子。下面给出它的翻译,方便分析:

上下文 高山莱茵河(Alpine Rhine)是莱茵的一部分,莱茵河是欧洲著名的河流。高山莱茵河始于瑞士格劳宾登州最西部,后来形成了瑞士西部和列支敦士登(Liechtenstein)之间的边界,后来是奥地利东部的边界。另一方面,多瑙河(Danube)将罗马尼亚和保加利亚分开。

问题 莱茵河(Rhine)将瑞士和哪个国家一起分开了?

答案 列支敦士登(Liechtenstein)

见上面的译文,我们阅读上下文的时候,每个单词都会转换成更抽象的表示。比如,从低层到高层概念。总之,它们构成了我们脑海中每个单词的历史。作为人类,我们经常使用单词历史的信息,但我们总是忽略它的重要性。比如,问了回答上面的问题,我们需要同时关注“形成边界(forms the borders)”的高层概念和高山莱茵河的低层概念。如果我们只关注高层概念,我们会被高山莱茵河与多瑙河困扰,因为它们都是欧洲大陆的河流,同时都分开了国家。因此,作者强调整个单词历史对于完全理解文本的重要性。

在网络结构中,作者定义第【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_47个单词的历史为:【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_48,为这个单词生成的所有表示的拼接。可能包含单词嵌入,RNN中的多个中间和输出隐藏向量,和其他层的对应表示。为了将单词历史融入到神经网络模型中,作者提出了一个轻量级实现,被称为 全感知注意力。

本文作者关注的是,从一个东西(比如,向量)融合信息到另一个东西这种注意力应用场景。考虑两个文本中的单词隐藏向量集合【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_49【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_50【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_51。它们关联的单词历史是
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_52
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_53。通过标准的注意力方法融合【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_50【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_49中,针对【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_49中的每个【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_57

  1. 【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_58中的每个【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_59计算注意力得分【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_60
  2. 通过softmax形成注意力权重【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_61
  3. 拼接【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_62和它的加权信息【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_63

在全感知注意力中,通过单词历史来计算注意力得分
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_64
为了在注意力中充分利用单词历史信息,我们需要一个合适的注意力打分函数【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_65

常见的做法是:【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_66
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_67
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_68;【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_69是注意力隐藏层大小。然而,如果我们直接使用这两个这么大的矩阵会使得模型很难训练。所以作者增加了一个限制,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_70必须是对称的。对称矩阵能被分解为【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_71,即
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_72
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_73;【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_74;同时【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_75是对角矩阵。对称形式有利于为不相似的【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_76得到高注意力得分。同时,将非线性与对称形式相结合,以在单词历史的不同部分之间提供更丰富的相互作用。

最终计算注意力得分的公式为:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_77
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_78是逐元素应用激活函数。在下午中,作者令【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_79

全感知融合网络

端到端架构

基于全感知注意力,作者提出了一个端到端架构:全感知融合网络(FusionNet)。给定文本A和文本B,FusionNet将文本B中的信息融合到文本A中,并生成两组向量:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_80
下面,我们考虑特殊情况,文本A是阅读理解中的上下文C,文本B是问题Q。

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_81


FusionNet图示。每个向上的箭头代表BiLSTM的一层。右边的每个圆圈都是FusionNet中相应组件的详细说明。


圆圈1: C和Q之间的全感知注意力。描述了下面的公式(C1)


圆圈2: 将C中的所有信息与多层次的Q信息连接起来,然后经过BiLSTM。描述了下面的公式(C2)


圆圈3:上下文C的自全感知注意。描述了下面的公式(C3)


圆圈4: 将C的理解向量和自注意信息拼接起来,然后经过BiLSTM。描述了下面的公式(C4)


FusionNet的示意图如上,它包含以下组件:

输入向量 首先,每个C和Q中的单词被转换为一个输入向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_82。这里使用了300维的GloVe嵌入和600维的contextualized向量。在SQuAD任务中,作者还为上下文C增加了12维的POS嵌入和8维的NER嵌入,以及C的归一化的词频。一起形成了
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_83
全感知多层融合:单词级 在多层融合时,作者分别考虑了单词级融合和高层融合的情况。单词级融合告诉C关于Q中有什么类型的单词。如Figure 2中的箭头(1)所示。首先,为C中的每个单词创建一个特征向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_84,以指示该单词是否出现在问题Q中。其次,对GloVe嵌入【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_85采用基于注意力的融合技术:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_86
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_87。此时单词历史是输入向量本身,所以没有应用全感知注意力。最终得到上下文的增强的入向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_88

阅读 在阅读组件中,作者分别为C和Q使用一个BiLSTM来形成低层和高层信息。
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_89

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_90

这样就得到了每个单词的低层和高层信息【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_91

问题理解 作者应用一个新的BiLSTM,同时输入【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_92【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_93去获得最终的问题表示【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_94
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_95
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_96是问题Q的理解向量。

全感知多层融合:高层 这个组件通过对单词历史的全感知注意力,将问题Q中的所有高层信息与上下文C融合。由于所提出的针对全感知注意的注意力评分函数被限制为对称的,因此我们需要识别C,Q的共同历史单词,得到
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_97
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_85为GloVe嵌入,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_99为CoVe嵌入。然后,我们通过全感知注意力,将从Q到C的低层、高层和理解层的信息融合起来。通过注意函数【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_100计算不同层的注意力权重,以融合低层、高层和理解层的信息。这三个函数都是前文提出的非线性对称形式,但参数独立,以关注不同层次的不同区域。注意隐藏大小设置为【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_101

  1. 低层融合:
    【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_102
  2. 高层融合:
    【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_103
  3. 理解融合:
    【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_104

这种多层次的关注机制独立捕获不层级别的信息,同时考虑到所有层级的信息。应用新的BiLSTM来获取完全融合了问题Q信息的上下文C的表示:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_105
全感知自提升融合 我们现在使用自提升(self-boosted)融合来考虑上下文中的远距离部分,如Figure 2中的箭头(3)所示。同样,我们通过全感知注意历史单词来达到这一点。我们确定历史单词为:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_106
然后应用全感知注意,
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_107
最终的上下文表示由以下方法获得:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_108
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_109是C的理解向量。

在经过FusionNet中的这些组件之后,我们为上下文C创建了理解向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_110,这些向量与问题Q完全融合。我们还有问题Q的理解向量【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_94

QA-Net

QANet​5​是谷歌大脑团队18年推出的,融合了之前的重要突破:

  1. CNN seq2seq代替LSTM和position encoding
  2. 多头注意力(multi-head attention)
  3. 深度可分离卷积(Depthwise Separable Conv)
  4. 高速神经网络(Highway network)
  5. 批归一化(Batch normalization)
  6. 层归一化(Layer normalization)

在此论文之前端到端的机器阅读和问答模型(像之前介绍的BiDAF)主要基于带注意力的RNN网络,这种架构有一个很重要的缺点是训练和推理速度慢。此论文提出了一个不含RNN网络的架构,其编码器仅包含卷积和自注意力(self-attention),称为QANet。带来了显著的训练和推理速度提升,让我们可以训练更多的数据。

卷积用于捕获文本的局部结构,而自注意力用于学习单词间的全局交互。额外的上下文-查询(context-query)注意力用于构建查询感知的(query-aware)的上下文(context)向量。

模型概述

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_112

模型架构如上图左。

首先介绍符号定义。给定一个包含【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_113个单词的上下文段落【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_114和包含【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_115个单词的查询语句【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_116,以及从原始段落【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_117中抽取的输出片段(span)【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_118

模型包含五个组件:嵌入层、嵌入编码器层、上下文-查询注意力层、模型编码器层和输出层。

下面来详细介绍。

输入嵌入层

作者通过拼接字符嵌入(character embedding)和词嵌入得到每个单词的嵌入向量。词嵌入用的是预训练好的GloVe向量,并且不会随着训练进行更新。而字符嵌入是可学习的,对于英文单词来说,字符就是组成每个单词的字母。因此每个单词可以看成是其包含字符(字母)向量的拼接。但是每个单词长短不一怎么办,作者设置了一个最大长度16,多截少补(pad)。

【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_119

最终得到的嵌入向量为这两个向量的拼接:【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_120

嵌入编码器层

编码器层由以下构建块堆叠而成:[卷积层×# +自注意层 + 前馈层],如图1右所示。卷积层×#表示重复堆叠了#次。卷积层基于深度可分离卷积;自注意层基于多头注意力机制。每个基础操作层(卷积/自注意/前馈)周围都有残差连接。同时应用了层归一化(layer norm),对于每个操作【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_121,输出是【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_122

上下文和查询编码器的权重是共享的。

上下文-查询注意力层

该模块几乎是阅读理解模型的标配。使用【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_117【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_124来表示编码的上下文和查询。上下文到查询之间的注意力基于如下方式构建:首先计算上下文和查询单词对之间的相似度,得到一个相似矩阵【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_125。然后应用softmax函数对【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_126的每行进行归一化,得到新的矩阵【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_127。然后上下文-查询注意力计算为【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_128

相似度函数为:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_129
接着像DCN模型还计算了查询到上下文的注意力。具体做法是对【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_126的列进行归一化,得到矩阵【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_131,然后查询到上下文的注意力矩阵【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_132

模型编码器层

类似Bi-DAF,该层每个位置的输入为【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_133,其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_134【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_135分别是上面计算的注意力矩阵【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_49【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_50的一行。

注意这里有3个模型编码器,它们是权重共享的。

输出层

该层是任务相关的。在解决SQuAD任务中,作者采用了Bi-DAF的策略来预测上下文每个位置作为答案片段开始和结束的概率。具体做法为:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_138
其实【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_139【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_140是可训练的权重,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_卷积_141分别是前面三个 模型编码器的输出,由下到上。

然后用这两个概率相乘得到片段得分。

最后,定义训练损失为预测分布对应的真实开始和结束位置的负对数似然的之和,并求所有样本上的均值:
【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_142
其中【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_143是模型的可训练权重参数集合,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_144是数据集的样本总数,【Day 3】机器阅读理解——常见机器阅读理解模型(下)_神经网络_145【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_146是第【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_47个样本的真实开始和结束位置。

推理

在推理时,预测的块【Day 3】机器阅读理解——常见机器阅读理解模型(下)_rnn_148选择使得【Day 3】机器阅读理解——常见机器阅读理解模型(下)_深度学习_149最大者,同时要满足【Day 3】机器阅读理解——常见机器阅读理解模型(下)_编码器_150,能在线性时间内获得结果。

Reference


  1. ​R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS​​​ ​​↩︎​
  2. ​MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER​​​ ​​↩︎​​ ​​↩︎​
  3. ​FusionNet: Fusing via Fully-Aware Attention with Application to Machine Comprehension​​​ ​​↩︎​
  4. ​DYNAMIC COATTENTION NETWORKS FOR QUESTION ANSWERING​​​ ​​↩︎​
  5. ​QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION​​​ ​​↩︎​