Knowledge Graph-Enhanced Large Language Models via Path Selection

研究背景

  1. 研究问题:这篇文章要解决的问题是大型语言模型(LLMs)在生成输出时存在的事实不准确性,即所谓的幻觉问题。尽管LLMs在各种实际应用中表现出色,但当遇到超出训练语料库范围的新知识时,它们通常会生成不准确的信息。
  2. 研究难点:该问题的研究难点包括:现有的方法主要依赖LLMs自身进行知识图谱(KG)知识提取,这种方法的灵活性较差,因为LLMs只能对知识(例如KG中的知识路径)是否应该使用提供二元判断。此外,LLMs倾向于仅选择与输入文本有直接语义关系的知识,而可能会忽略具有间接语义关系的有用知识。
  3. 相关工作:为了解决这一问题,已有研究提出了在训练阶段或推理阶段将新知识整合到LLMs中的方法。然而,这些方法通常需要大量的计算资源。最近的研究表明,通过提示工程将新知识与输入文本一起引入是一种高效的方法。

研究方法

这篇论文提出了一个名为KELP(Knowledge Graph-Enhanced Large Language Models via Path Selection)的新方法,用于解决LLMs在生成输出时的事实不准确性。具体来说,KELP通过以下三个阶段的框架来处理上述问题:

  1. 知识路径提取:首先,从背景KG中提取与输入文本中的实体相关的知识路径。对于每个实体,提取所有1跳和2跳的知识路径作为候选知识。
  2. 样本编码:其次,使用一个在潜在语义空间上训练的句子编码器M对输入问题q和提取的知识路径进行编码,以获得它们的距离(即路径对LLMs输出的潜在影响),从而确保捕捉到路径中有潜在影响力的知识。
  3. 细粒度路径选择:最后,基于余弦相似度分数引入两个覆盖规则,进一步细化所选路径,以确保选择的路径具有高灵活性。具体步骤如下:
    • 将所有实体的路径集聚合成一个总路径集PqPq​。
    • 对于每个共享特定三元组的路径子集Pq(h,r,t)Pq​(h,r,t),选择得分最高的k1k1​条路径。
    • 通过另一个规则限制不同共享三元组的数量,确保所选路径的多样性。
    • 设置一个阈值γγ,过滤掉低相似度的路径,最终得到高相似度的路径集PrPr​。

公式解释:

  • 知识路径提取公式:

Pe={(e→r→o)∣o∈E,r∈R}∪{(e→r1→o1→r2→o2)∣o1,2∈E,r1,2∈R}Pe​={(e→r→o)∣o∈E,r∈R}∪{(e→r1​→o1​→r2​→o2​)∣o1,2​∈E,r1,2​∈R}

  • 样本编码公式:

hq=M(q),hp=M(p′)hq​=M(q),hp​=M(p′)

  • 细粒度路径选择公式:

Pq′(h,r,t)=argmax⁡Pq′(h,r,t)∑p∈Pq′(h,r,t)cos⁡(hp,hq)Pq′​(h,r,t)=Pq′​(h,r,t)argmax​p∈Pq′​(h,r,t)∑​cos(hp​,hq​)

实验设计

  1. 数据集:实验使用了两个不同类型的数据集:强语义知识和弱语义知识。强语义知识任务使用MetaQA数据集,弱语义知识任务使用FACTKG数据集。
  2. 基线:实验包括与之前研究相同的基线,使用大型语言模型“gpt-3.5-turbo-0613”。
  3. 实现细节:使用预训练的DistilBert模型作为编码器M,优化器为AdamW,学习率为2×10−62×10−6。在FactKG数据集中,由于实体邻居子图过大,采用关系优先排序策略。

结果与分析

  1. 少样本学习设置:在4-shot、8-shot和12-shot配置下,KELP在强语义知识任务中的表现优于基于LLM的证据方法,特别是在12-shot场景中,KELP在1跳强语义知识任务中的检索性能超过了基于LLM的证据方法。

     

  2. 全监督模型比较:在少样本学习设置中,KELP的表现超过了一些全监督模型,接近这些模型中的最高准确率基准。

  3. 敏感性分析:KELP在不同少样本数量下的性能变化不大,特别是在样本数量有限的情况下,KELP表现出稳定性和优越性。

