NLP-阅读理解-2016:MatchLSTM(UniAttention+PointerNet)【片段抽取式任务;单向注意力机制】【 Sequence/Boundary 模型】【数据集:SQuAD】

《原始论文:Machine Comprehension Using Match-LSTM and Answer Pointer》

一、概述

《Machine Comprehension Using Match-LSTM and Answer Pointer》这篇论文介绍了一种端到端解决机器阅读理解问答任务的方法,结合了Match-LSTM和Pointer Net。

在Machine Comprehension(MC)任务中,早期数据库规模小,主要使用pipeline的方法;后来随着深度学习的发展,2016年,一个比较大规模的数据库出现了,即SQuAD。

该文是第一个在SQuAD数据集上测试的端到端神经网络模型。主要结构包括两部分:Match-LSTM和Pointer-Net,并针对Pointer-Net设计了两种使用方法,序列模型(Sequence Model)和边界模型(Boundary Model)。最终训练效果好于原数据集发布时附带的手动抽取特征+LR模型。

1、Match-LSTM

Match-LSTM是作者早些时候在文本蕴含(textual entertainment)任务中提出的模型,可参考《Learning natural language inference with LSTM》,其最先用来解决文本蕴含任务。

文本蕴含任务的目标是:给定一个 premise(前提),根据此 premise 判断相应的 hypothesis(假说)正确与否,如果从此 premise 能够推断出这个 hypothesis,则判断为 entailment(蕴含),否则为 contradiction(矛盾)。
在这里插入图片描述
Match-LSTM 模型先将 premise 和 hypothesis 分别输入到两个 LSTM 中,用对应 LSTM 的隐层输出作为 premise 和 hypothesis 中每个位置的表示(分别对应图中的 H s H^s Hs H t H^t Ht)。
在这里插入图片描述
接着,分别对 hypothesis 中的每个词的表示,去捕获 premise 中重要的部分,即 Attention 过程,得到各自的上下文向量。

最后把 hypothesis中词的表示和其对应的 context 向量拼接在一起,输入到一个新的 LSTM 中,根据最后一个隐层输出来进行分类。

《Machine Comprehension Using Match-LSTM and Answer Pointer》论文中将 question 当做 premise,将 passage当做 hypothesis。

2、Pointer Net

Pointer Net 是 Vinyals 等人提出的一个序列到序列的模型,其用来实现从输入序列中找到相应的 tokens 来作为输出。其利用 Attention 作为 pointer,从输入序列中选择一个位置,并将这个位置所指向的词作为输出。

传统的阅读理解任务是根据文本从提供选项中选择答案,所以实际上是个分类问题。但 SQuAD 和 DuReader 等数据集要求的是一个长短不一的答案,而 Pointer Net 的运用可以解决这个问题。

在这里插入图片描述

Pointer Net 可分为 Sequence Model 和 Boundary Model 两种模型。

  • 序列模型(Sequence Model)【基于词级别;用于机器翻译、文本摘要】:使用Ptr-Net网络,不做连续性假设,预测答案存在于原文的每一个位置;
  • 边界模型(Boundary Model)【基于片段选择;用于片段式抽取阅读理解】:直接使用Ptr-Net网络预测答案在原文中起始和结束位置;

由于 Pointer Net 没有限定指向位置必须是连续的,所以 Sequence Model 给出的是答案在 passage 中出现的位置序号,而 Boundary Model 只预测答案的起始位置跟终止位置。在作者的阅读理解具体实验结果中,后者比前者效果更好。

3、论文历史意义

《Machine Comprehension Using Match-LSTM and Answer Pointer》这篇论文是神经网络运用于阅读理解的最早方法之一,十分经典,是常用的 baseline。

与之同一时间发表的 BiDAF 也同样具有重要的意义。

二、基于SQuAD数据集的通用模型架构

由于 SQuAD 的答案限定于来自原文,模型只需要判断原文中哪些词是答案即可,因此是一种抽取式的 QA 任务而不是生成式任务

