知识图谱-多跳推理问答:概述【TransferNet作者】
导读:知识图谱在现有实际业务场景中呈现出多样化的应用场景,在这一领域中提问与回答(问答)是一项关键的应用内容。本文重点探讨如何基于知识图谱系统实现复杂问题的解答过程,并介绍这一核心任务通常被称作推理问答的技术方法。
本文的介绍会围绕下面四点展开:
KBQA背景介绍
构造推理过程数据
跨领域迁移
隐式学习推理过程
一、背景介绍
1、KBQA

首先回顾下什么是知识图谱问答——KBQA。
一个给定的知识图谱,包含了许多信息,如实体、属性以及实体之间的关系。
在已构建的知识图谱框架下,我们期望机器系统利用该知识图谱进行自动化问答。例如,在上文所示的图表中,请问:对于问题'勒布朗·詹姆斯出生日期是几时?'的回答是什么?答案应为1984年12月30日。
2、简单问答和复杂问答

一个问题,根据它的复杂程度,可以分为简单问题与复杂问题两种类型。
对于简单问题而言,在知识表示方面通常仅涉及一个实体与之直接相关联及其所具有的属性或特征。例如,“中国的首都是哪里?”这一问题中所涉及的知识点包括实体“中国”与其所具有的属性或特征——“首都”。而复杂问题则往往需要运用更为复杂的推理能力才能得以解决,在知识表示方面则可能需要构建较为完整的知识网络。具体而言这类问题主要包含以下几类:多跳推理、计数、比较以及逻辑运算等。
多步关联推理(如"XX公司的CEO有哪些朋友?"),通过从企业名称与 CEO 建立第一步关联(一阶推理),再由 CEO 与其朋友圈建立第二步关联(二阶推理),从而形成一个多步骤关联推理的问题。
计数方法 是一种用于计算符合特定标准或关联的数量的技术。例如,在询问‘有多少家公司持有XX公司的股票?’时
在数据处理中采用分类方法时,通过对各实体特定特征进行对比分析来识别出满足条件的单一实例。例如,在分析A股市场2021年的表现时会提问'哪只股票在该年度涨幅最大?'。
集合运算 ,被符合条件的实体集合接受的集合运算。例如,在BAT公司工作的专家群体中寻找具有共同背景的知识。进行交集计算。
3、简单问答相关工作

简答问答 通常可以拆分为两个任务:
- 实体链接;
- 关系分类;
在回答用户的问题'中国的首都是哪里?'时,在回答中找到对应的term,并将其关联至知识库中的实体'中国'的具体位置是什么?在问答系统中使用提及机制时,在用户提问中找到对应的term,并将其关联至知识库中的实体'中国'的具体位置是什么?
第二个主要任务是对关系进行分类处理,在分析问题时识别出的问题中的主系动词"首都"所关联的关系项,并通过一个专门的分类机制将这些关系项与之关联起来。
在完成这两个特定的任务后,在知识图谱中获得了实体'中国'与关系'首都'的信息,并因此能够推断出答案为'北京'的语义信息。
4、复杂问答相关工作

复杂问答涉及的相关工作会更加多样,通常可以分为两类:
语义解析法:语义解析法是一种将自然语言问题转化为特定形式化表示的技术,在计算机科学领域具有重要应用价值。其基本流程包括:通过使用特定模型或操作将自然语言问题被转换为一种形式化的逻辑表示(即形式化表示),然后将这种形式化的表示(即形式化表示结果)作为输入进入相应的处理系统(即处理系统指针)以完成后续的操作和计算步骤以实现目标结果的生成过程。这种方法的核心思想在于利用精确的形式化方法来描述自然语言中的复杂概念和关系,并通过自动化的方式完成这些概念与目标系统的交互作用以实现高效的知识获取与应用效果。例如,在知识图谱领域中常用的一种逻辑语言是SPARQL,在这种情况下可以通过编写相应的程序或脚本来指导系统的运行并最终获得所需的知识信息或解答所需的特定问题的答案
信息检索法主要得益于神经网络在信息表达方面的强健能力,并通过隐晦地搜索答案来解决问题。例如,在知识图谱领域中出现了Memory Networks的一种变体——Key-Value Memory Networks(KVMs),该方法提出了独特的键值对存储机制。具体而言,在处理一个给定的问题时会构建一个动态更新的查询表示,并将其嵌入到记忆单元中反复检索和更新直到获得稳定的查询结果。此外还有一种方法则依赖于图神经网络技术:针对特定问题进行特征迭代更新,在经过多次优化后能够逐步逼近正确的解答方案并完成分类决策以得出最终结果。

