当前位置: 首页 > news >正文

KG-CoT:基于知识图谱的大语言模型问答的思维链提示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一些符号定义

知识图谱实体数量: n n n
知识图谱中关系类型数量: m m m
三元组矩阵: M ∈ { 0 , 1 } n × n × m \textbf{M} \in \{0, 1\}^{n \times n \times m} M{0,1}n×n×m M i j k = 1 M_{ij}^k = 1 Mijk=1则说明实体 i i i和实体 j j j之间具有关系 k k k
输入问题 q q q:输入的问题
初始实体表示向量 e 0 ∈ { 0 , 1 } n \textbf{e}^0 \in \{0,1\}^n e0{0,1}n,如果输入问题q中存在实体i,则 e i 0 = 1 e^0_i = 1 ei0=1

分步 图推理模型:Step-by-Step Graph Reasoning Model

第一步:关系评分计算(Relation Score Calculation):计算每一步推理的关系得分
在这里插入图片描述
在这里插入图片描述

E n c o d e r Encoder Encoder:文本编码器,例如bert,利用它得到整段文本的表示 q \textbf{q} q和所有字符的表示 h 1 , . . . , h ∣ q ∣ h_1, ..., h_{|q|} h1,...,hq
f t f^{t} ft:推理第 t t t步的编码器(MLP+tanh映射)
q t \textbf{q}^t qt:推理第 t t t步的文本表示
R t \textbf{R}^t Rt:推理第 t t t步的关系评分

第二步:分步推理(Step-by-Step Reasoning):计算每个实体的评分

