面向知识的可解释认知推理

简介: 总结起来,我们提出了一个可解释的认知推理的框架,就是面向复杂问题的问答,然后设计了KoPL程序设计语言,直接通过程序的执行,从问题到得到答案。我们还做了一个面向复杂问题推理的数据集,并且希望能够把函数库进一步优化,把文本技术和预训练技术结合起来去回答。

演讲嘉宾:李涓子


内容概要:

 

一、Complex QA and Explainable Cognitive Reasoning

二、Knowledge Oriented Programming Language (KoPL)

三、KQA Pro: A Dataset for Complex KBQA with Reasoning Programs

四、Conclusions


一、Complex QA and Explainable Cognitive Reasoning

 

(一)Knowledge Representation and Resoning

 

先介绍一下复杂问答,即QA和可解释认知推理。

 

人工智能就是通过研究和设计,使得计算机可以像人一样感知、思考、推理,并进行规划和决策的一个系统。


image.png


通过图灵测试,可以从以下几方面来研究人工智能,分知识表示、推理机器学习、计算机视觉自然语言处理和机器人。我们这里主要介绍的就是知识表示和推理。

 

为什么知识是和认知非常相关的?实际上它就是认知的一个定义,是人怎么去获得知识和应用知识的过程,我们把它称为认知。我们主要介绍的就是用认知来做推理,用知识去做推理——

knowledge oriented and reason

 

(二)The Third Generation of AI

 

现阶段,我们已经从感知的智能到了认知的智能,这也是达成的共识。比如第三代的人工智能是可解释的,是安全可信的,它也提出了知识+数据+算法算力这样一个框架。


image.png


如上图,图灵奖获得者做深度学习,也是要把推理和表示学习进行结合的,也就是把符号表示和推理,和深度学习来进行结合。

 

(三)Complex Question Answer

 

什么是问答?问答就是图灵测试最典型的一个方面。由人去问问题,计算机来自动回答这些问题。我们可以问图片,可以问文本里面隐含的知识,也可以问知识图谱里面隐含的知识,最终得到从question answer的结果。


image.png


现在很多的推理,很多的问答系统和相关的数据集都有关于简单问答的测试。比如上图squad2.0是斯坦福的一个简单问答数据集。第一行是 human performance,显示已经超过了人的水平,当然这不能说是在simple answer and question上面真正超过,只是在数据集上超过了。

 

再看这个斯坦福复杂问答数据集,是在vqa上用图片去做复杂问题提问。它需要一些推理过程的时候,在数据上就远远达不到人的水平,所以复杂问答是比简单问答更难的。

 

(四)Complex QA and Explainable Reasoning

 

什么是复杂问答呢?

 

首先,答案不能是从文本里面或者图片里面直接获得的知识,是要用retrieve方法得到的。如果结果是encode到一个图片里面,直接可以retrieve出来的,这就不是复杂问答。

 

复杂问答需要有推理的能力,而这个推理的能力体现在多跳推理、技术比较,还有一些交并补的逻辑操作。


image.png


如上图,这是一个例子。 这个问题的答案是不在这图里面的。要得出人的数量,是需要一定的推理能力的.要找着这个乐队,确定它的numbers有哪些人,然后去记述这个count,再看两个count是不是一样。

 

它的答案是不在这两个自然段里面的,必须通过一定的推理,得到他们是有相同的人数这个答案。中间的推理步骤,我们称之为复杂问答。

 

(五)Related Works

 

复杂问答可以分成这三类,一类是semantic parsing,就是对问题进行理解,然后把它表示成一种逻辑表达,而这种逻辑表达可以是SPARQL ,也可以是拉姆的演算,可以是中间的任何一个逻辑结构。


image.png


第二类是利用端到端的graph neural network(图神经元网络),第三类是multistep query。这两个都是深度学习的方法,但这些方法存在的问题是什么?

 

第一个问题,是缺乏可解释性。另外,在深度神经网络上做推理,它对知识类型的处理非常有限,它只能处理实体到实体之间的关系。但知识的形式是非常多的,而它只是把实体和实体变成图,在图结构上去算。

 