这两类方法各自具有各自的优缺点,在应用过程中能够实现多种类型的处理任务。语义解析法不仅适用于如前所述的四个复杂问题类别,并且其推理过程具有较高的可解释性特点。然而,在构建这一推理过程时所涉及的标注数据成本相对较高。
对于信息检索法而言,在实际应用中仅需标注问题与对应答案的数据即可训练模型,并能够实现端到端的预测能力。然而其在解决复杂问题方面的能力有限,并且中间过程不可解释性使其难以满足某些需求;因此,在实际应用中我们更倾向于采用语义解析法作为替代方案。
5、关键问题
本文主要针对语义解析类方法探讨三个问题:
生成语义解析类标注数据需要耗费较大的资源,在实际应用中如何采用经济高效的方式生成推理过程所需的数据?
在某一特定领域收集标注数据时,能否将其应用于其他相关领域的学习?例如,在金融领域的数据能否迁移到医疗领域?
假如在没有标注数据的情况下,是否可以自动学习推理过程?
二、构造推理过程数据
首先考虑第一个问题,如何构造推理过程数据?
1、推理过程描述语言——KoPL

SPARQL可被视为一种经典的逻辑语言,在知识表示和推理方面具有重要价值;然而,在实际应用中...
为此我们设计了一种知识导向的推理过程描述语言 Knowledge-oriented Programming Language 简称 KoPL 该语言不仅能够辅助构建推理过程的数据 还能通过自动化的方式优化推理流程 在实际应用场景中 当我们面对问题 勒布朗 詹姆斯与其子谁更为高大 时 KoPL 系统会将上述问题的推理流程分解为如图所示右侧部分 首先系统会调用知识库中的相关数据 包括勒布朗 詹姆斯的基本属性信息 以及父子关系信息 接着通过预设的比较算法 对比两位个体的各项指标 最终输出具有较高属性值的那个实体 这种智能化的处理方式使得复杂的人类决策问题能够被系统高效地解决
可以看出,KoPL拆解问题更加注重过程,符合人类思维,更容易理解。

KoPL是一种基于严格分类的知识型语言,在其架构中包含了七类核心知识类别以及与之相关的各种概念。例如中国的" entities"( entity)、 entity attributes, entity relationships, attribute triples, relation triples,以及高级修饰的知识。针对属性型和关系型三元组,在其表达机制中实现了明确的规范。

KoPL总共提供了14种针对知识图谱元素的操作。例如,在知识图谱中查找特定实体或概念是其中之一。此外,在这14种操作中包含有13种查询操作。例如,在知识图谱中获取某个实体名称也是一种常见的查询方式。

KoPL具有以下四点优势:
强调过程 :KoPL在分解问题时能够清晰地呈现各步骤的结果;相比之下, SPARQL则难以具体定位中间环节
该方法契合人类认知模式:KoPL作为一种过程性语言,在解决问题时会将复杂的问题分解为若干个基础问题,并通过整合求解完成整体处理。
该系统支持模块化设计:我们将知识图谱的复杂问答划分成20个基础功能模块,并通过相互整合实现多样化的问题应对策略。
不仅能够涵盖多种知识来源:而不仅仅局限于结构化数据,在处理各种非结构化的文本内容时同样支持。例如,在处理维基百科等非结构化文本时,KoPL能够系统地阐述如何解答复杂的文本问答问题的过程。
2、大规模知识库问答数据集——KQA Pro

