EMNLP2019 | What's Missing? A Knowledge Gap Guided Approach for Multi-hop Question Answering

Title: What’s Missing: A Knowledge Gap Guided Approach for Multi-hop Question Answering
Authors: Tushar Khot, Ashish Sabharwal, Peter Clark
Org.: Allen Institute for Artificial Intelligence
Published: EMNLP, 2019

Code: https://github.com/allenai/missing-fact

Motivation

大多数的RC任务/数据集假设给待测试系统(或模型)提供了回答问题所需要的所有知识。
实际上,在处理multi-hop类型的问题时,模型只能接触到部分的知识,那么想要正确地回答数据集中的问题,就必须基于问题和提供的知识,抽取出额外的知识/事实。
正是这部分额外的知识的存在,造成了 knowledge gap 问题。

本文对knowledge gap问题展开研究,目标是确定这样的 gap,并且利用额外的知识源填充这个 knowledge gap。

本文主要研究的数据集是 OpenBookQA[1],可以看做是一类 提供了部分知识的QA任务
OpenBookQA数据集的主要特点是:

  1. 问题的领域是科学事实
  2. 回答问题时,不仅需要从一个给定的 small book 中确定相关的核心科学事实(core science fact),还需要从外部的知识源中抽取出额外的常识知识。
    1. 这里的core fact就是数据集本身提供的partial knowledge
    2. 额外的外部知识 (broad external knowledge),用以填充余下的 knowledge gap

OpenBookQA(OBQA) 中的 Knowledge Gap 示例:example

This Work

本文的主要工作:

  1. 在 OBQA 的基础上对 Knowledge Gap 进行了分析和标注,并发布了带标注的数据集;
  2. 提出了一个 two-step 方法,即先确定再填充(Knowledge Gap)的方法解决 Multi-hop QA 任务;
    1. 第一步,确定 knowledge gap:在 core fact 中预测一个 key span;
      • 这一步实际上是阅读理解中 span extraction 类型任务,本文中使用了 BIDAF 模型;
    2. 第二步,填充 knowledge gap:确定 key span 和候选项之间的关系,然后回答问题;
      • 具体分为3个子步骤:(a) 从 ConceptNet/text corpora[2] 中抽取相关知识;(b) 预测 key span 和 候选答案之间的潜在关系;(c) 组合 core fact 和 抽取的外部知识来填充gap;
      • 这一步中,采取multi-task学习,联合学习 gap 的关系预测 和 最终的答案预测;
  3. 提出了一个模型,同时学习使用抽取得到的 external knowledge,并与 partial knowledge 组合来填充 knowledge gap;

Knowledge Gaps

Understanding Gaps

针对 OBQA 任务,可以将 Knowledge Gap 分为三类(见下面的 Figure-2),这种分类也适用于其他的multi-hop QA数据集。

  • gap-class-all
  • 注:OBQA中的核心组成部分:数据集中显示给出的1、Question;2、Answer Choices;3、Fact;以及未在数据集中出现但是对回答问题重要的4、external knowledge;

Question-to-Fact : 存在于问题中的概念(concept)和 core fact 之间;

  • 例如: gap-1

Fact-to-Answer : Gap 捕捉的是 core fact 中的概念和候选答案之间的关系;

  • 例如: gap-2
  • fact 中的概念可能和不正确的选项之间也存在关系

Question-to-Answer (Fact) : 基于 core fact,问题中的概念和候选答案需要额外的知识(gap)来建立联系;

  • 例如: gap-3

根据抽样统计,在OBQA中 Q2F(44%) 和 F2A(86%) 这两种Gap比较常见,Q2A(<20%) 类型比较罕见,一些问题可能存在多种gaps。

本文只关注 Fact-to-Answer gap,并且假设所需的 core fact 已经给定。

Knowledge Gap Dataset: KGD

(文章中介绍了采取众包对数据集中每个样例的knowledge gap进行标注的细节,具体细节请参考文章的 Section 3.2 以及 Appendix A。这里直接介绍标注得到的数据集KGD)

在KGD中,包含了 Key Span 和 relation label 的标注,用以表示knowledge gap。

  • span 是 fact 的子串,relations 是 span 和正确答案之间的关系集合
  • KGD示例:kgd
  • KGD数据统计:kgd-s

Knowledge-Gap Guided QA: GapQA

模型介绍中涉及的符合及其含义:

  • question $q$;fact $f$;selected span $s$;set of relations between span and correct choice $r$;answer choices $c$;question stem $q_s$
    • 其中:$q=q_s c$
  • tokens in question stem $q_m$;tokens in fact $f_m$;
  • predicted span $\hat{s}$;predicted relations $\hat{r}$

