【论文阅读】《Graph Neural Prompting with Large Language Models》

news2024/12/22 17:35:27

文章目录

  • 0、基本信息
  • 1、研究动机
  • 2、创新点
  • 3、准备
    • 3.1、知识图谱
    • 3.2、多项选择问答
    • 3.3、提示词工程(prompt engineering)
  • 4、具体实现
    • 4.1、提示LLMs用于问答
    • 4.2、子图检索
    • 4.3、Graph Neural Prompting
      • 4.3.1、GNN Encoder
      • 4.3.2、Cross-modality Pooling
      • 4.3.3、Domain Projector
      • 4.3.4、Self-supervised Link Prediction
    • 4.4、模型整体框架图

0、基本信息

  • 会议:2024-AAAI
  • 作者:Yijun Tian, Huan Song, Zichen Wang
  • 文章链接:Graph Neural Prompting with Large Language Models
  • 代码链接:Graph Neural Prompting with Large Language Models

1、研究动机

 尽管大语言模型在各种各样的自然语言任务上取得了令人瞩目的成就,但是,当你在使用ChatGPT或者其他LLMs时有没有发现这样的一个问题,就是LLM的回答很宽泛,每个问题的回答不够精确,不够具体,这说明,LLMs仅仅是理解了语言的结构形式,,但没有理解语义信息。

 另一方面,知识图谱(KGs)中包含大量的语义信息,作为一种系统化的知识表达方式,但是目前的方法都是利用KGs联合训练来增强语言模型或是定制化的模型结构,这样的方法导致了大量的参数,需要额外的计算资源。如果采用直接的方法,将KGs用于检索增强生成,将KG三元组直接输入到LLMs,但是这样会引入噪声。

 那么,到底能不能从知识图谱中学习到拥有的知识并整合到与训练的LLM中呢?为此,本文提出了图神经提示(Graph Neural Prompt),解决上述问题,帮助预训练的LLMs从知识图谱中学习有用的知识。

主要解决的问题:

  • LLMs不能准确得到相应的知识,容易产生毫无根据的回答;
  • 训练阶段需要大量的计算资源;
  • 解决如何处理知识图谱为LLMs提供有益的信息,同时避免噪声干扰;

2、创新点

  • 一个即插即用的方法,帮助预训练LLMs从知识图谱中学习有用知识,据作者而言,这是首次研究。
  • 提出Graph Neural Prompting(GNP)方法,包含四个模块,GNN Encoder,Cross-modality Pooling,Domain Projector和Self-supervised Link Prediction

这篇文章其实也是A+B的过程,常见的图提示是基于文本的,本篇提示,则是使用GNNs对KGs进行嵌入作为提示,来微调语言模型。属于知识图谱增强语言模型的范畴。

3、准备

3.1、知识图谱

 知识图谱就是把不同种类的信息连接在一起而形成的一个关系网络,知识图谱由结点和边组成,每个结点表示现实世界中存在的“实体”,每条边表示实体与实体之间的“关系”。比如百度知识图谱,社交网络。

 一个知识图谱定义为 G = ( E , R , T ) \mathcal{G}=(\mathcal{E},\mathcal{R},\mathcal{T}) G=(E,R,T) E \mathcal{E} E表示实体集合, R \mathcal{R} R表示关系集合, T \mathcal{T} T表示事实三元组 { ( e h , r , e t ) } ∈ E × R × T \{(e_h,r,e_t)\}\in \mathcal{E} \times \mathcal{R}\times \mathcal{T} {(eh,r,et)}E×R×T e h e_h eh定义为头实体, r r r定义为关系, e t e_t et定义为尾实体。

3.2、多项选择问答

 对于一个问题 Q Q Q,选项集合定义为 A = { a k } k = 1 K A=\{a_k\}^K_{k=1} A={ak}k=1K K K K是回答选项的总个数, a k a_k ak定义为第 k k k个回答选项。可选的上下文 C C C取决于开卷闭卷。任务是设计一个机器学习模型 F θ \mathcal{F}_{\theta} Fθ θ \theta θ是参数)选择最好的选项去回答问题。真实标签 y ∈ A y\in A yA是问题 Q Q Q的正确答案。本文,希望使用知识图谱 G \mathcal{G} G来提供丰富的知识,并协助模型回答问题。

