《Lost in the Middle: How Language Models Use Long Contexts》AI 解读

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。

热门文章推荐

  • (1)《为什么很多人工作 3 年 却只有 1 年经验?》
  • (2)《一文掌握大模型提示词技巧:从战略到战术巧》
  • (3)《AI 时代,程序员的出路在何方?》
  • (4)《如何写出高质量的文章:从战略到战术》
  • (5)《我的技术学习方法论》
  • (6)《我的性能方法论》
  • (7)《AI 时代的学习方式: 和文档对话》

论文链接:Lost in the Middle: How Language Models Use Long Contexts

中文翻译链接:https://yiyibooks.cn/arxiv/2307.03172v3/index.html

论文标题:Lost in the Middle: How Language Models Use Long Contexts

在这里插入图片描述
推荐大家可以使用 通义智文 通过对话方式阅读论文。
在这里插入图片描述

一、论文 AI 解读

1.1 论文概括

本文通过实验研究了当前先进的语言模型如何处理和利用长文本上下文。研究发现,尽管这些模型能够处理长文本输入,但它们在从长上下文中检索和使用相关信息方面存在显著不足。

在这里插入图片描述

特别是,当相关信息位于输入上下文的中间部分时,模型的性能会显著下降。
在这里插入图片描述

此外,随着输入上下文变长,即使对于明确的长上下文模型,性能也会大幅下降。

论文通过一系列受控实验,分析了多文档问答和键值检索任务中的模型性能,并探讨了模型架构、查询感知上下文化和指令微调等因素对模型使用上下文的影响。

1.2 论文详情

1.2.1 论文解决什么问题

论文解决的问题是当前语言模型在处理长文本上下文时的性能不足,尤其是在需要从上下文中间部分检索和使用信息时的效率问题。

1.2.2 论文用了什么方法

论文使用了受控实验的方法,通过改变输入上下文的长度和相关信息的位置,来评估语言模型在多文档问答和键值检索任务中的性能。此外,论文还研究了模型架构、查询感知上下文化和指令微调等因素对模型性能的影响。

1.2.3 论文的主要创新点是什么?

  • 揭示了当前语言模型在长上下文中的性能瓶颈,特别是在处理中间位置信息时的不足。
  • 提出了一种新的评估协议,用于评估未来长上下文语言模型的性能。
  • 通过实验研究了不同因素(如模型架构、查询感知上下文化和指令微调)对语言模型使用长上下文的影响。
  • 通过开放域问答的案例研究,提供了关于提供更多上下文是否总是有益的实证见解。

1.2.4 论文的主要观点或者结论是什么?

  • 语言模型在长上下文中的性能会随着相关信息位置的变化而显著变化。
  • 模型性能在相关信息位于上下文的开始或结束时最高,而在中间部分时性能显著下降,呈现出U形性能曲线。
  • 扩展上下文模型并不一定比非扩展上下文模型更有效地使用输入上下文。
  • 编码器-解码器模型相对于解码器模型在处理输入上下文中的位置变化时更为稳健,但仅在训练时序列长度内。
  • 查询感知上下文化可以显著提高键值检索任务的性能,但对多文档问答任务的性能趋势影响较小。
  • 指令微调过程并未显著改变模型对输入上下文位置的敏感性。
  • 提供更多的上下文信息并不总是有益的,因为模型的性能会随着上下文长度的增加而饱和,甚至下降。
  • 有效的检索文档重排序或截断可能有助于改善语言模型对检索上下文的使用。

二、关于论文的几个问题

2.1 为什么信息位于输入上下文的中间部分时,模型的性能会显著下降?

