论文浅尝 | THINK-ON-GRAPH:基于知识图谱的深层次且可靠的大语言模型推理方法...

219919b8876112fa315e6006759a9edd.png

笔记整理:刘佳俊,东南大学硕士,研究方向为知识图谱

链接:https://arxiv.org/pdf/2307.07697.pdf

1. 动机

本文是IDEA研究院的工作,这篇工作将知识图谱的和大语言模型推理进行了结合,在每一步图推理中利用大语言模型检索图结构数据,实现了深层且可靠的推理。

1.1 大语言模型的问题

尽管大型语言模型(LLM)在各种任务中都取得了显著的表现,但在面临复杂的知识推理任务时有很大的局限性

(1)LLM通常无法准确回答需要预训练阶段以外的专业知识的问题或需要长逻辑链和多跳知识推理的问题

(2)LLM缺乏可靠性、可解释性和透明度,这引起了用户对“幻觉”和“有害文本”风险的担忧

(3)LLM的训练过程通常既昂贵又耗时,这使得它们很难保持最新的知识。

1.2 “LLM ⊕ KG”方法的局限性

一个自然而有潜力的解决方案是结合外部知识,如知识图谱(KGs),以帮助改进LLM推理。KGs提供结构化、明确和可编辑的知识表示,提供了一种互补的策略来减轻LLM的局限性。这些方法遵循一个范式:从KGs中检索信息,相应地增加提示,并将增加的提示输入LLM,这篇论文称为“LLM ⊕ KG”。

尽管LLM旨在整合LLM和KG的力量,但在这种范式中,LLM扮演着翻译器的角色,将输入问题转换为机器可理解的命令,用于KG的搜索和推理,但它并不直接参与图推理过程。不幸的是,这种低耦合度的范式有其自身的局限性,其成功在很大程度上取决于KG的完整性和高质量。

1.3 “LLM ⊗ KG”范式的提出

本文提出了一种新的高耦合“LLM ⊗ KG”范式,其中KG和LLM协同工作,在图推理的每一步中互补彼此的能力。这篇文章称为“Think-on-Graph”,ToG允许LLM动态探索KG中的许多推理路径,并相应地做出决策。其具有以下优点:

(1)深度推理

(2)可靠推理

(3)灵活高效

758cc185489e63ea5f04965afeee1767.png

图1  针对问题“堪培拉所在的国家现在的多数党是什么?”,三种LLM推理范式的典型工作流程:(a) 仅LLM(例如思想链提示),由于知识库时间落后答案错误(b) LLM⊕KG(例如,通过LLM生成的SPARQL查询进行KBQA),图谱查询失败(c)LLM⊗KG(如,ToG)深度推理成功得到答案。

2. 方法

6861ad565d9f0516c11fbc437ccdfe12.png

图2 ToG的推理过程,包含多个关系探索、实体探索过程并且包含搜索和修剪过程,最终生成多个推理路径,从中得到答案

2.1 ToG

ToG提示LLM迭代地探索KGs上的多个可能的推理路径,直到LLM确定可以根据当前推理路径回答问题。整个推理过程包括以下三个阶段:初始化、探索和推理。

(1)初始化

ToG首先提示LLM自动提取有问题的主题实体,并获得问题的前N个主题实体。请注意,主题实体的数量可能小于N。

(2)探索

第D次迭代中的探索阶段旨在利用LLM,根据问题x从当前前N个实体集  的相邻实体中识别出最相关的前N个实体  ,并用  扩展前N个推理路径P。为了解决LLM处理大量相邻实体的复杂性,ToG实施了两步探索策略:首先,探索出重要的关系,然后使用选定的关系来指导实体探索。

关系探索

关系探索是一个深度为1、宽度为N的集束搜索(beam search)过程,从  到  。整个过程可以分解为两个步骤: 搜索和修剪。LLM充当自动完成此过程的代理。

搜索:搜索在第D次迭代开始时,关系探索阶段首先为每个推理路径  搜索链接到尾部实体  的关系  。这些关系被聚合为  。

