作者

  • Mantong Zhou, Minlie Huang, Xiaoyan Zhu
  • State Key Lab. of Intelligent Technology and Systems,
  • National Lab. for Information Science and Technology,
  • Dept. of Computer Science and Technology, Tsinghua University, Beijing, PR China

摘要

多关系问答是一个有挑战性的任务,因为它需要对问题详细分析并根据知识库中的多个事实三元组进行推理。本文提出一个叫做“可解释的推理网络”的新颖的模型,利用一个可解释的逐跳推理的处理来回答问题。模型动态地决定,在每一跳输入问题的哪一部分应该被分析;根据当前解析的结果预测一个关系;利用预测出的关系更新问题表示和推理的状态;驱动下一跳的推理。实验表明,我们的模型在两个数据集上取得了SOTA的结果。更吸引人的是,模型可以提供可追踪的和可观察的中间结果,便于推理分析和错误诊断,从而可以在预测最终答案时进行手动操作。

引言

开放域问答在AI领域一直是一个火热的话题,最近一些大规模知识库例如Freebase促进了这个任务的发展。然而,由于语言和知识的多样性和复杂性,开放域知识库问答仍然是一个具有挑战性的任务。
Yin等人将知识库问答分为两种,单关系问答和多关系问答。单关系问题,例如How old is Obama?/奥巴马多大岁数?,可以被知识库中的一个事实三元组回答,并且这个任务已经被广泛研究。相比之下,回答多关系问题需要多个事实三元组的推理,例如Name a soccer player who plays at forward position at the club Borussia Dortmund./ 指定一名在多特蒙德足球俱乐部中处于前锋位置的足球运动员这个问题中不止一个实体和关系被提及。相比于单关系问答,多关系问答尚待解决。
以往的知识库问答研究可以大致分为两条路线:语义解析和基于embedding的模型。语义解析模型以手工特征和人工标注为代价获得了有竞争力的性能,但缺乏将其推广到其他领域的能力。相比之下,基于embedding的模型可以在弱监督下进行端到端的训练,但是由于缺少推理能力,现有方法不足以处理多关系问答。
近期的推理模型主要集中于根据给定文档回答问题的阅读理解任务。然而,将现有的阅读理解方法迁移到KBQA并非易事。一个原因是,阅读理解任务中的推理通常关注的是对文档的理解,而不是解析问句。另一个原因是,现有的推理网络通常是一个黑箱,导致模型的可解释性很弱。我们相信在多关系问答任务,一个可解释性的推理过程是必要的。
本文提出一个新颖的可解释的推理网络(IRN)来让问答系统在回答多关系问题时具备推理能力。我们的主旨是设计一个可解释的推理过程来回答复杂问题:推理模块决定在每一跳输入问题的哪一部分应该被分析,并且根据当前解析结果预测一个知识库中的关系。被预测出的关系被用来更新问题表示和推理模块的状态,并帮助模型做出下一跳的推理。在每一跳,一个实体会基于当前推理模块的状态被预测出来。
不同于以往的模型,我们的模型是可解释的,每一跳预测出的实体和关系都是可追溯的和可观察的。每一跳我们的模型都有一个特定的目标,即基于问题的迭代分析发现合适的关系,并且每一跳的中间结果都可以由相应的链接实体来解释。如我们实验中所述,通过这种方式,IRN提供了可视化复杂问题完整推理路径的能力,有助于推理分析和错误诊断,从而允许在答案预测中进行人工操作。
本文的贡献有两方面:

  • 我们设计了IRN可以对知识库中多个三元组进行多关系的推理。结果表明,我们的模型取得了SOTA性能。
  • 在逐跳推理过程中被预测的中间实体和关系构建出可追溯的推理路径可以清楚显示答案是如何得到的,这方面体现了我们的模型比现存的推理网络更加具有可解释性。

相关工作

