微软发布!提示工程进化为位置工程,有效提升RAG与上下文学习

别再光顾着优化提示工程啦!微软最近推出位置工程研究思路,只需调整token的索引位置,而不修改文本本身,就能显著提高任务性能。

提示工程通过添加、替换或删除段落和句子改变提示,调整语义信息,激发LLMs的推理能力。比如CoT通过在问题的结尾附加“Let's think step by step”这几个词,鼓励模型生成推理过程。

而微软这篇工作发现在tokens之间引入占位符token可改变其他token的相对位置。这些占位符token不参与注意力分数的计算,但占据了token索引位置。因此可能优化提示中不同段落之间的注意力权重。

图片

▲提示工程与位置工程的比较。"Para"指的是提 示中的段落,"Sent"指的是句子。

通过在两个广泛使用的LLM场景中——检索增强生成(RAG)和上下文学习(ICL)——对位置工程进行了评估。结果表明,位置工程在两种情况下都显著优于基础模型。

又一充分激发LLMs能力的新策略出现啦,说不定也是一个产出论文的好方向!

 GPT-3.5研究测试:

https://hujiaoai.cn

GPT-4研究测试:

https://higpt4.cn

Claude-3研究测试(全面吊打GPT-4):

https://hiclaude3.com

论文标题:
Position Engineering: Boosting Large Language Models through Positional Information Manipulation

论文链接
https://arxiv.org/pdf/2404.11216.pdf

位置工程:在提示中更改位置信息

为什么改变token的位置有奇效,先来了解一下LLMs如何整合位置信息。

前置知识

令表示输入到语言模型的tokens,用表示相应的token嵌入。首先,注意力层计算(查询)、(键)和(值):

图片

其中, 和  分别是token的位置索引。自注意力计算如下:

图片

其中, 是一个标量,表示查询中第个toekn与值和键集中第个token之间的注意力分数。表示注意力层的维度,而表示第个查询token的输出。

然后通过引入与和相关的位嵌入向量引入绝对定位:

图片

位置嵌入的第和维度的计算方法如下:

图片

而近期的大模型如Llama和Mistral多采用RoPE(Relative Position Embedding),一种相对位置嵌入。它利用一个特定设计的矩阵(维度为d × d,参数化为i),对查询和键向量进行如下修改:

图片

矩阵 有一个独特性质,即,这导致:

图片

因此, 在公式(2)中, 模型只关注相对位置, 而不是绝对位置和。

位置工程

本文所提到的位置工程仅对公式(1)中使用的位置信息进行调整。目标是找到一个位置编辑函数,改变并融入模型中的token位置信息,提升LLM的表现:

图片

其中ττ。确保(1)两个不同的token不会被赋予相同的新的位置索引;(2) 语言建模中的因果关系保持不变,只有索引更大的查询向量可以访问索引相等或更小的键和值向量,反之则不行。

具体来说在需要改变位置关系的token之间插入位置占位符,定义为θθθ,比如在RAG任务重θ表示在指令和文档段之间插入θ个占位符token,而θ则表示在文档段和问题之间插入占位符token。

占位符token不参与注意力分数计算,但分配了位置索引。当按照公式(2)中的描述计算,并且第或个 token被识别为占位符时,常规计算会被跳过,被设置为 0。

如图下图b所示,将占位符token插入句子1和2之间影响了它们之间的相对位置信息,进而影响两个句子中tokens之间的注意力分数计算。

图片

实验

作者在LLMs两大流行任务检索增强生成(RAG)和上下文学习(ICL)上评估了位置工程的有效性,主要测试模型为是Llama-13B-chat。

1. RAG的位置工程

RAG方法首先涉及与用户查询相关的文档检索。随后,检索到的内容被提供给生成模型,以形成响应。

数据集

作者使用了四个开放域问答数据集:NQ open、EntityQuestions、TrivialQA和WebQuestions。从每个数据集的原始训练集中随机选取了300个问答对构建位置工程训练集。同时,从它们的原始测试集中随机选取了2,000对作为测试集;若某个数据集没有测试集,则使用其评估集替代。