根据论文《Lost in the Middle: How Language Models Use Long Contexts》的分析,信息位于输入上下文的中间部分时,模型性能显著下降的原因主要包括以下几点:

  1. 位置偏见(Position Bias)

    • 论文观察到的U形性能曲线表明,模型对于上下文开始(primacy bias)和结束(recency bias)的信息更为敏感,而对中间部分的信息处理能力较弱。这可能是因为模型在处理输入时,对于序列的起始和结束部分分配了更多的注意力或权重。
  2. 注意力分配(Attention Distribution)

    • 尽管Transformer模型的自注意力机制能够理论上关注任何位置的上下文信息,但在实际应用中,模型可能会在长序列中遇到注意力分配的困难。特别是当信息位于长上下文的中间时,模型可能无法有效地捕捉和整合这些信息。
  3. 上下文管理(Context Management)

    • 长上下文需要模型具备有效的信息管理能力,以便在大量信息中找到并使用相关的部分。当信息位于中间部分时,模型可能难以区分哪些信息是关键的,哪些是不相关的,从而导致性能下降。
  4. 计算资源限制(Computational Constraints)

    • 处理长上下文需要更多的计算资源。随着上下文长度的增加,模型的计算和内存需求呈二次方增长,这可能导致模型在处理中间部分信息时资源不足,影响性能。
  5. 训练数据和微调(Training Data and Fine-Tuning)

    • 模型在训练和微调过程中可能更多地接触到短序列或特定位置的信息,导致模型对于长上下文中间部分的处理不够优化。
  6. 模型架构(Model Architecture)

    • 不同的模型架构可能对长上下文的处理有不同的适应性。论文中提到,编码器-解码器模型在处理长上下文时相对更稳健,但仅在训练时序列长度内。这表明,当序列长度超出模型在训练期间见过的长度时,性能会下降。
  7. 信息过载(Information Overload)

    • 在长上下文中,模型可能面临信息过载的问题,尤其是当信息量非常大时。模型可能难以从大量的上下文中提取和利用位于中间部分的关键信息。

这些因素共同作用,导致模型在处理位于输入上下文中间部分的信息时性能显著下降。未来的研究需要进一步探索如何优化模型架构和训练策略,以提高模型在长上下文中对信息的全面利用能力。

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

基于论文《Lost in the Middle: How Language Models Use Long Contexts》的内容,语言模型难以使用其整个输入上下文的原因可以归结为以下几点:

  1. 位置偏见(Position Bias):论文中的实验结果表明,语言模型在处理长上下文时,对于信息的位置非常敏感。具体来说,模型在相关信息出现在输入上下文的开始(primacy bias)或结束(recency bias)时表现最佳,而在中间部分时性能显著下降。这种位置偏见意味着模型可能无法均衡地利用整个上下文信息。

  2. 注意力机制的局限性:尽管Transformer模型的自注意力机制理论上可以处理任何位置的信息,但实际上,模型在长上下文中的性能受到注意力分布和计算效率的限制。特别是在长序列中,模型可能更倾向于关注局部信息而不是全局信息。

  3. 训练数据的偏差:语言模型在训练过程中可能更多地接触到短序列或特定位置的信息,这可能导致模型在处理长上下文时,对于序列的不同部分有不同的敏感度。

  4. 计算资源的限制:长上下文的处理需要更多的计算资源,包括内存和计算能力。随着上下文长度的增加,模型的内存和计算需求呈二次方增长,这可能导致模型在实际应用中难以处理极长的上下文。

  5. 模型架构的影响:论文中提到,编码器-解码器模型在处理长上下文时相对更稳健,尤其是当评估的序列长度在训练时的上下文窗口内时。这表明,当前的一些流行模型架构可能不是为处理长上下文设计的,或者它们的设计没有充分考虑长上下文的需求。

  6. 信息过载:在长上下文中,模型可能面临信息过载的问题,难以区分和优先处理最重要的信息。这可能导致模型在需要从大量信息中检索和使用特定信息时表现不佳。

  7. 缺乏有效的上下文管理策略:有效的上下文管理对于模型使用长上下文至关重要。然而,当前的语言模型可能缺乏有效的策略来管理和利用长上下文中的信息,特别是在需要从上下文的中间部分检索信息时。

2.3 语言模型如何使用上下文?

基于论文《Lost in the Middle: How Language Models Use Long Contexts》的研究,语言模型使用上下文的方式可以通过以下几点来理解:

  1. 位置敏感性(Position Sensitivity)

    • 语言模型在使用上下文时表现出对信息位置的敏感性,尤其是在长上下文中。
    • 模型性能在相关信息出现在上下文的开始(primacy bias)或结束(recency bias)时最高,而在中间部分时性能显著下降。
  2. 长上下文的挑战(Challenges with Long Contexts)

    • 尽管语言模型被设计为能够处理长序列输入,但它们在实际使用长上下文时仍面临挑战。
    • 模型在长上下文中的性能可能会因为上下文长度的增加而下降,特别是在需要从上下文中间部分检索信息时。
  3. 模型架构的影响(Effect of Model Architecture)

    • 不同的模型架构对上下文的使用有不同的影响。
    • 编码器-解码器模型在处理上下文信息位置变化时相对更稳健,尤其是当评估的序列长度在模型训练时的上下文窗口内时。
  4. 查询感知上下文化(Query-Aware Contextualization)

    • 将查询或问题放置在上下文的前后可以提高模型对相关信息的敏感性和检索能力。
    • 这种查询感知上下文化的方法在键值检索任务中表现出近乎完美的性能,但在多文档问答任务中对性能趋势的影响较小。
  5. 指令微调的作用(Role of Instruction Fine-Tuning)

    • 经过指令微调的模型可能会对输入上下文的开始部分给予更多的关注,因为任务说明和指令通常放在输入的开始部分。
    • 指令微调过程可能会影响模型对上下文的使用的模式,但并不一定是性能趋势形成的唯一原因。
  6. 长上下文的权衡(Trade-off of Long Contexts)

    • 提供更多的上下文信息并不总是有益的,因为模型可能难以处理和推理过多的内容。
    • 在实际应用中,需要在提供的信息量和模型能够有效利用的信息量之间找到平衡点。

