这篇论文针对SQuAD数据集的特点提出了一个端到端的网络结构。相比于之前提出的其它阅读理解模型,本模型没有答案的候选集,同时答案不限定在一个词语。本模型综合了作者之前提出的match-lstm和Pointer-net,后者是为了限定答案在问题中提取。模型相比于SQuAD数据集作者在论文中提出的逻辑回归模型要有显著的提升。
问题陈述:给定一个passage,用一个d*P的矩阵表示,d表示词向量的维度,P表示passage的长度。给定一个question,用一个d*Q的矩阵表示,Q是问题的长度。输出答案,其中
表示passage中词的序号;或者输出答案
,其中
分别表示答案在P中的起始和结束的位置。这两种输出方式对应两个不同的输出层模型(sequence model和boundary model)。因而训练集可以表示为
。
模型可以大致分为三层:第一层用一个单向LSTM得到P和Q中每一个term的表示,这个表示融合了上下文信息(实际上用单向LSTM相当于融合上文信息)。得到和
,其中l表示的是隐含层向量维度。经过第一层之后,P中的每一个词的表示
只蕴含了passage的上下文信息,接下来要做的是将question的信息融入进来重新表示每一个
。第二层就是match-lstm层,对于passage中的第i个词,考虑到question中每个词和它的匹配程度不同,因而融入question信息时考虑引入attention机制。具体attention的计算方式为:
其中都是训练的参数,
在之后会求得。这里在计算第question中各个词相对passage中第i个词的attention值时引入了question中的所有信息,以及前i-1个词与question的匹配信息,最终输出的
维度为Q,代表question中各个词的attention值。最后将question中的词根据attention计算加权和,与passage中第i个词原本的表示拼接起来,就得到了第i个词融合question信息的新表示
。再在
上应用LSTM模型:
将组成的矩阵称为
。最后,用相同的方法,从另一个方向计算,得到
,将他们拼接起来得到最终的match-lstm层输出
。
在经过match-lstm层得到passage中每一个词融合了question信息后的最新表示之后,就可以进入输出层了。对于sequence model的输出层,利用类似attention的计算思路计算,意为选取passage中的第j个词作为answer中的第k个词的概率,其中j的取值范围为1到P+1,当j取P+1时意味着选词结束。计算公式如下所示:
这里的时上述的
与一个一维0向量拼接成的
矩阵,
包含着前k-1个选词信息,计算方式如下
因而最终选定答案的概率为
另外对于boundary model而言,不需要预测每一个词的位置,只需要预测开始与结尾的位置即可,方式与sequence的类似。在此基础上,由于预测开头和结尾只需要预测两个值,个数是确定的(sequence model不知道要预测多少个值),因而可以将sequence的方法改进成双向的。除此之外,还可以对开始和结尾之间的范围大小做一个限定,限定依据通过一个全局的搜索,找到一个最优的大小,计算方式是取最大的范围。