KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models

论文链接:2023.12-https://arxiv.org/pdf/2312.06185.pdf
1.Background & Motivation
目前生成式的语言模型,如ChatGPT等在通用领域获得了巨大的成功,但在专业领域,由于缺乏相关事实性知识,LLM往往会产生不准确的回复(即幻觉)。许多研究人员企图通过外部知识注入提高LLM在专业领域的表现,但许多最先进的llm都不是开源的,这使得仅向模型api注入知识具有挑战性。
研究发现KGs中存储的大量事实知识有可能显著提高LLM反应的准确性,所以解决上述问题的一个可行方法是将知识图(KGs)集成到LLM中。在此基础上本文提出了一个向LLM的进行黑盒知识注入框架KnowGPT。KnowGPT包括两部分:①利用深度强化学习(RL)从知识图(KGs)中提取相关知识;②并使用多臂赌博机(MAB)为每个问题选择最合适的路径抽取策略和提示。

现有的KG+LMs的方法有很多:

但许多最先进的LLM只能通过黑盒调用,即只能通过提交文本输入来检索模型响应,而无法访问模型细节。因而无法使用上述的白盒知识注入技术。(尽管白盒方法可以应用于开源LLMs,如BLOOM和LLaMA,但由于更新模型权重,往往会产生显著的计算成本。)因此,本文关注:能否开发一个黑盒知识注入框架,能够有效地将KG集成到仅使用API的LLM中?
在解决该问题时需要关注两个挑战:①如何检索KG;②如何编码、利用检索到的信息。
2.问题定义
给定一个问题上下文 Q = { Q s , Q t } Q=\{Q_s,Q_t\} Q={Qs,Qt}( Q s = { e 1 , . . . , e m } Q_s=\{e_1,...,e_m\} Qs={e1,...,em}为问题实体集合, Q t = { e 1 , . . . , e n } Q_t=\{e_1,...,e_n\} Qt={e1,...,en}为答案实体集合),一个LLM f f f ,和一个知识图谱 G G G, G G G包含三元组(头实体,关系,尾实体),表示为 ( h , r , t ) (ℎ,r,t) (h,r,t),目标是学习一个提示函数 f p r o m p t ( Q , G ) f_{prompt}(Q,G) fprompt(Q,G),生成一个提示 x x x,将 Q Q Q的上下文和 G G G中的事实知识结合起来,使得LLM的预测能够输出 Q Q Q的正确答案。
3.KnowGPT Framework

KnowGPT根据问题背景和答案选项,从现实世界的知识图谱中检索出一个问题特定的子图。首先,路径提取模块寻找最具信息量和简洁推理背景来适应上下文。然后,优化提示转换模块,考虑给定问题的知识和格式的最佳组合。
3.1 如何检索KG:强化学习(Reinforcement Learning, RL)
利用奖励函数激励RL提取KG子图中有关问题中提到的源实中到潜在答案中的目标实体的路径 P = { P 1 , . . . , P m } P=\{P_1,...,P_m\} P={P1,...,Pm}。且 P i = { ( e 1 , r 1 , t 1 ) , ( t 1 , r 2 , t 2 ) , . . . , ( t ∣ P i ∣ − 1 , r ∣ P i ∣ , t ∣ P i ∣ ) } P_i=\{(e_1,r_1,t_1),(t_1,r_2,t_2),...,(t_{|P_i|-1},r_{|P_i|},t_{|P_i|})\} Pi={(e1,r1,t1),(t1,r2,t2),...,(t∣Pi∣−1,r∣Pi∣,t∣Pi∣)}。RL使用策略梯度。其马尔可夫过程定义如下:
-
状态: 表示知识图谱中当前的位置,表示从实体ℎ到t的空间变化。状态向量 s s s定义为 s t = ( e t , e t a r g e t − e t ) s_t=(e_t,e_target−e_t) st=(et,etarget−et)。为了获得从背景知识图谱中提取的实体的初始节点嵌入,将知识图谱中的三元组转换为句子,并将其输入预训练语言模型中以获取节点嵌入。
-
动作: 包含当前实体的所有邻近实体。通过采取行动,模型将从当前实体移动到选择的邻近实体。
-
动作转移概率P: 转移模型的形式为 P ( s ’ ∣ s , a ) = 1 P(s’|s,a)=1 P(s’∣s,a)=1,如果通过动作 a a a将 s s s到达 s ’ s’ s’;否则 P ( s ’ ∣ s , a ) = 0 P(s’|s,a)=0 P(s’∣s,a)=0。
-
奖励函数包括: 提取路径的可达性、上下文相关性和简洁性。
- 路径的可达性: 如果在K个行动内达到目标,将获得奖励+1。否则,将获得奖励−1。

