多文档问答是自然语言处理领域近期比较火热的一个研究问题,不同于传统的问答系统,多文档问答需要模型从数个文档中协同地寻找问题的答案,这对模型的多跳推理能力提出了很高的要求。基于文本的问答是自然语言处理领域的一个经典问题,大多数现有的方法都是侧重于在一段话中找到问题的答案。然而在实际的生活中,许多困难的问题往往需要在两个甚至多个文档中的文本中寻找答案的证据。
为了推动这类困难问题的进一步研究,在去年的EMNLP 2018上,杨植麟等人提出了HotpotQA数据集。为了回答问出的问题,一个模型往往需要处理给出的全部的参考段落,在其中找到答案存在的证据。为了解决这类问题,这篇论文便提出了一个叫做动态融合图网络的模型。
这个模型受人类一步步推理行为的启发,首先为文档中出现的实体构建图网络,之后从给定问题中提到的实体出发,沿着文档构造的实体图出发进行搜索,逐步给出文档中找出的相关实体作为最终答案。因为不是每个段落都和最终的问题相关,我们需要对段落们进行选取,仅仅选择那些相关的段落。这里论文作者使用了预训练的BERT后面跟一个句子分类层,来预测每一个段落相关的概率。
如果一个段落里至少有一句话是和问题相关的,那么这个段落的标签就设为1。作者首先使用斯坦福的NLP工具包对相关段落进行命名实体识别,识别出的每一个实体便作为图的一个节点。在以下三种情况会为两个实体之间添加一条边:两个实体出现在同一个句子中;同一个实体的每个表示;一个段落中的主实体和该段落中的其余实体。作者选取预训练的BERT为每个问题和选择的段落进行编码,获取其表示。
之后在经过一个双向注意力机制层,来增强问题和段落之间的联系。融合块的推理是一个多跳的循环过程。首先对于段落会有一个Doc2Graph的过程,每个实体的表示由其对应的词的表示变换而来。然而并不是每一个实体都和问题是同等相关的,因而在此之后会有一个注意力网络来做soft mask。之后会在实体图上计算任意两个实体之间的注意力权重,方法类似于之前的GAT。
下一步为通过新的实体表示和双向注意力机制对问题的表示进行更新。之后经由一个LSTM网络,我们可以用实体图的信息更新段落的表示。这里的M矩阵的含义为:如果段落中的第i个单词在第j个实体对应的mention中,那么M_ij为1,否则为0。作者使用最后一层的输出作为预测层的输入,相关句子、答案开始位置、答案结束位置和答案种类的logits分别如下。最终使用这4个联合做交叉熵损失函数。
作者在HotpotQA数据集上做了实验,在private test set上的实验结果如下。可以看出本论文提出的方法还是能够很好地解决多文档问答问题的。