《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

Learning to Answer Complex Questions over Knowledge Bases with Query Composition

这是一篇密歇根安娜堡发表在CIKM上的文章,主题为KBQA,依然是SP-based。

Overview

这篇文章处理的是复杂问题,主题方法还是通过SP生成query graph,然后使用神经网络的方法进行语义匹配找到最佳的查询图,最后在KB中执行。但是本文的最大创新点在于:作者假设complex question可以被分解为多个simple question。其实这个假设是很合理的,之前的几篇文章曾经总结过复杂问题的主要特点,无外乎就是entity、relation、constraint变多了,需要多跳推理,这也会使得每个问题的search space呈指数级增长。因此本文在所做的就是把多跳推理转化为多个单跳推理,这样一来,search space能大大减小,并且query graph的生成也变得简单。于是,本文的主要问题就转化为了怎么找partial question和怎么根据partial question得到原问题的答案(或者说怎么对partial questions进行composition操作)。

本文的contribution如下:

  1. 设计出了TextRay,一个end-to-end的KBQA系统,可以将问题翻译为可在KB中执行的query
  2. 提出了decomposition-join-execute的方法来通过partial questions构建complex query
  3. 使用了神经网络的semantic matching模型对候选的partial question进行筛选

Approach

首先来看一下整个系统的结构图

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

总的概括一下,这个系统有两大核心组件:

  • Query Composition:给定一个问题 Q Q Q,我们希望得到对应的query graph G G G,那么本文的做法是根据computation plan生成一系列的partial query { G i } i = 1 L \{G_{i}\}_{i=1}^{L} {Gi​}i=1L​,我们后面会说什么是computation plan,这里可以暂时理解为partial query的执行步骤。而在每一步,我们都会生成top-k的candidate,因此表示为 G i ( k ) G_{i}^{(k)} Gi(k)​。然后最优的 M M M个会被执行得到相应答案,这些答案会被用来生成第 i + 1 i+1 i+1步的partial query。
  • Semantic Matching:这一部分就是使用神经网络去求 S s e m ( Q , G i ( k ) ) S_{sem}(Q,G^{(k)}_{i}) Ssem​(Q,Gi(k)​),得到每一步的最优的candidate。

Query Composition

首先来看之前留下的概念:computation plan,包含两个操作: s i m Q A simQA simQA和 j o i n join join。 s i m Q A simQA simQA就是生成子问题,而 j o i n join join可以理解为一个条件,代表两个子问题之间互相独立。对于每个问题 Q Q Q,作者使用argumented pointer network来生成computation plan z   =   z 1 z 2 … z n z\ =\ z_{1}z_{2}\dots z_{n} z = z1​z2​…zn​, z i ∈ { s i m Q A ,   j o i n } z_{i} \in \{simQA,\ join\} zi​∈{simQA, join}。这样一来computation plan其实有两种结构

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

一种是(a)这样的并列式,另一种就是(b)这样的递进式。

Partial Query Generation

定义两个集合:

  • 状态集合 S S S: { ϕ ,   S e ,   S r ,   S c ,   S t } \{\phi,\ S_{e},\ S_{r},\ S_{c},\ S_{t}\} {ϕ, Se​, Sr​, Sc​, St​},分别代表空问题、单个实体、单条关系路径、单个限制、终止状态。当达到终止状态 S t S_{t} St​,模型就会去查询computation plan来决定如何生成下一步的 G i + 1 G_{i+1} Gi+1​。
  • 指令集和 A A A: { A e ,   A r ,   A c ,   A t } \{A_{e},\ A_{r},\ A_{c},\ A_{t}\} {Ae​, Ar​, Ac​, At​},分别代表找出seed entity(也就是topic entity)、添加一条关系路径、调价一条限制、终止并转移到终止状态。

至于 A e 、 A r 、 A c A_{e}、A_{r}、A_{c} Ae​、Ar​、Ac​具体怎么操作就不赘述了。而 A t A_{t} At​是终止操作,达到 S t S_{t} St​之后回去查询computation plan,这事就有两种情况:

  1. 如果是join,那么代表 G i + 1 G_{i+1} Gi+1​不依赖于 G i + 1 G_{i+1} Gi+1​的答案,可以直接进行下一步的生成

  2. 如果是simQA,那么代表 G i + 1 G_{i+1} Gi+1​需要 G i G_{i} Gi​的答案,这时就要先执行 G i G_{i} Gi​得到答案,把答案加入 G i + 1 G_{i+1} Gi+1​的候选实体中。

    《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

Query Composition and Execution

作者管每一步通过beam search得到的候选 G i ( k ) G_{i}^{(k)} Gi(k)​叫derivations,得到derivations之后作者训练了一个log-linear model来对这些derivations打分,选出最好的那一个作为当前这一步的partial query。

Semantic Matching Model

本文的semantic matching model和《Knowledge Base Question Answering via Encoding of Complex Query Graphs》这篇文章的基本一样,就是在question encoding的地方加了一个attention,其他没什么区别。

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

这里做的任务是判断一个partial query是不是争正确的,因此可以看作二分类,损失函数就是交叉熵

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

但是这样就有一个问题,没有标签。如果要人工再去构建一个数据集肯定是不行的,因此作者用了implict supervision的方法。

Experiment

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

这篇文章把之前那篇CompQA在CompQWeb数据集上的表现亮出来以后确实让我很惊讶,这样看来那篇文章的方法应该有很严重的过拟合。

上一篇:QWidget探索


下一篇:houseoforange_hitcon_2016 House of orange