Poketto

让 AI 自己写提示词:DeepMind 发现的“最佳咒语”竟是深呼吸,一步一步来

目录

论文主题概念插画

配图:AI 生成的概念示意图,非论文原图、实验结果或真实数据。

TL;DR:2023 年,Google DeepMind 提出 OPRO 方法,让大模型根据历史得分反复改写提示词。在论文的 GSM8K 小学数学实验里,一句“Take a deep breath and work on this problem step-by-step”得分最高,为 80.2%。但这是 PaLM 2 上、经过搜索挑出来的结果,不能简单理解成“任何模型加这句话都能涨到 80%”。

这是一篇 2023 年的论文:arXiv 于 2023 年 9 月 7 日首次提交,后来被 ICLR 2024 接收。它不是今天的新闻,但“深呼吸”这个梗至今仍然好用。

让模型当优化器

我们通常把大模型当作“被优化的对象”,人类绞尽脑汁调提示词。这篇论文(Chengrun Yang、Quoc V. Le、Denny Zhou 等人)反过来:让大模型自己当优化器。

方法叫 OPRO(Optimization by PROmpting)。每一轮,把之前试过的提示词和它们的得分写进一个“元提示词”,让模型据此生成新的候选;新候选拿去测试打分,再放回元提示词,进入下一轮。整个过程全用自然语言描述,不需要梯度。

作者先拿它做了线性回归和旅行商问题的小实验,随后重点用在提示词优化上:目标是找出能让任务准确率最高的指令。

“深呼吸”是怎么冒出来的

在 GSM8K(小学数学应用题)上,论文用 PaLM 2-L 作为打分模型,让不同的大模型当优化器。其中由经过指令微调的 PaLM 2-L 生成的这句话得分最高:“Take a deep breath and work on this problem step-by-step.”,零样本准确率 80.2%。

作为对照,论文表格里经典的“Let's think step by step”是 71.8%,不加任何指令是 34.0%。其他优化器找到的最佳提示词也在 74.5% 到 79.9% 之间。

论文的总体结论是:OPRO 找到的最优提示词,在 GSM8K 上比人工设计的提示词最高好 8%,在 Big-Bench Hard 任务上最高好 50%。

别把它当成通用魔法

这个故事很容易被讲歪,有几点需要说清:

  • 34% 对 80.2% 并不是“只加一句深呼吸”的受控对照,那句话是搜索出来的结果,34% 则是空指令。
  • 结果来自 PaLM 2,换成别的模型,最佳措辞很可能完全不同。
  • 论文的主角是“让模型迭代优化提示词”这个方法,而不是某句咒语本身。

为什么有趣

这件事真正有意思的地方在于:模型喜欢的措辞,未必是人类觉得最合理的。人类会写“请逐步推理”,模型却可能偏爱一句带点人情味的“深呼吸”。把调参的苦活交给模型,再用分数说话,比凭感觉玄学调咒语靠谱得多。

论文代码已公开,后来的自动提示词优化工作也常把它当作基线。

论文地址:arXiv:2309.03409

关注这个空间,它的新文章会出现在你的关注动态里。