prompt问题【中间不好】

news2025/1/19 20:42:20

问题1:longchain 关键词在中间容易被忽略掉

Found in the Middle: How Language Models Use Long Contexts Better
via Plug-and-Play Positional Encoding

论文对大模型在长文本情况下的性能做了一系列实验研究,发现了一个有趣的“Lost in the middle”现象:
在处理需要识别相关上下文的信息的任务(文档问答、键值对索引)时,大模型对相关信息的位置很敏感

  • 当相关的信息在输入prompt的开头或者结尾时,能够取得较好的效果
    而当相关的信息在prompt中间部分时,性能会显著下降。
  • 此外,研究者还发现,当上下文更长时,模型性能会稳步下降;
    而且配备有上下文扩展的模型并不一定就更善于使用自己的上下文。
  • 当评估时的序列长度在训练时所用的序列长度范围内时,对于输入上下文中相关信息位置的变化,编码器 - 解码器模型是相对稳健的;
    但如果评估时的序列长度长于训练时的,那么模型性能会呈现出 U 型特征。
  • 最后,为了更好地理解「向输入上下文添加更多信息」与「增多模型推理所用的内容量」之间的权衡,研究者进行了一个案例研究。该研究基于检索器 - 阅读器模型在开放域问答任务上的表现。相较于对照式的多文档问答任务实验(上下文总是会包含刚好一个用于问答问题的文档),在开放域问答任务中,可能会有多个或零个文档包含答案。
    研究者发现,当通过检索维基百科来回答 NaturalQuestions-Open 中的查询时,模型性能在检索器召回率趋于稳定之前很久就已经饱和,这表明模型无法有效地使用额外的检索文档 —— 使用超过 20 个检索文档仅能略微提高性能(对于 GPT-3.5-Turbo 是 ∼1.5%,对于 claude-1.3 为 ∼1%)。

整体来说,这份研究能帮助人们更好地理解语言模型是如何使用输入上下文的,并为未来的长上下文模型引入了新的评估协议。为了促进未来的相关研究,研究者放出了代码和评估数据,请访问:https://github.com/nelson-liu/lost-in-the-middle

1.1 为什么语言模型难以完整使用其输入上下文?

模型架构的影响
为了更好地理解模型架构的潜在影响,研究者比较了仅解码器模型和编码器 - 解码器语言模型。
实验中使用的具体模型为 Flan-T5-XXL 和 Flan-UL2。Flan-T5-XXL 的训练使用了序列长度为 512 token 的序列(编码器和解码器)。Flan-UL2 一开始使用 512 token 长度的序列训练(编码器和解码器),但之后又在 1024 token 长度的序列上预训练了额外 10 万步(编码器和解码器),然后进行了指令微调 —— 其编码器在 2048 token 长度的序列上微调,解码器的序列长度则为 512 token。但是,由于这些模型使用相对位置嵌入,因此它们的推断能力(原则上)可以超出这些最大上下文长度 ——Shaham et al. (2023) 发现当序列长度为 8000 token 时,这两个模型都能取得不错的表现。

查询感知型上下文化的影响
实验中,研究者的做法是将查询(即要回答的问题或要检索的键)放在数据(即文档或键 - 值对)之后来处理。由此,当对文档或键 - 值对进行上下文化时,仅解码器模型无法顾及查询 token,因为查询只会出现在 prompt 末尾而仅解码器模型在每个时间步骤只能关注之前的 token。
另一方面,编码器 - 解码器模型使用了双向编码器来上下文化输入上下文,这似乎能更加稳健地应对相关信息的位置变化 —— 研究者猜想这一直观结论或许也能用于提升仅解码器模型的性能,做法是将查询同时放在数据的前面和后面,从而实现文档或键 - 值对的查询感知型上下文化。

指令微调的影响
指令微调是指在初始的预训练之后,语言模型还会使用一个指令和响应数据集进行监督式微调。在这种监督式的指令微调数据中,任务规范和 / 或指令通常放置在输入上下文的开头,这可能会导致经过指令微调的语言模型为输入上下文的开头赋予更多权重。

1.2 上下文更多就总是更好吗?一个基于开放域问答的案例研究

就算一个语言模型可以处理 1.6 万个 token,那么如果真的为其提供这么多 token,那会真的有用吗?这个问题的答案是:由下游任务决定。因为这取决于所添加上下文的边际价值以及模型有效使用长输入上下文的能力。为了更好地理解这一权衡,研究者在 NaturalQuestions-Open 上进行了开放域问答的案例研究。

