近期,华为联和港中文发表论文《Progressive-Hint Prompting Improves Reasoning in Large Language Models》,提出 Progressive-Hint Prompting (PHP),用来模拟人类做题过程。在 PHP 框架下,Large Language Model (LLM) 能够利用前几次生成的推理谜底作为之后推理的提醒,逐步靠近最终的精确谜底。要应用 PHP,只需要满足两个要求: 1) 问题能够和推理谜底进行合并,形成新的问题;2) 模型可以处理这个新的问题,给出新的推理谜底。
结果表明,GP-T-4+PHP 在多个数据集上取得了 SOTA 结果,包括 SVAMP (91.9%), AQuA (79.9%), GSM8K (95.5%) 以及 MATH (53.9%)。该方法大幅超过 GPT-4+CoT。比如,在现在最难的数学推理数据集 MATH 上,GPT-4+CoT 只有 42.5%,而 GPT-4+PHP 在 MATH 数据集的 Nember Theory (数论) 子集提升 6.1%, 将 MATH 整体提升到 53.9%,达到 SOTA。
论文链接:https://arxiv.org/abs/2304.09797
代码链接:https://github.com/chuanyang-Zheng/Progressive-Hint
介绍
随着 LLM 的发展,涌现了关于 prompting 的一些工作,其中有两个主流方向:
一个以 Chain-Of-Thought( CoT,思维链) 为代表,通过清楚得写下推理过程,激发模型的推理能力;
另一个以 Self-Consistency (SC) 为代表,通过采样多个谜底,然后进行投票得到最终谜底。
显然,现存的两种方法,没有对问题进行任何的修改,相当于做了一遍题目之后就结束了,而没有反过来带着谜底进行再次检查。PHP 尝试模拟更加类人推理过程:对上次的推理过程进行处理,然后合并到初始的问题当中,询问 LLM 进行再次推理。当最近两次推理谜底一致时,得到的谜底是准确的,将返回最终谜底。具体的流程图如下所示:
在第一次与 LLM 交互的时候,应当应用 Base Prompting (基础提醒), 其中的 prompt(提醒)可以是 Standard prompt,CoT prompt 或者其改进版本。通过 Base Prompting,可以进行第一次交互,然后得到初步的谜底。在随后的交互中,应当应用 PHP,直至最新的两个谜底一致。
PHP prompt 基于 Base Prompt 进行修改。给定一个 Base Prompt,可以通过制定的 PHP prompt design principles 来得到对应的 PHP prompt。具体如下图所示:
作家希望 PHP prompt 能够让大模型学习到两种映射模式:
1)如果给的 Hint 是精确谜底,那么返回的谜底依然要是精确谜底 (具体如上图所示的「Hint is the correct answer」);
2)如果给的 Hint 是错误谜底,那么 LLM 要通过推理,跳出错误谜底的 Hint,返回精确谜底(具体如上图所示的「Hint is the incorrect answer」)。
按照这种 PHP prompt 的设计规则,给定任意现存的 Base Prompt,作家都可以设定出对应的 PHP Prompt。
实验
作家应用七个数据集,包括 AddSub、MultiArith、SingleEQ、SVAMP、GSM8K、 AQuA 和 MATH。同时,作家一共应用了四个模型来验证作家的想法,包括 text-davinci-002、text-davinci-003、GPT-3.5-Turbo 和 GPT-4。
主要结果
当语言模型更强大、提醒更有效时,PHP 的效果更好。相比于 Standard Prompt 和 CoT Prompt,Complex CoT prompt 表现出了显著的机能提升。分析还显示,应用强化学习进行微调的 text-davinci-003 语言模型比应用监督指令微调的 text-davinci-002 模型表现更好,能够提升文档效果。text-davinci-003 的机能提高归因于其增强的能力,使其更好地理解和应用给定的提醒。同时,如果只是应用 Standard prompt,那么 PHP 所带来的提升并不明显。如果需要让 PHP 起到效果,至少需要 CoT 来激发模型的推理能力。
同时,作家也探究了交互次数与模型、prompt 之间的关系。当语言模型更强大,提醒更弱时,交互次数会减少。交互次数指代智能体与 LLMs 互动的次数。当收到第一个谜底时,交互次数为 1;收到第二个谜底时,交互次数增加到 2。在图 2 中,作家展示了各种模型和提醒的交互次数。作家的研究结果表明:
1)在给定相同提醒的情况下,text-davinci-003 的交互次数通常低于 text-davinci-002。这主要是由于 text-davinci-003 的准确性更高,导致基础谜底和后续谜底的精确率更高,因此需要更少的交互才能得到最终的精确谜底;
2)当应用相同的模型时,随着提醒变得更强大,交互次数通常会增加。这是因为当提醒变得更有效时,LLMs 的推理能力会得到更好的发挥,从而使它们能够利用提醒跳出错误谜底,最终导致需要更高的交互次数才能达到最终谜底,这使得交互次数增加。
Hint 质量的影响
为了增强 PHP-Standard 的机能,将 Base Prompt Standard 替换为 Complex CoT 或 CoT 可以显著提高最终机能。对 PHP-Standard 而言,作家观察到在 Base Prompt Standard 下,GSM8K 的机能从 16.0% 提高到了在基础提醒 CoT 下的 50.2%,再提高到在基础提醒 Complex CoT 下的 60.3%。相反,如果将 Base Prompt Complex CoT 替换为 Standard,则最终机能会降低。例如,在将基础提醒 Complex CoT 替换为 Standard 后,PHP-Complex CoT 在 GSM8K 数据集上的机能从 71.6% 下降到了 65.5%。
如果 PHP 不是基于相应的 Base Prompt 进行设计,那么效果可能进一步提高。应用 Base Prompt Complex CoT 的 PHP-CoT 在六个数据集中的四个数据集表现优于应用 CoT 的 PHP-CoT。同样地,应用基础提醒 CoT 的 PHP-Complex CoT 在六个数据集中的四个数据集表现优于应用 Base Prompt Complex CoT 的 PHP-Complex CoT。作家推推测这是因为两方面的原因:1)在所有六个数据集上,CoT 和 Complex CoT 的机能相似;2)由于 Base Answer 是由 CoT(或 Complex CoT)提供的,而后续谜底是基于 PHP-Complex CoT(或 PHP-CoT),这就相当于有两个人合作解决问题。因此,在这种情况下,系统的机能可能进一步提高。
消融实验
将句子 P1 和 P2 纳入模型可以提高 CoT 在三个数据集上的表现,但当应用 Complex CoT 方法时,这两个句子的重要性尤为明显。在加入 P1 和 P2 后,该方法在六个数据集中有五个数据集的表现得到了提升。例如,在 SVAMP 数据集上,Complex CoT 的表现从 78.0% 提高到了 80.0%,在 GSM8K 数据集上从 68.3% 提高到了 71.6%。这表明,尤其是在模型的逻辑能力更强时,句子 P1 和 P2 的效果更为显著。
在设计提醒时需要同时包含精确和错误的提醒。当设计的提醒同时包含精确和错误的提醒时,应用 PHP 的效果优于不应用 PHP。具体来说,提醒中提供精确的提醒会促进生成与给定提醒相符的谜底。相反,提醒中提供错误的提醒则会通过给定的提醒鼓励生成其他谜底
PHP+Self-Consistency
应用 PHP 可以进一步提高机能。通过应用类似的提醒和样本路径数量,作家发现在表 6 和图 3 中,作家提出的 PHP-CoT 和 PHP-Complex CoT 总是比 CoT 和 Complex CoT 表现更好。例如,CoT+SC 的样本路径为 10、20 和 40 时,能够在 MultiArith 数据集上达到 96.5% 的准确率。因此,可以得出结论,CoT+SC 的最佳机能为 96.5%,应用 text-davinci-003。然而,在实施 PHP 之后,机能升至 97.1%。同样,作家还观察到在 SVAMP 数据集上,CoT+SC 的最佳准确率为 83.3%,在实施 PHP 后进一步提高到 83.7%。这表明,PHP 可以打破机能瓶颈并进一步提高机能。
应用 PHP 可以降低 SC 的成本,众所周知,SC 涉及更多的推理路径,导致成本更高。表 6 说明,PHP 可以是降低成本的有效方法,同时仍保持机能增益。如图 3 所示,应用 SC+Complex CoT,可以应用 40 个样本路径达到 78.1% 的准确率,而加入 PHP 将所需平均推理路径降低到 10×2.1531=21.531 条路径,并且结果更好,准确率达到了 78.2%。
GPT-3.5-Turbo 和 GPT-4
作家按照以前的工作设置,应用文本生成模型进行实验。随着 GPT-3.5-Turbo 和 GPT-4 的 API 发布,作家在相同的六个数据集上验证了具有 PHP 的 Complex CoT 的机能。作家对这两个模型都应用贪心解码(即温度 = 0)和 Complex CoT 作为提醒。
如表 7 所示,提出的 PHP 增强了机能,在 GSM8K 上提高了 2.3%,在 AQuA 上提高了 3.2%。然而,与 text-davinci-003 相比,GPT-3.5-Turbo 表现出对提醒的依附能力降低。作家提供了两个例子来说明这一点:a)在提醒缺失的情况下,GPT-3.5-Turbo 无法回答问题,并回复类似于 “由于谜底提醒缺失,我无法回答此问题。请提供谜底提醒以继续” 的声明。相比之下,text-davinci-003 在回答问题之前会自主生成并填充缺失的谜底提醒;b)当提供超过十个提醒时,GPT-3.5-Turbo 可能会回复 “由于给出了多个谜底提醒,我无法确定精确的谜底。请为问题提供一个谜底提醒。”
在部署 GPT-4 模型后,作家能够在 SVAMP、GSM8K、AQuA 和 MATH 基准测试上实现新的 SOTA 机能。作家提出的 PHP 方法不断改善了 GPT-4 的机能。此外,与 GPT-3.5-Turbo 模型相比,作家观察到 GPT-4 所需的交互次数减少了,这与 “当模型更加强大时,交互次数会减少” 的发现相一致。
总结
本文介绍了 PHP 与 LLMs 交互的新方法,具有多个优点:1)PHP 在数学推理任务上实现了显著的机能提升,在多个推理基准测试上领先于最先进的结果;2)应用更强大的模型和提醒,PHP 可以更好地使 LLMs 受益;3)PHP 可以与 CoT 和 SC 轻松结合,进一步提高机能。
为了更好地增强 PHP 方法,未来的研究可以集中在改进问题阶段的手工提醒和谜底部分的提醒句子的设计上。此外,除了将谜底当作 hint,还可以确定和提取有助于 LLMs 重新考虑问题的新 hint。