基于KoPL的基本操作与组合的应用场景下, 我们能够系统性地构建出一系列复杂的问题模型. 这一过程主要包括四个关键步骤. 首先, 我们将采用"模板法"来进行问题构建, 即根据特定类型的问题设计统一的模板框架. 例如, 针对比较属性类问题, 可以制定如下通用模板:"<>与<>在<属性>方面谁更<大/小>". 这种模式下, 举个例子: "勒布朗·詹姆斯与布朗尼·詹姆斯谁更高?", 就可以直接套用上述模板进行求解. 其次, 我们会结合知识库中的数据资源进行随机采样, 并将这些样本填入到预先建立的模板中, 进而生成多样化的具体问题实例. 第三, 通过应用基本操作的不同排列组合方式, 我们可以灵活定制各种复杂度的问题情境. 最后, 为了进一步提升问题难度, 我们还可以采用递归拆分的方法对已有的实体进行深入分析. 比如说: 在"勒布朗·詹姆斯与布朗尼·詹姆斯谁更高?"这一问题中,"布朗尼·詹姆斯"这一角色属性可以被重新定义为"勒布朗·詹姆斯的儿子", 这样一来原问题就转化为"勒布朗·詹姆斯和他的儿子谁更高?", 从而有效提升了问题的逻辑深度和解答难度.
基于这四种策略,我们可以生成大量多样化的高复杂度问题。

每个样例将生成5个元素;基于模板提取的问题;用于回答问题的SPARQL;拆解后的问题涉及KoPL;包含10个候选方案和标准方案

采用问题生成技术,我们成功构建了一个包含大量模板库的系统,并提供了相应的SPARQL, KoPL, 选项和标准答案。随后,在确保内容准确的前提下,我们对所有提交的内容进行了优化与筛选。接着,在评估所有提交的内容时(从准确性与通顺性两个维度),我们会剔除那些未能达到标准的部分。例如第二条提问,“勒布朗·詹姆斯的个子是不是比他儿子高?”经此处理后将回答变得单一明确。
经过实验验证和系统分析得出了约12万条五元组数据,并命名为KQA Pro后发现其具有显著的大规模特性
3、下一个问题(迁移学习)

本次研究的主要问题是:如何构建大规模的推理过程数据集?基于领域一的推理过程数据构建后,在其他领域中能否利用这些数据来辅助推理过程的学习?然而,在这些问题中已经有一些明确的答案和解决方案。例如,在医学领域中是否有能力利用金融领域的相关知识来辅助其自身的推理模型训练?
**三、**跨领域迁移
这是我们在本次分享中讨论的第二个问题。预期能够实现现有推理模式在多个应用场景中的迁移与应用。
1、跨领域迁移

考虑在KoPL推理过程的跨领域迁移,我们将推理过程划分为两个部分:
在知识图谱构建中占据核心地位的是推理机制的设计,在这一过程中起关键作用的是基于知识图谱的操作规范(KoPL)。具体指这些规范如何通过一系列步骤实现信息的逻辑推理与语义理解。例如,在解决问题"AI行业哪家公司2021年融资最多?"时对应的KoPL包含四个基本操作:首先是实体识别阶段,在此过程中系统会通过实体识别模块定位与AI相关联的知识实体;其次是关系提取环节,在这一阶段系统会通过关系网络模块关联出与AI行业直接相关的知识实体;再次是概念过滤阶段,在此过程中系统会进一步筛选出仅包含企业、高校或从业人员等特定类型的知识实体;最后是属性计算阶段,在第四步中,则需从这些候选企业中筛选出具有最大融资额的企业作为结果输出。
该部分涉及推理过程中的参数设定。具体指骨架中各个操作所选取的内容。例如Concept选择了某公司作为其操作内容,则该公司的名称即为该参数的具体值。

通过将推理过程分解这样两个部分之后,我们发现了骨架和参数的特点 :
骨架与知识图谱之间的相关性较低,在某些特定领域完全不重合的情况下(例如S_1涉及AI行业问题而S_2聚焦于传染病领域),它们在问题的核心架构上却存在一定的相似之处。具体而言,在问题一“AI行业哪家公司2021年融资最多?”与问题二“传染病领域哪家医院2021年病人最多?”之间虽然探讨的主题截然不同(前者关注企业融资情况后者则关注医院病人数量),但两者的骨架结构存在显著共通点。因此我们判断骨架与问题是高度相关的,在跨领域的迁移过程中具有较高的可行性。
该系统设计中涉及的参数与其所关联的知识图谱及潜在的问题之间具有高度的相关性。具体而言,在该系统设计中所涉及的参数全部源自于某一特定领域内的专业知识体系。其中,在该系统设计的第一部分(即第一种情况下),所涉及的参数全部源自于金融领域内的知识体系;而在第二部分(即第二种情况下),则来源于医学领域内的专业知识体系。
2、骨架解析器

