使用LLM在KG上进行复杂的逻辑推理10.12+10.13

news2024/11/29 13:17:44

使用LLM在KG上进行复杂的逻辑推理

  • 摘要
  • 介绍
  • 相关工作
  • 方法
    • 问题格式化
    • 邻域检索和逻辑链分解
    • 链状推理提示
    • 实施细节

在这里插入图片描述

摘要

在知识图谱上进行推理是一项具有挑战性的任务,这需要深度理解实体之间复杂的关系和它们关系的逻辑。而当前的方法通常依赖于学习 几何形状 以将实体嵌入到向量空间中进行逻辑查询操作,但在复杂查询和特定数据集表示方面表现不佳。

几何形状通常指的是将实体或关系映射到向量空间时所使用的几何结构或形状。几何形状嵌入方法通过学习实体和关系之间的几何关系,将它们映射到向量空间中的几何形状。这些几何形状可以是点、线、曲线等,它们在向量空间中的位置和距离可以反映实体和关系在知识图谱中的语义关系。

本文提出了一种新的 解耦(decoupled) 方法,即LARK,将复杂的KG推理定义为上下文KG搜索和逻辑查询推理的组合,以利用 图抽取算法(Graph extraction algorithms) 和大型语言模型(LLM)的优势。

“解耦方法”(Decoupling Method)通常指的是将复杂系统或问题分解为更简单、相互独立的组件或子问题的方法。
"Graph extraction algorithms"图抽取算法
用于从非结构化的文本数据中提取出图结构信息。这些算法将文本中的实体、关系和属性识别出来,并将它们表示为图的形式,其中实体作为节点,关系作为边连接节点。
Graph extraction算法的目标是将文本数据转化为结构化的图数据,以便进行图分析、图挖掘和知识图谱构建等任务。

实验证明,所提出的方法在多个逻辑查询构造上优于现有的KG推理方法,并在更复杂的查询中取得了显著的性能提升。此外,该方法的性能与底层LLM的规模增加成正比,从而使得最新的LLM在逻辑推理上能够得到整合。该方法为解决复杂KG推理的挑战提供了新的方向,并为未来在这一领域的研究铺平了道路。

介绍

知识图谱(KG)使用灵活的三元组模式来编码知识,其中两个实体节点通过关系边连接。然而,一些现实世界中的知识图谱,如Freebase、Yago和NELL等,通常是大规模的、噪声干扰和不完整的。因此,在这样的知识图谱上进行推理是人工智能研究中的一个基本且具有挑战性的问题。

逻辑推理的总体目标是利用存在量词(∃)、合取(∧)、析取(∨)和否定(¬)等一阶逻辑(FOL)查询的运算符,为知识图谱上的FOL查询开发回答机制。为了有效地捕捉知识图谱实体的语义位置和逻辑覆盖范围,当前研究主要集中在创建多样的潜在空间几何结构上,例如向量、盒子、双曲面和概率分布等。
尽管这些方法取得了成功,但它们在性能上存在以下限制:

  1. 复杂查询: 它们依赖于对 FOL查询 的限制形式,这导致丢失需要链式推理和涉及知识图谱中多个实体之间多个关系的复杂查询的信息;
  2. 泛化能力: 针对特定知识图谱的优化可能无法推广到其他知识图谱,这限制了这些方法在真实场景中的适用性,因为知识图谱在结构和内容上可以有很大的变化;
  3. 可扩展性: 繁重的训练时间限制了这些方法在更大的知识图谱上的可扩展性和将新数据纳入现有知识图谱的能力。