最近的问答工作可以被大致分为两种:一种是基于语义解析的,另一种是基于embedding的。语义解析方法将问题映射为逻辑形式的查询语句。这些系统以沉重的数据标注和特征工程为代价换取高效。更重要的是,这些系统通常受限于特定领域,而且对不完整的知识库执行逻辑查询时系统会崩溃。
我们的工作走的是基于embedding的路线。这种方法最近才被引入到问答任务中。思想是问题和知识库的实体都被表示成分布向量,QA就被看作一个问题和答案实体的向量匹配问题。这些模型需要更少的语法信息和标注数据,处理不完全的数据库也更加灵活。为了更好地匹配,可以使用知识库中的实体子图,answer aspects和外部上下文来丰富答案实体的表示形式。尽管这些方法可以成功处理简单问题,但是回答多关系或复杂问题仍不理想,因为这样的任务需要推理或者其他精细的过程。
最近的关注阅读理解任务的推理模型使用记忆模块来理解文档,我们的工作也与之相关。最先进的基于记忆的阅读理解模型在推理过程中以多跳方式在问题和相应文档之间进行交互。
MemNN,KVMemN2N和EviNet将阅读理解框架迁移到QA,将一组三元组看作文档以后,就可以应用类似的推理过程。但是,阅读理解可以对文档进行推理,而不是解析问题。
其他应用逐跳推理的QA研究可以参考Neural Programmer和Neural Enquirer,它们使用深度网络解析问题并且在表格上执行查询语句。然而Neural Programmer需要预定义符号操作,Neural Enquirer缺少显式解释。Mou等人提出了一个将分布式和符号执行与REINFORCE算法耦合的模型,然而训练模型是个问题。Neural Module Network针对不同推理模式的定制网络体系结构,使推理网络可解释。但是,需要依赖解析器和REINFORCE算法。

可解释的推理网络

任务定义

我们的目标是提供一个可解释的推理网络来回答多关系问题。给定一个问题q和它的用一些NER工具标注出的主题实体或主语实体,该任务就是从知识库中找到一个实体a作为答案。
本文工作中,我们考虑了两种典型的多关系问题,链式问题和多实体问题,前者是我们主要关注的对象。
一个链式问题只包含一个主题实体(主语实体),并且它的答案可以通过沿着由一些关系和中间实体组成的路径找到。我们定义一个答案路径是知识库中的实体和关系的一个序列,它从主语开始,到答案结束,如$ e_s\stackrel{r_1}{\longrightarrow}e_1\stackrel{r_2}{\longrightarrow}…\stackrel{r_n}{\longrightarrow}a $ 。在问题中,关系以多样的自然语言形式存在,然而中间实体是观察不到的。例如,对于问题How old is Obama’s daughter?/奥巴马的女儿多大?,主语是Barack_ObamaBarack\_Obama,关系路径是Barack_ObamaChildrenMaliaObamaAge18Barack\_Obama\stackrel{Children}{\longrightarrow}Malia_Obama\stackrel{Age}{\longrightarrow}18。因为这里Children是一个一对多的关系,中间实体的数量会很多,导致对于一个问题有对于一个的关系路径。
一个多实体问题是包含多于一个主语实体的问题,并且它的答案可以由多个三元组取交集得到。例如,问题Name a soccer player who plays at forward position at the club Borussia Dortmund./ 说出一个在博鲁西亚多尔特俱乐部踢前锋位置的足球运动员的名字,它的答案可能来自于FORWARDplays_positionMarcoReusFORWARD\stackrel{plays\_position}{\longrightarrow}Marco_ReusBorussiaDortmundplays_in_clubMarcoReusBorussia_Dortmund\stackrel{plays\_in\_club}{\longrightarrow}Marco_Reus这两个三元组。具体讨论见3.8节。

总览

该推理网络包括三个模块:输入模块,推理模块和作答模块。输入模块将问题编码成向量表示并且根据推理模块的结果逐跳更新问题表示。推理模块通过问题的主题实体初始化其状态,并根据当前问题和推理状态,预测模型应将重点放在当前跳上的关系。预测出的关系被用来更新每一跳的状态向量和问题表示。作答模块根据推理模块的状态预测出一个实体。
整个过程可以参见图一。对于问题How old is Obama’s daughter?/奥巴马的女儿多大?,主语实体Barack_Obama被用来初始化状态向量。IRN在第一跳预测出Children,随后它被加入状态向量更新解析结果。然后Children对应的自然语言形式的表达daughter从问题中被减去来避免对已识别的信息的重复分析。整个过程会一直重复直到TerminalTerminal被预测出。

