模拟人类推理过程,华为诺亚提出 Progressive-Hint Prompting (PHP) 引导大模型渐近正确答案。
近期,华为联和港中文发表论文《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。
摘:https://mp.weixin.qq.com/s/y8u40qIXm3oWZkvgKOV17Q