FOL查询是指一阶逻辑(First-Order Logic)中的查询操作。一阶逻辑是一种形式化的逻辑系统,用于描述和推理关于对象、关系和性质的命题。
在一阶逻辑中,FOL查询是对知识库或知识图谱中的事实和关系进行询问的方式。FOL查询使用一阶逻辑的语法和语义规则,结合存在量词 (∃)、合取 (∧)、析取 (∨) 和否定 (¬) 等逻辑运算符,以及变量和常量,来构造查询语句。查询语句由一个或多个谓词(表示关系)和变量组成,用于询问知识库中是否存在满足某些条件的事实或关系。
例如,假设有一个知识库包含关于人员的信息,其中包括实体 “John” 和 “Mary”,以及关系 “父亲” 和 “母亲”。我们可以构建一个FOL查询,如 “∃x 父亲(x, John)”,它询问是否存在一个实体 x,使得 x 是 John 的父亲。查询的回答可能是 “是” 或 “否”,表示是否存在满足查询条件的事实。

为了解决这些限制,本文旨在利用大型语言模型(LLM)的推理能力,在一种名为Language-guided Abstract Reasoning over Knowledge graphs(LARK)的新框架中进行推理,如图1所示。
在这里插入图片描述
在LARK中,利用逻辑查询在知识图谱上搜索相关的子图上下文,并使用逻辑分解的LLM提示进行链式推理。

为了实现这一目标,首先从输入查询和知识图谱中抽象出逻辑信息。由于逻辑的不变性,这使得我们的方法可以专注于逻辑形式化,避免模型的产生幻觉,并在不同的知识图谱上进行泛化。从这个抽象的知识图谱中,使用逻辑查询中存在的实体和关系提取相关的子图。这些子图作为上下文提示输入到LLMs中。在下一个阶段,需要有效处理复杂的推理查询。根据之前的研究,发现与一系列简单提示相比,LLMs在处理复杂提示时效果显著较差。因此,为了简化查询,利用它们的逻辑性质,将多操作查询确定性地分解为逻辑顺序的基本查询(从图1b到图1c的转换中所示)。然后,将这些分解的逻辑查询转换为提示,并通过LLM进行处理,生成最终的答案集(图1d所示)。逻辑查询按顺序处理,如果查询y依赖于查询x,则x在y之前调度。操作按逻辑顺序进行调度,以便将不同的逻辑查询进行批处理,并将答案存储在缓存中以便于访问。

逻辑分解是将复杂的多操作查询分解为一系列逻辑顺序的基本查询的过程。每个基本查询只包含一个操作,例如投影、交集、并集或否定。

本文提出的方法有效地将逻辑推理与知识图谱的能力与LLM的能力相结合,这是首次尝试。与先前依赖受限的一阶逻辑(FOL)查询形式的方法不同,该方法利用逻辑分解的LLM提示,实现了对从知识图谱中检索到的子图的链式推理,从而能够高效地利用LLM的推理能力。知识图谱搜索模型受到 检索增强技术 的启发,但实现了知识图谱的确定性特性,以简化相关子图的检索。此外,与其他提示方法相比,链式分解技术通过利用复杂查询中的逻辑操作链和以逻辑顺序利用后续查询中的先前答案,增强了知识图谱中的推理能力。

检索增强技术是一类用于改进信息检索系统性能的方法和技术。传统的信息检索系统通常基于关键词匹配或统计模型来检索和排名文档,但这些方法可能存在一些局限性,例如无法准确理解查询意图、无法处理复杂的查询或无法提供个性化的结果。
检索增强技术旨在克服这些限制,提高信息检索系统的效果和用户体验。

总结一下,本文的主要贡献如下:

  1. 提出了一种名为Language-guided Abstract Reasoning over Knowledge graphs(LARK)的新模型,利用大型语言模型的推理能力,高效地回答知识图谱上的FOL查询。
  2. 该模型利用查询中的实体和关系在抽象的知识图谱中找到相关的子图上下文,然后使用逻辑分解的查询的LLM提示在这些上下文中进行链式推理。
  3. 在标准知识图谱数据集上进行的逻辑推理实验表明,相对于基于投影(p)、交集(∧)、并集(∨)和否定(¬)等操作的14种FOL查询类型,LARK的MRR性能提升了33%至64%。
  4. 通过比较复杂查询和分解的逻辑查询,证明了链式分解的优势,LARK在逻辑推理任务上的性能比复杂查询提升了9%至24%。此外,对LLMs的分析显示了增加规模和更好设计的底层LLMs对LARK性能的重要贡献。