- 上下文相关性: 路径与上下文越相关,越应该被奖励

- 简洁性: 基于黑盒LLMs对输入长度的限制和调用成本考虑,引导的提示需在最短的路径长度内找到尽可能多有价值的信息。

- 路径的可达性: 如果在K个行动内达到目标,将获得奖励+1。否则,将获得奖励−1。
-
最终奖励函数:

3.2 如何利用检索到的KG: Prompt Construction with Multi-armed Bandit
MAB: 多臂赌博机MAB有许多“臂”,每次选择一个“臂”进行尝试,都会得到一个结果或奖励。一方面,希望“利用”那些之前表现良好的“臂”,可以在短时间内获得最大的奖励。另一方面,也想“探索”那些之前没有尝试过的“臂”,可能发现更好的策略或选择,从而在未来获得更大的奖励。
基于该原理,提示构建就是要想办法选择最有前途的提示。(多种方法组合,有点类似集成学习,但不一样)
假设有几种路径提取策略 P 1 , . . . , P m P_1,...,P_m P1,...,Pm和几种候选提示格式 F 1 , . . . , F n F_1,...,F_n F1,...,Fn。每个路径提取策略 P i P_i Pi是一种在给定问题环境下选择子图的方法,每个提示模板 F j F_j Fj代表一种将子图中的三元组转化为LLM预测的提示机制。
提示构建问题是要确定给定问题的最佳 P P P和 F F F的组合。本文将选择的整体过程定义为一个奖励最大化问题 m a x ∑ r P F max\sum{r_{PF}} max∑rPF,其计算如下:

为了捕捉问题与不同知识和提示格式组合间的上下文感知相关性, 文章使用期望函数 E ( ⋅ ) E(·) E(⋅)来确定多臂赌博机的选择机制。它能自适应地衡量不同问题对某个组合的潜在期望。



J J J表示最小二乘训练LOSS, β ( i ) β^(i) β(i)通过最大置信上界(UCB)计算。通过最大化期望函数 E ( ⋅ ) E(·) E(⋅),LLM学会了平衡开发和探索,以优先选择最有前途的提示来回答特定的问题背景。
4. Implementation
- 路径抽取策略(两种):
- P R L P_{RL} PRL:基于强化学习的路径提取策略。
- P s u b P_{sub} Psub:由于强化学习不够稳健,引入 P s u b P_{sub} Psub作为MAB选择的备选策略。这是一种启发式的子图提取策略,在源实体和目标实体周围提取2跳子图。
- Prompt(三种):
- 三元组 F t F_t Ft:例如(Sergey_Brin, founder_of,Google)。
- 句子描述 F s F_s Fs:将知识转化为口语化句子。
- 图表描述 F g F_g Fg:将知识视为结构化图表来激活LLM。通过使用黑盒LLM预处理提取的知识,突出中心实体生成描述。
MAB通过来自语言模型的反馈进行训练,以优先选择在不同实际问题背景下最合适的两种提取方法和三种预定义提示格式的组合。

5. Experiments
5.1 实验设置
关注问题:
RQ1: How does KnowGPT perform when compared with the state-of-the-art LLMs and KG_x0002_enhanced QA baselines?
RQ2: Does the proposed MAB-based prompt construction strategy contribute to the performance?
RQ3: Can KnowGPT solve complex reasoning tasks, and is KG helpful in this reasoning process?
数据集: 选用CommonsenseQA(多项选择题问答数据集),OpenBookQA(多项选择题),MedQA-USMLE(医学多项选择题)。
Base: ChatGPT
5.2 对比实验
整体表现:

与其他KG+LMs方法对比

5.3 消融实验


5.4 case study-多提示融合的有效性

