文 | 智商掉了一地
如何才能让大型语言模型按照我们的要求去做?这篇文章给出了回答——
近期在 NLP 领域风很大的话题莫过于 Prompt,尤其当大型语言模型(LLM)与其结合,更是拉近了我们与应用领域之间的距离,当 LLM 在包括小样本学习在内的各种任务中表现出非凡的效果和通用性时,也存在着一个问题亟待解决:如何让 LLM 按照我们的要求去做?这也是本篇论文的一个重要出发点。
本文作者将 LLM 视为执行由自然语言指令指定程序的黑盒计算机,并研究如何使用模型生成的指令来控制 LLM 的行为。受经典程序合成和人工提示工程方法的启发,作者提出了自动提示工程师 (Automatic Prompt Engineer, APE) 用于指令自动生成和选择,将指令视为“程序”,通过搜索由 LLM 提出的候选指令池来优化,以使所选的评分函数最大化。
作者通过对 24 个 NLP 任务的实验分析指出,自动生成的指令明显优于先前的 LLM Baseline,且 APE 设计的提示可以用于引导模型真实性和信息量,以及通过简单地将它们预设为标准上下文学习提示来提高小样本学习性能。
论文题目:
Large Language Models are Human-Level Prompt Engineers
论文链接:
https://openreview.net/pdf?id=92gvk82DE-
大模型在各种任务上的通用性和卓越表现引发广泛关注,同时关于引导大模型朝着理想方向的研究也在不断进行着,最近几年的工作考虑了微调(fine-tuning)、上下文学习(in-context learning)和几种形式的 prompt 生成,包括可微分软提示(differentiable tuning of soft prompts)和自然语言提示工程(natural language prompt engineering),而自然语言提示工程则更是让公众对 prompt 设计和生成也产生了兴趣。
比如,近年来具有自然语言界面的大型模型,包括用于文本生成和图像合成的模型,已经越来越多地被公众使用。由于人们很难找到正确的 prompt,因此开发了许多关于提示工程的指南以及帮助发现 prompt 的工具,链接如下:
https://blog.andrewcantino.com/blog/2021/04/21/prompt-engineering-tips-and-tricks/
https://techcrunch.com/2022/07/29/a-startup-is-charging-1-99-for-strings-of-text-to-feed-to-dall-e-2/
https://news.ycombinator.com/item?id=32943224
https://promptomania.com/stable-diffusion-prompt-builder/
https://huggingface.co/spaces/Gustavosta/MagicPrompt-Stable-Diffusion
在公众的这种兴趣背后,潜藏着这样的事实——简单的语言提示并不总产生期望的结果,即使这些结果可以通过其他指令生成。
因此,由于对指令与特定模型的兼容性知之甚少,用户必须尝试各种提示以指导 LLM 走向期望的行为。我们可以通过将 LLM 看作是由自然语言指令指定执行程序的黑盒计算机来理解这一点:虽然它们可以执行广泛的自然语言程序,但这些程序的处理方式对人类来说可能并不直观,而且只有在下游任务中执行这些指令时才能衡量其质量。
首先,基于“输入-输出对”形式的小集合,使用 LLM 作为推理模型生成候选指令,如上图(b)所示,使用 LLM 作为推理模型来填充空白,此算法涉及到搜索推理模型所提出的候选指令。
其次,通过为想要控制的 LLM 下的每条指令计算一个分数来指导搜索过程。
最后,提出一种迭代蒙特卡洛搜索方法,LLM 通过提出语义相似的指令变体来改进最佳候选指令。
总之,该算法要求 LLM 根据示例生成一组候选指令集,然后再评估其中哪些更有效。即自动地为通过输出示例指定的任务生成指令:通过直接推理或基于语义相似性的递归过程生成几个候选指令,用目标模型执行它们,并根据计算出的评估分数选择最合适的指令。
对于一个包含从总体 中采样的输入-输出示例的数据集 和一个提示模型 指定的任务,自然语言程序合成的目标是找到这样的一条指令 ρ,使得当用指令和给定输入的拼接 ρ 提示 时, 产生相应的输出 。即将其构建为一个优化问题,为找到指令 ρ,使每个样本分数 ρ 的期望最大化,超过可能的 :
ρρρρ
从 ρρ 中生成高质量候选项有两种方法:
评分函数
为了将问题转化为黑盒优化,选择了一个评分函数,该函数可以精确度量数据集和模型生成的数据之间的对齐程度。在 TruthfulQA 实验中,主要关注前人提出的自动化指标,类似于执行准确率。在每个case中,使用等式 (1) 来评估生成指令的质量,并对测试集 计算期望。
执行准确率。使用Honovich等人提出的执行准确率矩阵来评估指令 ρ 的质量,将其表示为 。大多数情况下,执行准确率被简单地定义为 0-1 loss,而在某些任务中,则会考虑到不变量。
对数概率。进一步提出一个更偏向 soft 概率的评分函数,假设它可能会通过在搜索低质量候选指令时提供更细粒度的信号来改进优化,尤其考虑了目标模型 下给定指令和问题的期望答案的对数概率,在每个样本的基础上它是 ρ。
有效的评分估计。通过计算所有指令候选的整个训练集的分数来估计分数开销很大,因此为减少计算开销,这里还采用了一种过滤方案,即分配计算资源时,有潜力的候选获得更多,而低质量则获得更少,这可以通过在算法 1 的第 2-9 行使用多阶段计算策略来实现。首先用训练集的一小部分来评估所有候选数据,对于分数大于某个阈值的候选指令,从训练集中采样并评估一个新的非重叠子集,以更新分数的移动平均值,然后,重复这个过程直到留下一小部分候选对象,并在整个训练集上对其进行评估。这种自适应过滤方案保持了高质量样本的精确计算代价的同时,也大大降低了低质量候选的计算代价,从而显著提高了计算效率。
迭代proposal分布
尽管想直接对高质量的初始候选指令进行采样,但可能出现的情况是,上述方法无法产生一个好的 proposal 集 (要么是因为缺乏多样性,要么是不包含任何具有合适高分的候选对象),因此作者又研究了重采样 的迭代过程。
这里将从zero-shot性能、few-shot性能和真实性这三个角度进行研究。
指令归纳(Instruction Induction)
作者在这部分进行定量分析,从而改进本文方法的三个主要组成部分:proposal 分布、评分函数和迭代搜索。
用于 proposal 分布和评分的 LLM
-
本文需要迭代搜索吗?作者在 6 个任务上比较 APE 和迭代 APE。如图 9, 迭代搜索在 APE 表现不如人类的任务上略微提高了性能,但在其他任务上差不多。这与前面的假设一致,即迭代搜索对于生成良好初始 具有挑战性的任务最有用。
本文为了减少创建和验证有效指令所涉及的人工成本,通过将提示工程过程描述为黑盒优化问题来将其自动化,作者使用 LLM 指导的高效搜索算法来解决该问题,APE 方法在多种任务上以最少的人工投入达到了和人类水平相当的性能。由于近些年来大模型展示出遵循人类指令的能力,因此可能许多未来的模型(包括那些用于正式程序合成的模型)都将会有自然语言界面,而本文的工作今后也可能将为控制和引导生成 AI 奠定基础,但这条路的探索还需要更多人的共同努力,任重而道远。