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

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 总结起来,我们提出了一个可解释的认知推理的框架,就是面向复杂问题的问答,然后设计了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月前
|
存储 并行计算
小技巧大功效,仅阅读两次提示让循环语言模型超越Transformer++
【8月更文挑战第27天】斯坦福与布法罗大学的研究显示,通过"Just-Read-Twice"(JRT)策略,循环语言模型(RNNs)在多项任务上的表现超越了行业标杆Transformer++模型。JRT策略让RNNs在处理信息时进行两次读取,有效解决长上下文记忆难题,显著提升了性能。实验覆盖FDA、SQUAD等多个任务,均取得明显成效。论文已发布于arXiv。
28 2
|
4月前
|
机器学习/深度学习
Sora 原理使用问题之Sora提示词的语义并进行视频生成该如何理解
Sora 原理使用问题之Sora提示词的语义并进行视频生成该如何理解
|
4月前
|
机器学习/深度学习 人工智能 算法
ChatGPT 等相关大模型问题之ChatGPT 的概念如何解决
ChatGPT 等相关大模型问题之ChatGPT 的概念如何解决
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习之可解释的决策系统
深度学习的可解释决策系统是一种集成深度学习模型和解释技术的系统,旨在提高决策过程的透明度和可理解性。这种系统能够在保持深度学习模型强大预测能力的同时,让用户和开发者了解其决策背后的逻辑和依据。
39 0
|
5月前
|
机器学习/深度学习 人工智能 数据可视化
使用Python实现深度学习模型:模型解释与可解释人工智能
【7月更文挑战第6天】 使用Python实现深度学习模型:模型解释与可解释人工智能
84 0
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
论文介绍:自我对弈微调——将弱语言模型转化为强语言模型的新方法
【5月更文挑战第17天】论文《自我对弈微调》提出了一种新方法,名为SPIN,用于在无需额外人工标注数据的情况下增强大型语言模型(LLM)。SPIN利用自我对弈机制,让模型通过与自身历史版本交互生成自我训练数据,实现性能提升。该方法在多个基准数据集上表现出色,超越了传统监督微调和直接偏好优化。SPIN还为生成对抗网络研究提供了新思路,展示了自我对弈在强化学习和深度学习中的潜力。实验表明,SPIN有效提升了模型性能,为未来研究奠定了基础。[[arxiv](https://arxiv.org/abs/2401.01335v1)]
70 3
|
7月前
|
机器学习/深度学习 自然语言处理 并行计算
【大模型】解释自我注意力的概念及其在LLM表现中的作用
【5月更文挑战第6天】【大模型】解释自我注意力的概念及其在LLM表现中的作用
|
7月前
|
人工智能 Python
论文推荐:大型语言模型能自我解释吗?
这篇论文的研究主要贡献是对LLM生成解释的优缺点进行了调查。详细介绍了两种方法,一种是做出预测,然后解释它,另一种是产生解释,然后用它来做出预测。
83 2
|
人工智能 自然语言处理 物联网
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
解锁ChatGLM-6B的潜力:优化大语言模型训练,突破任务困难与答案解析难题
|
SQL 人工智能 自动驾驶
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力(2)
结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力
284 0