3.3、提示词工程(prompt engineering)

 提示工程是一个较新的学科,应用于开发和优化提示词(Prompt),帮助用户有效地将语言模型用于各种应用场景和研究领域。掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。研究人员可利用提示工程来提高大语言模型处理复杂任务场景的能力,如问答和算术推理能力。开发人员可通过提示工程设计和研发出强大的技术,实现和大语言模型或其他生态工具的高效接轨。

 简单理解,Prompt指的是用户给大型语言模型发出的指令,它可以是一个问题、一段文字描述,甚至可以是带有一堆参数的文字描述。LLM会基于 prompt 所提供的信息,生成对应的文本,亦或者图片。

来自:https://zhuanlan.zhihu.com/p/631967998

4、具体实现

4.1、提示LLMs用于问答

 一个常见的简单方法为,给定一个问题 Q Q Q,可选择的文本 C C C,答案选项 A A A,首先将 C , Q , A C,Q,A C,Q,A拼接并标记为输入文本序列X,然后设计一系列的提示文本tokens, P P P,并将其放在输入文本序列X的前面,之后,作为LLM模型的输入医生称预测 y ′ = f ( [ P , X ] ) y' = f([P,X]) y=f([P,X])。LLM模型可以使用teacher forcing和交叉熵损失来训练以适应下游任务:
L l l m = − l o g    p ( y ∣ X , θ ) \mathcal{L}_{llm}=-log\;p(y|X,\theta) Lllm=logp(yX,θ)
其中, p p p是模型参数化的概率分布。

 提示P,要么是来自文本输入形式的硬提示,要么是可学习嵌入向量的软提示。

 本文使用的方法为软提示,将知识图谱中的结构和真实信息编码到软提示 P P P中,软提示 P P P嵌入到的可训练的向量序列X中。可学习的 P P P提供丰富的结构信息和知识以及为每个数据实例提供任务指令。

teacher-forcing 在训练网络过程中,每次不使用上一个state的输出作为下一个state的输入,而是直接使用训练数据的标准答案(ground truth)的对应上一项作为下一个state的输入。

prompt模板的制作分为手工创建模板和自动化生成模板,而自动化生成模板又分为离散提示(又叫做硬提示)和连续提示(又叫做软提示)。离散prompt中,prompt是一个实际的文本字符串;连续prompt中,prompt直接在底层语言模型的嵌入空间中进行描述.

4.2、子图检索

 首先,为什么需要子图检索呢?我们要明确,知识图谱包含数百万个结点以及更多的关系,然而并不是每个结点对于我们的任务有帮助,因此我们需要检索出与我们任务相关的结点以及他的子图(因为子图包含丰富的语义信息)。所以我们需要在检索子图,这子图中包含于 X X X中的标记相关额实体。

 对于每个答案选项 a k a_k ak以及它对应的上下文 C C C和问题 Q Q Q,首先通过KGs中实体之间的链接获得一组匹配的实体集合 E m a t c h \mathcal{E}_{match} Ematch,将 X X X中标记的实体与知识图谱 G \mathcal{G} G中的实体匹配。然后,基于集合 E m a t c h \mathcal{E}_{match} Ematch检索子图,包括他们的两跳邻居以及他们之间的关系。检索到的子图包含必要的内容知识帮助模型回答问题 Q Q Q

4.3、Graph Neural Prompting

在第2节介绍了Graph Neural Prompting(GNP)主要包含了四个部分:

  • GNN encoder:将知识图谱(KGs)作嵌入;
  • Cross-modality pooling module:确定合适的结点嵌入;
  • Domain projector:建立起图与文本之间的桥梁;
  • Self-supervised link prediction objective:使模型能够识别结构信息;
    下面对上述四个模块分别介绍。

4.3.1、GNN Encoder

 为什么要用GNN Encoder呢?
 尽管检索的子图 G ′ \mathcal{G}' G包含了关于问题和答案选择的丰富上下文信息,但是一些实体和关系对于最终的答案并不相关。如果将子图 G ′ \mathcal{G}' G中的每个三元组直接输入,这样不可避免地引入了噪声,对LLM的预测产生影响。