针对这个问题,我们做了一些研究。随着研究的进展,逐渐明确了这个框架,并把它称为面向知识的可解释推理。因为知识就是认知的结果,所以后面就把认知去掉了,我们的 framework(框架)是什么?其实就是图逻辑表达和推理。

 

(六)Our Main Idea

 

那么为什么用图?图是一种显示的表示,和人的认知是比较match的。看语义网络,就是Smart network,研究认知怎么去记忆这个知识,它是一种显式的知识的表示。


image.png


不管是知识图谱,还是内置的场景图,还是文本里面实体之间的关系,都可以用graph表示。它可以针对不同的形式表示,也可以用深度学习的方法来进行表征,就是用图来表征。

 

另外,怎么把认知的推理过程和整个图结构结合起来?我们做了一个面向知识的程序设计语言,在程序设计语言上去推理。这个程序就是我们的推理过程。

 

(七)Explainable Cognitive Reasoning Framework

 

可以把面向复杂问答的对象表成图,这个叫目标的结构化。我们可以把复杂问答看成一个

question program,而这个program表示了其中的推理步骤。


image.png


像上图这个问题,有多少物体是在这块棕色金属右边且在红色方块左边的?它根据推理步骤就能得到一个人能看懂的答案。这个cube是红色的,它的left是谁?相当于把这个question前面的自然语言表达表示成了一个推理过程,整个推理过程的步骤可以在执行program以后得到答案。

 

上面program的执行过程,就是场景。我们想通过这个场景,解析不同结构。比如这个先找到一个cube,再找一个红的cube,接着去履约他的left,就激活了另一个节点。另一个程序也是,去找一个柱形,然后找一个brown的金属,最后得到的是它们所对应的位置。

 

上述两个program的交集,其实不止一个。但过程最后得到的就只有一个结果。而每一个target的操作,是可以用module去实现操作的,可以看成是模块化的神经网络对这个操作去建模。

 

那要怎么去实现这个框架,也就是上面的每一个透明的显示的过程?


image.png


整个计算虽然是在深度学习框架下做的,但它的每一个步骤都是可解释的。我们用modular

neural network去实现每一个函数的计算,包括它的逻辑操作、它是否存在、它的基数,然后去描述。

 



二、Knowledge Oriented Programming Language (KoPL)

 

(一)KoPL Motivation

 

在斯坦福上发的最简单的vqa club的数据集上做了研究之后,我们考虑,是不是可以把它扩充到知识的范畴,去做知识的推理编程,所以我们就设计了Kopl语言。


image.png


比如 knowledge orientedprogram,这里的operation是由一组原子函数或者操作来组成的函数,它带的参数就是知识的元素,我们可以通过编程语言把复杂的问题变成多个推理的步骤,并把它称为program,这个推理步骤是很容易去理解的。

 

把这个推理过程变成程序,人也很容易对它进行control。程序编错了,人可以去操作它,对它进行修正,这对人来说是更好的影响。

 

我们用SPARQL 来表示这个过程。看SPARQL 中间,因为它用的是图结构,所以实际上用

program去表示出来更容易理解。执行这个模板之后,得到的就是答案。

 

(二)KoPL Framework

 

这个framework就是编程语言里面的参数,那么knowledge的元素是什么呢?


image.png


在这里面,我们给出了一个knowledge base definition(知识库定义),它的一些函数就是原子的函数,是对知识库上知识的一些操作的原函数,还有对知识进行query的语言函数。program,就是 functionconversation,是由一系列的function组成的,这个program是可以去执行可以被编译的。它可以在智库上执行,产生问题的答案。

 

(三)Knowledge Base Definition

 

知识库大家应该都已经了解,有concept(概念)。其实人也是这样,有概念,有实体有关系,还有描述实体的属性.

 

image.png


比如三元组当节点的时候,它在不同时间的配偶可能是不一样的,所以它对实体也有一个修饰的关系。我们把它称为qualifier

 

从上图里可以看到,在矩形里面都是实体的知识,中间是联系这两个实体的关系。里面画虚线的是qualifier的一些修饰关系,还有它的属性,比如date of birthheight,这些都是attribute的关系。

 

