ICL-在prompt中,示例放在哪里有什么影响

发布于:2025-08-14 ⋅ 阅读:(17) ⋅ 点赞:(0)

欢迎关注v:数据分析能量站

论文:https://arxiv.org/pdf/2507.22887

《Where to Show Demos in Your Prompt: A Positional Bias of In-Context Learning》

研究核心

本文聚焦大型语言模型(LLMs)的“上下文学习(ICL)”机制,系统性探究了**演示样例在提示中的位置**对模型性能的影响,揭示了一种此前未被关注的“位置偏差(DPP偏差)”,并提出了相应的发现与建议。

主要发现

  • 位置偏差(DPP偏差)的存在演示样例在提示中的位置(而非内容)会显著影响模型表现:放在靠前位置(如系统提示的开头/结尾,ssp/esp)时,模型准确率更高、预测更稳定;放在靠后位置(如用户消息的结尾,eum)时,性能明显下降,甚至导致近一半的预测结果翻转。

  • 模型规模与任务的影响

    • 小模型对位置更敏感,大模型虽相对稳健,但仍存在位置依赖;

    • 不同任务(分类、问答、推理、生成)的最优位置不同,无“万能位置”,例如分类任务更依赖早期位置,生成任务对位置波动更敏感。

  • 关键机制位置偏差源于两方面:

    • 模型架构(因果解码器对早期token的注意力权重更高);

    • 训练数据(指令微调语料中演示样例的固定位置规律被模型内化为“先验”)。

实践意义与建议

  • 提示设计需“因模型和任务而异”,避免依赖默认格式,应测试不同位置的效果;

  • 可通过“测试时动态选择最优位置”(基于相似示例的多数投票)或“随机位置数据后训练”缓解偏差;

  • 需警惕位置偏差可能放大演示样例中的隐性偏见,需谨慎筛选演示内容。

1 核心背景:上下文学习(ICL)的“脆弱性”

大型语言模型(如GPT、LLAMA等)的强大之处在于“上下文学习”——无需重新训练,只需在输入提示中嵌入几个任务示例(如“问题+答案”“文本+分类标签”),模型就能快速适应新任务。这种能力让LLMs在分类、问答、摘要等任务中表现出色。

但近年来研究发现,这种机制存在“脆弱性”:**示例的顺序、数量哪怕只有微小变化,模型性能就可能大幅波动**。这引发了一个关键问题:LLMs是真的从示例中“学习”了规律,还是仅仅依赖表面模式(如示例的排列方式)?

二、关键发现:DPP偏差——位置决定性能的“隐藏规律”

研究者发现了一种新的“位置偏差”,称为“DPP偏差”(Demo Position Perturbation,即示例位置扰动),其核心表现是:

  • 相同的示例块,仅改变在提示中的位置(如从开头移到结尾),就能导致模型准确率波动高达20%-50%,甚至颠覆近一半的预测结果

  • 这种偏差与示例内容无关,纯粹由“空间位置”决定(例如示例放在“系统提示”的开头还是结尾,或“用户消息”的开头还是结尾)。

这一发现挑战了一个常见假设:“只要示例格式正确,LLMs就能稳定学习”。实际上,示例在提示中的位置(相对于指令、问题的位置)会显著影响模型表现

三、研究设计与结论:位置效应的系统性验证

为了验证这种偏差,研究者做了以下工作:

  • 控制变量实验:设计了四种典型位置(系统提示的开头/结尾、用户消息的开头/结尾),确保性能变化仅由位置导致。

  • 新指标引入:用“准确率变化(accuracy-change)”和“预测变化(prediction-change)”两个指标,同时衡量性能波动和输出稳定性。

  • 大规模验证:在8个任务(涵盖分类、推理、生成)和10个主流LLMs上测试,发现了两个规律:

    • 所有模型都存在“首因偏差”(即放在前面的示例对模型影响更大)

    • 模型规模越大(如从1B参数到70B参数),这种偏差越弱(说明大模型更能抵抗位置干扰)