为此,使用GNN去编码最相关的知识并进一步整合(聚合)实体中复杂的关系。首先,使用与训练的实体嵌入来初始化结点嵌入(这里我也不是很懂)。然后,使用GAT作为对检索子图 G ′ \mathcal{G}' G的编码器,编码过程如下:
H 1 = f G N N ( G ′ ) H_1 = f_{GNN}(\mathcal{G}') H1=fGNN(G)
其中, H 1 ∈ R d g H_1\in\mathbb{R}_{d_g} H1Rdg表示子图 G ′ \mathcal{G}' G中每个结点通过GNN学习到的结点嵌入向量, d g d_g dg表示GNN编码器输出的维度。

4.3.2、Cross-modality Pooling

 为什么要设计Cross-modality Pooling这个模块呢?
 如果不使用,之前的设计有什么问题?

 文中讲的是,为了识别与问题最相关的结点,并将结点嵌入合并为一个整体的图集表示以便后续使用。

NOTE:如何实现?
1、识别结点的重要性
引入一个自注意层,利用内部图的特征和节点间的隐式交互来动态识别节点的重要性。
H 2 = Self-Attn ( H 1 ) H_2=\text{Self-Attn}(H_1) H2=Self-Attn(H1)
其中, H 2 H_2 H2是经过自注意力计算后的结点嵌入。
 然后利用文本提示去计算图中结点的重要性。利用LLM中的字典(???)来获得输入文本中每个标记的嵌入文本 T ∈ R d t \mathcal{T}\in \mathbb{R}^{d_t} TRdt d t d_t dt表示LLM字典的维度。具体来说,首先对嵌入文本 T \mathcal{T} T进行变换,并获得变换后的文本嵌入 T ′ \mathcal{T}' T,确保 T ′ \mathcal{T}' T的维数与节点嵌入 H 2 H_2 H2的维数 d g d_g dg匹配。然后计算cross-modality attention, H 2 H_2 H2作为query, T ′ \mathcal{T}' T作为key和value,计算过程如下:
T ′ = F F N 1 ( σ ( F F N 2 ( T ) ) ) , H 3 = s o f t m a x [ H 2 ⋅ ( T ′ ) T / d g ] ⋅ T ′ \begin{aligned}\mathcal{T}'&=\mathrm{FFN}_1(\sigma(\mathrm{FFN}_2(\mathcal{T}))),\\H_3&=\mathrm{softmax}[H_2\cdot(\mathcal{T}')^T/\sqrt{d_g}]\cdot\mathcal{T}'\end{aligned} TH3=FFN1(σ(FFN2(T))),=softmax[H2(T)T/dg ]T
其中, σ \sigma σ为GELU激活函数, FFN 1 \text{FFN}_1 FFN1 FFN 2 \text{FFN}_2 FFN2是前馈神经网络, H 3 H_3 H3为最终的嵌入。接下来,通过pooling操作生成图级的嵌入:
H 4 = POOL ( H 3 ) H_4 = \text{POOL}(H_3) H4=POOL(H3)
其中, H 4 H_4 H4表示考虑 G ′ \mathcal{G}' G中节点重要性的图级嵌入。

4.3.3、Domain Projector

 为什么要设计Domain Project呢?

 目的是为了建立起图级前嵌入和文本域之间的映射关系,以便LLM理解,弥补了图和文本之间固有的差异,允许更无缝的集成。此外,projector将图级嵌入映射到和LLM的相同维度 d t d_t dt,这确保了与LLM的固有结构对接时的兼容性。projector设计如下:

Z = FFN 3 ( σ ( FFN 4 ( H 4 ) ) ) Z = \text{FFN}_3(\sigma(\text{FFN}_4(H_4))) Z=FFN3(σ(FFN4(H4)))
Z Z Z定义为Graph Neural Prompt(GNP)最终的输出, FFN 3 \text{FFN}_3 FFN3 FFN 4 \text{FFN}_4 FFN4是前馈神经网络