在这里插入图片描述
几乎所有做 SQuAD 的模型都可以概括为同一种框架:Embed 层,Encode 层,Interaction 层和 Answer 层。

  • Embed 层负责将原文和问题中的 tokens 映射为向量表示;
  • Encode 层主要使用 RNN 来对原文和问题进行编码,这样编码后每个 token 的向量表示就蕴含了上下文的语义信息;
  • Interaction 层是大多数研究工作聚焦的重点,该层主要负责捕捉问题和原文之间的交互关系,并输出编码了问题语义信息的原文表示,即 query-aware 的原文表示;
  • Answer 层则基于 query-aware 的原文表示来预测答案范围。图1展示了一个高层的神经 QA 系统基本框架。

三、Match-LSTM模型结构

在这里插入图片描述
在模型实现上,Match-LSTM 的主要步骤如下:

  1. Embed 层使用词向量表示原文和问题
  2. Encode 层使用单向 LSTM 编码原文和问题 embedding;
  3. Interaction层对原文中每个词,计算其关于问题的注意力分布,并使用该注意力分布汇总问题表示,将原文该词表示和对应问题表示输入另一个 LSTM编码,得到该词的 query-aware 表示
  4. 在反方向重复步骤 2,获得双向 query-aware 表示;
  5. Answer 层基于双向 query-aware 表示使用 Sequence Model 或 Boundary Model预测答案范围

1、Embedding层

对 Passage 和 Question 分别进行Word Embedding。

Match-LSTM模型的输入由两部分组成:段落(Passage)和问题(Question)。

  • Passage 使用一个矩阵 P [ d ∗ P ] P[d * P] P[dP]表示,其中 d d d 表示词向量维度大小, P P P 表示 Passage 中tokens的个数;
  • Question 使用矩阵 Q [ d ∗ Q ] Q[d * Q] Q[dQ] 表示,其中 Q Q Q 表示 Question 中tokens的个数。

2、Encoder编码层(LSTM preprocessing Layer)

这层对passage和question进行预处理,得到其向量表示;

将 Passage 和 Question 分别喂给一个BiLSTM,获取所有Hidden states,这样可以使得 Passage 和 Question 都带有上下文信息。

LSTM preprocessing Layer的目的是将token的上下文信息包含到 passage 和 question 中的每个token的向量表示中。分别将 passage 和 question 输入LSTM preprocessing Layer,经过LSTM preprocessing Layer后,passage和question表示如下矩阵:

在这里插入图片描述

  • H p H^p Hp 是 passage 的向量矩阵表示,其大小为 [ l ∗ P ] [l * P] [lP] l l l 表示隐藏层的节点个数;
  • H q H^q Hq 是question的向量矩阵表示,其大小为 [ l ∗ Q ] [l * Q] [lQ] l l l 表示隐藏层的节点个数;

3、Interaction交互层(Match-LSTM Layer)【Attention + LSTM】

这一层的主要作用是获取 Question 和 Passage 交互信息,试图在 Passage 中匹配 Question

  • 获取 Passage 中每一个单词对于 Question 中的注意力权重α,
  • 然后将 α 与 Question Embedding相乘求和,获得 Passage 每个单词基于 Question 的新的表示方式。

这个时候再将 Passage 带入LSTM中,每个位置上就都具有 Question信息 、上下文信息(比上一层更丰富的上下文信息)。

下面来看看Match-LSTM中权重的计算方式,将LSTM preprocessing Layer的输出 H q H^q Hq H p H^p Hp 作为这一层的输入,如下图所示:

在这里插入图片描述

  • H q H^q Hq 是 LSTM preprocessing Layer 里的 Question LSTM 输出的hidden states,
  • h i p h^p_i hip 是 LSTM preprocessing Layer 里的 Passage LSTM 输出的 hidden states 的第 i i i 个值,
  • L 是上一层LSTM的隐藏层数目。
  • W q \textbf{W}^q Wq W p \textbf{W}^p Wp W r \textbf{W}^r Wr b p \textbf{b}^p bp w \textbf{w} w b \textbf{b} b 这些参数都是模型需要训练的参数
  • G → i \overrightarrow{\textbf{G}}_i G i 是中间结果
  • h → i − 1 r \overrightarrow{\textbf{h}}^r_{i-1} h i1r 表示第i-1个token的隐藏层输出,
  • ⨂ e Q \bigotimes \textbf{e}_Q eQ 表示在列方向拓展Q列。
  • α → i \overrightarrow{α}_i α i 表示在 passage 的第 $i 个 token 对 question 的 注意力权重向量