他们使用的模型采用了标准的检索器 - 阅读器设置。一个检索系统(Contriever,基于 MS-MARCO 微调得到)从 NaturalQuestions-Open 取用一个输入查询,然后返回 k 个维基百科文档。为了在这些检索到的文档上调节经过指令微调的语言模型,研究者将它们包含到了 prompt 中。他们评估了检索器召回率和阅读器准确度(任何带注释的答案是否出现在预测输出中)随检索出的文档数 k 的变化情况。研究者使用了 NaturalQuestions-Open 的一个子集,其中长答案是一个段落(而不是表格或列表)。

可以看到,在检索器性能趋于稳定之前很久,阅读器模型的性能就早已饱和,这表明阅读器没有有效地使用额外的上下文。使用超过 20 个检索文档只能略微提升阅读器性能(对于 GPT-3.5-Turbo 是 ∼1.5%,对于 Claude 为 ∼1%),但却显著提升了输入上下文长度(由此延迟和成本都大幅提升)。

这些结果表明,如果能有效地对检索文档排序(让相关信息与输入上下文的起始处更近)或对已排序的列表进行截断处理(必要时返回更少的文档),那么也许可以提升基于语言模型的阅读器使用检索上下文的能力。

1.3 解决方案

介绍了一种名为多尺度位置编码(Ms-PoE)的技术,一种插件式方法,通过重新调整位置编码索引来增强LLM处理上下文中间部分信息的能力,无需进行微调或添加任何额外开销。Ms-PoE通过对位置索引进行重新缩放来缓解由相对位置编码(RoPE)引入的长期衰减效应,同时精心为不同的注意力头分配不同的缩放比例,以保留在预训练阶段学习到的关键知识。这样形成了从短距离到长距离的多尺度上下文融合。广泛的实验显示了该方法的有效性,特别是在Zero-SCROLLS基准测试中,Ms-PoE实现了平均准确率高达3.8的提升。
优势:Ms-PoE是一种无需额外微调或增加内存使用的插件式方法。通过简单地重新映射位置嵌入,能有效地检测到上下文中间的重要信息。该方法通过对不同的注意力头使用不同的缩放比例,能够保留预训练过程中学到的知识,同时缓解了RoPE引入的长期衰减效应。此外,Ms-PoE在多种LLM上的广泛实验表明,该方法具有明显的效果提升。

在这里插入图片描述

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

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

相关文章

理解Docker容器和镜像的区别

容器镜像读写层 容器最上边那一层是可读可写的。 镜像可以看作是面向对象编程中的类。 文章目录 一、镜像(只读层的集合) 二、容器(多层只读层一层读写层) 三、镜像层 一、镜像(只读层的集合) 镜像&…

Vue3从入门到实战:深度了解相关API

shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: let myVar shallowRef(initialValue); 特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个…

ASPICE 追溯性实践分享

