Plan-and-Solve Prompting:Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Model
本文是论文Plan-and-Solve Prompting:Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Model的阅读笔记和个人理解。
首先介绍一些知识。
COT 三个缺陷:计算错误(7%)、遗漏步骤错误(12%)和语义误解错误(27%)
Plan-and-Solve Prompting:设计一个计划,将整个任务划分为更小的子任务,然后根据计划来划分子任务,优于 Zero-Shot-COT 的一种 prompt
Zero shot prompt:Let’s think step by step
Plan-and-Solve Prompt:Let’s first understand the problem and devise a plan to solve the problem. Then, let’s carry out the plan and solve the problem step by step
值得注意的是,论文实验证明:
①当提示中包含更详细的指令来指导 llm 时,llm 能够生成高质量的推理文本
②在问题句子中添加特定描述的策略是一种提高复杂推理 zero shot 性能的新方法
Self-Consistency(自一致性):通过生成 N 个推理结果并通过多数投票确定最终答案来减少 LLM 输出的随机性(思路有点像,但是不同,这篇文章是通过不同的 LLM,取长补短,获得最优的输出,Self-Consistency 是通过一个 LLM 的多次输出获取一个稳定的最终输出)
摘要
大型语言模型(LLM)最近被证明在各种 NLP 任务中提供了令人印象深刻的性能。为了解决多步骤推理任务,少镜头思维链(CoT)提示包括一些手工制作的逐步推理演示,使 LLM 能够显式生成推理步骤,并提高其推理任务的准确性。为了消除手动操作,Zero-shot CoT 将目标问题状态与 “让我们一步一步地思考” 连接起来,作为 LLM 的输入提示。尽管 Zero-shotCoT 取得了成功,但它仍然存在三个缺陷:计算错误、遗漏步骤错误和语义误解错误。为了弥补遗漏的步骤错误,我们提出了计划和解决(PS)提示。它由两个部分组成:首先,设计一个计划,将整个任务划分为更小的子任务,然后根据计划来划分子任务。为了解决计算错误并提高生成推理步骤的质量,我们将 PS 提示扩展为更详细的指令,并推导出 PS + 提示。我们在三个推理问题的十个数据集上评估了我们提出的提示策略。在 GPT-3 上的实验结果表明,我们提出的零样本提示在所有数据集上的表现都大大优于零热 CoT,与思想提示的零热程序相当或超过零热程序,并且在数学推理问题上具有与 8 次 CoT 提示相当的表现。代码可在https://github.com/AGIEdgerunners/Plan and Solve Promoting找到 。
Plan-and-Solve Prompting
概述。我们引入了 PS 提示,一种新的零射击 CoT 提示方法,它使 llm 能够明确地设计一个解决给定问题的计划,并在预测输入问题的最终答案之前生成中间推理过程。与之前提示中包含的少镜头 CoT 方法不同,零镜头 PS 提示方法不需要演示示例,它的提示涵盖了问题本身和一个简单的触发句。与零镜头类似,零射击 PS 提示包括两个步骤。在步骤 1 中,提示符首先使用建议的提示模板进行推理,以生成推理过程和问题的答案。在步骤 2 中,它通过使用答案提取提示来提取要进行评估的答案,例如 “因此,答案(阿拉伯语数字)是”。
2.1 步骤 1:提示推理生成
为了解决输入问题,同时避免由错误的计算和缺少推理步骤而导致的错误,这一步的目的是构建满足以下两个标准的模板:
・模板应该引出 llm 来确定子任务并完成子任务。
・模板应该指导 llm 更多地关注计算和中间结果,并确保它们尽可能正确地执行它们。
为了满足第一个标准,我们遵循 Zero-shotCoT,首先将输入数据示例转换为一个具有简单模板 “Q:[X]” 的提示符。 A: [T]". 具体来说,输入槽 [X] 包含输入问题语句,并在输入槽 [T] 中指定了一个手工制作的指令来触发 llm 来生成一个推理过程,其中包括一个计划和完成计划的步骤。在零镜头 - cot 中,输入槽中的指令包括触发指令 “让我们一步一步地思考”。我们的零镜头 PS 提示方法反而包括了 “设计计划” 和 “执行计划” 的指令,如图 2 (b). 所示因此,提示符将是 “Q:[X]”。 A: 让我们先了解这个问题,并设计一个计划来解决这个问题。然后,让我们来实施计划,逐步解决问题。”
然后,我们将上述提示符传递给 LLM,LLM 随后输出一个推理过程。根据零射击 cot,我们的方法默认使用贪婪解码策略(1 输出链)来生成输出。
为了满足第二个标准,我们对基于平面的触发句,扩展了更详细的指令。具体来说,在触发语句中添加了 “注意计算”,以要求 llm 尽可能准确地执行计算。为了减少由于缺少必要的推理步骤而导致的错误,我们包括 “提取相关变量及其相应的数字” 来明确地指示 llm 不要忽略输入问题语句中的相关信息。我们假设,如果 llm 遗漏了相关的和重要的变量,那么它就更有可能错过相关的推理步骤。对生成的变量内容和缺失的推理步长误差的相关性分析,如图 5 所示,实证支持了这一假设(相关性值小于 0)。
此外,我们还在提示符中添加了 “计算中间结果”,以增强 LLM 生成相关和重要的推理步骤的能力。具体的例子如图 3 (b). 所示在步骤 1 的最后,LLM 生成包含答案的推理文本。例如,图 3 (b) 中生成的推理文本包括 “Grace 和 Alex = 125 + 498 = 623 磅的组合重量”。在触发器句子中添加特定描述的策略是一种提高复杂推理零射击性能的新方法。
2.2 步骤 2:提示提取答案
与 Zero-shot-CoT 类似,我们在步骤 2 中设计了另一个提示符,让 LLM 从步骤 1 中生成的推理文本中提取最终的数值答案。这个提示包括附加在第一个提示后面的答案提取指令,后面是 LLM 生成的推理文本。这样,LLM 将以所需的形式返回最终答案。
基于图 3 (b) 中的例子,步骤 2 中使用的提示将包括 “Q:Grace 重 125 磅・・・变量: Grace: 125 磅・・・回答: Grace 和 Alex = 的总重 125 + 498 = 623 磅。” 因此,答案(阿拉伯语数字)是 “”。对于这个例子,LLM 返回的最终答案是 “623”。