综上所述,语言模型使用上下文的方式是复杂且多维度的,受到位置、上下文长度、模型架构、查询感知性、指令微调和长上下文权衡等因素的影响。未来的研究和模型设计需要进一步探索如何优化这些因素,以便模型能够更有效地使用上下文信息。

三、对编写提示词的启示

这些结论对于编写大型语言模型的提示词(prompts)提供了以下几点启示:

  1. 关注信息位置:当设计提示词时,应考虑将关键信息放置在输入上下文的开始或结束部分,因为模型在这些位置的性能更高。这可以通过将最重要的信息或查询相关的关键点放在文本的前面或后面来实现。

  2. 简化上下文:如果可能的话,尽量减少输入上下文的长度,特别是当信息不是特别关键时。因为随着上下文长度的增加,模型的性能可能会下降,尤其是在需要处理大量非关键信息时。

  3. 优化信息结构:在构建提示词时,应该优化信息的结构,使得相关信息更加突出和易于模型识别。例如,可以通过格式化或使用特定的标记来强调关键信息。

  4. 利用查询感知上下文化:在设计提示词时,可以尝试将查询或问题放置在文档或关键值对的前后,以提高模型对相关信息的敏感性和检索能力。

  5. 考虑模型架构:根据所使用的语言模型的架构(如解码器模型或编码器-解码器模型),调整提示词的策略。例如,对于编码器-解码器模型,可以考虑利用其双向处理能力来优化提示词。

  6. 指令微调的重要性:在编写提示词时,考虑到模型可能已经通过指令微调进行了优化,因此应确保提示词与模型的训练数据保持一致,以便模型能够更好地理解和执行任务。

  7. 避免信息过载:避免在提示词中包含过多的信息,这可能会导致模型难以区分和检索最重要的内容。相反,应该专注于提供最相关和必要的信息。

通过遵循这些启示,我们可以更有效地编写提示词,以提高大型语言模型在处理长文本和复杂任务时的性能和准确性。

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

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

相关文章

【JavaScript 漫游】【049】ES6 规范中对象的扩展

文章简介 本篇文章为【JavaScript 漫游】专栏的第 049 篇文章,对 ES6 规范中对象的扩展知识点进行了记录。具体包括: 属性的简洁表示法属性名表达式方法的 name 属性属性的可枚举性和遍历super 关键字对象的扩展运算符链判断运算符Null 判断运算符新增…

MIT最新研究成果 机器人能够从错误中纠偏 无需编程介入和重复演示

目前科学家们正在努力让机器人变得更加智能,教会他们完成诸如擦拭桌面,端盘子等复杂技能。以往机器人要在非结构化环境执行这样的任务,需要依靠固定编程进行,缺乏场景通用性,而现在机器人的学习过程主要在于模仿&#…

ctf题目

目录 1.文件包含的一道题目,没什么难度, 2.一道sql注入的题目,伪静态 3.限制只能本地访问。 1.文件包含的一道题目,没什么难度, 但是一个点就是它这里去包含的那个文件名就是flag,而不是flag.php也不是f…

Linux之miniconda的安装和使用

一、miniconda简介 Miniconda和Anaconda都是由Continuum Analytics开发的Python发行版。二者的主要区别在于它们所自带的软件包集合的大小。Miniconda是一个免费的conda最低安装程序。它是Anaconda的一个小型引导程序版本,只包括conda、Python、它们都依赖的包&…

C++语言·入门

现在我们讲完了数据结构初阶部分的内容,数据结构剩下的内容会在C语言讲解的差不多的时候加入。 1. 什么是C C语言是结构化模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度抽象和建模时&#xff0c…

STM32学习笔记(10_1)- I2C通信协议

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期开…

Linux基础命令篇之——压缩与解压(tar、gzip、bzip2、zip和unzip)

