论文解读: 2023-Lost in the Middle: How Language Models Use Long Contexts

大模型使用的关键在于Prompt,然而大模型存在幻觉现象,如何减少这种现象的发生成为迫切解决的问题。外部知识库+LLM的方法可以缓解大模型幻觉,但是如何撰写Prompt才能发挥LLM的性能。下面介绍这篇论文说明上下文信息出现在Prompt什么位置使模型表现最佳,以及上下文文本长度对LLM性能的影响。

Title: Lost in the Middle How Language Models Use Long Contexts
URL: https://arxiv.org/pdf/2307.03172.pdf
Code: https://github.com/nelson-liu/lost-in-the-middle

1. Motivate

最近的语言模型能够将长上下文作为输入,然而人们对语言模型在多大程度上支持长上下文还了解不多。因此本文针对从输入上下文中识别相关信息的任务:多文档问题解答和键值检索,对语言模型的性能进行了分析。

2. Experiment

2.1 多文档问答

2.1.1 目的

探索输入上下文长度和相关信息在输入上下文的位置对LLM输出影响。

2.1.2 模型

  • claude-1.3
  • claude-1.3-100k
  • gpt-3.5-turbo-16k-0613
  • mpt-30b-instruct
  • longchat-13b-16k

全部模型统一使用贪婪解码策略。
评估指标:使用准确性作为评估指标,判断预测输出中是否出现任何正确答案。

2.1.3 结果分析

在这里插入图片描述

为了调整此任务中的输入上下文长度,增加或减少不包含答案的检索文档的数量。(见下图)
在这里插入图片描述
为了调整相关信息在输入上下文中的位置,我们调整输入上下文中文档的顺序,以更改包含答案的文档的位置。(见下图)
在这里插入图片描述

论文设置Closed-Book和Oracle两种实验环境,实验结果表明当输入含有上下文信息时,模型输出正确答案的概率大幅度提高。
在这里插入图片描述

实验结果显示当相关信息出现在输入上下文的开头或结尾时,模型性能最高。相关信息出现在上下文中间位置时模型表现最差。这些结果表明模型在执行下游任务时无法有效的推断其内部上下文窗口,模型更容易使用上下文开始或者结束的信息。如下图所示。
在这里插入图片描述

实验结果显示,随着输入上下文的增长,模型性能显著下降,表明模型很难从长输入上下文中检索和使用相关信息。当将模型与其相应的扩展上下文版本进行比较时,这种趋势仍在继续。尽管扩展上下文模型可以处理更长的输入上下文,但它们可能无法更好地对其上下文中的信息进行推理(查看GPT-3.5-Turbo-0613和GPT-3.5-Turbo-16k-0613)。
在这里插入图片描述

扩展上下文模型不一定更擅长使用输入上下文。在输入上下文模型及其扩展上下文对应模型的上下文窗口的设置中,我们可以看到它们之间的性能几乎是相同的。这些结果表明,具有较长最大上下文窗口的模型在使用这种扩展上下文方面并不一定更好。

2.2 键-值检索

2.2.1 目的

探索输入上下文中匹配和检索相关信息的基本能力

2.2.2 模型

  • claude-1.3
  • claude-1.3-100k
  • gpt-3.5-turbo-16k-0613
  • mpt-30b-instruct
  • longchat-13b-16k

评估指标:使用准确性作为评估指标,评估预测输出中是否出现了正确的值。

2.2.3结果分析

在这里插入图片描述

为了调整该任务中的输入上下文长度,通过添加或删除随机键来改变输入JSON键值对的数量,从而改变干扰器键值对的数目。(见下图)
在这里插入图片描述

为了调整输入上下文中相关信息的位置,在序列化的JSON对象中更改要检索的键的位置。(见下图)
在这里插入图片描述

实验结果显示在输入上下文的中间访问键值对时,模型性能最差。此外,这种设置下的模型性能通常也会随着输入上下文的增加而降低。
LongChat-13B(16K)在140键值设置中是一个显著的优势;当相关信息位于输入上下文的开头时,它倾向于生成代码来检索键,而不是输出值本身。
在这里插入图片描述

2.3 模型架构分析

2.3.1目的

为了更好地理解模型架构对语言模型使用上下文的潜在影响,比较了仅解码器和编码器-解码器语言模型。

2.3.2 结果分析

Flan-UL2在其2048训练时间上下文窗口内的序列上进行评估,其性能对输入上下文中相关信息的位置变化相对稳健。当在序列长于2048个令牌的设置上进行评估时,当相关信息位于中间时,Flan-UL2性能开始降级。Flan-T5-XXL显示了类似的趋势,当将相关信息放在输入上下文的中间时,输入上下文越长,性能下降越大。
在这里插入图片描述

实验结果表明编码器-解码器模型可能会更好地利用其上下文窗口,因为它们的双向编码器允许在未来文档的上下文中处理每个文档,从而可能增强文档之间的相对重要性。

当相关信息出现在最开始时,查询感知上下文化(即,将问题放在输入上下文中的文档之前和之后)提高了多文档QA性能,但在其他情况下会略微降低性能。
在这里插入图片描述

实验过程显示下图两种模型都有一条U形性能曲线,当相关信息出现在输入上下文的开始或结尾时,性能要高得多,这表明指令调优过程本身不一定对这些性能趋势负责。
在这里插入图片描述

