论文导读 | 大语言模型与知识图谱复杂逻辑推理
前 言
大语言模型,尤其是基于思维链提示词(Chain-of Thought Prompting)[1]的方法,在多种自然语言推理任务上取得了出色的表现,但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法,再进一步介绍将提示词方法应用于知识图谱复杂逻辑推理的工作。
文章一:“Least-to-Most Prompting”[2]
让大模型学会处理更复杂的推理
本文首先提出了Least-to-Most Prompting方法的动机,是人类智慧与机器学习之间的三个差异:
(1)面对一个新问题时,人类可以通过很少的示例中解决它,但机器通常需要大规模的标注语料;
(2)人类可以很清楚的阐释所做预测的隐含原因,但机器学习是一个黑盒子;
(3)人类可以解决比之前见过的问题更难的问题,但机器学习只能解决与之前相同难度的问题。
Google Brain在2022年提出Chain-of-Thought方法,利用few-shot prompting尝试填补人类智慧和机器学习之间的差距,但他不能解决比实例问题更难的问题。为此,该团队提出了Least-to-Most Prompting方法,该方法分为两个阶段:第一阶段将一个复杂问题分解为一个简单子问题序列;第二阶段按顺序解决子问题,且回答后续子问题会依赖前序子问题的答案。
下图给出了Least-to-Most Prompting方法解决一个数学问题的示例:
(1)将复杂问题分解为简单子问题;
(2)按序解决子问题,其中,回答第二个子问题时使用了第一个子问题的答案。
实验部分,论文通过符号操作(symbolic manipulation)、组合泛化(compositional generalization)和数学推理(math reasoning)三类任务来验证Least-to-Most Prompting的效果,并与Chain-of-Thought Prompting方法进行比较。
符号操作任务的输入是一个单词列表,对应输出是将这个单词列表中所有单词最后一个字母连接起来。如,“thinking machine”的输出为“ge”。
如图,Least-to-Most Prompting方法首先将一个长的单词序列转化为子序列,
再逐步解决每个子序列最后一个字母的连接问题,并且在解决更复杂的问题时,会根据前序简单问题的答案(如已知“think, machine” outputs “ke”)得到后序问题的结果。
Chain-of-Thought Prompting则与此不同,如下图,该方法不会顺序的解决子问题,而是每一次都将符号操作的问题作为一个独立的新问题给出具有推理过程的提示词示例。
在连接最后一个字母这类符号操作的任务中,随着不同单词量L的变化,Least-to-Most Prompting方法的准确率都远好于其他提示词方法,尤其是当单词量变大时,Chain-of-Thought方法准确率下降速度远大于Least-to-Most方法,这也说明Least-to-Most方法处理比示例更难的问题时更具有优势。
组合泛化任务是给出一个指令,将其翻译为一个动作序列。
下图给出了Least-to-Most Prompting方法第一步将复杂指令分解为简单指令的提示词示例,
和第二步解决每个简单指令给出的提示词序列。
在SCAN数据集上,Least-to-Most Prompting方法的准确率都远优于其他提示词方法,该方法仅需要少数的提示词示例,就可以解决同等或更难的推理问题,具有较好的泛化能力。
在数学推理任务中,Least-to-Most Prompting也是先通过分解问题,将下图中的复杂问题分解为两个简单子问题,再依次解决这个两个子问题得到最终的答案。
在DROP和GSM8K数据集上,Least-to-Most Prompting的方法都具有较高的准确率,尤其是DROP数据集上效果提升更加明显。
文章二:”Successive Prompting”[3]
连续提示词解决复杂任务
Successive Prompting工作与Least-to-Most Prompting是同时期的工作,他们的核心思想类似,都是将复杂的问题先分解为简单的问题再分别解决。但Successive Prompting方法并不是在一开始就将复杂问题分解为多个子问题,而是每一次都分解出下一个要解决的子问题,让大语言模型去回答该子问题。再将复杂问题和上一个问题的答案一起输入,去分解下一个要解决的子问题,并进行回答。一直重复上述过程,直到大模型给出没有问题需要回答,最后一个子问题的答案就是复杂问题的答案。
Successive Prompting方法可以看做是一个迭代的提示词方法,下图给出了该方法每一个迭代过程,以及没有其他问题后得到最终的过程示例。
该方法还引入了一些数据集外的prompt示例的构造方式与一些符号化的构造方式,最终,在DROP数据集上取得了较高的准确率。
此外,论文的实验部分还比较了Prompting方法与Fine-tuning方法的效果,分别在问题分解部分和问题回答部分使用In-Context Prompting方法和Fine-tuning方法,我们可以看到Fine-tuning方法均带来了准确率提升。且在问题分解部分(QD)使用Fine-tuning会带来更大幅提升,这说明大预言模型“具有”回答简单的子问题的能力,问题分解是限制复杂推理准确率的“瓶颈”。
文章三:利用大预言模型解决知识图谱中的复杂逻辑推理问题[4]
知识图谱的复杂逻辑查询通常指一阶逻辑查询(First-Order Logical Queries),即由合取(conjunction, ∧),析取(disjunctions, ∨),存在量词(existential quantifiers, ∃)和非(negation, ¬)操作构成的逻辑语句。
在之前的工作中,复杂逻辑查询通常使用图表达学习的方法寻找答案,将节点、边和查询图都表达为低维向量空间中的某种形状,距离查询图的表达最近的节点即为查询的答案。但这类方法有以下三个缺点:一是对查询图的形式高度依赖,没有在训练集中出现过的查询图形式很难推断出正确的答案;二是泛化能力差,在一个图上训练的表达无法泛化到其他图;三是基于图表达的方法要求图的规模不能太大,而且对新加入的节点无法学习其表达。
因此,本文提出了一种基于大语言模型来回答知识图谱上一阶逻辑查询的方法LARK(Language-guided Abstract Reasoning over Knowledge graphs)。LARK通过查询中的实体和关系找到知识图谱中的相关子图作为上下文,利用大预言模型中农的prompting方法对分解后的query进行解答,具体的流程如下图。
首先,Query Abstraction将所有的实体和关系都用ID来表示,以提高不同图谱和查询上的泛化能力。Neighborhood Retrieval将所有查询图中出现实体和关系的k跳内子图检索出来,作为上下文。
下一步,Logical Chain Decomposition将逻辑查询分解为一个子查询序列,利用k跳内的子图作为上下文提示词,按序回答每一个分解的子问题,最终得到查询的答案。
实验部分分为以下几个部分,分别解答下列问题。
问题1:LARK在复杂推理任务上的有效性
如下图,在大部分query形式中,LARK都是效果最好的方法。
问题2:将查询图链式分解的优势
由上图,我们可以看到跳数多的查询下,LARK带来的效果提升更为明显。
问题3:大预言模型的规模对效果的影响
毋庸置疑,在所有的查询形式下,参数量更大的语言模型都会得到更好的表现。
问题4:大预言模型Token数对效果的影响
在实验中,T5模型的token限制设置为2048,GPT-3.5的token限制为4096,实验选取了上下文token数大于2048的查询进行测试,由于模型学到的上下文更加丰富,这些查询使用更大token数的语言模型会得到更好的效果。
总 结
利用大语言模型解决自然语言复杂推理问题是近期的热点问题,将复杂问题拆解为易得到正确答案的子问题是其中的关键问题之一。知识图谱的逻辑查询图天然的有向无环图形式为复杂问题精准拆解为具有拓扑序的简单子问题序列带来了天然的优势。将大语言模型的推理能力与知识图谱的结构化知识融合,带来更好的推理能力是未来可能的研究方向。
参考文献
[1] J. Wei, X. Wang, D. Schuurmans, et al. (2022). Chain-of-thought prompting elicits reasoning in large language models. Advances in Neural Information Processing Systems.
[2] D. Zhou, N. Schärli, L. Hou, et al. (2023). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. The Eleventh International Conference on Learning Representations.
[3] D. Dua, S. Gupta, S. Singh, et al. (2022). Successive Prompting for Decomposing Complex Questions. Conference on Empirical Methods in Natural Language Processing.
[4] N. Choudhary, C. Reddy. (2023). Complex Logical Reasoning over Knowledge Graphs using Large Language Models. Arxiv.
相关文章:

