微软发布!提示工程进化为位置工程,有效提升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.mfbz.cn/a/573775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS

Leetcode刷题之——队列Queue|先入先出FIFO|广度优先搜索BFS|栈Stack|后入先出LIFO|深度优先搜索DFS 1. 队列(Queue)——FIFO,先入先出的数据结构1.1 循环队列1.2 内置队列的常用方法(C)1.3 广度优先搜索(BFS) 2.栈(St…

Unity Meta Quest MR 开发(七):使用 Stencil Test 模板测试制作可以在虚拟与现实之间穿梭的 MR 传送门

文章目录 📕教程说明📕Stencil Test 模板测试📕Stencil Shader📕使用 Unity URP 渲染管线设置模板测试⭐Render Pipeline Asset 与 Universal Renderer Data⭐删除场景中的天空盒⭐设置虚拟世界的层级 Layer⭐设置模板测试 &#…

详解Qt中的鼠标事件

在Qt中,处理鼠标事件是构建交互式界面的关键。Qt提供了一系列与鼠标相关的事件处理函数,允许开发者捕获鼠标的各种动作,如按下、释放、移动、双击等。以下是鼠标事件的使用方法、技巧以及注意事项,并附带C代码示例。 基础使用方法…

Git学习笔记(四)远程仓库

根据前面几篇文章的介绍,在本地使用Git基本不成问题了,常用的基本命令和一些基本概念基本也介绍完毕了。这一张主要讲讲远程仓库的创建和使用。 概念 其实在前面第一篇文章中,我们就简单介绍过远程仓库,它其实就是一个托管在远程服…

ROS标定海康威视摄像头

ROS视摄像头标定----海康威视 引言: ​ 摄像头标定是为了确保视觉系统能够准确反映现实世界中的对象,并消除图像中的畸变效果。在本实验中,我们使用了ROS中的功能包进行摄像头标定。标定的原理包括畸变校正和摄像头参数估计。通过移动标定板并…

java 创建和请求sse服务

主要依赖 <!--spring-boot父工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version></parent><dependency><gro…

SAP采购订单-条件类型-配置开发步骤

由于采购业务变更&#xff0c;需要创建新的价格类型&#xff0c;并添加新的计算逻辑计算。首先在例程&#xff08;VOFM&#xff09;中创建计算逻辑&#xff0c;然后在系统配置&#xff08;SPRO&#xff09;中找到配置点&#xff0c;创建新的条件类型‘ZMM00’,创建定价过程‘ZM…

算法-动态规划专题

文章目录 前言 : 动态规划简述1 . 斐波那契模型1.1 泰波那契数列1.2 最小花费爬楼梯1.3 解码方法 前言 : 动态规划简述 动态规划在当前我们的理解下,其实就是一种变相的递归,我们查看一些资料也可以知道,动态规划其实属于递归的一个分支,通过把递归问题开辟的栈帧通过一定的手…

模拟信号的离散化

本文介绍模拟信号的离散化。 1.采样定理 定义&#xff1a;若想重建输入的模拟信号&#xff0c;采样频率必须大于等于输入模拟信号最高频率的2倍&#xff0c;即&#xff1a; 其中&#xff0c;为采样频率&#xff0c;为输入模拟信号最高频率 否则&#xff0c;信号会发生混叠 2…

榕城·江上图三居装修攻略,硬装费用18万。福州中宅装饰,福州装修

设计亮点 **方案分析:** 整体墙面采用纯白色为主&#xff0c;搭配木质元素设计&#xff0c;室内铺设浅色木地板。客厅区域设计了一个嵌入式工作区&#xff0c;满足日常办公需求。餐厅、走廊和卧室充分利用每一处空间&#xff0c;扩大收纳空间。 **改造方案:** 1. 采用白色和原木…

Emby for Mac 1.9.9中文激活永久使用(多媒体影音库)

Emby 是一款流媒体服务器软件&#xff0c;可以用于在不同设备上共享音乐、电影、电视节目和照片等多媒体资源。用户可以将自己的媒体文件添加到Emby服务器中&#xff0c;并通过网络将它们发送到其他设备&#xff0c;如电视、手机、平板电脑等。 Emby for Mac 1.9.9中文激活下载…

Linux多进程(三) 信号信号集与统一事件源

信号是由用户、系统或者进程发送给目标进程的信息&#xff0c;以通知目标进程某个状态的改变或系统异常。Linux信号可由如下条件产生&#xff1a; 对于前台进程&#xff0c;用户可以通过输入特殊的终端字符来给它发送信号。比如输入CtrlC通常会给进程发送一个中断信号。系统异…

LeetCode:51. N 皇后

leetCode51.N皇后 题解分析 代码 class Solution { public:int n;vector<vector<string>> ans;vector<string> path;vector<bool> col, dg,udg;vector<vector<string>> solveNQueens(int _n) {n _n;col vector<bool> (n);dg …

如何在阿里云快速配置自动定时重启ECS云服务器?

背景 无论是电子商务、在线教育、游戏&#xff0c;还是流媒体等业务&#xff0c;服务器的稳定运行都是至关重要的。然而&#xff0c;在实际运行中&#xff0c;我们可能会遇到这样一些场景&#xff1a; 系统更新&#xff1a;一些操作系统或者软件的更新可能需要重启服务器才能…

政企版 WPS Pro 专业版注册安装教程

政企版 WPS Pro 专业版安装及激活步骤 第 1 步&#xff1a;下载压缩包&#xff08;内含注册码&#xff09;【无解压密码】。 第 2 步&#xff1a;解压缩后&#xff0c;运行 exe 文件&#xff0c;默认步骤安装即可。 第 3 步&#xff1a;安装完成后&#xff0c;新建一个 Word …

【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

<slaveInfo> actuatorName dw9714v dirver IC 型号 slaveAddress 0x18 i2c write address i2cFrequencyMode FAST i2c 操作频率(400KHz) actuatorType VCM/BIVCM 马达类型 BIVCM&#xff08;中置马达&#xff…

Andorid进程间通信之 UNIX SOCKET

1&#xff0c;什么是UNIX SOCKET UNIX SOCKET&#xff0c;域套接字&#xff0c;UNIX SOCKET可用于同一台设备进程间通信&#xff0c;它不需要经过网络协议栈&#xff0c;不需要打包拆包、计算校验和、维护序列号应答等&#xff0c;只需要将数据从一个进程复制到另一个进程&…

WPS-EXCEL:快速删除多个线条对象

问题图 我需要将线条快速删除 方法一:使用定位对象功能 使用定位功能&#xff1a;按Ctrl G打开定位对话框。在对话框中&#xff0c;点击“定位条件”。 定位对象&#xff1a;在定位条件对话框中&#xff0c;勾选“对象”选项&#xff0c;然后点击“确定”。这样&#xff0c;…

git忽略文件配置 !

.gitignore中!表示取反 注意&#xff0c;如果父目录被排除&#xff0c;则父目录下的子目录也会被排除&#xff0c;此时对父目录下的子目录取反也不会生效&#xff0c;比如存在目录结构&#xff0c;再.gitignore目录下配置的 /*&#xff08;排除所有文件&#xff09;&#xff0c…

探索 Python 的动态类型系统:变量引用、不可变性及高效内存管理与垃圾回收机制的深入分析

文章目录 1. 动态类型及其内存管理解析1.1 变量与对象的引用关系1.2 对象的不可变性和内存地址的变化 2. 垃圾回收与内存优化策略2.1 动态内存分配的基础2.2 Python 的垃圾回收 Python作为一种流行的高级编程语言&#xff0c;以其代码的易读性和简洁性著称。尤其是它的动态类型…