R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS
Introduction
两个数据集
SQuAD
SQuAD全称是Stanford Question Answering Dataset,是斯坦福大学提出的基于维基百科的阅读理解数据集,非常权威。
MS-MS-MARCO
MS-MS-MARCO的全称是Microsoft MAchine Reading COmprehension dataset,主要来自于Bing搜索。主要区别在于问题的答案可能不仅仅来自给定的文本。
模型的主要构成
R-Net主要分为四个部分
- 使用循环神经网络进行语义编码层,分别对问题和答案进行语义编码
- 使用gated attention-based rnn来形成 question-aware的paragraph,将question的语义信息通过attention形式赋予到paragraph上,使得paragraph最后的语义编码是知道问题内容的;在该结构中,提出了门机制,挑选出对回答问题相关性强的语义信息部分
- Self-match layer,提高paragraph内部每个部分对全局信息的理解
- pointer-network,用于预测答案的位置
Detail
结构图
细节
1.QUESTION AND PASSAGE ENCODER
令Question的embedding结果为,Passage的embedding结果为。考虑到未登录词(OOV)的问题,令Q和P的character-level的embedding结果分别为 和 。正常情况,Q和P的字符个数会远远大于词的个数,最后character-level的embeddings却和词的embedding长度保持一致,文中交代是将字符embedding的结果通过双向RNN,取最后的隐藏层输出作为character-level的embedding结果的。
最终encode的结果是:
2.GATED ATTENTION-BASED RECURRENT NETWORKS
分为两个步骤,先将question的语义赋予到passage上,得到带有question语义的passage语义编码,再将与原来的passage语义编码结合得到question-aware的passage。
其中 是t时刻最后的passage的语义编码。因为每一时刻的 计算都需要依赖前一时刻时刻最终的
- Q中第j个词对P中第t个词的影响是多少
- 过softmax,求权重,在attention计算中经常使用
- 得到passage每个位置带有对question理解得语义编码
$v_t$的计算引入了门机制
$v_t$即为第二层最终的结果。
3.SELF -MATCHING ATTENTION
因为在考虑每个答案时,并没有注意到全文其他位置的信息,所以引入了self-match的机制。在self-match实现时,思路非常类似上面的gated attention-based rnn,只是将passage的attention对象从question换成了passage自己。
令$h_t^P$是加入了self-match信息的最终编码
而 $c_t = att(v^P, v_t^P)$就是具体self-match的实现
是不是整个过程非常类似,同时$u_t^P$的计算会继续使用2中提出的门机制。
4.OUTPUT LAYER
该层通过pointer netword输出最终的answer的位置,本来很简单,但是貌似r-net中弄的比较复杂。
其中$h_t^a$表示pointer network中rnn部分的hidden state
- 从论文推测,此处的rnn的timestep是2,分别是answer的开始和结束的位置。
pointer network初始的hidden state
- 将question进行加权作为pointer network的输入。
总结
- character embedding,如果只用subword还是不能解决OOV的问题,character能够完全解决OOV,但是效果不一定会好;将character embedding作为一维特征是比较好的思路
- attention的方式没什么创新,加入了门机制,本质上其实是增加了参数,使得网络更加复杂了。有没有文中所说的信息筛选的效果值得思考
- self-match
- 三层均采用了相同的attention的计算方式