在骨架部分迁移过程中, 我们开发了一种基于Transformer架构的注意力机制集成型Seq2Seq模型, 将BERT模型作为编码阶段的核心模块. 在编码阶段生成各子任务特征向量后, 通过注意力机制对这些特征向量进行筛选, 最终将这些精炼后的特征向量经解码器处理后完成操作序列的逐步还原.
3、参数解析器

在处理参数解析器时,我们采用了独特的策略。鉴于参数与知识图谱之间存在较强的关联性,在知识图谱中也必须对各个元素进行编码处理。在这里,我们采用BERT算法作为知识图谱元素的编码工具。例如,在上文所示的架构中,请注意以下步骤:首先通过骨架解码器解码得到一个关于Concept的操作(此处指骨架级别的操作),随后将该解码所得特征向量与基于BERT模型生成的知识图谱概念特征向量进行相似度评估,并最终选择相似度最高者作为目标概念。
4、训练方法

我们将模型训练方法分为两个阶段:
在第一阶段中,在特定领域内实施有监督学习策略。基于标注的推理过程数据将分别用于训练骨架解析器与参数解析器。
在阶段二中 ,将阶段一开发完成的两个分析器转移至领域二 ,采用强化学习的方法进行训练 ,该阶段的训练数据采用问答对的形式 。对于每个问题 ,我们通过骨架分析器和参数分析器分别进行分析 ,在分析过程中基于概率进行采样 ,从而得到不同的推理路径 。随后将这些推理路径输入相应的计算引擎中执行运算 。通过对比计算结果与预期答案的一致性 ,对正确推理路径赋予正向奖励信号 ,利用强化学习算法优化正确推理路径的概率 ,减少错误推理路径的发生概率 。
5、实验设定

下面介绍一下我们的实验设定:
基于KQA Pro的数据集,在Wikidata子集中构建的知识图谱包含了12万条训练样本的数据
领域二 ,使用两个公开的数据集:
WebQuestionSP与ComplexWebQuestions基于Freebase构建的知识图谱,其训练数据数量分别为4737条和34689条。
上图右侧直观地呈现了两个知识图谱之间的差异,在此图中Source部分代表了Wikidata的一个子集而Target则对应Freebase
6、实验结果

本研究在WebQSP和CWQ数据集上进行了系列实验,在现有SOTA方法的基础上实现了更高的准确度水平,在76.5%至58.7%之间取得了显著成绩。通过消融实验分析表明,这两个阶段对结果具有重要意义。
7、下一个问题

假设我们现在缺乏推理过程数据,并仅有问题与答案的数据时,请问是否能够通过模型直接推导出相应的推理路径?
**四、**隐式学习推理过程
这是我们分享的第三个话题,如何隐式地学习推理过程。
1、TransferNet

在隐式学习推理的过程中, 我们对复杂问题类型进行了约束处理, 仅专注于多跳类问题分析. 通过实体间的多步关联关系进行推导, 比如针对'xx公司的董事长投资于哪家企业'的问题, 我们首先基于主题实体'xx公司'与其董事长的关系定位到张三, 进而根据张三的投资行为指向关联到目标公司'yy公司'. 这样一来, 中间涉及的关系和实体共同构成了完整的推理路径.

该方案利用向量矩阵乘法运算模拟实体转移过程,并包含两大核心要素:
激活向量体现的是每一步中被重点关注的对象 ,例如,在解决"xx公司的董事长投资了哪家公司"这个问题时,我们会在推理过程中识别出三个关键要素:即"xx公司"、"张三"以及"yy公司"。这些要素的数量构成了激活向量的维度,在识别到某一个具体要素时(如'张三'),其对应的坐标轴会被赋予权重值1;而对于未被识别的对象,则赋予权重值0。
激活矩阵代表每一步关注的关系
在多步推理过程中,在每一步中所关注的对象及其关联物均会发生变化。该系统采用上标符号t来标识当前处理的是哪一个阶段。该方法的核心在于通过关系转移机制建模实体间的转换过程。我们通过计算at-1与Wt的乘积来进行这种转换。图像展示了这一转换过程的一个典型示例。