输入模块

输入模块将问题编码成向量表示并编码,在每一跳推理过程中更新问题表示:将从当前表示中减去预测的关系,以迫使推理过程注意应分析的其他单词。
正式地,问题X=x1,x2,…,xn可以使用词向量求和来初始化,并且减去上一跳推理模块预测出的关系来更新:

分解和重写问题的模板

MrqM_{rq}是一个矩阵,从知识库关系空间映射到自然语言问题空间,qh1q^{h-1}是在第h-1跳的问题表示,r^h\hat{r}^h是在第h跳预测出的关系,在公式4处定义。这种更新的直觉是问题的已经分析的部分不应再次解析。
使用词袋表示一个问题可能是比较简单。然而,该方法在我们的设置下工作的很好。未来我们会考虑使用CNN或LSTM这样更复杂的编码器。

推理模块

推理模块旨在在每一跳关注问题的特定部分,预测知识库中的关联关系,然后更新其状态。
推理模块将先前状态向量sh1s^{h-1}和先前问题向量qh1q^{h-1}作为输入,然后基于当前跳的分析预测关系r^h\hat{r}^h。一旦获得预测的关系r^h\hat{r}^h,该关系将用于更新下一个问题表示形式qhq^{h}和推理模块的状态shs^{h}。以这种方式,推理网络是可追溯和可解释的。
这个过程可以由下面的公式描述:

rjr_j是知识库的关系embedding,所有关系embedding存储在静态内存R中,并且shs^h是第h跳处推理模块的状态。gjhg^h_j是选择知识库中第j个关系的概率。Mrs和Mrq分别是将r从关系空间映射到状态空间的矩阵和公式2中将r从关系空间映射到问题空间的矩阵。
我们使用主题实体初始化状态向量,s0=ess^0=e_s。IRN将会学习逐跳丰富状态表示,例如,在第一跳s1es+r1s^1≈e_s+r_1,第二跳s2es+r1+r2s^2≈e_s+r_1+r_2。这样,状态向量编码了历史信息。
为了表示推理过程何时应停止,我们将TerminalTerminal关系添加到关系集合中。一旦推理模块预测了TerminalTerminal关系,推理过程就会停止,并且最后的答案将是在将最后一个非TerminalTerminal关系添加到状态s时的输出。

作答模块

答案模块在每一跳中从KB中选择相应的实体(表示为aha^h)。在最后一跳,选择的实体被选为最终答案,而在中间跳,则可以检查这些实体的预测以帮助进行推理分析和故障诊断。
更正式地说,可以按如下方式预测每一跳处的实体:
Mse是从状态空间到实体空间的映射矩阵,ej是KB中第j个实体的embedding。

损失函数

我们采用交叉熵来定义损失函数。 第一个损失项是在关系的中间预测上定义的,而第二个损失项是在实体的预测上定义的。
一个实例的损失定义如下:
nr和ne分别是知识库中关系和实体的数量,ghath是正确关系的onehot表示,gh是公式3预测出的向量,ohat是正确实体的onehot表示,o被公式7定义。λ是平衡两项的超参数。
训练数据是(q; < es; r1; e1; …; a >)这种形式,这表明该模型不仅可以合并来自最终答案的监督(称为IRN弱),还可以包含来自答案路径的中间关系和实体的监督(称为IRN)。

知识库表示的多任务训练

为了整合来自知识库的更多限制(这里指两个实体一个关系要形成知识库中的一个三元组),我们使用多任务训练的框架来学习实体和关系的embedding以及空间转移矩阵。对于给定知识库中的一个三元组(es,r,eo),实体和关系的表示使用如下的限制:

es,r,eo分别表示头实体,关系,尾实体的embedding。这个想法受TransE启发,但是我们使用Mse作为转移矩阵映射状态空间和实体空间。
参数在多任务训练框架中被更新。我们首先在前几轮学习知识库表示e和r以及Mse,这是其中一个任务:知识库embedding训练。然后我们每一轮有监督地更新所有IRN的参数,作为任务:QA训练。我们交替地运行这两个任务。
在知识库embedding训练任务的帮助下,IRN不仅利用了知识库中额外信息进行更好地推理,还有能力去处理不完全的答案路径。例如,即使知识库中Barack_Obama和Malia_Obama中间的联系没有表示出来,我们的模型依然可以做出正确预测。

