大型语言模型是人类水平的提示工程师.

0. TL; DR

本文介绍了一种名为Automatic Prompt Engineer (APE)的自动提示生成和选择方法,用于优化大型语言模型(LLMs)的行为。通过将指令视为“程序”,并利用LLMs生成和搜索指令候选,APE能够显著提升模型在零样本学习任务中的表现。此外,APE还能提高少样本学习性能,找到更好的零样本推理提示,并引导模型趋向真实性和信息性。

1. 背景介绍

随着规模和注意力架构的发展,大型语言模型(LLMs)在多种任务上展现出卓越的泛化能力。然而,任务性能在很大程度上依赖于用于引导模型的提示质量,而大多数有效的提示都是由人类手工设计的。为了减少人类在创建和验证有效指令方面的工作量,本文提出了一种新的算法——自动提示工程师(APE),用于自动生成和选择指令。

具体来说,研究者们将指令视为“程序”,并利用LLMs生成指令候选,然后通过优化一个选定的评分函数来选择最佳指令。这种方法可以显著提升模型在零样本学习任务中的表现。此外,研究者们还探讨了APE在提高少样本学习性能、寻找更好的零样本推理提示以及引导模型趋向真实性和信息性方面的应用。

2. 方法介绍

本文将指令生成视为自然语言程序合成问题,将其建模为一个黑盒优化问题。具体来说,目标是找到一个指令$ρ$,使得当模型$M$被提示$[ρ; Q]$时,能够产生相应的输出$A$。这一过程可以表示为以下优化问题:

\[\rho^* = \arg\max_{\rho} f(\rho) = \arg\max_{\rho} \mathbb{E}_{(Q,A)} [f(\rho, Q, A)]\]

其中,$f(\rho, Q, A)$是一个样本评分函数,用于评估指令$ρ$在给定输入$Q$和输出$A$时的性能。

为了生成高质量的初始prompt分布,研究者们采用了两种方法:前向生成和后向生成。

为了进一步提升prompt的质量,研究者们提出了一种迭代蒙特卡洛搜索方法。具体来说,他们使用LLMs生成与高分指令语义相似的变体,从而逐步改进prompt集。这一过程可以表示为:

  1. 生成初始prompt集U。
  2. 评估每个prompt的分数,并保留高分prompt
  3. 使用LLMs生成与高分prompt语义相似的变体。
  4. 重复上述过程,直到找到最优prompt

为了将问题建模为黑盒优化问题,研究者们选择了两种评分函数:执行准确率和对数概率。

\[f_{\text{exec}}(\rho, Q, A) = \mathbb{1} [M([\rho; Q]) = A]\] \[f_{\text{logp}}(\rho, Q, A) = \log P(A | [\rho; Q])\]

3. 实验分析

研究者们在24个指令归纳任务上评估了APE的性能。这些任务涵盖了多种语言理解任务,包括词法、句法、语义和多语言任务。实验结果表明,APE在所有24个任务上均优于或与人类标注者相当。

APE在零样本学习任务上的表现优于或与人类标注者相当。具体来说,APE在24个任务上达到了人类水平或更好的性能。