1.Key Span Identification Model

模型采用 BIDAF;
训练时,模型的输入为:fact(对应于passage),question stem(对应于question),模型的输出是 key span 的起止位置;

2.Knowledge Retrieval Module

给定一个预测的span,从两个知识源中抽取知识,用 $K$ 表示所有抽取到的知识:

  1. ConceptNet 中的三元组,三元组中的relation与gap需要的relation密切相关;
  2. ARC corpus 中的句子,ARC corpus 包含 14M 科学相关的句子,用来补充 CN,提高recall;

Tuple Search

  1. 选择tuple时,要求subject中至少有一个token 与 $\hat{s}$ 匹配,object中至少有一个词与 $c_i$ 匹配(反之亦然);
  2. 通过 Jaccard score 对于tuples进行打分,为每个候选选项 $c_i$ 选择出 top-k 个 tuples(在实验中,k=5)
    • $\text{Jaccard score}(t) = \text{jacc}(\text{tokens}(t), \text{tokens}(\hat{s} + c_i))$
    • $\text{jacc}(w_1, w_2) = \frac{w_1 \cap w_2}{w_1 \cup w_2}$
  3. 为了知识形式的一致性,将三元组也转化为句子的形式;

Text Search

  1. 使用 ElasticSearch 进行相关句子的检索,查询为:$\hat{s} + c_i$:
  2. 为每个候选选项 $c_i$ 选择出 top-5 个句子

3.Question Answering Module

模型结构图: kgg-qa-module

本模块的输入为:$q_s$, $c$, $f$, $\hat{s}$, $K$;

计算过程如下:

Step 1. Embedding: 使用 300维 的glove 词向量表示输入中的每个词

Step 2. Encoding: 使用 BiLSTM 计算上下文编码,隐藏层维度为100,用 $\mathcal{E}_*$ 表示 BiLSTM 的输出

Step 3. Fact Relevance:

出发点:一个相关 fact 可以捕捉到与问题和正确答案对齐的概念间的关系;

  1. 计算 question-weighted 和 answer-weighted fact表示;
    • question-weighted fact repr.
      • $\mathcal{A}_{q_s,f} = \mathcal{E}_{q_s} \cdot \mathcal{E}_f \in \mathbb{R}^{q_m \times f_m}$
      • $\mathcal{V}_{q_s}(f) = \text{softmax}_{f_m}(\text{max}_{q_m} \mathcal{A}_{q_s,f}) \in \mathbb{R}^{1 \times f_m} $
      • $\mathcal{S}_{q_s}(f) = \mathcal{V}_{q_s}(f) \cdot \mathcal{E}_f \in \mathbb{R}^{1 \times h}$
    • choice-weighted fact repr. $\mathcal{S}_{c_i}(f)$
      • 同样的计算方式,将 $q_s$ 的表示替换为 $c_i$
  2. 组合计算的 fact-based 表示,确定 fact 对 choice 的支持程度;
    • 组合两种 fact 表示:$\mathcal{S}_{q_s c_i}(f) = (\mathcal{S}_{q_s}(f) + \mathcal{S}_{c_i}(f))/2$
    • 计算候选答案的打分:
      • $\text{score}_f(c_i) = \text{FF}(\bigotimes( \mathcal{S}_{q_s c_i}(f) , \text{avg} \mathcal{E}_f))$
      • $\bigotimes(x,y) = [x-y; x \ast y] \in \mathbb{R}^{1 \times 2h}$
      • $\text{FF}$ 是 前馈神经网络,输出一个标量值;

Step 4. Filling the Gap:

实现上是预测 $\hat{s}$ 和 $c_i$ 之间的关系,并将关系和fact进行组合,为choice进行打分

  1. 计算 span weighted 和 choice weighted KB知识句表示 ($\in \mathbb{R}^{1 \times h}$),反映知识句中的词分别和 span 以及 choice 的相关程度
    • $\mathcal{S}_{\hat{s}}(k_j) = \mathcal{V}_{\hat{s}}(k_j) \cdot \mathcal{E}_{k_j}$
    • $\mathcal{S}_{c_i}(k_j) = \mathcal{V}_{c_i}(k_j) \cdot \mathcal{E}_{k_j}$
  2. kb-based relation repr.:
    • $\mathcal{R}_j (\hat{s}, c_i) = \text{FF}(\bigotimes(\mathcal{S}_{\hat{s}}(k_j), \mathcal{S}_{c_i}(k_j)) ) \in \mathbb{R}^{1 \times h}$
  3. 聚集所有KB知识句的relation repr.:
    • $\mathcal{R}(\hat{s}, c_i) = \text{avg}_j \mathcal{R}_j (\hat{s}, c_i)$

