Hierarchical Graph Network for Multi-hop Question Answering

HGN

由4个模块组成:

  1. Graph Construction Module
  2. Context Encoding Module
  3. Graph Reasoning Module
  4. Multi-task Prediction Module

Graph Construction

  1. 找到最相关的段落

    1. 训练了一个Roberta + binary_cls 检索相关的段落(匹配段落标题和问题)
    2. 如果多个都相关,则选择得分最高的两个
    3. 如果title matching没有结果,那么找包含问题实体的段落
    4. 如果实体也没有结果,那么只用段落匹配的烦最高的两个(first hop)

    接下来是第二跳,寻找能够链接到其他相关段落的facts and entities

    1. entity linking 可能引入噪音, 直接使用wikipedia中的超链接找第二跳的段落
    2. 在含有超链接的句子和链接到的段落之间添加双向边
  2. 为上一步中相关的段落和其中的实体之间添加边

    paragraphs -> sentences -> entities

    1. 每个段落节点,添加到包含的句子的节点的边
    2. 每个句子节点,抽取所有实体,并添加边
    3. 段落之间,句子之间也可以有边

    不同类型的节点从不同的信息源捕获语义, 能比只有同类节点的图更精确地定位证据和找到答案

image-20200708151430988.png

定义了七种边:1. question-paragraph 2. question - its inner entities 3. paragraph - its inner entities 4. sentence - their linked paragraph 5.sentence - its inner entities 6. paragraph-paragraph 7. sentence -sentence (appear in the same paragraph)

Context Encoding

​ 把所有段落拼接起来得到 context 再拼接上question 输入RoBERTa, 后面再接一个Bi-attention layer。 , , m,n 分别是 question 和 context的长度。

​ 在C后用BILSTM, 从BiLSTM的输出 中得到不同节点的表示。entity/sentence/paragraph是context中的一个区域,表示的计算方式:1. 反向LSTM 在开始处的隐藏状态 2. 前向LSTM在结束位置的隐藏状态。 而对于question节点,使用max-pooling获得其表示。

Graph Reasoning

contextualized representations of all the graph nodes are transformed into higher-level features via a graph neural network.

, , , 分别是图中该类型节点的个数, 实验中分别设置为4, 40, 60 (padded where necessary). , 其中。

​ 使用GAT进行图中的信息传播。GAT 将所有节点作为输入,通过对应的邻居节点更新每个节点的表示 。

是 实体类型节点中第i和第j个节点之间边的权重。 是LeakyRelu。

在图推理之后,我们得到

门注意力 图的信息将进一步交互上下文信息来预测答案区域:

其中 都是需要学习的权重, 是gated representation ,可以用来做答案区域抽取。

多任务预测

​ 图推理之后,更新过的节点表示被用于不同的子任务:1.paragraph selection based on paragraph nodes; 2.supporting facts prediction based on sentence nodes; 3.answer prediction based on entity nodes and context representation 。

​ 由于答案可能不太实体节点中, 实体节点的损失只用作正则项。最终的目标函数:

对于段落选择 ()和支持证据预测()使用两层MLP作为二分类器。

实体预测()被视作多标签分类任务,候选实体包括问题中的所有实体和those that match the titles in the context。 如果正确答案不在这些实体节点中,则实体损失函数为0.

实体损失值只作为正则项,最终的答案预测只依赖下面的答案区域抽取模块。每个位置上是答案开始或结束的概率也用两层MLP计算:

对于答案类型预测,span, entity, yes, no

最终的交叉熵损失使用以上的logits计算:

实验

image-20200708184940036.png

Hotpot QA

image-20200708185014809.png

Fullwiki setting.

image-20200708185302850.png

表3:PS Graph 只有问题到段落,段落到句子的边(边的类型:1,3,4); PSE 加入了Entity相关的,边的类型增加了 2,5 ; 最终的HGN 再多了6,7两种类型的边。

表4:验证了损失函数设计的有效性

表5:不同预训练模型的效果

image-20200708185937540.png

错误分析:pass

结论

本文提出了层叠图网络 HGN, 为了从不同粒度级别获取线索,HGN模型将异质节点放进一个图中。实验在HotpotQA 取得了最好成绩(2019 Dec)。现在fullwiki setting, 现成的段落检索器被用来从大规模语料文本中选择相关的context。未来将探索HGN和段落检索器之间的交互和联合训练。

你可能感兴趣的:(Hierarchical Graph Network for Multi-hop Question Answering)