根据关系评分为实体之间的权重赋值
W i j t = { R k t M i j k = 1 0 Otherwise, W_{ij}^t = \begin{cases} R_k^t & M_{ij}^k = 1 \\ 0 & \text{Otherwise,} \end{cases} Wijt={Rkt0Mijk=1Otherwise,

根据每一步的实体间权重,从初始实体 e 0 \textbf{e}^0 e0开始,得到每一步推理的实体权重,最后通过注意力机制汇总所有的推理步,得到所有实体的评分 e ˉ \bar{\mathbf{e}} eˉ

e t = e t − 1 W t β = Softmax ( MLP ( q ) ) , e ˉ = ∑ t = 1 T β t e t , \mathbf{e}^t = \mathbf{e}^{t-1} \mathbf{W}^t \\ \beta = \text{Softmax}(\text{MLP}(\mathbf{q})), \\ \bar{\mathbf{e}} = \sum_{t=1}^T \beta_t \mathbf{e}^t, et=et1Wtβ=Softmax(MLP(q)),eˉ=t=1Tβtet,

第三步:训练
L = ∥ e ˉ − a ∥ 2 . \mathcal{L} = \|\bar{\textbf{e}} - \textbf{a}\|^2. L=eˉa2.
其中 a \textbf{a} a为候选答案实体。

推理路径生成算法:Reasoning Path Generation Method

步骤1:从知识图谱实体集合中抽取评分( e ˉ \bar{\mathbf{e}} eˉ)前TopK大(之后有不同K取值的对比实验)的实体集合 E k \textbf{E}^k Ek
步骤2:从问题q中的实体开始,向外拓展抽取一跳/两跳路径,需要满足 W i j 1 , W i j 1 W_{ij}^1,W_{ij}^1 Wij1,Wij1均大于0,并且推理结束实体在 E k \textbf{E}^k Ek集合中。
p i j 1 = ⟨ E i , R e l i j , E j , [ W i j 1 ] ⟩ p i k 2 = ⟨ E i , R e l i j , E j , R e l j k , E k , [ W i j 1 , W i j 2 ] ⟩ p_{ij}^1 = \langle E_i, Rel_{ij}, E_j , [W_{ij}^1] \rangle \\ p_{ik}^2 = \langle E_i, Rel_{ij}, E_j, Rel_{jk}, E_k , [W_{ij}^1,W_{ij}^2] \rangle pij1=Ei,Relij,Ej,[Wij1]⟩pik2=Ei,Relij,Ej,Reljk,Ek,[Wij1,Wij2]⟩
步骤3:计算路径的平均W分数作为路径分数,对每个结束实体,挑选路径分数前N大(之后有不同N取值的对比实验)的路径作为大模型的提示模版。

联合推理:Joint Reasoning

将推理路径生成算法得到的推理路径转为文本模版,加入大模型提示中,回答问题。
在这里插入图片描述
在这里插入图片描述

实验

数据集

WebQSP:WebQSP是一个知识密集型的多跳问题回答基准测试。它包含4037个问题,都是基于FreeBase的1跳或2跳问题。基于之前的工作,在问题实体的2跳邻域内检索知识三联体,并生成一个包含1886684个实体、1144个关系和5780246个知识三联体的知识子图。

CompWebQ:CompWebQ是一个多跳的问题回答基准。它包含34,672个问题,有许多跳跃和约束,这使得llm的处理具有挑战性。他们利用[Shi et al.,2021]中检索到的知识子图,并利用原始数据分割进行评估。

Simple Questions:Simple Questions是一个单跳的问题回答基准。问题是基于来自FreeBase的信息而产生的,最终,在本研究中产生了108,442个严重依赖于事实知识的问题。他们随机选择1000个问题,检索问题实体的1跳邻域进行评估。

WebQuestions:WebQuestions是一个具有挑战性的自主领域的问题回答基准。它包含5,810个问题,以自由库作为知识库。对于每个问题,我们检索问题实体的2跳邻域,并利用原始数据分割进行评估。

实验结果

在这里插入图片描述

研究不同基座模型对实验效果的影响

在这里插入图片描述

对比不同检索器

在这里插入图片描述

研究超参数K和超参数N对实验结果的影响

在这里插入图片描述

示例

在这里插入图片描述

优势:计算更快,节省大模型资源

在这里插入图片描述

创新点

提出了一套可训练子图抽取算法,能够结合根据问题得到需要查询关系类型,进而生成许多推理路径。

可能的改进点

在这里插入图片描述

  1. 得到问题 第t步 表示的时候,我认为也需要考虑前t-1步推理路径加入到运算中。

  2. 该方法适用场景受限,由于第一阶段只是对关系类型进行打分,然后将关系分数分配给实体。如果图谱中关系类型很少,三元组数目很多,那么在第二阶段挑选TopK实体的时候,可能会面临很多实体同分的状况,无法挑选合适的实体。除此以外,从问题中可能抽取多个不同的实体,如果分配相同的下一跳关系权重的话,也是不合适的。

相关文章:

KG-CoT:基于知识图谱的大语言模型问答的思维链提示

一些符号定义 知识图谱实体数量: n n n 知识图谱中关系类型数量: m m m 三元组矩阵: M ∈ { 0 , 1 } n n m \textbf{M} \in \{0, 1\}^{n \times n \times m} M∈{0,1}nnm, M i j k 1 M_{ij}^k 1 Mijk​1则说明实体 i i i和实…...

【JMeter】多接口关联

1. 同一线程组内,如何实现多接口关联 非加密的值 前置接口的返回单条数据使用Json提取器提取前置接口的返回多条数据使用Json提取器+逻辑控制器Loop Controller前置接口的返回多条数据使用Json提取器+逻辑控制器forEach加密的值 前置接口的返回值使用Beanshell后置提取器存储为…...

2020 年 12 月青少年软编等考 C 语言五级真题解析

目录 T1. 漫漫回国路思路分析T2. 装箱问题思路分析T3. 鸣人和佐助思路分析T4. 分成互质组思路分析T1. 漫漫回国路 2020 年 5 月,国际航班一票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考…...

前端实时显示当前在线人数的实现

实时显示当前在线人数的实现 本文档提供了在网页上实时显示当前在线人数的多种实现方法,包括使用 WebSocket 实现实时更新和轮询方式实现非实时更新。 方法一:使用 WebSocket 实现实时更新 服务器端设置 通过 Node.js 和 WebSocket 库(如 …...

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念,我们用一张图来简单的理解一下: 在计算机语言当中: 换行符:\n 回车符:\r \r\n:回车换行 这时候有人可能会有疑问:我在学习C…...

vscode 无法使用npm, cmd命令行窗口可以正常执行

解决方法: 执行命令获得命令的位置 get-command npm 得到如下 然后删除或者修改 npm.ps1文件 让其不能使用就行。然后重启vscode即可。 pnpm 同理即可 另外加速源 国内镜像源(淘宝): npm config set registry https://regist…...

Leetcode 967 Numbers With Same Consecutive Differences

题意 给定n,代表整数的长度,给定k代表两个相邻数字之间的间隔。求所有的值构成的组合 题目链接 https://leetcode.com/problems/numbers-with-same-consecutive-differences/description/ 题解 dfs,有k位置要选,第一个位置我…...

node.js中实现token的生成与验证

Token(令牌)是一种用于在客户端和服务器之间安全传输信息的加密字符串。在Web开发中,Token常用于身份验证和授权,确保用户能够安全地访问受保护的资源。 作用与意义 身份验证:Token可以用来验证用户的身份&#xff0…...

[C++11]_[初级]_[工作线程如何监听主线程条件变量wait_for方法的使用]

场景 在开发多线程程序时&#xff0c;有时候需要启动一个线程来监听外部进程的执行情况&#xff0c;并且在指定时间如果还没运行结束就强制结束外部线程。那么C标准库有这种监听线程并能在超时时提示的方法吗&#xff1f; 说明 在C11的<condition_variable>里就可以用…...

Openstack持久存储-Swift,Cinder,Manila三者之间的区别

总结不易&#xff0c;给个三连吧&#xff01;&#xff01;&#xff01; 补充&#xff1a; 文件共享存储服务Manila 在OpenStack生态系统中&#xff0c;Cinder和Manila分别提供了两种不同类型的存储服务&#xff0c;类似于传统的SAN&#xff08;存储区域网络&#xff09;和NAS&…...

深度学习第三弹:python入门与线性表示代码

一、python入门 1.熟悉基础数据结构——整型数据&#xff0c;浮点型数据&#xff0c;列表&#xff0c;字典&#xff0c;字符串&#xff1b;了解列表及字典的切片&#xff0c;插入&#xff0c;删除操作。 list1 [1, 2, 3, 4, 5] for each in list1:print(each) print(list1[1…...

解决报错记录:TypeError: vars() argument must have __dict__ attribute

解决报错记录&#xff1a;manager_pyplot_show vars(manager_class).get(“pyplot_show“) TypeError: vars() argument must 1.问题引申 在pycharm中调用matplotlib函数批量绘制维度图时&#xff0c;抛出异常&#xff1a; manager_pyplot_show vars(manager_class).get(&…...

SpringBoot 原理篇(day14)

配置优先级 SpringBoot 中支持三种格式的配置文件&#xff1a; 配置文件优先级排名&#xff08;从高到低&#xff09;&#xff1a; properties 配置文件yml 配置文件yaml 配置文件 注意事项 虽然 springboot 支持多种格式配置文件&#xff0c;但是在项目开发时&#xff0c;推荐…...

Vscode辅助编码AI神器continue插件

案例效果 1、安装或者更新vscode 有些版本的vscode不支持continue,最好更新到最新版,也可以直接官网下载 https://code.visualstudio.com/Download 2、安装continue插件 搜索continue,还未安装的,右下脚有个Install,点击安装即可 <...

Type-C单口便携显示器-LDR6021

Type-C单口便携显示器是一种新兴的显示设备&#xff0c;它凭借其便携性、高性能和广泛的应用场景等优势&#xff0c;正在成为市场的新宠。以下是Type-C单口便携显示器的具体运用方式&#xff1a; 一、连接与传输 1. **设备连接**&#xff1a;Type-C单口便携显示器通过Type-C接…...

青少年编程与数学 02-006 前端开发框架VUE 19课题、内置组件

青少年编程与数学 02-006 前端开发框架VUE 19课题、内置组件 一、Transition<Transition> 组件基于 CSS 的过渡效果CSS 过渡 class为过渡效果命名CSS 的 transitionCSS 的 animation自定义过渡 class同时使用 transition 和 animation深层级过渡与显式过渡时长性能考量 J…...

腾讯云AI代码助手编程挑战赛 - 使用 JavaScript 构建一个简易日历

功能简介&#xff1a; 动态年份选择&#xff1a;用户可以通过下拉框选择从 2000 年到 2050 年的任意年份。全年日历生成&#xff1a;根据用户选择的年份&#xff0c;动态生成该年份的所有 12 个月份的日历。直观的 UI 设计&#xff1a;使用 CSS 美化日历外观&#xff0c;使日历…...

Xcode 正则表达式实现查找替换

在软件开发过程中&#xff0c;查找和替换文本是一项常见的任务。正则表达式&#xff08;Regular Expressions&#xff09;是一种强大的工具&#xff0c;可以帮助我们在复杂的文本中进行精确的匹配和替换。Xcode 作为一款流行的开发工具&#xff0c;提供了对正则表达式的支持。本…...

学习flv.js

前言 flv.js一款使用纯 JavaScript 编写的 HTML5 Flash 视频 (FLV) 播放器&#xff0c;无需 Flash&#xff01;&#xff01;&#xff01;flv.js 的工作原理是将 FLV 文件流转换为 ISO BMFF&#xff08;碎片 MP4&#xff09;片段&#xff0c;然后通过Media Source Extensions&l…...

FreePBX 17 on ubuntu24 with Asterisk 20

版本配置&#xff1a; FreePBX 17&#xff08;最新&#xff09; Asterisk 20&#xff08;最新Asterisk 22&#xff0c;但是FreePBX 17最新只支持Asterisk 21&#xff0c;但是21非LTS版本&#xff0c;所以选择Asterisk 20&#xff09; PHP 8.2 Maria DB (v10.11) Node J…...

【算法】算法大纲

这篇文章介绍计算机算法的各个思维模式。 包括 计数原理、数组、树型结构、链表递归栈、查找排序、管窥算法、图论、贪心法和动态规划、以及概率论:概率分治和机器学习。没有办法逐个说明,算法本身错综复杂,不同的算法对应着不同的实用场景,也需要根据具体情况设计与调整。…...

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…...

安装本地测试安装apache-doris

一、安装前规划 我的服务器是三台麒麟服务器,2台跑不起来,这是我本地的,内存分配的也不多。 fe192.168.1.13 主数据库端口9030访问 8Gbe192.168.1.13内存4G 硬盘50be192.168.1.14内存4G 硬盘50be192.168.1.12内存4G 硬盘5013同时安装的fe和be 。 原理:192.168.1.13 服…...

【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 mysql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中 (2)使用 flink 消费 DDL bi…...

IOS HTTPS代理抓包工具使用教程

打开抓包软件 在设备列表中选择要抓包的 设备&#xff0c;然后选择功能区域中的 HTTPS代理抓包。根据弹出的提示按照配置文件和设置手机代理。如果是本机则会自动配置&#xff0c;只需要按照提醒操作即可。 iOS 抓包准备 通过 USB 将 iOS 设备连接到电脑&#xff0c;设备需解…...

在 Ubuntu 22.04 上从 Wayland 切换到 X11的详细步骤

在 Ubuntu 22.04 上从 Wayland 切换到 X11&#xff0c;步骤其实很简单&#xff0c;主要是在登录界面进行选择。以下是详细的步骤&#xff1a; 步骤 1&#xff1a;退出当前会话 首先&#xff0c;点击屏幕右上角的用户菜单&#xff0c;选择 注销 或 退出&#xff0c;以退出当前…...

【Linux】4.Linux常见指令以及权限理解(2)

文章目录 3. Linux指令3.1 ls指令和rm指令补充3.2 man指令&#xff08;重要&#xff09;3.3cp指令&#xff08;重要&#xff09;输出重定向3.3.1ubuntu20.04如何安装tree 3.4 mv指令&#xff08;重要&#xff09;mv指令更改文件名mv指令更改目录名 如何看待指令指令的重命名3.5…...

ffmpeg aac s16 encode_audio.c

用ffmpeg库时&#xff0c;用代码对pcm内容采用aac编码进行压缩&#xff0c;出现如下错误。 [aac 000002bc5edc6e40] Format aac detected only with low score of 1, misdetection possible! [aac 000002bc5edc8140] Error decoding AAC frame header. [aac 000002bc5edc81…...

vue3监听器

1.侦听数据源类型 watch 的第一个参数可以是不同形式的“数据源”&#xff1a;它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组 const x ref(0) const y ref(0)// 单个 ref watch(x, (newX) > {console.log(x is ${newX}) …...

03-51单片机定时器和串口通信

一、51单片机定时器 1.定时器介绍 1.1为什么要使用定时器 在前面的学习中&#xff0c;用到了 Delay 函数延时&#xff0c;这里学习定时器以后&#xff0c;就可以通过定时器来完成&#xff0c;当然定时器的功能远不止这些&#xff1a; 51 单片机的定时器既可以定时&#xff…...