暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FORMATSPREAD评估算法:微小的提示词格式变化,也会显著影响LLM性能

672
今天分享的是由华盛顿大学在ICLR2024发表的一篇文章:
Quantifying Language Model's Sensitivity to Spurious Features in Prompt Design or:How I learned to start worrying about prompt formatting

量化大语言模型对提示词中的结构敏感性(我是如何开始学习担心提示词格式的)

文章链接:https://arxiv.org/pdf/2310.11324

代码链接:https://github.com/msclar/formatspread

摘要

提示词的写法对于大语言模型来说至关重要,但很多工作重点关注提示词的写法,例如应该给予模型什么样的角色定位,多任务应该如何编排,few-shot应该给什么样的例子。或许有些长期写提示词的工程师们能隐约发现大模型对于提示词中细微的变化,例如符号的转换,大小写等有着较高的敏感性。但如此玄学的结论也不能轻易地令人信服。
本篇文章的研究表明,微小的提示词格式变动会显著影响模型的表现,甚至导致多达76个百分点的准确率差异。无论模型大小、示例数量,还是是否进行了指令微调,这种敏感性都存在。本文提出了一种名为FORMATSPREAD的算法,可以系统性地评估不同提示词格式对模型性能的影响,建议在评估LLM时报告不同格式下的表现区间,以提高评估的可靠性。

量化敏感度


上图显示了在使用LLaMA-2-7B模型进行1-shot学习时,不同提示词格式对模型在具体任务上的表现差异。具体来说,图中各个“”代表不同长度的占位符,这些占位符会被实际的数据样本替换。该任务(task280)来自SuperNaturalInstructions数据集,要求模型根据给定的短文段将其分类为四种刻板印象或反刻板印象类型之一(性别、职业、种族和宗教)。可以看到通过变化大小写、空格、换行等格式,在相同数据相同任务下对模型输出有显著的影响。

文章通过搭建FORMATSPREAD框架来实现对这一敏感度的评估。框架的本质是通过构建不同的提示词格式在某一数据集下评估性能上下限差距。其构建提示词格式的语法是一个手动设计的过程,旨在定义可能的格式空间并确保这些格式之间的语义等价性。以下是构建语法的主要步骤:

1. 定义语法的基本组成部分

  • 基本字段(Basic Fields):每个提示词格式由一个或多个基本字段组成。一个基本字段通常包括:
    • 描述符(Descriptor):用于描述数据的短语或词语,如“Passage”或“Answer”。
    • 分隔符(Separator):描述符和数据之间的符号,如“: ”。
    • 占位符(Placeholder):用来替换实际数据的占位符,通常表示为<text>
  • 基本字段的形式化定义:使用巴科斯-诺尔范式(Backus-Naur Form, BNF)来定义基本字段。比如,基本字段可以被定义为:
    B1(d, s, f) := f(d)s<text>

    其中,d
    是描述符字符串,s
    是分隔符,f
    是改变描述符形式的函数(如大小写转换),<text>
    是数据的占位符。

2. 组合字段

  • 多字段组合(Field Composition):多个基本字段可以组合成完整的提示词格式。组合时,可以使用连接符来分隔各个字段,如空格或其他符号。

    • 例如,两个基本字段a1
      a2
      可以组合成一个格式:

      B(2)2(a1, a2, ' || ')

    • 这表示两个字段a1
      a2
      通过" || "
      连接起来,形成完整的提示词格式,如"Passage: <text> || Answer: <text>"

3. 支持枚举(Enumeration Support)

  • 枚举列表项:语法支持定义列表项的格式,比如选项(A)
    , (B)
    , (C)
    等。每个列表项也可以通过基本字段来表示。

    • 枚举的示例:

      Option (A): <text>, Option (B): <text>, Option (C): <text>

    • 该格式可以表示为:
      B(3)2(a1, a2, a3, ' || ')

    • 其中,a1
      , a2
      , a3
      分别代表“Option (A)”、“Option (B)”、“Option (C)”的基本字段。

4. 语法规则的总结

  • 最终的语法定义通过一系列组合规则来确定提示词格式的合法性。这些规则包括了各种字段的定义、字段之间的连接方式、以及支持的各种格式变体。

  • 所有字段的组合必须符合语法定义,才能生成被认为是“有效”的提示词格式。

5. 语法验证

  • 验证生成能力:研究人员通过验证语法是否能生成特定任务的提示词格式来测试其有效性。例如,验证语法是否能生成Super-NaturalInstructions任务中使用的100多种提示词格式。

  • 确保语义等价性:通过控制描述符的形式(如只改变大小写)来保证生成的不同格式之间的语义等价性。

这个过程确保了语法可以精确地定义语义等价的提示词格式,并且可以系统地生成和评估这些格式,以量化和理解大语言模型的敏感性。

实验

