让 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