kopl语言里面,它所处理的函数里面对应的参数就是这些内容。

 

(四)Atomic Functions of KoPL

 

我们在kopl里面定义了14个知识库上的操作函数。


image.png


就是上面的findfilterConcept或者是filterstr等,这都是对于属性值的过滤,FilterConcept是对concept过滤。然后找出一些实体,对这个函数的定义,都是在数据在知识库上最基本的操作。

 

最后一列是每个函数对应的的input output,而这里面都是对应了最基本的知识的元素。


image.png


因为是面向复杂问答,所以也有query方式。而这些query方式具有逻辑计算的能力,可以去做验证,可以去做比较,也可以去做逻辑运算。

 

(五)Program Examples with KoPL

 

我们可以写一个program,然后在这个知识库上一编译就可以得到结果。去执行这个程序的过程,就是得到答案的过程。


image.png


看一个简单的例子。要先找着实体,然后通过实体去关联,它的publication date是在1940年之后,这通过filter year按时间来去过滤的。

 

就好比它是一个动画电影,最后得到一个技术。实际上每一个操作过程,都是一个代数集合的计算,最终对得到的实体进行计数。

 

我们给出一个问题之后,就可以去写理解这个问题的program,而这个program不需要额外的操作,只需要对它做执行,就可以得到问题的答案。 


(六)KoPL Conclusions

 

KoPL不仅仅可以面向KBQA上的复杂问答,还可以把这个复杂问题表示成上面说的方式的组合。


image.png


另外,跟sparql相比,它还有比较好的可解释性。如果生成了对应的sparql query,错了之后就不太好改。而我们有这个program之后,可以直接对program进行更改。

 

它还可以做知识guide的复杂问答。这是一个我们在HotpotQA QA上的数据集,一个真实的问题。HotpotQA QA是面向文本做多跳推理的一个数据集。


image.png

 

比如上图,他的儿子是什么时间出生的?可以把这个问题变成一个program。在知识库里面,这两个人都是存在的。但在wiki data里面的数据集,这个人和他是儿子的关系是没有的,那这个关系体现在哪?

 

在这个文本里面。

 

我们提问 who is his child,就可以把这个人找着,有date of birth,可以把断的 program通过文本来补全。这个时候就可以把文本和大模型进行一个结合,因为文本里面有很多这样的知识。




三、KQA Pro: A Dataset for Complex KBQA with Reasoning Programs

 

接下来就是怎么把写program的过程自动化智能化。我们做了一个KQA PRO数据集,这个数据集就是把每一个复杂问题都带上推理的 program


它已经在线上了,大家也可以试着往里面写问题,它会给你个 program的解析结果。

 

(一)KQA Pro Motivation


image.png


针对上图面向智库的复杂问题,我们希望出来是yao ming这个结果。我们会把这个问题解析成program,同时为了跟spark做比较,可能他们还有互补性,我们也保留了sparql

 

(二)Current KBQA Datasets

 

为什么做这个数据集,其实是希望把  complex QA的pairs带上对应的推理步骤。


 image.png


实际上现在的数据集是没有的,并且问题个数规模也不够大,用MetaQA组成的知识类型也比较受限。

 

(三)KQA Pro Construction

 

基于前面知识库的定义,我们做了KQA Pro,这里面有将近12万的带推理的program数据集。这个过程也保证了推理问题达到多样性和规模。


image.png


上图可以看到,对于每个问题,都要对这个问题做program标注,也要保证它是自然语言的。可以用模板去生成很多question,但因为它是模板生成的语言,有一定的局限性,所以要邀请

speaker来重新把问题进行更贴近自然语言的描述。再请其他的人来看,这个描述结果是不是自然语言。

 

(四)Knowledge Base Extraction


image.png


我们在fb15k237这个数据上,也就是大家经常用的一个数据上进行了扩展。用wiki data扩展它知识类型,包括了实体的属性值,还有事实的修饰等的知识,最后得到了这样一个数据规模。上图可见,大概有17,000的实体,有近百万的三元组。这里生成了13万的问题,最终得到的是不到