四、价值与意义

  • 揭示局限:证明LLMs的上下文学习并非“稳定可靠”,位置等表面因素可能掩盖模型对任务本质的理解,影响结果的可重复性。

  • 实用指导:研究者将发现转化为优化建议(如将关键示例放在靠近指令的位置),帮助用户在实际使用中减少位置偏差对结果的干扰。

  • 研究方向:为后续改进LLMs的鲁棒性提供了方向——例如通过训练让模型更少依赖位置,更专注于示例中的核心规律。

LLMs在“看示例学任务”时,会偷偷“关注”示例的位置而非仅内容,这种“位置偏差”可能导致结果不可靠;但模型越大,这种偏差越弱,且通过合理放置示例可优化性能。

2 相关研究

一、内部演示顺序偏差:“示例顺序变了,结果可能就乱了”

已有研究发现,LLMs的上下文学习对“示例的内部顺序”非常敏感:

  • 哪怕只是调换几个示例的先后顺序(比如把第1个示例和第3个示例互换),模型在推理、分类等任务中的准确率可能波动±15%(Lu等人,2022)。

  • 模型甚至可能“走捷径”:不是学习示例中的逻辑,而是依赖表面的词汇重叠(比如示例里出现“好”对应正面标签,模型就只看“好”字来判断,Min等人,2022)。

  • 还有研究发现,模型对“先出现的标签/信息”更敏感(比如分类任务中,先列出的标签更容易被模型选中,Wang等人,2023)。

本文与这些研究的区别:前人关注“示例内部的顺序调换”,而本文研究的是“整个示例块的位置移动”(比如把所有示例从提示开头移到结尾),更侧重“整体位置”而非“内部顺序”。

二、机制假设:为什么位置会影响模型?

研究者从模型架构(尤其是Transformer)的角度,解释了“位置偏差”的可能原因:

  • 首因偏差:Transformer模型天生更关注“早期出现的信息”(因为其“归纳头”机制会让初始上下文强烈影响后续预测,Olsson等人,2022)。

  • 中间位置被忽视:序列中间的信息往往获得较少关注,导致性能下降(Liu等人,2023)。

但这些研究很少关注“不同角色的提示(如系统提示vs用户消息)中,位置的影响是否不同”。**本文的突破**:首次专门测试了模型在“系统提示”和“用户消息”这两种不同角色的文本中,对示例位置的敏感度。

三、空间放置的研究空白:“示例放在哪里”被忽视了

过去的研究主要关注“选什么示例”“用什么模板”,但很少研究“示例块在提示中的具体位置”(比如是放在系统提示的开头,还是用户消息的结尾)对结果的影响。

例如:

  • Beck等人(2024)虽然提出了类似“预测变化”“准确率变化”的指标,但他们只改变示例的内容(如换不同的角色描述),不改变位置;

  • 其他研究(如Cho等人,2024)也未关注“示例块相对于系统/用户角色的位置”这一维度。

本文的价值:专门填补了这一空白,通过改变示例在“系统提示”和“用户消息”中的位置,揭示了“空间放置”对上下文学习的关键影响。

已有研究发现示例顺序会影响LLMs的表现,并从模型架构解释了原因,但忽视了“整个示例块在不同角色提示中的位置”这一关键问题。本文正是针对这一空白,深入研究了示例整体位置对模型的影响。

3 演示样例位置对LLMs性能的影响

一、实验核心目标:孤立“位置”的影响

研究者的核心思路是:**保持所有内容不变,只改变演示样例块的位置,观察模型性能变化**,以此证明“位置”是影响结果的关键因素。

具体来说:

  • 固定任务(如分类、问答)、演示样例内容、查询问题、指令模板等所有“内容相关”要素;

  • 仅调整演示样例块在提示中的“结构位置”(比如从系统提示开头移到用户消息结尾);

  • 定义“位置偏差”为:纯因位置变化导致的模型性能波动(排除内容差异的干扰)。

二、四个关键演示样例位置:明确“在哪里放”

基于LLMs常用的“系统提示+用户消息”聊天格式,研究者定义了四个典型位置(如图1所示),覆盖了可能放置演示样例的核心区域:

  • 系统提示开头(ssp):演示样例块放在系统提示的最前面,在所有指令内容之前。

  • 系统提示结尾(esp):演示样例块放在系统提示的最后,在指令之后、用户消息之前。

  • 用户消息开头(sum):演示样例块放在用户消息的最前面,在具体查询问题之前。

  • 用户消息结尾(eum):演示样例块放在用户消息的最后,在查询问题之后。