相关工作

本文涉及两个主题的交叉,即知识图谱上的逻辑推理和LLM中的推理提示技术。

知识图谱上的逻辑推理:这个领域的一开始的方法主要关注捕捉实体的语义信息以及它们之间的投影所涉及的关系操作。然而,该领域的进一步研究揭示了对编码知识图谱中存在的空间和层次信息的新几何形式的需求。为了解决这个问题,模型如Query2Box 、HypE 、PERM和BetaE将实体和关系编码为盒子、双曲面、高斯分布和贝塔分布。此外,CQD等方法专注于通过简单中间查询的答案组合来改进复杂推理任务的性能。在另一条研究线路中,HamQA 和QA-GNN 开发了利用知识图谱邻域增强整体性能的问答技术。先前的方法主要关注增强逻辑推理的知识图谱表示。与这些现有方法相反,本文提供了一个系统的框架,利用LLM的推理能力,并将其定制为解决知识图谱上的逻辑推理问题。

LLM中的推理提示:最近的研究表明,LLM可以通过上下文提示学习各种NLP任务。此外,LLM通过提供中间推理步骤(也称为思维链)成功应用于多步推理任务,这些步骤是到达答案所需的。另外,某些研究组合了多个LLM或带有符号函数的LLM来执行多步推理,并具有预定义的分解结构。最近的研究如least-to-most、successive 和decomposed 的提示策略将复杂提示分解为子提示,并按顺序回答它们以实现有效性能。虽然这些研究与本文的方法接近,但它们没有利用先前的答案来指导后续查询。
LARK是独特的,因为它能够利用链式分解机制中的逻辑结构,增强检索到的知识图谱邻域,并在连续查询中将前面的LLM答案纳入其中的多阶段回答结构。

方法

在这一节描述了在知识图谱上进行逻辑推理的问题设置,还描述了该模型的各个组件。

问题格式化

在这项工作职能,解决了在KG上进行逻辑推理的问题。知识图谱 G: E × R,存储实体(E)和关系(R)。不失一般性,KG也可以组织为一组三元组 ⟨e1,r,e2⟩ ⊆ G,其中每个关系 r ∈ R 是一个布尔函数 r: E×E → {True,False},表示关系 r 是否存在于实体对(e1,e2)∈ E 之间。
考虑四个基本的一阶逻辑(FOL)操作:投影(p),交集(∧),并集(∨)和否定(¬)来查询 KG。这些操作的定义如下:
在这里插入图片描述

“≜” 是一个符号,表示 “qp[Qp]” 定义为后面的表达式。
“?Vp : {v1, v2, …, vk} ⊆ E” 是一个条件,表示变量 “Vp” 取值于集合 {v1, v2, …, vk},且这些取值都属于实体集合 E。
“存在一个变量 a1,使得在变量 Vp 取值于集合 {v1, v2, …, vk} 且这些取值都属于实体集合 E 的情况下,命题 qp[Qp] 成立。”

其中,qp、q、q和q¬分别代表投影、交集、并集和否定查询;Vp、V、V和V¬分别代表这些查询的相应结果。ai是一个布尔指示器,如果ei通过关系ri与vi相连,则ai为1,否则为0。逻辑推理的目标是制定这些操作,以便对于给定的查询qτ和输入Qτ,我们能够有效地从实体集合E中检索到Vτ,例如对于一个投影查询qp[(Nobel Prize, winners)],我们希望检索到Vp = {Nobel Prize winners} ⊆ E。

在传统的逻辑推理方法中,查询操作通常通过几何函数来表示。例如,在Query2Box中,查询的交集被表示为盒子表示的交集。然而,在LARK中,利用语言模型(LLM)的先进推理能力,并优先考虑在查询中对逻辑链进行高效的分解,以提高性能。这种新颖的策略旨在通过利用LLM在知识图谱上的推理能力来克服传统方法的局限性。