修剪:一旦我们从关系搜索中获得了候选关系集  和扩展的候选推理路径  ,我们就可以利用LLM基于问题x的文字信息和候选关系  ,从  中选择出以尾部关系  结尾的新的前N个推理路径P。

实体探索

与关系探索类似,实体探索也是LLM从  到  执行的波束搜索过程,由两个步骤组成:搜索和修剪。

搜索:一旦我们从关系探索中获得了新的前N个推理路径P和一组新的尾部关系  ,对于每个关系路径  ,我们可以通过查询  或  来探索候选实体集  ,其中  表示  的尾部实体和关系。我们可以将  聚合到  中,并将前N条推理路径P扩展到具有尾部实体  的  。

修剪:由于每个候选集合  中的实体是用自然语言表示的,因此我们可以利用LLM来选择新的前N个推理路径P,该路径P以  的尾部实体  结束。

在执行上述两个探索之后,我们重建新的前N个推理路径P,其中每个路径的长度增加1。每个修剪步骤最多需要N个LLM调用。

(3)推理

在通过探索过程获得当前推理路径P后,我们提示LLM评估当前推理路径是否足以生成答案。如果评估结果为肯定,我们将提示LLM使用推理路径生成答案,并将查询作为输入,如图2所示。相反,如果评估结果为否定,我们重复探索和推理步骤,直到评估结果为肯定或达到最大搜索深度  。如果算法尚未结束,则表明即使达到  ,ToG仍然无法探索解决问题的推理路径。在这种情况下,ToG仅基于LLM中的固有知识生成答案。

ToG的整个推理过程包括D个探索阶段和D个评估步骤以及一个生成步骤,该生成步骤最多需要对LLM进行2ND+D+1次调用。

2.2 ToG-R

以前的KBQA方法,特别是基于语义解析的方法,主要依赖于问题中的关系信息来生成正式查询。受此启发,本文提出了基于关系的ToG(ToG-R),它探索从主题实体开始的前N个关系链  ,而不是基于三元组的推理路径。ToG-R在每次迭代中依次执行关系搜索、关系修剪和实体搜索,与ToG相同。然后ToG-R基于通过实体搜索获得的以  结尾的所有候选推理路径来执行推理步骤。如果LLM确定检索到的候选推理路径不包含LLM回答问题的足够信息,则我们从候选实体  中随机抽取N个实体,并继续进行下一次迭代。

假设每个实体集  中的实体可能属于同一实体类并具有相似的相邻关系,则修剪实体集  的结果可能对后续的关系探索几乎没有影响。因此,我们在ToG中使用随机集束搜索而不是LLM约束的波束搜索来进行实体修剪,称为随机修剪。oG-R最多需要对LLM进行ND+D+1调用。

ToG-R对比ToG的优势

(1)它消除了使用LLM修剪实体的过程的需要,从而减少了总体成本和推理时间。

(2)ToG-R主要强调关系的字面信息,当中间实体的字面信息缺失或LLM不熟悉时,降低了错误推理的风险。

3. 实验

3.1 实验设计

数据集和评估采用最近常用的方法,如表1所示,共做了五个任务,包含九个数据集,使用了Freebase和Wikidata两个知识图谱用于推理。并且使用了多个大语言模型验证即插即用的便捷性,分别是ChatGPT, GPT4和Llama-2,其中。测试指标采用标准绝对匹配(exact match)准确率。因为基于特定数据集的大模型微调方法仅在特定相关领域有较好表现,所以不将微调方法的SOTA水平作为比较。

2ee4ab1ced6a1fde9ec576c65ff11346.png

表1 ToG在不同数据集上的结果

3.2 实验结果

(1)与其他方法对比的结果:如表1所示,使用ToG方法所有的任务上效果都优于CoT方法的SOTA水平,甚至部分超过了微调方法。在大部分场景下,ToG方法优于ToG-R方法,因为ToG按照三元组推理的方法比ToG-R关系推理能够获得更多中间实体的信息。