4.3.4、Self-supervised Link Prediction

 为什么要设计Self-supervised Link Prediction?
 尽管交叉熵目标使模型能够学习和适应下游任务的目标数据集,但是又设计了一个链接预测任务,以进一步完善其对实体之间关系的理解,并以自监督的方式捕获图知识。具体来说,掩盖子图 G ′ \mathcal{G}' G中的一些边,并用模型去预测他们。使模型学习使用部分图的内容和结构来推理丢失的链接。

 掩盖边的集合记为 E m a s k ⊆ E \mathcal{E}_{mask} \subseteq \mathcal{E} EmaskE,对于给定的三元组中的头实体,尾实体 { h 3 , t 3 } ∈ H \{h_3,t_3\} \in H {h3,t3}H,采用一种广泛使用的知识图嵌入方法DistMult,将KG中的实体嵌入和关系映射为向量, h , r , t h,r,t h,r,t。然后定义评分函数 ϕ ( e h , e t ) = < h , r , t > \phi(e_h,e_t)=<h,r,t> ϕ(eh,et)=<h,r,t>来生成每个三元组的评分, < ⋅ , ⋅ , ⋅ > <·,·,·> <⋅,⋅,⋅>表示三元线性点积。 r r r表示为KGs中的关系。 ϕ \phi ϕ越高,表明 ( e h , r , e t ) (e_h,r,e_t) (eh,r,et)成为一个正确的正例三元组的机会越大,而不是一个不正确的负例三元组。该模型将 E m a s k \mathcal{E}_{mask} Emask中的掩盖边预测为正,将其他随机边预测为负。(作者定义)
邻接预测的损失函数为:
L l p = ∑ ( e h , r , e t ) ∈ E m a s k ( S p o s + S n e g ) , \mathcal{L}_{lp}=\sum_{(e_{h},r,e_{t})\in\mathcal{E}_{mask}}(S_{pos}+S_{neg}), Llp=(eh,r,et)Emask(Spos+Sneg),

 其中, S p o s = − log ⁡ σ s ( ϕ ( e h , e t ) + γ ) S_{pos}\quad=\quad-\log\sigma_{s}(\phi(e_{h},e_{t})+\gamma) Spos=logσs(ϕ(eh,et)+γ)表示正确正例三元组的得分, γ \gamma γ为margin, σ s \sigma_{s} σs为sigmoid激活函数, { ( e h ′ , r ~ , e l ′ ) } \{(e_h^{\prime},\tilde{r},e_l^{\prime})\} {(eh,r~,el)}是对应于正例三元组 ( e h , r , e t ) (e_h,r,e_t) (eh,r,et)的负例三元组。 S n e g = 1 n ∑ ( e h ′ , r , e t ′ ) log ⁡ σ s ( ϕ ( e h ′ , e t ′ ) ^ + γ ^ ) S_{neg}=\frac{1}{n}\sum_{(e_{h}^{\prime},r,e_{t}^{\prime})}\log\sigma_{s}(\hat{\phi(e_{h}^{\prime},e_{t}^{\prime})}+\hat{\gamma}) Sneg=n1(eh,r,et)logσs(ϕ(eh,et)^+γ^)为不正确负例三元组的得分。最终的目标函数 L \mathcal{L} L定义为 L l l m \mathcal{L}_{llm} Lllm L l p \mathcal{L}_{lp} Llp的加权和:
L = L l l m + λ L l p , \mathcal{L}=\mathcal{L}_{llm}+\lambda\mathcal{L}_{lp}, L=Lllm+λLlp,
其中, λ \lambda λ为平衡参数。

4.4、模型整体框架图

在这里插入图片描述
5、实验结果

在这里插入图片描述

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

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

相关文章

《无线网络技术》考试版笔记

第一章 无线网络介绍 什么是多径效应&#xff0c;如何去克服&#xff1a; 在发射机和接收机之间没有明显的直线路径时&#xff0c;就会产生多径传播。如果两个信号彼此叠加&#xff0c;那么接收设备就无法正确解调信号&#xff0c;无法还原为它的原始数据形式。 可以稍微调整接…

Android修行手册-Chaquopy中opencv、numpy的初步应用

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

Zookeeper3:客户端命令

文章目录 客户端命令连接服务端Zookeeper客户端内置命令 ls - 节点信息 客户端命令 连接服务端Zookeeper //客户端连接服务端zookeeper 默认连的本机2181端口的zookeeper cd /opt/module/zookeeper-3.9.1/bin && sh zkCli.sh//客户端连接远程服务端zookeeper cd /op…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在&#xff0c;避免从数据库中查询数据是否存在&#xff0c;减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数&#xff0c;可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时&#xff0c;布隆过滤器会…