这种 attention 被称为 BahdanauAttention。 Passage 中第 t t t 个上下文向量会根据 所有 Question 的隐向量 & Passage 中 t − 1 t-1 t1 时刻的上下文向量 来确定对Question 每个 token 的权重。可以把下图(BahdanauAttention结构)的 Y 理解为 passage,把 X 理解为question。
在这里插入图片描述
获得了权重 α → i \overrightarrow{α}_i α i 以后就要对上一层LSTM输出的 Passage 的上下文动手了:

  • 给每个位置上添加各自对应的 Question 信息: H q ∗ α → i T \textbf{H}^q*\overrightarrow{α}^T_i Hqα iT。也就是将attention向量与原问题编码向量点乘,得到 passage中第 i i i 个 token 的 question 关联信息。
  • 接着再与passage中第 i i i 个token的编码向量 h i p \textbf{h}^p_i hipconcat,拼接为一个向量 z → i \overrightarrow{\textbf{z}}_i z i

在这里插入图片描述

将上述concat后的向量 z → i \overrightarrow{\textbf{z}}_i z i 再次喂给一个LSTM,以便获得加入了 Question 后更丰富的上下文信息。
在这里插入图片描述
P P P 个该隐藏层向量 h i r → \overrightarrow{\textbf{h}^r_i} hir 拼接:
在这里插入图片描述
为了提取上下文信息,反方向也拼接:
在这里插入图片描述

将两者拼接得到Match-LSTM Layer的输出:
在这里插入图片描述

4、Pointer层(Answer作答层)

对于PointerNet网络,实质上仍然是一个attention机制的应用,只不过直接将attention向量作为匹配概率输出。

使用 Pointer-Net 从 Passage 中选取 tokens作为 Question的 answer, Sequence Model 和 Boundary Model的主要区别就在这一层。

Match-LSTM模型的输出即问题的答案有两种表示方法:

  • Sequence Model(基于词级别)【用于机器翻译、文本摘要】 :使用一系列整数数组 a = ( a 1 , a 2 , … ) a = (a_1, a_2,…) a=(a1,a2,),其中 a i a_i ai [ 1 , P + 1 ] [1, P+1] [1,P+1] 中的一个整数,表示在段落中某个token具体的位置,这里的整数数组不一定是连续的【Sequence Model 将答案看做是一个整数组成的序列,每个整数表示选中的 token 在原文中的位置,因此模型按顺序产生一系列条件概率,每个条件概率表示基于上轮预测的 token 产生的下个 token 的位置概率,最后答案总概率等于所有条件概率的乘积。】,当 a i a_i ai 取值为 P + 1 P+1 P+1 时,则答案生成终止。因此在 H r \textbf{H}^r Hr 的最后中加入了一列 0 0 0 向量,用来表示终止词,得到 H ~ r \widetilde{\textbf{H}}^r H r。;
    在这里插入图片描述

  • Boundary Model(基于片段选择)【用于片段式抽取阅读理解】:假设答案是段落中一段连续的token组合,即仅使用两个整数来表示答案 a = ( a s , a e ) a = (a_s, a_e) a=(as,ae) a s a_s as 表示答案在段落中开始的位置, a e a_e ae 则表示结束位置, a s a_s as a e a_e ae [ 1 , P ] [1, P] [1,P] 中的整数 。【Boundary Model 简化了整个预测答案的过程,只预测答案开始和答案结束位置,相比于 Sequence Model 极大地缩小了搜索答案的空间】
    在这里插入图片描述

这里将 Match-LSTM的输出 H ~ r \widetilde{\textbf{H}}^r H r (即上图最后一层的向量集合 { h → 10 r , h → 11 r , . . . } \{\overrightarrow{h}^r_{10},\overrightarrow{h}^r_{11},...\} {h 10r,h 11r,...} { h ← 10 r , h ← 11 r , . . . } \{\overleftarrow{h}^r_{10},\overleftarrow{h}^r_{11},...\} {h 10r,h 11r,...}) 作为这一层的输入,。

预测机制源于Pointer Network,这实际上还是一个Bahdanau Attention机制。我们再看看刚刚那个图,这里要将 X 理解为Passage,将 Y理解Answer就可以了。预测值基于上一刻的值和passage全文来决定。
在这里插入图片描述
也可以说这里将attention向量作为匹配概率输出,这个attention的大小等同于passage的长度。