邻域检索和逻辑链分解

LARK的推理能力基于大型语言模型构建。然而,语言模型的输入长度有限,限制了其处理整个知识图谱的能力。此外,尽管知识图谱中的实体和关系集合是唯一的,但逻辑操作的推理是普适的。因此,特别针对知识图谱上的逻辑推理的上述特点调整了语言模型的提示。为了满足这个需求,我们采用了一个两步的过程:

  1. 查询抽象化: 为了使知识图谱上的逻辑推理过程更具普适性,建议 将知识图谱和查询中的所有实体和关系替换为唯一的ID。这种方法有三个显著的优点。
    (1)首先,它减少了查询中的标记(token)数量,提高了语言模型的效率。
    (2)其次,它允许仅利用语言模型的推理能力,而不依赖于任何外部的常识知识。通过避免使用常识知识,LARK减少了模型幻觉的可能性(可能导致生成不受知识图谱支持的答案)。
    (3)最后,它去除了任何特定于知识图谱的信息,从而确保该过程对不同的数据集具有普适性。虽然这可能直观地导致信息的丢失,但在第4.4节中呈现的实证结果表明,对整体性能的影响是可忽略的。

将知识图谱和查询中的所有实体和关系替换为唯一的ID
旨在简化和抽象化知识图谱中的实体和关系表示。通常,在知识图谱中,实体和关系使用它们的文本标识或符号来表示。然而,这些文本标识可能是多样的,存在不统一性和多义性的问题。
为了解决这个问题,并使得知识图谱的处理更加一致和高效,可以使用唯一的ID来代替实体和关系的文本标识。每个实体和关系都被分配一个独特的ID,这个ID可以是数字、字符串或其他形式的标识符。
假设我们有一个知识图谱,其中包含以下实体和关系的文本标识:
实体:
实体1: “苹果”
实体2: “香蕉”
实体3: “橙子”
关系:
关系1: “属于”
关系2: “是颜色”
现在,我们将这些实体和关系替换为唯一的ID:
实体ID:
实体1: E1
实体2: E2
实体3: E3
关系ID:
关系1: R1
关系2: R2
这样,我们可以使用唯一的ID来表示知识图谱中的实体和关系。例如,一个关系三元组可以表示为 (E1, R1, E2),表示 “苹果 属于 香蕉”。
在查询中,如果有一个查询 “橙子 是颜色 什么”,我们也可以将其中的实体和关系替换为唯一的ID,例如 “E3 R2 ?”,表示 “实体3 关系2 ?”。

  1. 邻域检索: 为了有效回答逻辑查询,不需要语言模型访问整个知识图谱。相反,可以识别包含答案的相关邻域。之前的方法主要关注语义检索的网络文档。然而,逻辑查询具有确定性的特点,因此对查询中存在的实体和关系进行 k层的深度优先遍历 。设E1τ和R1τ分别表示查询Qτ的查询类型τ中的实体和关系集合,则查询qτ的k级邻域由Nk(qτ[Qτ])定义为: 在这里插入图片描述

k层的深度优先遍历意味着我们探索和扩展与查询相关的实体和关系的范围,直到遍历的深度达到k级为止。这样可以限制遍历的范围,避免无限遍历整个知识图谱,同时在有限的深度内获取与查询相关的信息。