蓝桥杯Java B组历年真题(2013年-2019年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行&#xff0c;这里使用LocalDate&#xff0c;也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

day07_分类管理EasyExcel品牌管理

文章目录 1 分类管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 列表查询1.4.1 需求分析1.4.2 后端接口CategoryCategoryControllerCategoryServiceCategoryMapperCategoryMapper.xml 1.4.3 前端对接category.jscategory.vue 2 EasyExcel2.1 数据导入导出意义2.2 EasyExcel简介…

Vue3速成

文章目录 day 11. 创建vue3工程3. 响应式数据4. 计算属性 day 25. watch 监视6. watchEffect7. 标签的ref属性8. 回顾TS中的接口_泛型_自定义类型 day 1 1. 创建vue3工程 相关代码如下&#xff1a; ## 创建vue工程 npm create vuelastest## 安装node_modules npm install //…

nginx出现 “414 request-uri too large”

nginx出现 “414 request-uri too large” 1.修改传参方式 POST 2.字段能变成后端获取就自己获取&#xff0c;不用前端传 3.修改nginx配置&#xff0c;添加client_header_buffer_size 512k;large_client_header_buffers 4 512k;配置

【LeetCode】876_链表的中间结点_C

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 示例 提示&#xff1a; 链表的结点数范围是 [1, 100]1 <…

【leetcode】环形链表✚环形链表II

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1.环形链表解题拓展&#xff1a; 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…

MySQL篇—执行计划介绍(第二篇,总共三篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

零基础自学C语言|数据在内存中的存储

✈整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下面的内容&#xff1a; 整数的2进制表示方法有三种&#xff0c;即原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示"正"&#xff0c;用1表示"负"&…

Flex布局常见属性图解

目录 一、简介二、父元素属性2.1、flex-direction2.2、justify-content2.3、align-items2.4、flex-wrap2.5、flex-flow2.6、align-content 三、子元素属性3.1、flex3.2、align-self3.3、order 一、简介 Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为…

mysql学习笔记3——授权操作

利用select查询数据库数据时&#xff0c;可以在后面加上参数 意为限制显示条数 对数据库进行远程操作时&#xff0c;为了避免不同用户操作混乱&#xff0c;要设置不同用户的权限&#xff0c;可以使用 具体格式为 其中*代表任意均可 &#xff0c;这里用户创建采用与授权同时进…

作业1-224——P1927 防护伞

思路 遍历一下找到两点间的最远距离&#xff0c;直接公式算结果&#xff0c;控制输出位数 参考代码 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int n; cin>>n; int x[n],y[n]; do…

网络编程的魔法师:探索Netty中Handler的奇妙世界

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 网络编程的魔法师&#xff1a;探索Netty中Handler的奇妙世界 前言Handler基础概念ChannelHandler与ChannelPipelineHandler链的执行流程不同类型的Handler处理网络事件Handler的异步特性 前言 在网络…

【软考】数据结构之队列和栈

目录 1.例题一1.1题目1.2 题目截图1.3 题目分析 1.例题一 1.1题目 输出受限的双端队列是指元素可以从队列的两端输入&#xff0c;但只能从队列的一端输出&#xff0c;如下图所示&#xff0c;若有e1&#xff0c;e2&#xff0c;e3&#xff0c;e4依次进入输出受限的双端队列&…

端游如何防破解

在2023年这个游戏大年中&#xff0c;诸多热门大作涌现&#xff0c;作为世界级IP哈利哈利波特的衍生游戏——《霍格沃茨之遗》毫无悬念地成为2023年游戏圈的首款爆款作品&#xff0c;斩获了一众玩家的青睐。 在众多光环的加持下&#xff0c;《霍格沃茨之遗》很快被著名游戏破解…

C#,K中心问题(K-centers Problem)的算法与源代码

1 K中心问题&#xff08;K-centers Problem&#xff09; k-centers problem: 寻找k个半径越小越好的center以覆盖所有的点。 比如&#xff1a;给定n个城市和每对城市之间的距离&#xff0c;选择k个城市放置仓库&#xff08;或ATM或云服务器&#xff09;&#xff0c;以使城市…

基于springboot实现保险信息网站系统项目【项目源码+论文说明】

基于springboot实现保险信息网站系统演示 摘要 随着互联网的不断发展&#xff0c;现在人们获取最新资讯的主要途径来源于网上新闻&#xff0c;当下的网上信息宣传门户网站的发展十分的迅速。而保险产品&#xff0c;作为当下人们非常关注的一款能够给人们带来医疗、生活、养老或…