该文由MSRA发表,在SQuAD数据库上目前成绩最好。模型借鉴了Wang&Jiang最早的match-LSTM方法,做了一些改进,网络结构分为以下四部分:
部分方法可参考Wang&Jiang论文《Machine Comprehension Using Match-LSTM and Answer Pointer》
在SQuAD数据库中,一个case为可以用一个三元组表示(P,Q,A):P表示段落(passage),Q表示问题(Question),A表示答案(Answer)。另外,答案通常是在段落中连续出现,且答案较多样化,包含非命名实体以及长短语等特殊情况。
输入问题 Q=wQtmt=1 Q = w t Q t = 1 m 和段落 P=wPtnt=1 P = w t P t = 1 n ,分别进行word-level编码和character-level编码,得到向量 e e 和 c c 。这里character-level编码主要是为了应对OOV的影响,以往OOV词向量直接就是0,这里可以缓和OOV的影响。之后,利用两个双向RNN网络分别对question和passage再编码。另外,作者在这里选用了GRU单元,而不是LSTM,原因在于GRU计算量更小。
首先,仍然是match-LSTM模型中的attention关联层, ct=att(uQ,[uPt,vPt−1]) c t = a t t ( u Q , [ u t P , v t − 1 P ] ) 是question的attention向量,如下:
之后是门机制的引入,主要用于控制passage表示的不同部分重要性,如下:
之后, [uPt,ct]∗ [ u t P , c t ] ∗ 将代替 [uPt,ct] [ u t P , c t ] 继续传播。
上面的问题注意力段落表示(question-aware passage representation)有一些局限性:只能获取到有限的段落上下文信息。很多时候,段落和问题存在句法和词汇上的区别,段落的上下文信息将更能有效帮助模型找到正确答案。
这一层与上面的门限注意力层大体结构相同,只不过将输入变为 vp v p 和 vp v p , ct=att(vP,vPt) c t = a t t ( v P , v t P ) 是passage( vp v p )的attention向量,如下:
之后和gated-attention层同样引入门机制,自适应控制不同部分的重要性。
这部分与之前的match-LSTM等论文相同,使用Pointer-Network网络,即直接将attention向量当做候选位置的概率,共输出两个位置:答案起始和结束。
唯一一点区别是初始化,即在预测答案起始位置的时候, hat−1 h t − 1 a 从何处来?一般应该是随机初始化的,这里使用passage attention机制生成一个question向量 rQ=att(uQ,VQr) r Q = a t t ( u Q , V r Q ) ,其中, VQr V r Q 是一个可变参数,如下:
至于损失函数,与match-LSTM论文中一样,使用对数损失函数。
无论是single model,还是ensemble model,R-NET都取得了至今为止最好的效果。
语句排名(Sentence Ranking)。实验发现,段落总是包含多个句子,并且答案往往在一个句子中,故而考虑能否引入句子排名机制,先初步筛选出可能性最大的句子,再从对应句子中进一步定位答案。作者尝试了两种方法:1. 单独训练一个句子排名模型;2. 将句子排名模型和片段抽取模型关联起来,训练一个联合模型。但这两种方法效果都较差,并未达到预期。这或许说明额外的句子信息仍然对答案抽取有帮助。
句法信息(Syntax Information)。实验尝试引入句法信息到编码层,如:增加词性、命名实体、依赖关系等特征到编码层;之后,引入新的tree-LSTM模型,自顶向下和自底向上构建网络。实验证明,这种方法并未对当前模型有任何增益。
多跃点推理(Multi-hop Inference)。尝试在答案指针层引入multi-hop推理机制,但无效果提升。作者认为可能是模型过于复杂,问题无法有效地学习。
注:在论文《Reinforced Mnemonic Reader for Machine Comprehension》中,整个模型都引入了multi-hop机制,可以参考
问题生成(Question Generation)。深度神经网络是一种数据驱动的方法,数据质量和数据大小对于最后的结果具有至关重要的作用,作者尝试手动生成一些假的问题和答案对,与SQuAD数据库共同训练,但最后并未有任何效果提升。分析证明,这些自动生成的数据质量仍然有待提高。