(2)不同基座模型的表现 :实验表明ToG的效果随着基座模型能力的提升而提升。并且即使使用最小的模型Llama-2(70B参数),ToG也优于GPT-4的CoT。小型LLM的ToG方案可能是替代昂贵大LLM的候选者,特别是在外部KG可以覆盖的垂直场景中。

(3)消融研究:针对搜索宽度和深度,实验表明宽度和深度设置为3是最合适的。针对知识图谱的选择,针对不同的任务越专业的知识图谱效果越好。针对提示的设计,使用ToG的三元组格式提示效果优于序列格式、句子格式以及ToG-R的格式。针对不同的修剪工具,直接让大模型做修剪效果最佳。

(4)知识的可追溯性和可纠正性:ToG的显式推理路径可以显示给用户,体现了知识的可追溯性。同时,根据ToG的提示,用户可以要求LLM更正KG出现的错误,并用正确的信息回答相同的问题。ToG不仅用KG增强LLM,而且用LLM提高KG的质量,称为知识灌输。

4. 总结

这篇文章介绍了LLM⊗KG范式,用于以紧密耦合的方式集成LLM和KG,并提出了图上思考(ToG)算法框架,该框架利用LLM作为参与KG推理的智能代理来实现更好的决策。实验结果表明,ToG在没有额外训练成本的情况下优于现有的部分基于微调的方法和基于提示的方法,并减轻了LLM的幻觉问题。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

737d8b9647309d016b6a24eeda61a67c.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[图解]建模相关的基础知识-06

1 00:00:00,790 --> 00:00:03,480 下一个概念,就是基数的概念 2 00:00:04,390 --> 00:00:11,560 cardinality,表示有限集合中元素的数量 3 00:00:12,200 --> 00:00:14,790 我们可以用一个井号 4 00:00:14,800 --> 00:00:18,320 在前面表示…

数据结构--递归和数组

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

10.邮票问题

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/625 题目描述 有四种面值的邮票,分别是 …

使用 Django 创建 App

文章目录 步骤 1:创建 Django 项目步骤 2:创建 App步骤 3:配置 App步骤 4:编写代码步骤 5:运行服务器 在 Django 中,App 是组织代码的基本单元,它可以包含模型、视图、模板等组件,帮…

git版本控制工具常用命令

一、本地仓库管理 push 向远程推送代码 pulll 拉取代码 二、远程仓库管理 三、分支操作 本地主分支master 远程主分支main head指向当前分支 查看:git branch 创建分支: git branch 名字 切换分支:git checkout 名字 合并分支:git…

FPGA SPI采集ADC7606数据

一,SPI总线的构成及信号类型 SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯: 1)MOSI – Master数据输出,Slave数据输入 2)MISO – Master数据输入,Slave数据输出 3)SCK – 时钟信号,由Master产生 4)/CS – Slave使能信号,由Master控制。 在一个SPI时…

gdb调试器

目录 一、前言 debug和release 二、调试操作 2.1、退出 quit 2.2、调试 run 2.3、打断点 b 2.4、查看断点 info b 2.5、查看代码 l 2.6、删除断点 d 2.7、逐过程 n 2.8、打印变量内容 p 2.9、逐语句(进入函数) s 2.10、查看函数调用堆栈 …

【GD32F303红枫派使用手册】第十一节 ADC-电源电压单通道ADC检测实验

11.1 实验内容 通过本实验主要学习以下内容: ADC的简介 GD32F303 ADC工作原理 查询方式实现ADC单通道采样 11.2 实验原理 11.2.1 ADC原理 我们知道,自然界中有非常多的模拟信号,比如上一节提到的光照强度,还有其他的例如温…

RTOS笔记--任务通知+软件定时器

任务通知的本质 对于之前使用过的几种互斥操作方式队列,互斥量,信号量,事件组,他们都是黑箱操作,对于写入和读取的任务来说并不知道对方是哪个任务,只是操作环形缓冲区和链表。 而任务通知的方式就是通知方…