我们可以通过链式乘法实现多步转移过程,在初始状态由a0表示的基础上,通过链式结构构建一系列权重矩阵W。这些权重矩阵被依次用于逐步构建多步转移模型。具体而言,在每一步中利用注意力机制聚焦问题的关键点和关联信息。具体来说,在第0步我们首先识别出主题实体"xx公司"并初始化其对应的激活向量a0;在第1步则对问题进行一次注意力计算定位关键人物"董事长"所在节点,并将其关联关系转化为权重矩阵W1;随后通过向量a0与W1相乘得到新的激活状态a1;在第2步继续关注投资相关的节点并生成权重矩阵W2;最终通过对一系列权重矩阵的累积作用得到最终目标实体yy公司作为答案。

该图表清晰呈现了整个推理流程,在我们方法中实现了关键突破:其独特优势在于其推导过程完全可导。值得注意的是,在模型训练过程中仅需为最终预测的实体应用损失函数,在完成第T步转移后自动计算损失并进行优化操作(Optimization),从而实现完整推理过程的学习(Learning)
2、实验结果

为了展示我们的研究成果,我们对三个不同数据集进行了实验测试。在专门针对电影领域设计的多跳跃数据集MetaQA上,我们首次达到了100%的准确率。例如,在一个三步推理的问题中,“xx电影的导演执导了另一部影片中谁是主角?”这个问题中,请问:首先从'电影'这一概念推导至'导演'这一层;再到'导演'所执导的影片;最后从'影片'推导至最终的答案——即主角是谁?在处理这类多步骤推理的问题时,我们的模型达到了完美的准确率。
参考资料:
Dr. Shulin Cao and Dr. Jiaxin Shi, along with their colleagues, introduced KQA Pro as a dataset designed to facilitate complex question answering within a knowledge base, employing explicit compositional programs. This work was presented at the ACL 2022 conference.
Shulin Cao, Jiaxin Shi, et al. Programmatic Transference for Responding to Complicated Queries within Knowledge Bases. ACL 2022.
Jia Xin Shi和Shulin Cao等提出了TransferNet这一具有显著效果的透明框架。该框架基于关系图实现了高效的多轮问答系统,并在EMNLP 2021会议上获得了高度评价。
KoPL:/
KQA Pro:
/kqa-pro/
ProgramTransfer:
https://github.com/THU-KEG/ProgramTransfer
TransferNet:
https://github.com/shijx12/TransferNet
06
问答
Q:非链式查询如何解码?
A:非线性查询通常是二叉树的结构,在这种情况下我们可以采用前序或中序遍历将其转换为链式查询。
Q:KoPL是否有一些序列化的表示方法?比如文本到查询图是如何生成的?
KoPL是一种过程导向的语言,在图结构方面基本不具备相关性。其主要数据模型包括线性序列和树状架构(...),其中树状数据模型以二叉树形式为主。对于基于图型的数据库语言如SPARQL,则可采用深度优先搜索或广度优先搜索的方式进行遍历查询。
KBQA中涉及每个问题的复杂性评估吗?系统依据基于实体的规则体系进行判定是否正确?
无需对这个问题进行特殊区分;若希望实现这一区分,则可采用以下方法:通过训练一个分类模型来实现这一目标。实际上,在这种情况下(即所有复杂问题都能得到解答),则相应地(即同样地),所有简单问题也能得到有效解答。简单的问题可以被看作是一种特例——即在这种情况下(即当仅涉及一跳推理时),它相当于一跳推理的过程。
Q:KoPL能够在Neo4J上进行推理?
A:目前来看并不适用。KoPL运行于我们的自主研发引擎中。然而KoPL能够与其他语言进行转换,这是我们在当前阶段正在开展的重点工作。通过中间 language 来将 ... 转换成其他 query language。
华为的技术专家史佳欣:利用知识图谱技术深入探讨复杂问题的推理与问答