可参考:https://mp.weixin.qq.com/s/k7tzvAXlCPQLHy1l8Wtx1Q
相关文章:
KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models
论文链接:2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型,如ChatGPT等在通用领域获得了巨大的成功,但在专业领域,由于缺乏相关事实性知识,LLM往往会产生不准确的…...
使用anaconda创建爬虫spyder工程
1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base,我们现在来创建一个名为spyder的环境,专门用于爬虫工程: //括号中名字,代表当…...
网络通信(7)-TCP协议解析
目录 一、定义 二、主要特点 三、报文格式 四、工作方式...
win32 WM_MENUSELECT消息学习
之前写了一些win32的程序,处理菜单单击都是处理WM_COMMAND消息,通过 LOWORD(wParam) 获取菜单ID,判断单击的是哪个菜单项; 还有一些其他菜单消息; 当在菜单项中移动光标或鼠标,程序会收到许多WM_MENUSELEC…...
Java学习苦旅(十六)——List
本篇博客将详细讲解Java中的List。 文章目录 预备知识——初识泛型泛型的引入泛型小结 预备知识——包装类基本数据类型和包装类直接对应关系装包与拆包 ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList遍历 结尾 预备知识——初识泛型 泛型的引入 我…...
python爬虫实现获取招聘信息
使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…...
模块电源(七):LDO 应用
1、Typical application circuit LDO 典型应用电路如下图所示: 2、High Output Current Positive Voltage Regulator 通过 PNP 型三极管 Tr1 ,可以提高 LDO 的输出电流能力,电路如下图所示: 设流过 R1 的电流为 ,当 …...
Redis命令---Hash(哈希)篇 (超全)
目录 1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。简介语法可用版本: > 2.0.0返回值: 如果命令执行成功,返回 OK 。 示例 2.Redis Hmget 命令 - 获取所有给定字段的值简介语法可用版本: > 2.0.0返回值: 一个包含多个给定字段…...
Objects are not valid as a React child (found: object with keys {name}).
在jsx中可以嵌套表达式,将表达式作为内容的一部分,但是要注意,普通对象不能作为子元素;但是数组,react元素对象是可以的 如下:不能将stu这个对象作为子元素放 function App() {const myCal imgStyleconst…...
nodejs业务分层如何写后端接口
这里展示的是在node express 项目中的操作 ,数据库使用的是MongoDB,前期关于express和MongoDB的文章可访问: Nodejs后端express框架 server后端接口操作:通过路由匹配——>调用对应的 Controller——>进行 Service调用——&…...
Windows 7 虚拟机的安装以及解决安装VMVMware tools问题
1.Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 参考:Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 注意:下载官方补丁:Microsoft Update Catalog在智慧联想浏览器中打不开,要在火狐中才能打开下载。 2.win7如…...
[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器
本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-9PID控制器) P —— Proportional I —— Integral D —— Derivative 当前误差/过去误差/误差的变化趋势 K p ⋅ e K_{\mathrm{p}}\cdot e Kp⋅e:比…...
SSM养老院综合服务系统----计算机毕业设计
项目介绍 该项目为后台管理项目,分为管理员与护工两种角色; 管理员角色包含以下功能: 管理员登录,个人资料密码管理,用户管理,床位类型管理,床位管理,护工管理,老人管理,咨询登记管理,预约登记管理,老人健康信息管理,费用管理等功能。 护…...
广州求职招聘(找工作)去哪里找比较好
在广州找工作,可以选择“吉鹿力招聘网”这个平台。它是一个号称直接和boss聊的互联网招聘神器,同时,“吉鹿力招聘网”作岗位比较齐全,企业用户也多,比较全面。在“吉鹿力招聘网”历即可投递岗位。 广州找工作上 吉鹿力…...
ARM NEON 指令
NEON指令 按照操作数类型可以分为正常指令、宽指令、窄指令、饱和指令、长指令。 正常指令:生成大小相同且类型通常与操作数向量相同到结果向量。长指令:对双字向量操作数执行运算,生产四字向量到结果。所生成的元素一般是操作数元素宽度到…...
Open3D 最小二乘拟合平面——拉格朗日乘子法
目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接Open3D 最小二乘拟合平面——拉格朗日乘子法。爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y +...
Rockchip平台Android应用预安装功能(基于Android13)
Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能,主要是指配置产品时,根据厂商要求,将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型: 安装不可卸载应用安…...
vue项目表单使用正则过滤ip、手机号
import useFormValidate from /hooks/useFormValidatesetup(props, { emit }) {const { validateName, validateIPAndPort } useFormValidate()const state reactive({workFaceInfo: props.info?.id ? props.info : {},sysTypeData: props.sysType,formRules: {name: [{req…...
vscode编译调试sln工程
使用msvc工具链 vscode配置调用visual studio的编译和调试环境_vscode用vs-CSDN博客 将vscode打造无敌的IDE(14) tasks.json和launch.json配置详解,随心所欲添加自动化任务_tasks.json详解-CSDN博客 通过命令行使用 Microsoft C 工具集 | Microsoft Learn 编译…...
Android 车联网——CarManager管理器(四)
上篇文章介绍了CarPropertyService 的使用,这一篇我们来看一下 Android Automotive OS 中一些子模块如何使用 CarPropertyManager。 一、管理器调用 ICarImpl 源码位置:/packages/services/Car/service/src/com/android/car/ICarImpl.java @Override public IBinder getC…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
ZYNQ学习记录FPGA(二)Verilog语言
一、Verilog简介 1.1 HDL(Hardware Description language) 在解释HDL之前,先来了解一下数字系统设计的流程:逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端,在这个过程中就需要用到HDL,正文…...
