大模型使用的关键在于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

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

  1. 【论文解读 ACL 2019 | PLMEE】Exploring Pre-trained Language Models for Event Extraction and Generation

    论文题目:Exploring Pre-trained Language Models for Event Extraction and Generation 论文来源:ACL 2019 国防科技大学 ...

  2. 论文笔记--On the Sentence Embeddings from Pre-trained Language Models

    论文笔记--On the Sentence Embeddings from Pre-trained Language Models 1. 文章简介 2. 文章概括 3 文章重点技术 3.1 BERT模 ...

  3. GPT-2隐私泄露论文阅读:Extracting Training Data from Large Language Models

    文章目录 论文地址: 原文阐释: 渔樵问对: 原理梗概 预防策略 隐私策略 这个新颖的攻击方式是什么? 三种典型采样策略: 隐私风险 文章第5页第二段中提到的 memorized training e ...

  4. [论文阅读]Using the Output Embedding to Improve Language Models

    论文总结(Transformer中Embedding部分提到的权重共享) 1)摘要 2)文章贡献 3)实验设计 3)实验结果 论文名:Using the Output Embedding to Imp ...

  5. 论文笔记:How Can We Know What Language Models Know?

    论文链接: https://arxiv.org/abs/1911.12543 代码开源: GitHub - jzbjyb/LPAQA: Language model Prompt And Query ...

  6. 论文浅尝 | Multimodal Few-Shot Learning with Frozen Language Models

    笔记整理:李磊,浙江大学硕士,研究方向为自然语言处理 链接:https://arxiv.org/abs/2106.13884 动机 大规模的自回归语言模型(如GPT)在预训练阶段学习到了大量的知识,具 ...

  7. 语音识别(ASR)论文优选:Adapting GPT, GPT-2 and BERT Language Models for Speech Recognition

    声明:平时看些文章做些笔记分享出来,文章中难免存在错误的地方,还望大家海涵.平时搜集一些资料,方便查阅学习:http://yqli.tech/page/speech.html.如转载,请标明出处.欢迎 ...

  8. 论文阅读:Generating Abstractive Summaries with Finetuned Language Models

    文章简介: 作者认为神经摘要模型可以利用预先训练的语言表示来生成更抽象的文本 主要方法: 很多摘要生成是在源文本复制词,而不是去理解然后再去解释它,而作者解释他使用的主要是人工撰写摘要的数据集TK;D ...

  9. Re26:读论文 Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks

    诸神缄默不语-个人CSDN博文目录 论文名称:Don't Stop Pretraining: Adapt Language Models to Domains and Tasks (不要停下来啊!) ...

最新文章

  1. 怎样做网络推广浅谈如何更高效的提升关键词排名?你还不知道?
  2. 关于Sybase ASE数据库的license以及试用版过期的问题的解决方案
  3. php phar包require报错,被遗忘的PHP5.3新特性——Phar
  4. 左移右移位运算_计算机硬件技术基础M2——计算机运算基础(二)
  5. Android开发四大组件
  6. 六问阿里云计算安全,全面解析阿里云ECS服务器的计算安全进化之路
  7. 中小型软件产品解决方案模板
  8. 交友盲盒小程序版本 全开源版本
  9. 群晖3617可以有几个网卡_【群晖系统】黑群晖洗白13问~经典QA
  10. 敏捷开发项目管理软件
  11. 这些真实的“猥琐程序员”,今天必须曝光!
  12. 【原创】聊天机器人与自动问答技术
  13. google浏览器打开不久自动退出
  14. 北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码解析 道翰天琼认知智能api机器人接口。
  15. C语言中的a = b = c ? d : e;
  16. 分清概念十分重要之--Linux中的各种队列
  17. EFR32--如何在EFR32程序中修改UUID
  18. PyTorch之—可视化(Visdom/TensorboardX)
  19. code:block17.12汉化
  20. 吴恩达深度学习视频笔记

热门文章

  1. 这家芯片企业,从创立之初就用 Authing 管理身份
  2. 2021年最新Java基础面试题(过了这个村我在下个村等你)
  3. 每个人都是幸福的,只是你的幸福常常在别人眼里
  4. 实景三维建模怎么玩?
  5. Ubuntu安装sogou输入法
  6. 《富爸爸穷爸爸》读书笔记(4):税收的历史与公司的力量。公司是什么?是一栋楼?一群人?一个产品?还是一个理念?
  7. C++案例 | C++使用mmap实现多进程拷贝文件
  8. 概率论与数理统计(2)--均匀分布函数及其期望、方差
  9. 如何查看mysql数据库各个表数据占用空间大小?
  10. 【格蕾】重要的GCC内置函数总结