处理多实体类问题

IRN不仅限于回答链式问题。对于包含超过一个主题实体的多实体问题,可以通过相同参数下并行执行多个IRN,获取各自结果的子集来找到答案。

这个过程如上图所示。输入问题“Name a soccer player who plays at forward position at the club Borussia Dortmund./ 说出一个在博鲁西亚多尔特俱乐部踢前锋位置的足球运动员的名字”包含两个主语实体,“FORWARD”和“Borussia_Dortmund(BD)”。IRN1输入原始问句和“FORWARD”,然后预测可能的宾语。输出是一个实体上的分布。类似地,IRN2输入原始问句和另一个主语实体“Borussia_Dortmund(BD)”。将这两个输出分布相加之后,“Marco_Reus”以最大的概率被选择。

数据准备

PathQuestion

我们使用Freebase的两个子集作为知识库来构建PathQuestion(PQ)和PathQuestion-Large(PQL)。我们抽取两跳(-2H)和三跳(-3H)距离的两个实体之间的路径,然后使用模板来生成自然语言问题。为了使生成的问题更接近真实问题,我们通过搜索网络和两个真实数据集(WebQuestions、WikiAnswers)来加入释义模板和关系的同义词。通过这种方式,极大丰富了生成问题的句法结构和词语表达。
PQL比PQ更加有挑战性,它使用更大的知识库、提供更少的训练实例。统计数据参见下表。

WorldCup2014

该数据集包含单跳问题(WC-1H),两跳问题(WC-2H)和多实体问题(WC-C)。WC-M是WC-1H和WC-2H的混合,统计数据参见下表。

实验和评价

实现细节

参数优化使用ADAM。所有embedding的维度设置为50。公式8的超参数设置为1。我们按8:1:1的比例划分了数据集,batch size设置为50。

问答性能

为了进一步表明IRN可以处理更有挑战性的数据集,我们按一下两个设置评价模型:

  • 不完全的知识库。为了模拟真实的知识库通常是不完全的特点,我们移除了PQ-2H的知识库的半数三元组(实体和关系保留,但是中间的连接断开)。
  • 不可见知识库。为了模拟真实QA场景中未登录词OOV的挑战,我们从PQ-2H的训练集中移除了含有关系“Cause_of_Death”,“Gender”,“Profession”的问题。测试时,模型需要将问题和这三种关系结合起来。
    一些baseline模型如下:
    Embed通过向量空间问题和答案的匹配来处理事实类KBQA。
    Subgraph改进Embed,加入使用实体的子图得到答案实体的表示信息。
    Seq2Seq是一个简化的seq2seq语义解析模型,使用LSTM编码输入问题序列,用另一个LSTM解码出答案路径。
    MemN2N是一个端到端的记忆网络,可以用于问答和阅读理解。记忆单元由对应答案路径子图中的相关三元组组成。
    KVMemN2N改进MemN2N用于KBQA,将记忆分为两个部分:key记忆存储头实体和关系,value记忆存储尾实体。
    IRN-weak使我们提出的模型,仅适用最终的答案实体来监督,而不使用完整的答案路径。可以通过忽略loss中的中间跳信息项实现。
    使用准确率衡量性能(结果均为五次run的平均值),预测实体在问题的答案集合里即为回答正确。因为两个知识库中有很多1对多关系,一个问题可能有几个可能的答案路径,导致多个答案。例如:问题是“奥巴马的女儿多大?”,答案路径可以是“Barack_Obama-Children->Malia_Obama-Age->18”或“Barack_Obama-Children->Sasha_Obama-Age->14”。回答出一个答案就算正确。
    我们可以观察到如下结果:
  • IRN-weak优于Embed和Subgrah,表明多条推理确实帮助回答了复杂问题,即使我们的模型是在相同的弱监督条件下端到端训练的。
    Seq2Seq比IRN差。尽管它们都是可解释的,但是IRN在处理复杂知识库和问题时更强大。
    在多数数据集上IRN强于MemN2N和KVMemN2N,这两个模型都远好于使用路径信息的baseline。这两个模型的记忆由使用答案路径从知识库中分离的事实三元组组成。所以,这两个模型简介使用了强监督。相比之下,IRN有更好的机制来监督推理过程。
    IRN在PQL-2H和3H取得最高的准确率,证明在大数据集上表现更好。·IRN分开处理实体和关系,实体和关系的数量远小于三元组的数量。然而MemN2N系列的模型不得不处理记忆中的更多的三元组。
    IRN在处理不完全知识库时鲁棒性更强。可能是由于额外的知识库embedding训练任务促进了对缺失三元组的预测。Baseline模型对于记忆单元的不完全信息更加敏感。
    IRN和baseline模型在未登录设置下性能都有明显下降,因为错误的分布表示在基于embedding的方法中影响显著。另外,训练集的大小也比PQ-2H要小得多,这也导致了性能变差。
    相比MemN2N,IRN由于其构造,更具可解释性。每一跳预测的关系和实体都是答案路径的一部分。中间的输出提供了追溯推理过程,错误诊断和操作答案预测的可能性。

