match-LSTM论文笔记

Match-LSTM with Ans-Ptr论文笔记

MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER》论文笔记

Overview

本文是在SQuAD v1.1数据集出世后第一个采用end-to-end的深度学习方法的paper。模型的主要结构是对已有的两个模型的结合:match-LSTM(Jiang&Wang, 2016)和Pointer Net(Vinyals et al., 2015)。相较于人工feature engineering + LR的传统机器学习方法,本文提出的方法在SQuAD数据集上取得了很大成功,在exact match和F1 score上都有质的飞跃。

Model Architecture

正如Overview中所提到的,模型的核心组件主要有两个:match-LSTM、Pointer Net。match-LSTM主要是用来提取query和passage之间的关系,Pointer Net主要是用来输出answer。具体来说,模型有三层:

  1. LSTM Preprocessing Layer
  2. match-LSTM Layer
  3. Answer Pointer Layer

根据Pointer Net中任务的不同,本文又将模型分为两种:Sequence Model和Boundary Model,后面会细说。

在这里插入图片描述

​ Figure 1

LSTM Preprocessing Layer

首先,文中用一个单向的LSTM分别对passage和query进行embedding,这里的embedding是独立的。
H P   =   L S T M → ( P )   =   [ h 1 P → , h 2 P → , … , h N P → ] H Q   =   L S T M → ( Q )   =   [ h 1 Q → , h 2 Q → , … , h N Q → ] H^{P}\ =\ \overrightarrow{LSTM}(P)\ =\ [\overrightarrow{h_1^{P}}, \overrightarrow{h_2^{P}}, \dots,\overrightarrow{h_N^{P}}] \\ H^{Q}\ =\ \overrightarrow{LSTM}(Q)\ =\ [\overrightarrow{h_1^{Q}}, \overrightarrow{h_2^{Q}}, \dots,\overrightarrow{h_N^{Q}}] \\ HP = LSTM (P) = [h1P ,h2P ,,hNP ]HQ = LSTM (Q) = [h1Q ,h2Q ,,hNQ ]
H P H^{P} HP H Q H^{Q} HQ分别代表passage和query的隐状态矩阵。

match-LSTM

match-LSTM模型(Bidirectional)也是本文作者提出的,原来是用于文本蕴含任务,即给定一个premise和一个hypothesis,让模型去判断premise和hypothesis之间的关系(蕴含关系 entailment / 矛盾关系 contradiction)。因此这里作者把query当作是premise,passage当作是hypothesis。而关系的计算使用的是attention mechanism。
G i →   =   t a n h ( W q H q + ( W P h i P + W r h i − 1 r + b p ) ⨂ e Q ) α i →   =   s o f t m a x ( w T G i → + b ⨂ e Q ) \overrightarrow{G_i}\ =\ tanh(W^{q}H^{q}+(W^{P}h_{i}^{P}+W^{r}h_{i-1}^{r}+b^{p})\bigotimes e_{Q}) \\ \overrightarrow{\alpha_{i}}\ =\ softmax(w^T\overrightarrow{G_i}+b\bigotimes e_{Q}) Gi  = tanh(WqHq+(WPhiP+Wrhi1r+bp)eQ)αi  = softmax(wTGi +beQ)
本文中所使用的attention的计算方式应该是additive, W q 、 W p 、 W r W^{q}、W^{p}、W^{r} WqWpWr是三个参数矩阵, ⨂ e Q \bigotimes e_{Q} eQ表示将 Q Q Q个左边的式子concat起来。于是我们就得到了对于passage中的每个单词 h i P h^{P}_{i} hiP,它与query中所有单词之间的关系 α i → \overrightarrow{\alpha_{i}} αi 。然后用attention计算weighted sum H q α → i T H^{q} \overrightarrow{\alpha}^{T}_{i} Hqα iT,最后将weighted sum和 i i i位置上passage中单词的hidden state concat起来得到 i i i时刻match-LSTM的输入
z i →   =   [ h i P ; H q α → i T ] h → i r   =   L S T M → ( z i → , h → i − 1 r ) \overrightarrow{z_{i}}\ =\ [h_{i}^{P};H^{q} \overrightarrow{\alpha}^{T}_{i}] \\ \overrightarrow{h}_{i}^{r}\ =\ \overrightarrow{LSTM}(\overrightarrow{z_i},\overrightarrow{h}_{i-1}^{r}) zi  = [hiP;Hqα iT]h ir = LSTM (zi ,h i1r)
反方向计算同理。其实到这里就不难发现match-LSTM本质上就是一个Seq2Seq模型。