总体结论

这篇论文提出了KELP方法,通过灵活捕捉可能与输入文本无直接语义关系的潜在影响力知识,提高了LLMs生成输出的事实准确性。实验结果表明,KELP在强语义知识和弱语义知识任务中均优于现有的最先进基线方法,特别是在少样本学习场景中表现出显著的优越性。KELP的贡献在于:

  • 批判性地研究了提示工程中缺乏灵活性和遗漏潜在影响力知识的挑战。
  • 提出了KELP方法,通过训练路径-文本编码器捕捉潜在影响力知识,并通过两个覆盖规则确保知识提取的灵活性。
  • 在事实验证和问答数据集上的广泛实验验证了KELP的有效性。

论文评价

优点与创新

  1. 灵活性:KELP通过潜在语义匹配为知识路径生成分数,实现了更细粒度的灵活知识提取。
  2. 间接语义关系:KELP不仅考虑与输入文本直接语义相关的知识路径,还能通过训练编码器考虑与输入文本具有间接语义关系的知识路径。
  3. 覆盖规则:引入了两个覆盖规则,确保知识路径选择的灵活性,从而获取最具代表性和多样性的路径。
  4. 关系优先排序:在知识路径集非常大的情况下,引入了“仅关系排序”策略,显著减少了需要编码的候选路径数量,提高了匹配效率。
  5. 实验验证:在事实验证和问答任务的数据集上进行了广泛的实验,证明了KELP的有效性。
  6. 多跳推理:KELP能够处理多跳推理,展示了其在复杂推理任务中的潜力。

不足与反思

  1. 数据收集的复杂性:为了训练一个能够捕捉有价值知识上下文的编码器,需要构建一个包含各种数据类型的训练集,这需要大量的手动测试和时间。
  2. 社会偏见:背景知识图和预训练大型语言模型中可能包含具有社会偏见的原始数据信息,尽管KELP方法仅基于输入文本与知识路径的关系进行选择,但仍需注意潜在的社会影响。

关键问题及回答

问题1:KELP方法在知识路径提取阶段是如何操作的?

在知识路径提取阶段,KELP方法的目标是从背景知识图谱(KG)中识别出对给定输入问题q有价值的知识路径。具体操作如下:

  1. 对于输入问题q中的每个实体e,提取其知识路径集PePe​。这个集合包括所有从实体e出发的1跳和2跳路径。
  2. 1跳路径的形式为(e→r→o)(e→r→o),其中o是KG中的一个实体,r是关系。
  3. 2跳路径的形式为(e→r1→o1→r2→o2)(e→r1​→o1​→r2​→o2​),其中o1o1​和o2o2​是KG中的实体,r1r1​和r2r2​是关系。

这些提取的路径将作为后续样本编码阶段的候选知识路径。

问题2:KELP方法中的样本编码是如何进行的?其目的是什么?

样本编码是KELP方法中的一个关键步骤,旨在通过预训练的句子编码器M对输入问题q和提取的知识路径进行编码,以获得它们的距离(即路径对LLMs输出的潜在影响),从而确保捕捉到路径中有潜在影响的有用知识。具体操作如下:

  1. 对于每个知识路径,构建一个路径句子。如果路径只包含一个三元组(h,r,t)(h,r,t),则路径句子为"h r t";如果路径包含两个三元组,则路径句子为"h1 r1 t1, h2 r2 t2"。
  2. 使用编码器M对问题q和路径句子进行编码,得到它们的嵌入表示hqhq​和hphp​。
  3. 通过计算hqhq​和hphp​之间的余弦相似度,量化每条知识路径的有用性。相似度越高,表示该路径对LLM输出的潜在影响越大。

样本编码的目的是确保所选的路径能够有效地捕捉到对LLM生成输出有潜在影响的有用知识,从而提高输出的事实准确性。