实验方法如下:

  1. 数据选择:从Super-NaturalInstructions中选取了53个任务,包括19个多选任务和34个分类任务。为了构建最终的提示词模板,将每个任务的指令与多个格式化的few-shot示例通过\n\n
    间隔连接。为了消除示例选择和顺序对模型输出的影响,固定了每个任务的few-shot示例的选择和顺序,这些示例在任务中随机选择,但不会用于评估。每个数据集的大小假设为1,000,以确保任务之间的评估公平性。
  2. 模型:实验评估了几种自回归语言模型,包括LLaMA-2-{7B, 13B, 70B}、Falcon-7B、Falcon-7B-Instruct,以及GPT-3.5-Turbo。
  3. 任务评估指标:采用了两种常见的准确率计算方法:
    • 精确前缀匹配:检查模型输出的前缀是否与期望答案匹配,经过标准化处理后进行比较。
    • 概率排序准确率:计算模型输出分布中,期望答案是否为排名最高的有效选项(适用于多选和分类任务)。结果主要通过概率排序准确率进行报告。
此外,实验还进行了精确前缀匹配的额外分析,发现提示词格式的选择对任务退化(如未能给出有效选项)的影响显著,且这种格式选择的敏感性在某些情况下更为突出。
  1. 图2:
  2. (a) LLaMA-2-7B vs. 13B: 这张图显示了LLaMA-2-7B和LLaMA-2-13B模型之间的性能比较。结果表明两者之间存在很高的相关性(相关系数r = 0.83),即不同模型规模在同一任务上具有相似的性能扩展。
    (b) Falcon-7B vs. Falcon-7B-Instruct: 这张图对比了Falcon-7B和Falcon-7B-Instruct模型,虽然相关性较低(r = 0.43),但仍显示出在不同模型版本间有显著的性能扩展。
    (c) 1-shot vs. 5-shot: 这张图比较了在相同任务和模型上使用1-shot和5-shot示例时的性能扩展,结果表明增加few-shot示例数量并不能显著减少提示词格式选择引起的性能扩展。
  3. 图3: 这里展示了在不同模型和few-shot设置下提示词格式选择导致的性能扩展范围。图中的每个条形图表示不同模型和few-shot设置下的性能扩展情况,可以看出即使是在相同模型和不同few-shot设置下,性能扩展也可能显著。

  4. 图4: 该图描述了一个模型相对于另一个模型在使用不同格式时,性能差异超过某一阈值的概率。该图进一步表明,提示词格式的选择对模型性能的影响是非线性的且难以预测的,提示在模型比较中需要考虑格式的多样性。
注:原文中"性能扩展"(Performance Spread)指的是在相同任务和数据集上,不同的提示词格式可能导致语言模型性能的显著差异。这种差异可以表现为模型在处理同一任务时的准确率、F1得分或其他指标的变化范围。举例来说,如果一个模型在任务A上使用格式1获得了90%的准确率,而使用格式2只获得了80%的准确率,那么性能扩展就是10个百分点。这说明,模型对提示词格式非常敏感,选择不同的格式会显著影响其表现。在本文的实验中,"性能扩展"主要关注的是在相同的模型和任务下,不同的提示词格式如何影响模型的输出结果,以及这种影响的范围有多大。
经过上面的实验发现,提示词格式对模型性能的影响非常大,即使增加few-shot示例数量、提升模型规模或进行指令微调,这种性能差异依然存在。在每个评估任务中,随机抽取10种可能的提示词格式,并使用FORMATSPREAD算法计算模型和few-shot示例数量的选择带来的性能差异。结果显示,各任务之间的性能差异显著,模型选择和few-shot示例数量的不同导致了中位数为7.5个准确率点的差异。20%的任务在所有LLaMA-2设置中始终表现出至少15个准确率点的差异,而在所有Falcon设置中,这一差异至少为9个准确率点。部分任务的性能差异甚至超过了70个准确率点。
值得注意的是,由于这项分析仅使用了10种随机抽取的格式,所估计的性能差异实际上是各任务的下限。此外,无论是增加模型规模、进行指令微调,还是增加few-shot示例数量,性能差异依然显著。在文章的附录B.2中展示了非分类任务的类似结果,并进一步讨论了整个准确率分布的差异及其离散程度。感兴趣的读者可以参考原文附录。

总结

这篇文章主要探讨了提示词格式对大型语言模型性能的显著影响。作者提出了一种名为FORMATSPREAD的算法,用于估计不同提示词格式选择对模型性能的扩展(spread)。实验表明,即使在增加模型规模、增加few-shot示例数量或使用指令微调的情况下,提示词格式的选择仍会导致模型性能的显著差异。

这类自动化选择/优化提示词的方法或许未来可以成为主流的提示词编写方法。甚至演变为工程师们搭建一个大模型workflow,不同的用户输入自己的任务场景,生成各类提示词输入到workflow中。

编者简介

李剑楠:华东师范大学硕士研究生,研究方向为向量检索。作为核心研发工程师参与向量数据库、RAG等产品的研发。代表公司参加DTCC、WAIM等会议进行主题分享。
👆 关注 AI 搜索引擎,获取更多专业技术分享 ~

文章转载自向量检索实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论