论文导读 | 大语言模型与知识图谱复杂逻辑推理
前 言 大语言模型,尤其是基于思维链提示词(Chain-of Thought Prompting)[1]的方法,在多种自然语言推理任务上取得了出色的表现,但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…...

数智竞技何以成为“科技+体育”新样本?
文 | 智能相对论 作者 | 青月 “欢迎来到,钢铁突袭。” 三人一组,头戴VR设备,中国香港队和泰国队在数实融合的空间里捉对厮杀,通过互相射击对方能量铠甲获取积分。 虽然双方都展现出了极强的机动性,但显然中国香港队…...

Vue项目Jenkins自动化部署
1. 需求描述 我们希望提交uat分支时,UAT项目能够自动发布,提交master分支时,无需自动发布,管理员手工发布 2. 效果展示 3. 采用技术 Jenkins + K8S + Docker + Nginx 4. 具体实现 4.1 编写default.conf 在Vue项目根目录新建default.conf文件,主要进行代理配置、首页…...

特效!视频里的特效在哪制作——Adobe After Effects
今天,我们来谈谈一款在Adobe系列中推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室的属于层类型后期软件——Adobe After Effects。 Adobe After Effects…...

2023年中国醇酸树脂涂料需求量、应用领域及市场规模前景分析[图]
醇酸树脂指多元醇和多元酸与脂肪酸经过酯化缩聚生成的高聚物,其由邻苯二甲酸酐、多元醇和脂肪酸或甘油三脂肪酸酯缩合聚合而成。醇酸树脂固化成膜后,具有耐磨性好、绝缘性佳等优势,在涂料领域应用广泛。2022年醇酸树脂产量约336.3万吨&#x…...