问题3:KELP方法中的细粒度路径选择是如何实现的?其优势是什么?

细粒度路径选择是KELP方法中的最后一个阶段,旨在基于余弦相似度分数选择最适合输入问题q的路径作为上下文。具体操作如下:

  1. 聚合所有实体的路径集PqPq​,得到总的路径集。
  2. 使用覆盖规则选择得分最高的路径子集Pq′(h,r,t)Pq′​(h,r,t),公式如下:

Pq′(h,r,t)=argmax⁡Pq′(h,r,t)∑p∈Pq′(h,r,t)cos⁡(hp,hq)Pq′​(h,r,t)=Pq′​(h,r,t)argmax​p∈Pq′​(h,r,t)∑​cos(hp​,hq​)

  1. 根据另一个规则进一步限制不同共享三元组的数量,公式如下:

T′=argmax⁡T′∑(h,r,t)∈T′max⁡p∈Pq′(h,r,t)cos⁡(hp,hq)T′=T′argmax​(h,r,t)∈T′∑​p∈Pq′​(h,r,t)max​cos(hp​,hq​)

  1. 设置阈值γγ,过滤掉低相似度的路径,公式如下:

γ=min⁡(h,r,t)∈T′max⁡p∈Pq′(h,r,t)cos⁡(hp,hq)γ=(h,r,t)∈T′min​p∈Pq′​(h,r,t)max​cos(hp​,hq​)

  1. 最终得到高相似度的路径集PrPr​,作为提示的上下文。

细粒度路径选择的优势在于其灵活性,能够通过调整覆盖规则和阈值,选择出多样且最具代表性的路径,从而确保所选路径能够有效地捕捉到对LLM生成输出有潜在影响的有用知识。这种方法不仅提高了LLM输出的事实准确性,还增强了模型的泛化能力。

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

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

相关文章

Spark中的宽窄依赖

一、什么是依赖关系 这里通过一张图来解释: result_rdd是由tuple_rdd使用reduceByKey算子得到的, 而tuple_rdd是由word_rdd使用map算子得到的,word_rdd又是由input_rdd使用flatMap算子得到的。它们之间的关系就称为依赖关系! 二…

实现uniapp-微信小程序 搜索框+上拉加载+下拉刷新

pages.json 中的配置 { "path": "pages/message", "style": { "navigationBarTitleText": "消息", "enablePullDownRefresh": true, "onReachBottomDistance": 50 } }, <template><view class…

在vscode中如何利用git 查看某一个文件的提交记录

在 Visual Studio Code (VSCode) 中&#xff0c;你可以使用内置的 Git 集成来查看某个文件的提交历史。以下是具体步骤&#xff1a; 使用 VSCode 内置 Git 功能 打开项目&#xff1a; 打开你的项目文件夹&#xff0c;确保该项目已经是一个 Git 仓库&#xff08;即项目根目录下…

如何用python求导数

打开python运行环境。 导入微分的模块包&#xff1a;from sympy import *。 定义符号变量&#xff1a;x symbols(x) 定义一个函数&#xff1a;f x**9 diff diff(f,x)求导 最后输入diff&#xff0c;即可显示其变量值了。

Protobuf——基本使用

什么是Protobuf Protobuf是 Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法&#xff0c;它可⽤于&#xff08;数据&#xff09;通信协议、数据存储等。 Protobuf类比于XML&#xff0c;是一种灵活&#xff0c;高效&#xff0c;自动化机制的结构数据序列化方法&…

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强&#xff01;一、研究背景二、模型结构和代码任务流程一&#xff1a;启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强&#xff01; 多模态命名实体识别&#xff08;MNER&#xff09;最近引起了广泛关注。…

Spring源码(十二):Spring MVC之Spring Boot

本篇将详细讨论Spring Boot 的启动/加载、处理请求的具体流程。我们先从一个简单的Spring Boot项目日志开始分析&#xff08;这里假设读者已经仔细阅读完了前面的文章&#xff0c;且对Spring源码有一定深度的了解&#xff0c;否则会看得一脸懵逼&#xff09;。 本文为2024重置…