Step 5. Relation Prediction Score:

  1. 基于问题,确定/预测与fact信息相符合的relation信息 (通过聚集问题和fact的表示来捕获这个信息)
    • $\mathcal{D}(q_s, f) = \bigotimes(\text{max}_{q_m} \mathcal{E}_{q_s}, \text{max}_{f_m} \mathcal{E}_{f}) \in \mathbb{R}^{1 \times 2h}$
  2. 基于fact信息和relation表示,对每个候选项进行打分
    • $\text{score}_r(c_i) = \text{FF}([\mathcal{D}(q_s, f); \mathcal{R}(\hat{s}, c_i)])$

Step 6. Final score for each choice: $\text{score}(c_i) = \text{score}_f(c_i) + \text{score}_r(c_i)$

4. Model Training

GapQA 中 Question Answering Module 的总训练 loss 由两部分组成:

  1. 模型预测的答案和正确的答案选项之间的交叉熵损失
  2. 模型预测的relation(span 和 候选项之间)与正确relation之间的损失:
    • 为了计算这部分的损失,使 $\mathcal{R}(s,c_i)$ 通过一层的ffn,映射为向量 $\hat{r}_i \in \mathbb{R}^{1\times l}$,$l$ 是 relation 的个数;
    • 由于$(s,c_i)$对之间可能存在多个有效的relation,创建一个 n-hot 向量表示 $\bar{r} \in \mathbb{R}^{1\times l}$,如果 relation $r_k$ 是有效的,则令 $\bar{r}[k] = 1$;
    • 对于正确的选项(即问题的目标答案),使用 binary cross-entropy 计算预测的 $\hat{r}_i$ 和 $r$ 之间的损失;
    • 对于不正确的选项,无法确定 span 和选项之间的relation关系(不存在标注信息),但是针对正确答案选择出的 relations set 不应对错误选项有效。故此,使用 binary cross-entropy 计算预测的 $\hat{r}_i$ 和 $1-r$ 之间的损失,并且不考虑未被选中的 relation,即使用 masked binary cross-entropy;
    • (这里选中的 relations 指的是:KGD中对 key span 和 correct choice 之间标注的relation集合)

最终,总体的 $loss = ce(\hat{c}, \bar{c}) + \lambda \cdot (bce(\hat{r}_i, \bar{r}) + \sum_{j\neq i} mbec(\hat{r}_j, 1-\bar{r}, \bar{r}) )$

为了更清晰的理解模型的整体计算流程,附录中给出了一个可视化的示例:eg-vis

Experiments

  1. Key Span Identification 效果:exp-span
  2. 在 OBQA 数据集上的结果:exp-main
  3. 输入知识源的影响:exp-k
  4. 模型去除实验:exp-a
  5. 错例分析:exp-error

主要存在三种错误类型:
(1) Incorrect predicted spans (25%)
(2) Incorrect relation scores (55%)
(3) Out-of-Scope Gap relations (20%)

Analysis & Summary

  • 这篇文章,对于 OBQA 类 partial knowledge multi-hop QA 的任务,引入了一个新颖的问题定义,旨在刻画QA任务中知识缺失的本质问题,并对这个问题进行了细致化的分类。不仅给出了可引入监督信息的标注过程和相应的数据集,同时也提出了有说服力的模型;

  • 本文中只对最常见的 Fact-to-Answer Gap 问题进行了研究,针对其余两种 knowledge gap 的解决方案同样值得后续的研究;

    • 针对MCQ类任务,才会存在涉及到 Answer 的 Gap,那么如果在任务中未给出候选答案的情况下,
  • 从解决方法上看,先确定在填充整体上为pipline的形式,在实验部分没有看到使用标注的gold span进行GapQA计算的结果?


  1. 1.Can a suit of armor conduct electricity? A new dataset for open book question answering. 2018. Todor Mihaylov, Peter Clark, Tushar Khot, and Ashish Sabharwal. In EMNLP.
  2. 2.Think you have solved question answering? Try ARC, the AI2 reasoning challenge. 2018. Peter Clark, Isaac Cowhey, Oren Etzioni, Tushar Khot, Ashish Sabharwal, Carissa Schoenick, and Oyvind Tafjord. CoRR, abs/1803.05457.
**** END of This Post. Thank for Your READING ****
If you have any Question, welcome to Email me or leave your comments below.