【CS.AL】算法复杂度分析 —— 时间复杂度详解

文章目录 1 概述2 时间复杂度的详细分析2.1 常数时间复杂度(O(1))2.2 对数时间复杂度(O(log n))2.3 线性时间复杂度(O(n))2.4 线性对数时间复杂度(O(n log n))2.5 平方时…

程序的基本结构、cout语句(c++语言)

一、如何下载Dev C 登录网站&#xff1a;ht.51goc.com 二、安装Dev C 一、启动Dev C 双击桌面的图标 二、新建一个程序 三、复制一个程序 请你复制以下代码到“程序编辑区” #include<bits/stdc.h> using namespace std; int main() { cout<<"Hell…

计网仿真综合实验 实验十二

实验十二 综合网络实验 实验过程 IP配置说明参考连线配置OSPF使公司内部联通 路由器R1的OSPF配置路由器R2的OSPF配置路由器R3的OSPF配置R1、R2、R3的相关解释路由器R4的OSPF配置路由器R5的OSPF配置路由器R6的OSPF配置R4、R5、R6解释: 路由器R2的RIP配置路由器R7的RIP配置 总结 …

MicroPython esp32 连接wifi 配网

整体流程&#xff1a; 1&#xff09;开启STA 和 AP 模式 2&#xff09;扫描周围wifi 保存在 变量 wifi_list&#xff08;后面要用到&#xff09; 3) 尝试STA模式连接Wifi&#xff0c;并查寻状态。 4) 如果STA 无法连网&#xff0c;就用AP模式&#xff0c;创建热点。 5&a…

【lesson1】第三方库(jsoncpp,bundle, httplib)的介绍和使用

文章目录 jsoncpp库json 认识jsoncpp 认识jsoncpp 实现序列化jsoncpp 实现反序列化 bundle库bundle库实现文件压缩bundle库实现文件解压缩 httplib 库httplib 库搭建简单服务器httplib库搭建简单客户端 jsoncpp库 json 认识 json 是一种数据交换格式&#xff0c;采用完全独立…

【Vscode配置java环境并配置stringboot】

1.VSCODE配置JAVA环境 参考这篇文章配置JAVA环境&#xff1a;连接 java版本&#xff0c;我是win11系统,我下载的JAVA安装版本是下面&#xff0c;是最新版的&#xff1a; 配置环境&#xff1a;步骤很简单&#xff0c;就是向系统环境变量中添加路径&#xff0c;参考上面文章中的…

基于学习模型的可学习小波变换方法(Pytorch)

首先以图像编码为例进行说明。 图像编码是一个复杂的系统&#xff0c;通常包含多个模块&#xff0c;其中变换模块具有重要作用。小波变换在图像编码领域得到了广泛的应用&#xff0c;例如著名的JPEG 2000就是一种小波图像编码方法。然而&#xff0c;现阶段的小波图像编码方法与…

htb-window-1-legacy-smb

nmap smb-vuln-ms08-067 py文件测试失败 msf 漏洞定位 反弹 获取flag

【Oracle篇】rman全库异机恢复:从单机环境到RAC测试环境的转移(第五篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

一文学会Spring 实现事务,事务的隔离级别以及事务的传播机制

目录 一.Spring (Spring Boot) 实现事务 1.通过代码的方式手动实现事务 (手动档的车) 2.通过注解的方式实现声明式事务 (自动挡的车) 二.事务的4大特性(ACID) 三.事务的隔离级别 ①Mysql的事务隔离级别: ②Spring的事务隔离级别: 四.事务的传播机制 ①事务传播机制的概…

验证码案例

目录 前言 一、Hutool工具介绍 1.1 Maven 1.2 介绍 1.3 实现类 二、验证码案例 2.1 需求 2.2 约定前后端交互接口 2.2.1 需求分析 2.2.2 接口定义 2.3 后端生成验证码 2.4 前端接收验证码图片 2.5 后端校验验证码 2.6 前端校验验证码 2.7 后端完整代码 前言…