c语言-教零基础/新手入门

C 简介 一提到语言这个词语&#xff0c;自然会想到的是像英语&#xff0c;汉语等这样的自然语言&#xff0c;因为它是人和人交换信息不可缺少的工具。而今天计算机普遍了我们生活的每一个角落&#xff0c;除了人和人的相互交流之外&#xff0c;我们必须和计算机交流。就像人类…

【安装配置教程】二、VMware安装并配置ubuntu22.04

一、准备&#xff1a; 虚拟机安装ubuntu&#xff0c;首先要先找到一个镜像&#xff0c;可以去ubuntu官方下载一个&#xff0c;地址&#xff1a;下载Ubuntu桌面系统 | Ubuntu&#xff0c;下载好iso的镜像文件后保存好&#xff0c;接下来打开VMware。 二、安装&#xff…

立体视觉的核心技术:视差计算与图像校正详解

立体视觉的核心技术&#xff1a;视差计算与图像校正详解 在立体视觉中&#xff0c;通过双目相机&#xff08;即左右两台相机&#xff09;的不同视角捕获的图像&#xff0c;结合几何关系&#xff0c;我们可以推算出场景中物体的深度。本文将深入讲解如何基于视差&#xff08;di…

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7&#xff1a; 前置知识&#xff1a; [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM&#xff08;长短期记忆神经网络&#xff09;StatQuest_哔哩哔哩_bilibili 大部分思路来自于&#xff1a; PyTorch LSTM和LSTMP…

scala学习记录,Set,Map

set&#xff1a;集合&#xff0c;表示没有重复元素的集合&#xff0c;特点&#xff1a;唯一 语法格式&#xff1a;val 变量名 Set [类型]&#xff08;元素1&#xff0c;元素2...&#xff09; 可变不可变 可变&#xff08;mutable&#xff09;可对元素进行添加&#xff0c;删…

Docker了解

Docker是一种容器化技术&#xff0c;它可以将应用程序和其依赖项打包到一个独立的、可移植的容器中&#xff0c;以便在不同的环境中运行。Docker基于Linux操作系统的容器化技术&#xff0c;可以提供更轻量、更快速、更灵活、更一致的应用部署和管理方式。 Docker的基本概念包括…

‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,Miniconda

下载了conda&#xff0c;但是在cmd里执行conda --version会显示’conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因是环境变量里没有添加conda&#xff0c;无法识别路径。 需要在系统环境变量里添加如下路径&#xff1a; 保存之后重新打开cmd&am…

《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(1)

《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;1&#xff09; 《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;1&#xff09;理解TCP和UDPTCP/IP协议栈TCP/IP协议的诞生背景链路层网络层T…

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…

深度学习笔记12

1.神经网络的代价函数 神经网络可同时用于解决分类问题和回归问题&#xff0c;对于不同的问题会在输出层后&#xff0c;加上不同的变换函数。一般来说&#xff0c;回归问题使用恒等函数,分类问题使用sigmoid或softmax函数。而不同的变换函数&#xff0c;也对应不同的代价函数。…

RabbitMQ队列详细属性(重要)

RabbitMQ队列详细属性 1、队列的属性介绍1.1、Type&#xff1a;队列类型1.2、Name&#xff1a;队列名称1.3、Durability&#xff1a;声明队列是否持久化1.4、Auto delete&#xff1a; 是否自动删除1.5、Exclusive&#xff1a;1.6、Arguments&#xff1a;队列的其他属性&#xf…

json即json5新特性,idea使用json5,fastjson、gson、jackson对json5支持

文章目录 1.新特性1.1.JSON&#xff06;JSON5官网2.示例2.1. IntelliJ IDEA2.1.1.支持.json5文件2.1.2.md支持json5代码块 2.9. 示例源码 1.新特性 【通用】 注释尾随逗号key无需引号&#xff08;或单引号&#xff09; 【字符串】 字符串可以用单引号引起来。字符串可以通过转…

【NOIP普及组】摆花

【NOIP普及组】摆花 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 m 盆。通过调 查顾客的喜好&am…