这四个位置的设计覆盖了两个维度:

  • 角色维度:在“系统提示”中还是“用户消息”中;

  • 顺序维度:在指令/查询的“前面”还是“后面”。

三、评估指标:如何衡量“位置的影响”

为了量化位置对模型的影响,研究者设计了两类核心指标:

  • 准确率变化(∆metric)

    • 公式:∆metric = 某位置的指标值 − 零样本(无演示样例)的指标值

    • 意义:衡量“在该位置放置演示样例”相比“不放演示样例”,模型性能提升(正值)或下降(负值)了多少。

    • 作用:直接体现该位置是否“有助于”模型学习(例如,∆metric为正,说明这个位置的演示样例有帮助)。

  • 预测变化(∆pred)

    • 公式:∆pred = 答案翻转次数 / 总查询数

    • 意义:衡量当演示样例从“默认位置(sum)”换到其他位置时,模型对相同问题的预测结果发生改变的比例。

    • 作用:体现位置对模型输出的“波动性”——即使整体准确率变化不大,高∆pred也说明位置轻微变动就会让模型“改答案”,反映模型的不稳定性。

特殊处理:对于自由生成类任务(如摘要),用ROUGE-L分数(衡量文本相似度)判断“答案是否翻转”:当两个位置生成的答案与标准答案的相似度差异超过0.05时,视为翻转。

研究者通过“固定内容、只变位置”的实验设计,在四个典型位置上测试模型,并通过“准确率变化”和“预测变化”两个指标,量化了演示样例位置对LLMs性能的影响,确保结论仅由“位置”这一因素导致。

4 实证结果总结与解读

一、核心发现:位置决定性能,早期位置普遍更优

实验覆盖了分类、问答、算术推理、摘要生成等8项任务,以及不同规模的模型(如LLAMA3、MIXTRAL等),核心结果是:**演示样例放在提示靠前的位置(系统提示开头/结尾)时,模型性能通常优于靠后的位置(用户消息结尾),甚至超过默认的“用户消息开头”位置**。

具体表现:

  • 分类与问答任务:系统提示开头(ssp)的效果最稳定,例如在MMLU任务中,ssp位置比零样本(无演示样例)准确率提升18%;而用户消息结尾(eum)的效果最差,在SQuAD等任务中显著落后。

  • 算术推理任务:小模型(如LLAMA3 3B)更依赖早期位置(ssp、esp),从ssp移到eum时,GSM8K任务的准确率从42%暴跌至11%;但大模型(如LLAMA3 70B)反而能从eum位置获益(GSM8K准确率从21.5%升至88%),说明模型能力会改变位置偏好。

  • 摘要生成任务:位置对性能的影响最剧烈。例如LLAMA3 3B在XSUM任务中,ssp位置的有效预测率为82.5%,而eum仅27.5%;即使是大模型,这种波动也依然存在(只是幅度减小)。

二、模型规模与鲁棒性:越大越稳定,但并非绝对

实验发现“模型规模”与“位置鲁棒性”(即对位置变化的敏感度)存在关联,但规律因任务而异:

  • 整体趋势:大模型的预测波动性更低(即位置变化时,答案翻转的比例更小),性能更稳定。例如在MNLI分类任务中,LLAMA3 70B的答案翻转率低于10%,而3B模型超过20%。

  • 任务差异

    • 分类任务:大模型对早期位置(ssp、esp)的敏感度显著降低,稳定性提升明显。

    • 算术推理(如GSM8K):几乎所有模型的答案翻转率都超过90%,说明这类任务对位置极其敏感,且大模型的优势不明显(甚至LLAMA3 70B在ssp位置表现反而下滑)。

    • 摘要生成:即使是最大的模型,eum位置的答案翻转率仍接近100%,表明生成类任务对位置变化的抵抗力最弱。

三、位置导致的预测波动:后期位置更易引发“答案翻转”