检索模型:采用了经过MS-MARCO数据集微调的Contriever模型。检索源来自维基百科,每个文档段落限制为100个词。检索了k个文档段落,其中k分别取值为1、3、5,并将这些段落连接起来后输入到LLMs中。

评估指标:采用了最佳精确匹配准确率,即判断输出中是否包含正确答案。

搜索空间

RAG的提示输入分为三个部分:指令、检索到的文档与问题。

图片

通过在指令和文档段之间插入θ 临时占位符token,以及在文档和问题段之间插入 θ临时占位符 token。如下图所示:

图片

为了缩小搜索空间,限定 θ 和 θ 的值在预定义集合{0, 100, ..., 2500} 内。同时,由于上下文窗口大小的限制,要求 θθ。

作者在 Llama-13B-chat 模型的训练集上评估所有组合的性能,然后将最佳配置应用到测试集。结果如下表所示:

图片

结果表明,位置工程显著提升了RAG在所有设置下的性能。其中,在WebQuestions数据集中,仅使用一个检索到的文档时,性能提升最为显著,达到了15.4%。

θ和θ在所有考察的数据集中的最佳参数都表现出一致的趋势

θ 通常取值在1,000到2,000的较大范围内,而 θ则是一个相对较小的数值,其范围大致在200到600之间。这些参数设置对于优化RAG的性能起到了关键作用。

2. RAG通用位置工程设置探索

作者还探讨了在“确定一个单一的位置设置“的情况下,能否普遍提升RAG在不同数据集和各种检索文档数量下的性能。

作者可视化了每个位置配置θθ的平均百分位值,如下图所示。这些值首先通过聚合给定数据集和特定检索文档数量的全部准确率得分得到,然后计算百分位分并对所有配置进行平均。

图片

基线配置θθ的平均百分位数为31.6。大约68%的配置可以通过简单地调整位置信息来超过基准性能。

通常,在1300到2000的范围内选择θ值,并将θ设置在300到500的范围内是有利的。将θ设置为过高的数值(例如超过1500)会显著降低性能,可能是因为它导致忽略提示中的文档信息。此外,固定θ值,增加θ通常性能会更好。

在训练集上,θ,θ表现出最高的百分位值为92.9。将这个配置应用于所有数据集和检索文档数量的测试集。如下表所示,相比基线,性能都有所提高。

图片

3. 移除指令段探索

从上节的实验结果可以看出,为了达到最佳性能,偏好较大的θ。θ表示指令段和文档段之间的间隔。较大的θ减少了指令段的影响。这引出了一个问题:完全移除指令段是否会进一步提升性能?结果如下表所示:

图片

移除指令段的性能与基线设置相当。在使用一个检索到的文档时,WebQuestions 数据集上的最大提升达到了 2%。然而,同一体验设置下的位置工程改进幅度为 15.4%。

因此,为了实现最佳性能,我们的策略应当是削弱指令段的影响,而非完全消除它。对于位置工程而言,这相对容易实现。但对于提示工程来说,这却是一个挑战。

4. ICL的位置工程

在上下文学习(ICL)中,LLMs通过观察多个上下文示例来学习新任务的能力。

数据集

作者选用TREC和SST2两个数据集。主要关注TREC数据集中6个粗分类问题,SST2数据集包含电影评论,目标是将其分类为正面或负面。训练集从TREC和SST2的原始训练集中随机选择300个样本。测试集使用TREC的全部500个 样本测试集。SST2数据集使用其验证集的全部842个样本作为测试集。

对每个测试样本,从训练集中每个类别随机选择3个示例作为上下文 示例,TREC为18个,SST2为6个。采用精确匹配分数作为评估指标。

搜索空间

提示模板如下图所示,分为三个部分指令段、 示例段和查询段。对于TREC数据集,使用类似的提示模板,仅将"Review"替换为"Question","Sentiment"替换为"Question Type",

图片

作者在指令段和示例段之间插入了θ占位符,在示例段和查询段之间插入了θ占位符,以及在示例之间插入了θ占位符,如下图所示:

图片

在实验过程中,为θ和θ的候选值设置了集合{0, 100, ..., 600},尝试从0到600的多个不同间隔,以找出最佳的位置配置。对于θ,设定了值集{0, 20, ..., 100},以探索示例之间的最佳间隔。结果如下表所示:

