放弃评测大模型,普林斯顿大学已经开始评估Prompt了,提出Prompt评估框架

815 阅读6分钟

图片

 夕小瑶科技说 原创
作者 | 小戏、Python

大模型的出现可以说颠覆了原本 AI 模型的工作思路,从原本的“模改”变为了目前基于 Prompt 的上下文学习(In-context Learning, ICL),即通过使用 Prompt 以及一组示例来指导一个大模型执行我们希望完成的任务

显然,在 ICL 这种方式之下,Prompt 的设计至关重要,我们在过去几个月也分享了许多针对 Prompt 设计进行的研究,比如GPT-4使用效果不好?美国奥本大学提出Prompt分类法,另辟蹊径构建Prompt设计指南,但是目前常用的 Prompt 设计法往往只希望明确在不同场景下应该选择哪些 Prompt,却没有对 Prompt 的选择将会如何影响大模型的输出效果进行充分的研究。

因此,来自普林斯顿大学的研究者们开发了一个 ICL 效果的评估方法,以更好的评测不同 Prompt 设计的效果,从而给出更加客观真实的 Prompt 设计方案,整体流程如下图所示:

图片

GPT-4能力研究传送门(遇浏览器警告点高级/继续访问即可):

gpt4test.com

从图中可以看到,这套方法包含了 4 类共计 13 个不同的系列大规模语言模型(Model Families),3 大类分 9 种不同的任务(Tasks)以及 7 种不同的 Prompt 选择法,从 5 个与 ICL 相关的目标对 Prompt 选择法进行评价。整套评估方法允许任意的 Prompt 输入,一个完整的 Prompt 由指令(Instruction),阐释(Solved Demonstrations)以及一个未解决的测试用例(Unsolved Test Example)组成,如下图所示:

图片

针对 Prompt 方法的评测,论文主要从准确率与敏感性两个方面对 Prompt 进行评估,在准确率方面,论文从Zero-shot 准确率,Few-shot 准确率以及扰动准确率(Perturbation accuracy)三个指标出发度量 Prompt 对任务准确率的影响,其中扰动准确率论文通过向 Prompt 中随机的引入大写、间距、缩写以及常见的拼写错误来度量 Prompt 的稳定性。此外,论文还考虑了选择敏感度(Selectional sensitivity)以及置换敏感度(Permutational sensitivity)以以衡量 Prompt 对阐释排列顺序的敏感性。针对 N 个模型以及 M 个数据集,每个指标可以获得 N * M 个值,论文定义了一种名为“平均相对增益(Mean Relative Gain)”的方法聚合准确度指标,又使用平均值指标聚合敏感性指标。其中给定一个任务  以及一个模型 ,计算每个 Prompt  的准确度得分为 ,计算平均相对增益可以分为三步,首先定义一个相对增益函数

那么对于每个准确度得分 ,可以有  为:

则,平均相对增益为:

整体进行评估的任务以及数据集汇总如下表,涵盖分类(CLS),多项选择问答(MCQ)和生成式问答(GQA)等各种任务类型:

图片

而模型则包括 13 个自回归语言模型,参数规模从 11 亿到 200 亿不等:

图片

而整体评估的 Prompt 生成方式可以被分为三大类,分别是任务无关方法、任务相关的手动方法以及任务相关的自动方法,其中:

任务无关的方法非常简单,即使用不包含任何特定任务信息的 Prompt,如:

  • Null instruction:不添加任务描述,Prompt 直接由阐释与一个待解决测试用例组成
  • Generic instructions:添加一些通用的描述,如“完成以下任务”等

而任务相关的手动方法即人工编写特定与任务的 Prompt:

  • PromptSource:PromptSource 是一个公开的收集了在 170 个数据集上超过 2000 个手动设计的高质量 Prompt 模板的 Github 项目,论文使用 PromptSource 作为手动方法的资源
  • Ad hoc:即通过 ChatGPT 生成几个特定于任务的 Prompt 来模拟人工编写 Prompt 的过程

最后,任务相关的自动方法包含 3 种流行的自动 Prompt 生成方式:

  • Low Perplexity:由 Gonen 等人提出的根据最小困惑度选择 ChatGPT 生成的 Prompt 方法
  • APE:由 Zhou 等人提出的自动少样本 Prompt 生成方法,通过 OpenAI DaVinci 自动生成指令,并依据其在几个验证示例中的准确度对 Prompt 方法进行选择与改进
  • RLPrompt:由 Deng 等人提出的基于强化学习的少样本 Prompt 自动生成方法

方法总结如下图所示:

图片

最终,论文评估得到了每种方法在每个指标上的得分如下图所示:

图片

从上图可以看出,在 Few-shot 的设置中,任务无关的方法表现相对更好,并且 Null instruction 有时也会比 Generic instructions 方法更好。而在 Zero-shot 下,任务相关的方法表现更佳,PromptSource 成为最佳方法,而 Low Perplexity、APE 以及 RLPrompt 则普遍低于平均水平,这似乎表明,简单的 Prompt 设计方法往往表现了更好的准确性

图片

同时,对比敏感性指标,可以看到在 Zero-shot 以及 Few-shot 设置下,不同任务之间在选择、排列的变化有显著的差异

图片

此外,模型的规模也对结果具有一定的影响,作者团队研究了小模型(参数量小于 60 亿)以及大模型(参数量大于等于 60 亿)的准确率的平均相对增益值如下图所示:

图片

可以看到任务无法的方法与 PromptSource 的表现最好,并且大模型在每个任务类型中的平均相对增益值的变化范围要比小模型要小,这表明大模型能够更好的理解任务语义,而小模型对 Prompt 更加敏感

总结与讨论

这篇论文具有一个有趣的结论,在实际的 Prompt 工程之中有时简单的 Prompt 生成方式有时也会取得良好的性能,在 Few-shot 的设置之中,任务无关的方法会表现出更好的性能,而一些自动生成 Prompt 的方法则往往会缺乏竞争力,无法享受 Prompt 对模型性能带来的提升

同时,这篇论文对基于 Prompt 的上下文学习构建了一个完整的评估框架,同时在多个任务、多种评估指标之中检验 Prompt 的生成方式以及生成的 Prompt 的性能,为 Prompt 的设计指导增添了新的方法论。

论文题目:
InstructEval: Systematic Evaluation of Instruction Selection Methods

论文链接:
arxiv.org/pdf/2307.00…

image.png