Answer Pointer Layer

从Figure 1中可以看出,Answer Pointer Layer有两种形式,根据形式的不同模型也分别成为Sequence Model和Boundary Model。

Sequence Model

Sequence Model所作的任务是在passage中找到一个序列 a   =   ( a 1 , a 2 , …   ) a\ =\ (a_1,a_2,\dots) a = (a1,a2,)作为answer。由于answer的长度不是固定的,因此我们需要在原来的passage中加入一个end token(文中用0向量来表示),于是passage的长度变为 P + 1 P+1 P+1,并且 H r H^{r} Hr变为 H ^ r = [ H r ; 0 ] \hat{H}^{r}=[H^{r};0] H^r=[Hr;0]。接下来的流程与match-LSTM有很多相似之处。为了生成答案中的第 k k k个单词,我们依然仿照Seq2Seq Decoder的方式进行计算。令 β k , j \beta_{k,j} βk,j表示选取passage中第 j j j个单词作为答案的第 k k k个单词的概率, β \beta β的计算方式与上面相同
F k   =   t a n h ( V H ^ r + ( W a h k − 1 a + b a ) ⨂ e ( P + 1 ) ) β k   =   s o f t m a x ( v T F k + c ⨂ e ( P + 1 ) ) F_{k}\ =\ tanh(V\hat{H}^{r}+(W^{a}h^{a}_{k-1}+b^{a})\bigotimes e_{(P+1)})\\ \beta_{k}\ =\ softmax(v^{T}F_{k}+c \bigotimes e_{(P+1)}) Fk = tanh(VH^r+(Wahk1a+ba)e(P+1))βk = softmax(vTFk+ce(P+1))
然后再将weighted sum H ^ r β k T \hat{H}^{r} \beta_{k}^{T} H^rβkT作为LSTM的输入得到第 k k k个answer的hidden state
h k a   =   L S T M ( H ^ r β k T , h k − 1 a ) h^{a}_{k}\ =\ LSTM(\hat{H}^{r} \beta_{k}^{T},h_{k-1}^{a}) hka = LSTM(H^rβkThk1a)
本质上Pointer Net是一个语言模型,因此我们可以直接根据链式法则写出目标函数:
p ( a ∣ H r )   =   ∏ k p ( a k ∣ a 1 , a 2 , … , a k − 1 , H r ) p ( a k = j ∣ a 1 , a 2 , … , a k − 1 , H r ) = β k , j p(a|H^{r})\ =\ \prod_{k}p(a_k|a_1,a_2,\dots,a_{k-1},H^{r})\\ p(a_k=j|a_1,a_2,\dots,a_{k-1},H^{r})=\beta_{k,j} p(aHr) = kp(aka1,a2,,ak1,Hr)p(ak=ja1,a2,,ak1,Hr)=βk,j
然后用MLE,优化目标函数得到参数即可。

Boundary Model

Boundary Model和Sequence Model唯一的区别就是Boundary Model预测的是answer的start和end,然后取start到end之间的单词作为答案。这种方式叫做span extraction,也是在SQuAD数据集最常用的方式。此时目标函数也就变成了
p ( a ∣ H r )   =   p ( a s ∣ H r ) p ( a e ∣ a s , H r ) p(a|H^{r})\ =\ p(a_s|H^{r})p(a_e|a_s,H^{r}) p(aHr) = p(asHr)p(aeas,Hr)

Experiment

在实验中,作者用Glove作为word embedding。

在这里插入图片描述

实验结果很清晰地说明了本文提出的方法相较于LR的baseline有了巨大的提升,EM 67.9%、 F1 77.0%。

同时作者将attention进行了可视化

在这里插入图片描述

也能够看出来attention的确是比较准确的把握到了query与passage中单词之间的联系。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值