linux基础命令——解压与压缩 以下是关于Linux命令tar、gzip、bzip2、zip和unzip的详细介绍: 1. tar 这个是Linux用的最多的解压缩命令 tar是Linux系统中用于创建和处理归档文件的命令。归档文件是一个包含多个文件和/或目录的单一文件。常与压缩命令gzip或bzip2结…

【CANN训练营笔记】Atlas 200I DK A2体验手写数字识别模型训练推理

环境介绍 开发板:Huawei Atals 200I DK A2 内存:4G NPU:Ascend 310B4 CANN:7.0 准备环境 下载编译好的torch_npu wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/torch_npu-2.1.0rc1-cp39-cp39-linux_aarch…

.NET CORE 分布式事务(四) CAP实现最终一致性

目录 引言: 1.0 最终一致性介绍 2.0 CAP 2.0 架构预览 3.0 .NET CORE 结合CAP实现最终一致性分布式事务 3.1 准备工作(数据库,本文使用的是MySql) 3.1.1 数据模型 3.1.2 DbContext 3.1.3 数据库最终生成 3.2 Nuget引入 3.3 appsettings.json …

【OS探秘】【虚拟化】【软件开发】VirtualBox 虚拟化软件卸载和重装

往期OS系列博文: 【OS探秘】【虚拟化】【软件开发】在Windows 11上安装mac OS虚拟机 【OS探秘】【虚拟化】【软件开发】在Windows 11上安装Kali Linux虚拟机 一、事出有因 近日,笔者的Oracle VM VirtualBox突然抽风了,虚拟机无法启动&…

深入理解MapReduce:从Map到Reduce的工作原理解析

当谈到分布式计算和大数据处理时,MapReduce是一个经典的范例。它是一种编程模型和处理框架,用于在大规模数据集上并行运行计算任务。MapReduce包含三个主要阶段:Map、Shuffle 和 Reduce。 ** Map 阶段 ** Map 阶段是 MapReduce 的第一步&am…

Linux appimage如何正确打开

在之前的文章中,提到使用appimage软件非常方便。 但是首次使用会遇到这样的问题: 1. 双击打不开 2. 在终端打开提示: /home/roy/software/appimage/Obsidian-1.5.11.AppImage dlopen(): error loading libfuse.so.2 AppImages require …

关系型数据库mysql(9)主从复制和读写分离

目录 1. 主从复制和读写分离 2. mysql 支持的复制类型 3.架构图 一.主从复制 1.主从复制的定义 2.主从复制的过程 中继日志(Relay Log): 优点: 3.为什么要复制 4.谁复制谁 5.数据放在什么地方 6.主从复制出现的问题 …

基于Uni-app的体育场馆预约系统的设计与实现

文章目录 基于Uni-app的体育场馆预约系统的设计与实现1、前言介绍2、开发技术简介3、系统功能图3、功能实现4、库表设计5、关键代码6、源码获取7、 🎉写在最后 基于Uni-app的体育场馆预约系统的设计与实现 1、前言介绍 伴随着信息技术与互联网技术的不断发展&#…

服务器固定IP(固定出口IP)去访问外部服务

背景 服务器上有多个IP,那么在服务器请求外部服务的时候,到底是使用哪个IP呢?如果要使用特定的IP去请求外部服务,该如何设置呢? 分析 遇到一个实际的场景: 我们产品和其他产品联调,我们的服务…

软考历史题目

2023.3 1. 磁盘索引块1KB,每个地址项4字节,每个磁盘索引块可以存放256个物理块地址 2.5个地址项为直接索引地址,所以0-5逻辑块是直接索引 3.一级间接地址索引,每个指向的物理块存255个地址 4.二级间接地址:256个间接索引表地址…

Php_Code_challenge16

题目: 答案: 解析: 所以科学计数法绕过即可。

蓝桥杯练习系统(算法训练)ALGO-963 转圈游戏

资源限制 内存限制:128.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。   …

Windows 电脑麦克风 自动启用/禁用 小玩具!

WinMicrophone Windows 系统的 麦克风设备(启用/禁用)切换驱动!它是小巧且快速的,它能够自动的检测并切换麦克风的情况。 您可以在软件包仓库中找到发布版本的exe包,无需安装!其能够大大增大您在Windows中…

家用储能配套用AKH-0.66 K-Φ16-HM 开口电流互感器-安科瑞 蒋静

1.产品特点 产品外形美观,安装、接线方便,专用于通讯机房 100A 及以下配电系统改造,可与 AMC16 多回路监控仪表配合使用。 2.型号说明 3.外形尺寸(公差:2mm) 注:引线长度为 2 米 2*26AWG 护套线,线头…