已经采取了一些措施,通过抽象查询并限制LLM的输入上下文,使LARK方法更具通用性和效率。然而,查询的复杂性仍然是一个问题。查询类型τ的复杂性,用O(qτ)表示,取决于它涉及的实体和关系的数量,即O(qτ) ∝ |Eτ| + |Rτ|。换句话说,查询的大小(以其组成元素为单位)是确定其计算复杂性的关键因素。这一观察结果尤其在LLM的上下文中具有相关性,因为先前的研究表明,它们处理的查询复杂性增加时,性能往往会降低。为了解决这个问题,LARK中提出了逻辑查询链分解机制,将复杂的多操作查询转化为多个单操作查询。由于操作集合是穷尽的,我们采用以下策略来分解不同的查询类型:

  • 将k层 投影查询 简化为k个一层投影查询,例如,一个包含一个实体和三个关系的3p查询在这里插入图片描述被分解为e1 r1 -→ A1, A1 r2 -→ A2, A2 r3 -→ A
  • 将k交集查询简化为k个投影查询和一个交集查询,例如,一个由两个投影查询在这里插入图片描述
    的3i查询组成的交集查询被分解为e1 r1 -→ A1, e2 r2 -→ A2, e3 r3 -→ A2, A1 ∧ A2 ∧ A3 = A。类似地,将k并集查询简化为k个投影查询和一个并集查询。

投影查询用于选择特定的实体和关系,并返回与它们相关联的信息。

在先前的工作和实证研究中使用的查询类型的详尽分解可以在附录中找到。

链状推理提示

在这里插入图片描述
在前一节中概述了限制邻域并将复杂查询分解为简单查询链的方法。利用这些方法,现在可以利用LLM的推理能力来获得查询的最终答案,如图2所示。为了实现这一点,采用了一个提示模板,将邻域转换为上下文提示,将分解的查询转换为问题提示。值得注意的是,分解中的某些查询依赖于先前查询的响应,例如交集查询依赖于前面的投影查询。此外,与之前的提示方法(如思维链和分解提示)不同,答案需要在提示中的特定位置进行集成。为了解决这个问题,在相关查询中保留一个占位符,并在实时中使用一个临时缓存存储前面的答案,以替换占位符。这还具有保持查询的并行性的额外好处,因为可以分阶段运行批量的分解查询,而不是顺序运行每个分解查询。关于不同查询类型的复杂和分解逻辑查询的具体提示模板,请参见附录B。

实施细节

在八个Nvidia A100 GPU上使用PyTorch 实现了LARK,每个GPU具有40 GB VRAM。对于LLM(Large Language Model),选择了FLAN-T5模型 ,因为它在Huggingface库中公开可用。为了对大规模模型进行高效的推理,我们依赖于LLM的混合精度版本和Deepspeed库的零阶段三优化。模型算法见附录D,所有实验的实现代码、精确配置文件和数据集均可公开获取。

在实验中,查询的最高复杂性要求在实体和关系周围有3个跳点的邻域。因此,将深度限制设置为3(即k = 3)。此外,为了使过程完全适用于不同的数据集,对输入设置了n个标记的限制,这取决于LLM模型(对于Flan-T5,n=2048)。在实践中,这意味着当上下文长度超过n时,停止深度优先遍历。

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

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

相关文章

5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因

今天给同学们分享一篇非肿瘤分型机器学习WGCNA实验的生信文章“Identification of diagnostic markers related to oxidative stress and inflammatory response in diabetic kidney disease by machine learning algorithms: Evidence from human transcriptomic data and mou…

C# U2Net Portrait 跨界肖像画

效果 项目 下载 可执行文件exe下载 源码下载

【环境】Ubuntu20.04 安装 Anaconda 顺顺利利

ubuntu里面安装的Anaconda也是顺顺利利 别忘了source source一下 参考链接 中间遇到了一个问题,用下面的链接轻松解决了 关于修改anaconda安装路径的问题

RT-Thread MQTT(学习)

MQTT背景应用 MQTT是机器对机器(M2M)/物联网(IoT)连接协议,英文全名为“Message Queuing Telemetry Transport”,“消息队列遥测传输”协议。它是专为受限设备和低带宽、高延迟或不可靠的网络而设计的&…

基于SpringBoot的社区团购系统

基于SpringBoot的社区团购系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:用户、管理员管理员:登录、个人中心、用户管理、…

【aloam】ubuntu20.04 配置 aloam 环境,编译过程报错及成功解决方法