在这里插入图片描述

  • k只有2个取值,即start、end;
  • H ~ r \widetilde{\textbf{H}}^r H r 是 Match-LSTM 最后的输出,即最后一层的向量集合 { h → 10 r , h → 11 r , . . . } \{\overrightarrow{h}^r_{10},\overrightarrow{h}^r_{11},...\} {h 10r,h 11r,...} { h ← 10 r , h ← 11 r , . . . } \{\overleftarrow{h}^r_{10},\overleftarrow{h}^r_{11},...\} {h 10r,h 11r,...}
  • h k − 1 a \textbf{h}^a_{k-1} hk1a :是PointerNet(指针网络)前一个时间步的隐状态向量;k只有2个取值,即start、end;
  • PointerNet是一个只含有2个神经元的RNN;
  • ⨂ e ( P + 1 ) \bigotimes \textbf{e}_{(P+1)} e(P+1) 表示在列方向拓展 P + 1 P+1 P+1 列,使得 h k − 1 a \textbf{h}^a_{k-1} hk1a H ~ r \widetilde{\textbf{H}}^r H r 维度一致。

在这里插入图片描述

  • c \textbf{c} c 表示经过了Attention后的上下文向量
  • β k , j β_{k,j} βk,j 表Passage 里的第 j j j 个 token(共 P + 1 P+1 P+1 个) 作为答案中第 k k k 个token的概率【在Boundary Model 模型中, k k k 表示 start、 k + 1 k+1 k+1表示 end)】
  • β k , ( P + 1 ) β_{k,(P+1)} βk,(P+1) 表示答案中第 k k k 个 token作为答案结束位置的概率

在这里插入图片描述

  • 根据得到的 H ~ r \widetilde{\textbf{H}}^r H r β k β_k βk h k − 1 a \textbf{h}^a_{k-1} hk1a 更新指针网络得到 h k a \textbf{h}^a_k hka
  • 根据 h k a \textbf{h}^a_k hka 再次计算得到的 F k + 1 \textbf{F}_{k+1} Fk+1
  • 根据 F k + 1 \textbf{F}_{k+1} Fk+1 计算得到 β ( k + 1 ) β_{(k+1)} β(k+1) 即为答案中的第 k + 1 k+1 k+1 个 token 在源文本所有 P + 1 P+1 P+1个token上的概率分布,得分最高的为 答案 t o k e n k + 1 a n s w e r token^{answer}_{k+1} tokenk+1answer 【在Boundary Model 模型中, k k k 表示 start、 k + 1 k+1 k+1表示 end)】所在的位置

1、Sequence Model最终计算概率

Sequence Model的答案定位计算公式如下:

在这里插入图片描述
其中:
在这里插入图片描述
k k k [ 1 , P + 1 ] [1, P+1] [1,P+1] 中某个值,当 k = P + 1 k=P+1 k=P+1 时,表示答案迭代计算答案位置概率结束。

2、Boundary Model 最终计算概率

Boundary Model 最后生成2个位置,即:start 和 end,用来表示生成序列的开始、结尾。

因为boundary model只需要生成答案的起始和终止位置,因此不用在 H r \textbf{H}^r Hr 最后加入一个零向量来表示答案生成结束。

生成答案序列的概率模型如下(答案定位计算公式):

在这里插入图片描述

最后的实验显示在片段抽取式阅读理解任务中,简化的 Boundary Model 相比于复杂的 Sequence Model 效果更好,因此 Boundary Model 也成为后来的模型用来预测答案范围的标配。

四、实验结果

在这里插入图片描述




参考资料:
【论文】Match-LSTM 机器阅读理解
Match-LSTM 阅读笔记
机器阅读理解Match-LSTM模型
跟我学算法-match-LSTM(向唐老师看齐)
QA系统Match-LSTM代码研读
Match-LSTM & BiDAF
Match-LSTM阅读理解论文笔记Machine Comprehension Using Match-LSTM and Answer Pointer
《MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER》阅读笔记
论文分享 - Machine Comprehension Using Match-LSTM and Answer Pointer
QA(二):利用Attention机制,带着问题阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值