【Linux进阶之路】动静态库
文章目录 回顾一. 静态库1.代码传递的方式2.简易制作3.原理 二. 动态库1.简易制作2.基本原理 尾序 回顾 前面在gcc与g的使用中,我们简单的介绍了动态库与静态库的各自的优点与区别: 动态链接库,也就是所有的程序公用一份代码,虽然方便省空间&…...

Ubuntu磁盘扩展容量
gparted扩展...

2023年中国羽绒制品需求现状、市场规模及细分产品规模分析[图]
羽绒羽毛指生长在水禽类动物(鹅、鸭)腋下、腹部羽绒和羽毛的统称,属于上游鹅鸭肉食品工业副产品的综合利用,是下游羽绒制品的填充料。根据国家标准,绒子含量≥50%的称为羽绒,绒子含量<50%的称为…...

动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)
文章目录 循环神经网络的从零开始实现1. 独热编码2. 初始化模型参数3. 循环神经网络模型4. 预测5. 梯度裁剪6. 训练 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 # 读取数据集 %matplotlib inline import math import torchfrom torch import …...

【操作系统】文件系统的逻辑结构与目录结构
文章目录 文件的概念定义属性基本操作 文件的结构文件的逻辑结构文件的目录结构文件控制块(FCB)索引节点目录结构 文件的概念 定义 在操作系统中,文件被定义为:以计算机硬盘为载体的存储在计算机上的信息集合。 属性 描述文件…...

局域网内Ubuntu上搭建Git服务器
1.在局域网内选定一台Ubuntu电脑作为Git服务端: (1).新建用户如为fbc,执行如下命令:需设置密码,此为fbc sudo adduser fbc (2).切换到fbc用户:需密码,此前设置为fbc su fbc (3).建一个空目录作为仓…...

基础课10——自然语言生成
自然语言生成是让计算机自动或半自动地生成自然语言的文本。这个领域涉及到自然语言处理、语言学、计算机科学等多个领域的知识。 1.简介 自然语言生成系统可以分为基于规则的方法和基于统计的方法两大类。基于规则的方法主要依靠专家知识库和语言学规则来生成文本࿰…...

xpath
xpath 使用 使用 from lxml import etree或者 from lxml import htmlet etree.XML(xml) et etree.HTML(html) res et.xpath("/book") # 返回列表项目Valueet.xpath(“/book”)/表示根节点/div/a子节点用/依次表示/name/text()text()取文本/book//nick//表示标签…...

Java拼图小游戏
Java拼图小游戏 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Collections; import java.util.List;public cla…...

终于有人把数据资产入表知识地图总结出来了,轻松看懂
在当前数字化的浪潮下,数据已经成为劳动、土地、知识、技术以后的第五大生产要素,“数据就是资源”已成为共识。如今数据资产“入表”已成定局,数据资产化迫在眉睫。 2023年8月21日,财政部正式印发《企业数据资源相关会计处理暂行…...

白鳝:聊聊IvorySQL的Oracle兼容技术细节与实现原理
两年前听瀚高的一个朋友说他们要做一个开源数据库项目,基于PostgreSQL,主打与Oracle的兼容性,并且与PG社区版内核同步发布。当时我听了有点不太相信,瀚高的Highgo是在PG内核上增加了一定的Oracle兼容性的特性,一般也会…...