12万的质量比较高的例子。

 

(五)Question Generation

 

那怎么保证它的问题的复杂性和多样性呢?

 

用采样加迭代组合的方式。


image.png


可以采用问题的实体,再通过实体去扩展。它对应的概念就是采用一些扩展的策略,这个图上就是生成问题的过程。要先locate,选定对应的实体或概念。


image.png


再通过递归的模板去扩展这个问题。最后去做各种修饰,比如问他不同的问题,这样一些操作。


image.png


 

最终可以看到,每一个question5个部分,包含questionsparqlprogram,还有可选择的答案以及最终的标准答案。在亚马逊的众包平台上去做rephrase,同时由5个人对rephrasesentence做验证,三个以上认为它是自然语言的,才能够保留下来。


image.png


这是大概数据集的一个整体情况。


image.png


做了这个数据集之后,用end-to-end的方法,在数据集上做questionanswer的答案,准确率是非常低的。


image.png


所以现在的这种End-to-end的模型,基本上是不顶用的,不能够在数据上得到一个合理的结果。

 

我们用program对问题去做semantic parsing,相当于把自然语言变成program的表示,准确率就比前面高了一大截。也就是说,把它做成了program之后,它理解问题的准确度还是比较高的。并且这里因为用了知识,他的概化能力还是很强的。在Zero-shot下面也得到了理想的结果。

 



四、Conclusions


image.png


总结起来,我们提出了一个可解释的认知推理的框架,就是面向复杂问题的问答,然后设计了

KoPL程序设计语言,直接通过程序的执行,从问题到得到答案。我们还做了一个面向复杂问题推理的数据集,并且希望能够把函数库进一步优化,把文本技术和预训练技术结合起来去回答。

 

它不仅只是知识库,还可以利用大模型的参数和文本帮助我们去做推理,实现多模态的认知推理。还可以做增量式的推理,如果程序错了,我们可以对它进行修改,进一步优化它的推理程序。


image.png



相关文章
|
4天前
|
机器学习/深度学习 自然语言处理 并行计算
【大模型】解释自我注意力的概念及其在LLM表现中的作用
【5月更文挑战第6天】【大模型】解释自我注意力的概念及其在LLM表现中的作用
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】讨论 LLM 在更广泛的通用人工智能 (AGI) 领域中的作用
【5月更文挑战第5天】【大模型】讨论 LLM 在更广泛的通用人工智能 (AGI) 领域中的作用
|
7天前
|
机器学习/深度学习 人工智能 搜索推荐
【AI 初识】解释推荐系统的概念
【5月更文挑战第3天】【AI 初识】解释推荐系统的概念
|
8月前
|
机器学习/深度学习 人工智能 算法
ChatGPT是如何训练得到的?通俗讲解
ChatGPT是如何训练得到的?通俗讲解
|
5月前
|
人工智能 Python
论文推荐:大型语言模型能自我解释吗?
这篇论文的研究主要贡献是对LLM生成解释的优缺点进行了调查。详细介绍了两种方法,一种是做出预测,然后解释它,另一种是产生解释,然后用它来做出预测。
63 2
|
9月前
|
人工智能 自然语言处理 物联网
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
|
11月前
|
存储 SQL 机器学习/深度学习
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力(1)
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力
135 0
|
11月前
|
SQL 人工智能 自动驾驶
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力(2)
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力
213 0
|
11月前
|
机器学习/深度学习 数据可视化 开发者
可解释性机器学习:解析和解释模型的预测结果
在机器学习领域,越来越多的应用开始依赖于高性能的预测模型,这些模型可以在各种任务中取得出色的表现。然而,由于深度学习和复杂模型的兴起,模型的黑盒特性成为了一个重要的挑战。尽管这些模型在预测准确性上表现出色,但它们往往缺乏可解释性,使得用户无法理解模型是如何得出预测结果的。
228 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
重新审视AI,神经网络中概念符号涌现的发现与证明(2)
重新审视AI,神经网络中概念符号涌现的发现与证明
109 0