2.4 总结

多文档问答和键值检索结果表明,当语言模型必须在长输入上下文中访问相关信息时,其性能会显著下降。

在对文档或键值对进行上下编码时,只有解码器的模型无法查询标记,因为查询只出现在提示的末尾,而只有解码器的模型在每个时间步只能处理前面的标记。另一方面,编码器-解码器模型使用双向编码器对输入上下文进行上下编码,并且似乎对输入上下文中相关信息的位置变化更具鲁棒性——可以使用这种直觉,通过在数据之前和之后放置查询,启用文档的查询感知上下文化(或键值对),来提高仅解码器模型的性能。查询感知的上下编码大大提高了键值检索任务的性能。

当使用指令格式的数据提示时,语言模型能够使用更长范围的信息(即输入上下文的开始)。增加输入上下文长度通常是一种折衷——为指令调整语言模型提供更多信息可能有助于改善下游任务性能,但也会增加模型必须推理的内容量。

3. Conclusion

实验证实将相关信息放在长输入上下文的开始或结尾有利于检索。长输入上下文越长模型性能越低。
仅解码器模型更加关注相关信息的位置,编码器-解码器模型对相关信息的位置具有一定的鲁棒性。

Reference

  • https://www.writebug.com/article/1fc384b0-1f88-11ee-ad3c-0242ac1b000f

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

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

相关文章

【iOS】编译与链接过程

前言 计算机语言分为:机器语言、汇编语言和高级语言。 高级语言又能分为:编辑语言、解释语言。 解释语言 解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态解释和执行,即解释一条代码,执行一条代码。 优点&…

高薪Offer收割机之redis集群

单节点的redis并发能力是有限的,如果需要进一步提高redis的并发能力,就需要搭建集群。 Redis中的集群分为三种: 主从复制,哨兵模式,分片集群 先来看一下主从复制: 在主从集群中一个主节点可以有多个从节…

智安网络|移动安全的转型:零信任如何重新定义格局

数字化转型和远程/移动办公的常态化已经成为许多企业的现实。这一转变为企业带来了许多便利,但同时也引入了前所未有的风险,涉及员工的隐私、个人身份和特权访问凭证。尤其是在经济衰退和疫情的持续影响下,许多企业不得不在提高生产力的同时面…

Linux: USB Gadget 驱动简介

文章目录 1. 前言2. 背景3. USB Gadget 驱动3.1 什么是 USB Gadget 驱动?3.2 USB Gadget 驱动框架3.3 USB 设备控制器(UDC) 驱动3.3.1 USB 设备控制器(UDC) 驱动 概述3.3.2 USB 设备控制器(UDC) 驱动示例 3.4 USB Gadget Function 驱动3.5 USB Gadget 驱动3.5.1 USB…

Vector - CANoe - VCDL与SomeIP

目录 一、基础介绍 二、vCDL介绍 1、vCDL工程创建 2、 vCDL编辑器关键字介绍 3、创建命名空间Datatype 接口示例 4、创建命名空间ICalculate 5、创建命名空间Participants 一、基础介绍 SomeIP作为车载以太网一个重要的组成部分,因为它的测试也是我们作为总…

Socket--七层协议与Socket原生框架

Socket 一、网络七层协议 / OSI 七层模型 2.1 物理层 解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。 它的主要作用是传输比特流(就是由1、0转化为电流强…

C#中的HashTable和Dictionary之间的区别

面试基础:C#中的HashTable和Dictionary之间的区别 HashTable和Dictionary都是用于存储数据的数据结构的类型。这两个数据结构都将存储的数据保存为键值对。

视频融合平台EasyCVR级联后上级平台播放失败的问题排查与优化

EasyCVR视频融合平台基于云边端智能协同架构,具有强大的数据接入、处理及分发能力,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制等视频能力与服务,可支持多协议、多类型的海量设备接入与分发。 …

TPS61021A 具有 0.5V 超低输入电压的3A升压转换器

1 特性 1 • 输入电压范围:0.5V至4.4V • 启动时的最小输入电压为0.9V • 可设置的输出电压范围:1.8V到4.0V • 效率高达91%(VIN2.4V、VOUT3.3V 且IOUT 1.5A 时) • 2.0MHz 开关频率 • IOUT > 1.5A,VOUT 3.…

JavaWeb(3)——HTML、CSS、JS 快速入门

一、JavaScript 运算符 • 赋值运算符( ) 赋值运算符执行过程? 将等号右边的值赋予给左边, 要求左边必须是一个容器 出现是为了简化代码, 比如让 let age 18 ,age 加 2 怎么写呢 let age 18age 2console.log(age)age * 2con…

Android Studio Flutter 开发配置

近来比较闲,就研究下Flutter 开发,在此记录下studio 配置过程,时间是2023.7.19 在 Windows 操作系统上安装和配置 Flutter 开发环境 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/…

STM32MP157驱动开发——设备树知识

文章目录 概述开发板中设备树文件目录结构设备树文件语法设备树文件参考实例:Devicetree 格式DTS 文件的格式node 的格式properties 的格式 dts 文件包含 dtsi 文件常用的属性#address-cells 、#size-cellscompatiblemodelstatusreginterruptgpio属性name( 过时了&a…