为什么写这篇博客 ALOAM是slamer的必经之路,official提供的基础环境推荐ubuntu16.04或者18.04,而我用20.04已经有一段时间了,不方便换,但由于其他原因也不得不去配置。过程中出现了几个问题,在这里也就20分钟&#xf…

【网安专题10.11】软件安全+安全代码大模型

软件安全安全代码大模型 写在最前面一些启发科研方法科研思路 课程考察要求软件供应链安全漏洞复制1、代码克隆2、组件依赖分析 关键组件安全不足,漏洞指数级放大供应链投毒内部攻击源代码攻击分发、下载网站攻击更新、补丁网站攻击 形成技术壁垒(找方向…

链表——单链表的简单介绍

前提须知: 顺序表的简单介绍_明 日 香的博客-CSDN博客 顺序表的缺点: 从之前的博客中,我们得知,顺序表的本质实际上是一种数组。而数组的最大特征就是连续的空间。也因此,在线性表中,顺序表是一种物理上…

[每周一更]-(第67期):docker-compose 部署php的laravel项目

容器化部署laravel框架的php项目 操作步骤 参考: https://www.cnblogs.com/jingjingxyk/p/16842937.htmlhttps://developer.aliyun.com/article/708976 0、plv项目修改 composer install.env 修改后台地址 IP:端口chmod -R 777 public / chmod -R 777 storagevi…

ELK下载(Elasticsearch、Logstash、Kibana)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Simple RPC - 01 框架原理及总体架构初探

文章目录 概述RPC 框架是怎么调用远程服务的?客户端侧的逻辑服务端侧的逻辑完整流程 客户端是如何找到服务端地址的呢?核心:NamingService跨语言的RPC实现原理 RPC 框架的总体结构对外接口服务注册中心如何使用业务服务接口客户端服务端 模块…

【数据结构】:栈的实现

1 栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则 压栈…

Linux实现原理 — I/O 处理流程与优化手段

Linux I/O 接口 Linux I/O 接口可以分为以下几种类型: 文件 I/O 接口:用于对文件进行读写操作的接口,包括 open()、read()、write()、close()、lseek() 等。 网络 I/O 接口:用于网络通信的接口,包括 socket()、conne…

多目标鳟海鞘算法(Multi-objective Salp Swarm Algorithm,MSSA)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标鳟海鞘算法MSSA 多…

Go持续改进与代码审查

通过Golang提高软件质量 在快节奏的软件开发世界中,保持领先至关重要。在实现软件工程卓越的基石之一是持续改进的实践,而在这个旅程中的一个关键工具是代码审查过程。在本文中,我们将深入探讨持续改进的重要性,并探讨代码审查在…

【数据结构-字符串 三】【栈的应用】字符串解码

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

Android位置服务和应用权限

Github:https://github.com/MADMAX110/Odometer 一、使用位置服务 之前的Odometer应用是显示一个随机数,现在要使用Android的位置服务返回走过的距离。 修改getDiatance方法使其返回走过的距离,为此要用Android的位置服务。这些服务允许你得到用户的当…

当10年程序员是什么体验?存款几位数?

最近网上一个话题吸引了许多人的讨论,当10年程序员,是一种什么体验? 都说程序员的高收入和工作年限应该成正比,真的是这样吗?工作10年的程序员,工资应该是什么水平?不少网友纷纷“现身说法”..…

qt中json类

目录 QJsonValue QJsonObject QJsonArray QJsonDocument 案例: Qt 5.0开始提供了对Json的支持,我们可以直接使用Qt提供的Json类进行数据的组织和解析,下面介绍4个常用的类。 QJsonValue 该类封装了JSON支持的数据类型。 布尔类型&#xf…

希尔贝壳受邀参加《人工智能开发平台通用能力要求 第4部分:大模型技术要求》标准第一次研讨会

随着大模型技术与经验的不断累积,该方向也逐渐从聚焦技术突破,到关注开发、部署、应用的全流程工程化落地。为完善人工智能平台标准体系建设,满足产业多样化需求,2023年9月7日,中国信通院云大所在线上召开《人工智能开…