vue和uni-app的递归组件排坑
有这样一个数组数据,实际可能有很多级。 tree: [{id: 1,name: 1,children: [{ id: 2, name: 1-1, children: [{id: 7, name: 1-1-1,children: []}]},{ id: 3, name: 1-2 }]},{id: 4,name: 2,children: [{ id: 5, name: 2-1 },{ id: 6, name: 2-2 }]} ]要渲染为下面…...

【考研】数据结构(更新到顺序表)
声明:所有代码都可以运行,可以直接粘贴运行(只有库函数没有声明) 线性表的定义和基本操作 基本操作 定义 静态: #include<stdio.h> #include<stdlib.h>#define MaxSize 10//静态 typedef struct{int d…...

汇编-指针
一个变量如果包含的是另一个变量的地址, 则该变量就称为指针(pointer) 。指针是操作数组和数据结构的极好工具,因为它包含的地址在运行时是可以修改的。 .data arrayB byte 10h, 20h, 30h, 40h ptrB dword arrayB ptrB1 dword OFFSET arrayBarray…...

常见Web安全
一.Web安全概述 以下是百度百科对于web安全的解释: Web安全,计算机术语,随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台…...

milvus数据库搜索
一、向量相似度搜索 在Milvus中进行向量相似度搜索时,会计算查询向量和集合中具有指定相似性度量的向量之间的距离,并返回最相似的结果。通过指定一个布尔表达式来过滤标量字段或主键字段,您可以执行混合搜索。 1.加载集合 执行操作的前提是…...

HEVC参考帧技术
为了增强参考帧管理的抗差错能力,HEVC采用了参考帧集技术,通过直接在每一帧的片头码流中传输DPB中各个帧的状态变化,将当前帧以及后续帧可能用到的参考帧在DPB中都进行描述,描述以POC作为一帧的身份标识。因此,不需要依…...

QT小记:The QColor ctor taking ints is cheaper than the one taking string literals
这个警告意味着在使用 Qt 的 C 代码中,使用接受整数参数的 QColor 构造函数比使用接受字符串字面值的构造函数更有效率。 要解决这个警告,你可以修改你的代码,尽可能使用接受整数参数的 QColor 构造函数,而不是字符串字面值。例如…...

机器人走迷宫问题
题目 1.房间有XY的方格组成,例如下图为64的大小。每一个方格以坐标(x,y) 描述。 2.机器人固定从方格(0, 0)出发,只能向东或者向北前进,出口固定为房间的最东北角,如下图的 方格(5,3)。用例保证机器人可以从入口走到出口。 3.房间…...

轻量封装WebGPU渲染系统示例<36>- 广告板(Billboard)(WGSL源码)
原理不再赘述,请见wgsl shader实现。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/BillboardEntityTest.ts 当前示例运行效果: WGSL顶点shader: group(0) binding(0) var<uniform> objMat :…...

Java 多线程进阶
1 方法执行与进程执行 GetMapping("/demo1")public void demo1(){//方法调用new ThreadTest1("run1").run();//线程调用new ThreadTest1("run2").start();} 下断点调试信息,可以看到run()方法当前线程是“main1” 继续运行到run里面&…...

CentOS上搭建SVN并自动同步至web目录
一、搭建svn环境并创建仓库: 1、安装Subversion: yum install svn2、创建版本库: //先建目录 cd /www mkdir wwwsvn cd wwwsvn //创建版本库 svnadmin create xiangmumingcheng二、创建用户组及用户: 1、 进入版本库中的配…...

.Net中Redis的基本使用
前言 Redis可以用来存储、缓存和消息传递。它具有高性能、持久化、高可用性、扩展性和灵活性等特点,尤其适用于处理高并发业务和大量数据量的系统,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。 Redis的使用 安装包Ser…...

使用cli批量下载GitHub仓库中所有的release
文章目录 1\. 引言2\. 工具官网3\. 官方教程4\. 测试用的网址5\. 安装5.1. 使用winget安装5.2. 查看gh是否安装成功了 6\. 使用6.1. 进行GitHub授权6.1.1. 授权6.1.2. 授权成功6.2 查看指定仓库中的所有版本的release6.2.1. 默认的30个版本6.2.2. 自定义的100个版本6.3 下载特定…...

深入分析TaskView源码之触摸相关
问题背景 hi,粉丝朋友们: 大家好!android 10以后TaskView作为替代ActivityView的容器,在课程的分屏pip自由窗口专题也进行了相关的详细介绍分析。 这里再补充一下相关的TaskView和桌面内嵌情况下的触摸分析 主要问题点ÿ…...