可解释的路径推理

本部分展示IRN的可解释性。定量分析中,我们可以通过推理过程中中间实体和关系的准确率来衡量表现。在该任务中,我们收集了每一跳最大概率的实体和关系和标准答案对比。对于KVMemN2N,我们获取了每一跳的实体。
根据IRN的结构,每一跳预测的实体和关系组成了答案路径。下表表明IRN可以更加准确地预测中间实体。
尽管KVM预测答案更加准确,但是缺少可解释性。一方面,KVM不能预测关系来追溯答案路径。另一方面,KVM中的每一跳都在找答案实体而不是答案路径中的中间实体。
为了论证我们的模型如何解析一个问题和逐跳预测关系,我们研究了所有关系上的分布,并且从PQ中选择了一个例子如上图所示。可以清楚看到IRN可以按正确的顺序选择关系。对于问题“What does john_hays_hammond’s kid do for a living?”,IRN首先检测到关系Children(对应词为kid)然后是Profession(对应what does…do)。当检测到Terminal关系,IRN将停止分析过程。

我们的模型可以将知识库的关系映射到问题中的单词。我们采样了一些关系,并且映射它们到问题空间通过公式2。然后我们通过cosine相似度获得了embedding接近rq的单词。下表表明IRN可以在知识库和自然语言之间建立合理的映射。除了映射到单个单词以外,知识库中的关系也能被关联到一些复杂的模板。

上面的分析验证了我们的模型是可解释的。特别的,IRN善于:

  • 提供问答的可追溯的推理路径。有了中间实体和关系的帮助,我们不仅能获得最终答案,还能得到推出答案的完整路径。
  • 有助于错误分析。例如,IRN没能回答Where did the child of Joseph_P_Kennedy_Sr die?。 正确路径应该是“Joseph_P_Kennedy_Sr-Children->Patricia_Kenndy_Lawford-Place_of_Death->New_York_Country”。然而IRN预测的中间实体是”Rosemary_Kennedy”,她也是孩子之一,但是知识库中没有她的死亡信息。
  • 在答案预测中允许人工操作。我们使用真实关系向量来更新问题和状态,并且比较性能。更高的准确率暗示了我们能改进最终预测结果通过纠正中间预测结果。

结论

我们提出了一个新颖的可解释推理网络,可以逐跳推理,并且回答多关系问题。我们的模型是可解释的,中间实体和关系的预测提供了完整的推理路径。这一属性使我们的模型有助于推理分析,错误诊断和答案选择时的人工操作。两个QA数据集的结果验证了我们模型在多关系问答上的有效性。
未来工作中,复杂问题问答还有很大发展空间。例如,回答“奥巴马最年轻的女儿多大年纪?”需要处理排序操作。更进一步,未来会在该框架中考虑如何处理多限制条件的问题。

本文结尾附录有PQ数据集的具体构建方法和问题模板。