图片

  • 在两个数据集上都实现了性能提升,TREC 数据集上的绝对提升为 3.6%,SST2 数据集上的绝对提升为 1.9%。

  • 最优的位置θθθ在不同的数据集之间有所变化。TREC 需要将 θ 调整为 40,同时设置θ 和 θ 为 0;而对于 SST2,最优设置是将θ 设置为 100,同时 θ 和 θ 保持为 0。

  • 当θ值设置在{200, 300, ..., 600}范围时,模型性能明显下降,这与RAG任务中的观察结果相吻合。θ主要调节示例段对模型的影响。对于SST2任务(即对评论情感进行分类),由于LLM可能已具备相关基础知识,选择θ可以适度降低示例段的影响。而对于TREC任务(需LLM从示例中学习问题类型),保持θ则更为合适。

结论

本文提出了一种创新方法——位置工程,通过微调提示中的位置信息,显著提升了任务表现。在多种任务和模型上的实验均验证了其有效性。

与需在复杂文本空间进行搜索的提示工程相比,位置工程更易于优化。更重要的是,位置工程仅涉及更新LLMs的输入位置索引,无需增加总体计算开销。

此外,位置工程与提示工程可以有机结合,共同发掘LLMs的潜在能力,使其性能得到充分发挥。有兴趣的同学可以沿着这个方向多研究研究。

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

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

相关文章

javaWeb项目-校园志愿者管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、SpringBoot框架 …

docker容器搭建chatglm2-6b

服务器环境: 显卡驱动:Driver Version: 530.30.02 CUDA版本:CUDA Version: 12.1 显卡:NVIDIA GeForce RTX 3090共4张 注意:最好把显卡驱动升级到530,CUDA版本之前使用11.7有问题。 docker-compose.yml…

Java程序员必须掌握的数据结构:HashMap

HashMap底层原理实现是每个Java Boy必须掌握的基本技能,HashMap也是业务开发每天都需要遇到的好伙伴。如此基础且核心的底层数据结构,JDK也给其赋予了线程安全的功能类,我们来看看~ 文章目录 1. HashMap内部结构1.1 键值的添加流程1.2 红黑树…

DFS和回溯专题:全排列 II

DFS和回溯专题&#xff1a;全排列 II 题目链接: 全排列 II 参考题解 代码随想录 题目描述 代码纯享版 class Solution {public List<List<Integer>> list_all new ArrayList();public List<Integer> list new ArrayList();public int[] res;public Lis…

【笔试训练】day11

1.游游的水果大礼包 思路&#xff1a; 枚举。假设最后的答案是x个a礼包&#xff0c;y个b礼包&#xff0c;得到一个式子&#xff1a;ansa*xb*y 我们可以枚举x的数量&#xff0c;这样就能变相的把y的求出来。呃这就是鸡兔同笼问题嘛 x最大的范围是多少呢&#xff1f;也就是a礼…

竞赛报名赛事管理系统技术分析

竞赛报名赛事管理系统是一个复杂的应用&#xff0c;涉及到用户管理、赛事信息管理、报名管理、成绩管理等多个方面。使用PHP框架来开发这样的系统&#xff0c;可以大大提高开发效率&#xff0c;保证代码的可维护性和可扩展性。以下是对基于PHP框架的竞赛报名赛事管理系统进行功…

网络编程——TCP的特性之自动重传/流量控制/拥塞控制,一篇说清楚

文章目录 1. ARQ自动重传协议1.1 停止等待ARQ1.2 连续ARQ1.3 总结 2. TCP的流量控制3. TCP的拥塞控制3.1 慢开始算法3.2 拥塞避免算法3.3 快重传算法3.4 快恢复算法 1. ARQ自动重传协议 自动重传请求&#xff08;Automatic Repeat-reQuest&#xff09;&#xff0c;通过使用确认…

vivado Versal 串行 I/O 硬件调试流程、使用 Vivado Serial I/O Analyzer 来调试设计