通过桑基图分析(可视化正确/错误答案的转换),发现一个普遍规律:**演示样例放在靠后的位置(如eum)时,模型的答案更易从“正确”变为“错误”,或反之,波动性远高于早期位置**。

例如:

  • LLAMA3 3B在MMLU任务中,从ssp移到eum时,大量正确答案翻转为错误。

  • 小模型(如QWEN 1.5B)在AG News任务中,ssp位置能让40%的错误答案转为正确,但eum位置几乎无此效果。

  • 即使是大模型(如QWEN 72B),在GSM8K任务中仍有大量预测因位置变化而翻转。

四、最优位置:因模型和任务而异,无“万能解”

“赢-平-输”分析(比较不同位置的表现)显示:

  • 小模型(如QWEN 1.5B):强烈偏好早期位置(ssp、esp),因小模型的长程上下文整合能力弱,需要演示样例“前置”以被优先关注。

  • 大模型(如LLAMA3 70B):更偏好“用户消息开头(sum)”,可能因大模型能更好地关联“靠近查询的演示样例”。

  • 任务差异:分类和推理任务更依赖早期位置;生成任务偶尔会在后期位置(sum、eum)表现更好,但整体仍以早期位置更可靠。

五、统计验证:早期位置的优势具有显著性

通过Wilcoxon检验(统计显著性分析),确认:

  • ssp、esp、sum位置的性能显著优于零样本基线,且效果稳定(p < 0.01)。

  • eum位置的提升不显著(p = 0.1659),且显著差于其他三个位置(p < 0.05)。

演示样例的位置对LLMs性能影响显著:早期位置(系统提示开头/结尾)通常更优,能提升准确率并降低波动;但最优位置因模型规模和任务类型而异(小模型爱早期,大模型可能偏好靠近查询的位置),且无“放之四海而皆准”的位置,需针对性调整

5 讨论部分总结

一、DPP偏差为什么会出现?

研究者提出了两个核心原因,分别与模型架构和训练数据相关:

  • 模型架构的固有特性大型语言模型(如LLAMA、GPT等)采用“因果解码器”结构,训练时使用“自回归掩码”——即模型生成每个 token 时,只能看到前面的 token,无法看到后面的。这种机制导致**早期出现的 token 对后续预测的影响更大**(注意力权重更集中在早期信息上)。例如,模型中的“归纳头”(一种特殊的注意力机制)会优先关注开头和结尾的 token,这与实验中“早期位置的演示样例效果更好”的现象一致。即使系统提示、演示样例、用户消息在逻辑上可以互换,模型的底层优化目标仍会让“位置顺序”产生决定性影响。

  • 训练数据中的位置规律模型在“指令微调”阶段使用的语料中,演示样例往往固定在特定位置(例如,指令后、查询前),这种“位置规律性”会被模型学习并内化为一种“先验知识”。不同任务或领域的训练数据可能强化或削弱这种规律(比如某些数据中演示样例常在开头,另一些则在结尾),这也解释了为什么“最优位置”会因任务和模型而异。

二、如何缓解DPP偏差?

研究者提出了两种可行的解决方向,适用于不同场景:

  • 测试时校准(无需重新训练)思路:针对具体任务和模型,动态选择最优的演示样例位置。具体做法:

    • 为新任务准备一个带标注的参考数据集(包含已知最佳位置的示例);

    • 对新输入的查询,用外部模型找到参考集中与其最相似的k个示例;

    • 对这k个示例的“最佳位置”进行多数投票,将胜出位置作为当前查询的演示样例位置。优势:无需微调模型,成本低,能适应输入数据的变化。

  • 基于随机位置数据的后训练(需要重新训练)思路:通过训练让模型“忽略位置,只关注内容”。具体做法:

    • 构建一个新的训练语料库,其中每个示例的演示样例位置被随机打乱(例如,有时在系统提示开头,有时在用户消息结尾);

    • 用这个语料库对模型进行微调或持续预训练,促使模型学习“与位置无关的表征”。优势:从根本上削弱模型对位置的依赖,长期提升鲁棒性。

DPP偏差源于模型架构对早期信息的偏好和训练数据中的位置规律;缓解方法包括测试时动态选择最优位置(轻量方案),或通过随机位置数据训练模型(根治方案)。