01前言 接着之前的分享,遗留的追溯性ASPICE 认证实践及个人理解分享-CSDN博客文章浏览阅读961次,点赞22次,收藏17次。ASPICE是Automotive 和SPICE的组合,全英文为(Automotive Software ProcessImprovement and Determ…

【全】一文读懂 containerd 中的 NRI 机制

本文内容节选自 《containerd 原理剖析与实战》,本书正参加限时优惠内购,限时 69.9 元购买。 本文介绍 containerd 中的一种可插拔的扩展机制 NRI。 1. NRI 介绍 NRI(Node Resource Interface),即节点资源接口。是 c…

汇编语言——输入16位二进制数,存入BX

这是我原先的做法: shl bx,1 ;bx逻辑左移一位 sub dl,30h ;键盘输入的0/1,ASCII码分别为30h/31h,要转换成0/1 add bl,dl ;bl逻辑左移一位后加上现在输入的字符data segment data ends stack segment stackdw 100 dup (?)top label wo…

Oracle数据库 :查询表结构脚本

查询脚本 : SELECT CASE WHEN a.column_id1 THEN a.TABLE_NAME ELSE END AS 表名, a.column_id AS 序号, a.column_name as 列名, REPLACE(comments, CHR(10), ) as 列说明, a.data_type || ( || a.data_length || ) as 数据类型, a.DATA_LENGTH AS 长度, a.DATA_…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip 问题描述: 拉取或者创建新的python项目时,为项目添加了新的解释器,创建啦虚拟环境,但是执行pip命令的时候找不到命…

C++修炼之路之继承<一>隐藏,赋值转换规则,继承关系

目录 前言 一:继承的概念和定义 1.概念 2.继承的定义 1.定义格式 2.继承关系和访问限定符 3.继承基类成员访问方式的变化 二:基类和派生类对象赋值转换 规则 三:继承中的作用域 规则 经典举例 经典例题--区分函数重载和隐藏…

【C++航海王:追寻罗杰的编程之路】C++11(上)

目录 1 -> C11简介 2 -> 统一的列表初始化 2.1 -> {}初始化 2.2 -> std::initializer_list 3 -> 声明 3.1 -> auto 3.2 -> decltype 3.3 -> nullptr 1 -> C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C…

基于51单片机的自行车测速里程码表设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机的自行车测速里程码表设计 1. 主要功能:2. 讲解视频:3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单资料下载链接: 基于51单片机的自行车测速里程码表设计( proteus仿真程序设计报告原理图讲解视频)…

RUOYI 若依 横向菜单

保留移动端适配 小屏适配 菜单权限等 可轻松进行深度自定义菜单样式 以及分布 仅支持横向布局 如需源码 教程等 ➕ wx 技术支持 wx : 17339827025

数据结构(双链表

目录 1. 讲解&#xff1a;2. C代码实现&#xff1a;小结&#xff1a; 1. 讲解&#xff1a; 2. C代码实现&#xff1a; #include <stdlib.h> #include <iostream> #include <stdio.h>using namespace std;#define ElemType inttypedef struct DLNode {ElemTy…

【MySQL】表的基本约束

文章目录 1、约束类型1.1NOT NULL约束1.2UNIQUE&#xff1a;唯一约束1.3DEFAULT&#xff1a;默认值约束1.4PRIMARY KEY&#xff1a;主键约束1.5FOREIGN KEY&#xff1a;外键约束 2、表的设计2.1一对一2.2一对多2.3多对多 1、约束类型 关键字解释NOT NULL指示某列不能存储NULL值…

【2024-04-19亲测有效】Markdown Pad2 激活

下载地址 链接 密码: 8trb 点击下载好的文件直接安装&#xff0c;安装过程按照提示就好。 安装后打开&#xff0c;会提示输入license 上面的填邮箱地址&#xff1a;Soar360live.com 下面的填密钥&#xff08;注意要鼠标拖动全部复制&#xff0c;双击只能选中部分&#xff09;…

webpack-babel

babel Babel 是一个 JavaScript 编译器&#xff0c;主要用于将高版本的 JavaScript 代码转换为低版本的 JavaScript 代码&#xff0c;从而确保代码在不同浏览器和环境中的兼容性。它可以将 ES6/ES7/ES8 等新特性转换为 ES5 等旧版本的 JavaScript 代码&#xff0c;使得开发人员…

在线编辑器 CodeMirror

如何优雅的在网页显示代码 如果开发在线编辑器 引入资源&#xff1a; <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.60.0/codemirror.min.css"><script src"https://cdnjs.cloudflare.com/ajax/libs/c…

​面试经典150题——从前序与中序遍历序列构造二叉树

​ 1. 题目描述 2. 题目分析与解析 二叉树的前序、中序和后序遍历 二叉树的前序、中序和后序遍历是树的三种基本遍历方式&#xff0c;它们是通过不同的顺序来访问树中的节点的。 前序遍历&#xff08;Pre-order traversal&#xff09;&#xff1a; 访问根节点 前序遍历左子树…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

本地项目如何设置https——2024-04-19

问题&#xff1a;由于项目引用了html5-qrcode插件&#xff0c;但是该插件在本地移动端调试时只能使用https访问&#xff0c;所有原本的本地地址是http&#xff0c;就需要改成https以方便调试。 解决方法&#xff1a;使用本地https证书 1&#xff09;从项目文件下打开cmd逐步输…

AOP基础

一、AOP概述 AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实就是面向特定方法编程。 使用场景&#xff1a;①记录操作日志&#xff1b;②权限控制&#xff1b;③事务管理等。 优势&#xff1a;①代码无侵入…