Versal 串行 I/O 硬件调试流程 Versal ™ ACAP 无需再生成 IBERT IP &#xff0c; 因为使用系统内串行 I/O 调试所需的必要逻辑现已集成到 GTY 收发器架构内。使 用 GTY 收发器的任何设计均可用于串行 I/O 硬件调试。 Versal 串行 I/O 硬件调试流程具有 2 个不同阶…

lesson04:类和对象(下)

1. 再谈构造函数 2.static成员 3.友元 4.内部类 5.匿名对象 1. 再谈构造函数 1.1构造函数体内赋值 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Date { public:Date(int year, int month, int day){_year year;_month mont…

Oceanbase体验之(二)Oceanbase集群的搭建(社区版4.2.2)

资源规划 3台observer CPU:4C及以上 内存&#xff1a;32G及以上 硬盘操作系统500G 存储盘1T及以上 虚拟机可以直接划分&#xff0c;物理机需要提前规划好资源 一、上传oceanbase安装包 登录ocp选择软件包管理 上传Oceanbase软件包&#xff08;软件包获取路径 官网免费下载社…

【量化】基于遗传规划的因子自动挖掘系统

最后&#xff1a;策略达到了23.6%的年化收益&#xff0c;夏普比率达到5.87&#xff0c;最大回撤为-4.3%&#xff0c;平局年换手率为27.45 倍&#xff0c;平均持股数量为543 支。 文末有回测结果。 目录 1.模型思想 1.1遗传规划算法介绍 ​1.2因子测试流程 2.代码与实现 2.1…

云原生Kubernetes: K8S 1.29版本 部署Nexus

目录 一、实验 1.环境 2.搭建NFS 3. K8S 1.29版本 部署Nexus 二、问题 1.volumeMode有哪几种模式 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K…

【yolo算法道路井盖检测】

yolo算法道路井盖检测 数据集和模型yolov8道路井盖-下水道井盖检测训练模型数据集pyqt界面yolov8道路井盖-下水道井盖检测训练模型数据集 算法原理 1. 数据集准备与增强 数据采集&#xff1a;使用行车记录仪或其他设备收集道路井盖的图像数据。数据标注&#xff1a;对收集到…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代&#xff0c;网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种&#xff0c;它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议&#xff0c;首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…

【Java--数据结构】链表经典OJ题详解(上)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 谈谈头插、头删、尾插、头插的时间复杂度 反转一个单链表 链表的中间结点 返回倒数第k个结点 合并两个链表 谈谈头插、头删、尾插、头插的时间复杂度 头插和头删的时…

使用react-vant上传图片遇到的问题

使用react-vant Uploader上传图片后出现的问题。 先试用upload上传图片。 <Form.Itemrules{[{ required: true, message: 请上传头像 }]}label上传头像namefiles><Uploader accept* maxCount"1" onChange{imgFile} /></Form.Item> 图片上传成功后…

Linux网络-DNS域名解析服务

目录 一.DNS相关介绍 1.DNS是什么 2.DNS系统的分布式数据结构 根域 顶级域 二级域 子域 主机 3.服务器类型 主域名服务器 从域名服务器 缓存域名服务器 转发域名服务器 二.DNS域名解析 1.DNS域名解析方式及功能 2.DNS域名解析查询方式 2.1.递归查询&#xff0…

OpenWRT设置自动获取IP,作为二级路由器

前言 上一期咱们讲了在OpenWRT设置PPPoE拨号的教程&#xff0c;在光猫桥接的模式下&#xff0c;OpenWRT如果不设置PPPoE拨号&#xff0c;就无法正常上网。 OpenWRT设置PPPoE拨号教程 但现在很多新装的宽带&#xff0c;宽带师傅为了方便都会把光猫设置为路由模式。如果你再外…

微软在汉诺威工业博览会上推出新制造业Copilot人工智能功能,强化Dynamics 365工具集

在近日于德国汉诺威举行的盛大工业博览会上&#xff0c;微软向全球展示了其最新推出的制造业人工智能功能&#xff0c;这些功能以Dynamics 365工具集为核心&#xff0c;旨在通过先进的AI技术为制造业带来前所未有的变革。 此次推出的新功能中&#xff0c;最为亮眼的是支持AI的…