Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models
TL;DR 精炼摘要
本文提出了一种新型的计划-解决式提示(PS提示),以改进大型语言模型(LLMs)在零样本思维链推理中的表现。该方法通过将任务分解为更小的子任务来消除步骤缺失错误,并通过详细指令扩展提高推理质量。实验显示,PS提示在多个数据集上明显优于传统方法。
摘要
Large language models (LLMs) have recently been shown to deliver impressive performance in various NLP tasks. To tackle multi-step reasoning tasks, few-shot chain-of-thought (CoT) prompting includes a few manually crafted step-by-step reasoning demonstrations which enable LLMs to explicitly generate reasoning steps and improve their reasoning task accuracy. To eliminate the manual effort, Zero-shot-CoT concatenates the target problem statement with "Let's think step by step" as an input prompt to LLMs. Despite the success of Zero-shot-CoT, it still suffers from three pitfalls: calculation errors, missing-step errors, and semantic misunderstanding errors. To address the missing-step errors, we propose Plan-and-Solve (PS) Prompting. It consists of two components: first, devising a plan to divide the entire task into smaller subtasks, and then carrying out the subtasks according to the plan. To address the calculation errors and improve the quality of generated reasoning steps, we extend PS prompting with more detailed instructions and derive PS+ prompting. We evaluate our proposed prompting strategy on ten datasets across three reasoning problems. The experimental results over GPT-3 show that our proposed zero-shot prompting consistently outperforms Zero-shot-CoT across all datasets by a large margin, is comparable to or exceeds Zero-shot-Program-of-Thought Prompting, and has comparable performance with 8-shot CoT prompting on the math reasoning problem. The code can be found at https://github.com/AGI-Edgerunners/Plan-and-Solve-Prompting.
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models (计划-解决式提示:通过大型语言模型改进零样本思维链推理)
1.2. 作者
Lei Wang, Wanyu Xu, Yihuai Lan, Zhiqiang Hu, Yunshi Lan, Roy Ka-Wei Lee, Ee-Peng Lim
1.3. 隶属机构
新加坡管理大学 (Singapore Management University), 西南交通大学 (Southwest Jiaotong University), 新加坡科技设计大学 (Singapore University of Technology and Design), 华东师范大学 (East China Normal University)
1.4. 发表时间
2023-05-06T16:34:37.000Z (UTC)
1.5. 摘要
大型语言模型 (LLMs) 在各种自然语言处理 (NLP) 任务中展现出卓越性能。为解决多步推理任务,少样本思维链 (few-shot Chain-of-Thought, CoT) 提示引入了一些人工制作的逐步推理演示,使 LLMs 能够显式生成推理步骤并提高推理任务准确性。为了消除人工工作,零样本思维链 (Zero-shot-CoT) 将目标问题陈述与“让我们一步一步思考” (Let's think step by step) 拼接作为 LLMs 的输入提示。尽管 Zero-shot-CoT 取得成功,但它仍存在三个缺陷:计算错误、步骤缺失错误和语义误解错误。为解决步骤缺失错误,本文提出了计划-解决式提示 (Plan-and-Solve, PS Prompting)。它包含两个组成部分:首先,制定一个计划将整个任务划分为更小的子任务;然后,根据计划执行这些子任务。为解决计算错误并提高生成推理步骤的质量,本文通过更详细的指令扩展了 PS 提示,并派生出 PS+ 提示 (PS+ Prompting)。作者在三大类推理问题上的十个数据集上评估了所提出的提示策略。对 GPT-3 的实验结果表明,所提出的零样本提示在所有数据集上都大幅优于 Zero-shot-CoT,与零样本思维程序提示 (Zero-shot-Program-of-Thought Prompting) 相当或超越,并且在数学推理问题上与 8 样本 CoT 提示表现相当。
1.6. 原文链接
https://arxiv.org/abs/2305.04091v3 (预印本,v3 版本) PDF 链接: https://arxiv.org/pdf/2305.04091v3.pdf
2. 整体概括
2.1. 研究背景与动机
大型语言模型 (Large Language Models, LLMs) 在自然语言处理领域取得了显著进展,但在处理需要多步复杂推理的任务时,例如数学推理、常识推理和符号推理,仍然面临挑战。
现有挑战:
- 少样本思维链 (Few-shot Chain-of-Thought, CoT) 提示通过提供人工编写的逐步推理示例来引导 LLMs 生成中间推理步骤,从而提高性能。然而,这需要大量的人工努力来创建这些高质量的示例。
- 零样本思维链 (Zero-shot-CoT) 提示通过简单地在问题后附加“让我们一步一步思考” (
Let's think step by step) 来消除人工示例的需求,并在许多任务上取得了令人惊讶的成功。 - Zero-shot-CoT 的局限性: 尽管 Zero-shot-CoT 取得了成功,但它在实际应用中仍存在三个主要缺陷,如对 GSM8K 数据集的错误分析所示 (原文 Figure 1):
- 计算错误 (Calculation errors): 占 ,指在计算过程中出现的错误导致最终答案不正确。
- 步骤缺失错误 (Missing-step errors): 占 ,指在推理过程中遗漏了关键的中间步骤,尤其是在涉及多步推理时。
- 语义误解错误 (Semantic misunderstanding errors): 占 ,指 LLMs 对问题语义理解不足或其他推理步骤连贯性问题。
论文的切入点: 为了解决 Zero-shot-CoT 中的步骤缺失错误,并进一步改进计算错误和整体推理质量,本文提出了一种新的零样本提示策略,旨在更明确地引导 LLMs 进行结构化推理。
2.2. 核心贡献/主要发现
本文的主要贡献体现在提出了一种新的零样本提示策略及其改进版本,并对其进行了全面的评估:
- 提出计划-解决式提示 (Plan-and-Solve, PS Prompting): 针对 Zero-shot-CoT 中步骤缺失错误的问题,提出了 PS 提示。它指导 LLMs 首先制定一个计划 (devising a plan),将整个复杂任务分解为更小的子任务,然后执行该计划 (carrying out the subtasks),逐步解决问题。
- 提出 PS+ 提示 (PS+ Prompting): 为进一步解决计算错误并提高生成推理步骤的质量,对 PS 提示进行了扩展,增加了更详细的指令,例如“提取相关变量及其对应的数值” (
extract relevant variables and their corresponding numerals) 和“计算中间结果(注意计算和常识)” (calculate intermediate results (pay attention to calculation and commonsense))。 - 全面的实验评估: 在包括六个数学推理数据集 (AQuA, GSM8K, MultiArith, AddSub, SingleEq, SVAMP)、两个常识推理数据集 (CommonsenseQA, StrategyQA) 和两个符号推理数据集 (Last Letter, Coin Flip) 在内的十个基准数据集上,使用 GPT-3 (text-davinci-003) 对提出的方法进行了评估。
- 显著的实验结果:
- PS+ 提示在所有数据集上都大幅优于 (consistently outperforms by a large margin) Zero-shot-CoT。
- PS+ 提示与零样本思维程序提示 (Zero-shot-Program-of-Thought, PoT) 相比,性能相当或更优。
- 在数学推理问题上,PS+ 提示在不使用任何人工示例的情况下,表现可与 8 样本 CoT 提示 (8-shot CoT prompting) 匹敌,甚至在某些数据集上超越了少样本人工 CoT 提示 (Few-shot manual-CoT prompting)。
- 高斯方差(Self-Consistency, SC)的有效性: 结合 SC 策略后,PS+ 提示的性能得到进一步提升,并持续优于结合 SC 的 Zero-shot-CoT。
- 错误分析: 定性分析表明,PS+ 提示有效减少了计算错误和步骤缺失错误,同时保持了与 Zero-shot-CoT 相当的语义理解错误率。生成的推理中包含变量定义和计划与计算错误及步骤缺失错误呈负相关。
3. 预备知识与相关工作
3.1. 基础概念
为了更好地理解本文,初学者需要掌握以下几个关键概念:
- 大型语言模型 (Large Language Models, LLMs): 指具有海量参数(通常数十亿甚至数千亿)、在大规模文本数据上进行预训练的深度学习模型。它们能够理解和生成人类语言,并在各种 NLP 任务中表现出色。本文主要使用的 GPT-3 (Generative Pre-trained Transformer 3) 就是一个典型的 LLM。
- 预训练语言模型 (Pre-trained Language Models, PTMs): 指在通用文本语料库上预先训练过的语言模型,如 BERT、RoBERTa 等。这些模型学习了丰富的语言知识,可以通过微调 (fine-tuning) 适应特定的下游任务。与 LLMs 不同,PTMs 通常参数量较小,且通常需要访问模型参数进行微调。
- 提示 (Prompting): 是一种与 LLMs 交互的方式,通过精心设计的输入文本(即提示)来引导模型完成特定任务,而无需修改模型参数。
- 少样本学习 (Few-shot Learning): 在 LLMs 中,指通过在提示中包含少量示例(通常是输入-输出对)来指导模型完成新任务,这些示例有助于模型理解任务的模式。
- 零样本学习 (Zero-shot Learning): 在 LLMs 中,指在没有提供任何示例的情况下,仅通过任务描述或指令来引导模型完成新任务。模型需要利用其在预训练阶段学到的泛化能力来解决问题。
- 思维链提示 (Chain-of-Thought, CoT Prompting): 由 Wei et al. (2022b) 提出,是一种少样本提示方法。它通过在提示中包含逐步的推理过程示例,鼓励 LLMs 在给出最终答案之前,显式地生成一系列中间推理步骤。这些中间步骤被称为“思维链”,能够显著提高 LLMs 在复杂推理任务上的性能。
- 示例: 问题:如果小明有3个苹果,小红有2个苹果,他们一共有多少个苹果? 思维链示例:小明有3个苹果。小红有2个苹果。所以他们一共有 3 + 2 = 5 个苹果。答案是 5。
- 零样本思维链 (Zero-shot-CoT): 由 Kojima et al. (2022) 提出,是对 CoT 提示的简化版本。它消除了手动创建示例的需求,只需在目标问题陈述后附加一个简单的触发短语,如“让我们一步一步思考” (
Let's think step by step),就能促使 LLMs 生成推理步骤。这种方法在许多复杂推理任务中表现出与少样本 CoT 相似的性能。
3.2. 前人工作
本文的工作是建立在 LLMs 强大推理能力的基础之上,并受到以下关键前人研究的启发:
- LLMs 的涌现能力 (Emergent Abilities of LLMs): 诸如 GPT-3 (Brown et al., 2020) 和 PaLM (Chowdhery et al., 2022) 等大规模 LLMs 在参数规模达到一定阈值后,展现出了之前小型模型不具备的“涌现能力” (emergent abilities),例如在少样本甚至零样本情境下的复杂推理能力。
- 思维链提示 (Chain-of-Thought Prompting, CoT) (Wei et al., 2022b): 这是多步推理任务中的一个里程碑式工作。通过在提示中加入人工构造的推理示例,LLMs 被引导生成中间推理步骤,从而显著提高了在算术、常识和符号推理等任务上的表现。这证明了明确引导模型进行逐步思考的重要性。
- 零样本思维链 (Zero-shot-CoT) (Kojima et al., 2022): 为了减少 CoT 提示中人工构造示例的工作量,Kojima et al. 发现仅仅在问题后附加
Let's think step by step这样的简单提示,就能在没有提供任何示例的情况下,促使 LLMs 生成思维链并取得接近少样本 CoT 的性能。这是本文工作的直接起点。 - 思维程序提示 (Program-of-Thought, PoT) (Chen et al., 2022): 该方法利用经过代码预训练的 LLMs(如 OpenAI Codex)来生成可执行的 Python 程序作为推理过程。通过执行这些程序来获得最终答案,旨在将计算与推理分离,以提高数值推理任务的准确性。本文将 PS/PS+ 与 Zero-shot-PoT 进行了比较。
- 自洽性 (Self-consistency, SC) (Wang et al., 2022b): SC 是一种集成方法,通过从 LLM 中生成多个不同的推理路径(即思维链),然后通过多数投票 (majority voting) 的方式选择最终答案。这有助于减少单一推理路径中的随机错误,从而提高整体性能。本文在实验中也评估了 PS+ 提示结合 SC 的效果。
- 自动思维链 (Automatic Chain-of-Thought, Auto-CoT) (Zhang et al., 2022): Auto-CoT 旨在自动化 CoT 提示中示例的选择和推理链的生成。它通过聚类选择代表性示例,并使用 Zero-shot-CoT 为这些示例生成推理链,从而构建自动化的少样本 CoT 提示。本文也将 PS+ 提示与 Auto-CoT 进行了比较。
- 问题分解和规划 (Problem Decomposition and Planning): 许多近期工作也探索了通过问题分解 (Zhou et al., 2022; Khot et al., 2022; Dua et al., 2022; Press et al., 2022) 和规划 (Yao et al., 2022; Huang et al., 2022; Wang et al., 2023; Liu et al., 2023; Sun et al., 2023; Yao et al., 2023) 来提高 LLMs 的推理能力。本文提出的计划-解决式提示正是在这一方向上的零样本探索。
3.3. 技术演进
LLMs 领域的技术演进大致可以分为以下几个阶段,本文的工作正处于零样本提示策略的创新阶段:
- 预训练语言模型 (PTMs) 时代: 以 BERT (Devlin et al., 2019) 和 RoBERTa (Liu et al., 2019) 为代表,通过在大规模无标签文本数据上进行预训练,学习通用的语言表示。下游任务通常需要对这些模型进行微调 (fine-tuning)。
- 大型语言模型 (LLMs) 与少样本学习: 以 GPT-3 (Brown et al., 2020) 为代表,模型规模急剧扩大,展现出强大的少样本学习能力。通过在提示中提供少量示例,模型无需微调即可在各种任务上表现良好。
- 思维链提示 (CoT) 的引入: 发现 LLMs 在多步推理任务上的局限性后,CoT 提示 (Wei et al., 2022b) 通过明确的逐步推理示例,解锁了 LLMs 的复杂推理能力。
- 零样本思维链 (Zero-shot-CoT) 的突破: Kojima et al. (2022) 证明,仅通过简单的“让我们一步一步思考” (
Let's think step by step) 触发短语,LLMs 就能在没有示例的情况下生成 CoT,进一步降低了使用门槛。 - CoT 提示的优化与扩展: 随后的工作围绕 CoT 进行了多方面的改进,包括提示格式(如 PoT)、示例选择(如 Auto-CoT)、集成方法(如 Self-consistency)、问题分解和规划。本文的 Plan-and-Solve 提示 正是这一阶段的成果,它着眼于零样本设置下,通过引入明确的“计划-解决”框架来克服 Zero-shot-CoT 的具体缺陷。
3.4. 差异化分析
本文提出的 Plan-and-Solve (PS) 提示 和 PS+ 提示 在零样本推理的背景下,与现有方法相比具有显著的差异和创新点:
-
与 Zero-shot-CoT 的区别:
- Zero-shot-CoT:仅仅使用
Let's think step by step这一通用指令,鼓励模型进行逐步推理,但缺乏对推理过程的具体引导。因此,它容易出现步骤缺失、计算错误和语义误解。 - PS 提示:引入了显式的“计划-解决”框架。它首先要求模型制定一个计划 (devise a plan) 来分解任务,然后按照计划执行 (carry out the plan)。这种结构化的引导直接针对并减少了步骤缺失错误。
- PS+ 提示:在 PS 的基础上,增加了更详细的指令,如提取变量 (extract variables) 和关注中间计算 (pay attention to calculation)。这些具体的指示进一步提高了生成推理步骤的质量和准确性,从而有效减少了计算错误。
- Zero-shot-CoT:仅仅使用
-
与 Zero-shot-Program-of-Thought (PoT) 的区别:
- PoT:通过生成可执行的程序(如 Python 代码)来解决问题,将推理和计算分离,计算由解释器执行。这在数值任务上表现良好。
- PS/PS+ 提示:仍然侧重于生成文本形式的推理步骤,并通过更精细的文本指令来引导模型进行准确的计算和全面的推理。PS/PS+ 的优势在于其通用性,它不依赖于代码解释器,可以应用于更广泛的推理问题类型,包括常识推理和符号推理,而 PoT 在这些非数值任务上并不适用。
-
与 Few-shot CoT (Manual-CoT/Auto-CoT) 的区别:
-
Few-shot CoT:需要提供少量人工或自动生成的推理示例作为演示。这虽然能提高性能,但仍涉及示例选择或生成的人工/计算成本。
-
PS/PS+ 提示:是零样本 (zero-shot) 方法,不需要任何演示示例。尽管如此,实验结果显示 PS+ 提示在数学推理任务上能达到与 8 样本 CoT 提示相当甚至超越 Few-shot CoT 的性能。这表明通过精细的零样本提示工程,可以在不牺牲性能的前提下,大幅降低对演示示例的依赖。
总结来说,本文的创新点在于,在零样本设置下,通过引入一个明确的“计划-解决”两阶段框架,并辅以详细的指令,来更有效地引导 LLMs 进行复杂推理,从而在不增加人工标注成本的情况下,显著提升了推理的准确性和鲁棒性,特别是解决了 Zero-shot-CoT 中常见的步骤缺失和计算错误。
-
4. 方法论
4.1. 方法原理
本文提出的 Plan-and-Solve (PS) 提示 策略旨在改进大型语言模型 (LLMs) 在零样本思维链 (Zero-shot Chain-of-Thought, CoT) 推理中存在的步骤缺失和计算错误。其核心思想是,通过引导 LLM 明确地先“计划”后“解决”,来模仿人类解决复杂问题的过程。
方法的核心思想:
-
规划 (Planning): 在解决一个复杂的推理任务之前,首先将其分解为一系列更小、更易于管理的子任务。这个过程就是制定一个“计划”。
-
解决 (Solving): 严格按照制定好的计划,一步一步地执行每个子任务,生成中间推理步骤和结果,最终得出问题的答案。
这种策略通过提供更详细、结构化的指令,促使 LLM 更好地组织其思维过程,从而避免跳过关键步骤或进行不准确的计算。
4.2. 核心方法详解 (逐层深入)
本文提出的 PS 提示和其增强版本 PS+ 提示,都遵循一个两步流程,类似于 Zero-shot-CoT:
- 第一步:推理生成 (Reasoning Generation):构造特定的提示模板,引导 LLM 生成包含计划、详细推理步骤和最终答案的文本。
- 第二步:答案提取 (Answer Extraction):使用另一个简洁的提示,从第一步生成的推理文本中提取最终的数值答案。
4.2.1. 第一步:推理生成 (Prompting for Reasoning Generation)
这一步的目标是构建提示模板,以满足两个核心标准:
- 模板应促使 LLM 确定子任务并完成这些子任务(解决步骤缺失错误)。
- 模板应引导 LLM 更关注计算和中间结果,确保其尽可能正确执行(解决计算错误)。
1. Plan-and-Solve (PS) Prompting (解决步骤缺失错误)
PS 提示是 Zero-shot-CoT 的直接扩展,它将 Zero-shot-CoT 中通用的触发指令 Let's think step by step 替换为更具体的计划-解决指令。
-
PS 提示模板:
Q: [X]. A: 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.其中,[X]是输入的原始问题陈述。 -
工作机制:
Let's first understand the problem and devise a plan to solve the problem.:这句话指示 LLM 首先理解问题,然后制定一个解决问题的计划。这鼓励模型进行高级别的思考和任务分解。Then, let's carry out the plan and solve the problem step by step.:这句话指示 LLM 按照前面制定的计划,逐步执行子任务并生成详细的推理步骤。
-
示例 (原文 Figure 2(b)): 当输入问题为
Q: Grace weighs 125 pounds. Her father weighs 4 times as much as Grace. What is their combined weight?(Grace体重125磅。她父亲的体重是Grace的4倍。他们总共多重?) 时,PS 提示会引导 GPT-3 生成类似以下结构的输出: 通过这种方式,LLM 被明确地引导先规划出“计算父亲体重”和“计算总体重”这两个子任务,然后逐一执行。
2. PS+ Prompting (解决计算错误并提高推理质量)
为了进一步解决计算错误并提高生成推理步骤的质量,PS+ 提示在 PS 提示的计划-解决框架中添加了更多详细的指令。
-
PS+ 提示模板:
Q: [X]. A: Let's first understand the problem, extract relevant variables and their corresponding numerals, and make a complete plan. Then, let's carry out the plan, calculate intermediate variables (pay attention to correct numerical calculation and commonsense), solve the problem step by step, and show the answer. -
新增指令及其目的:
extract relevant variables and their corresponding numerals(提取相关变量及其对应的数值):明确指示 LLM 在理解问题时,首先识别并列出所有相关的变量及其数值信息。作者假设,如果 LLM 遗漏了重要的变量,它更可能遗漏相关的推理步骤。实验中的相关性分析(原文 Figure 5)也支持了这一假设。calculate intermediate variables (pay attention to correct numerical calculation and commonsense)(计算中间变量,注意正确的数值计算和常识):强调在执行计划时,LLM 需要特别关注中间结果的计算准确性,并结合常识进行判断。这直接旨在减少计算错误。make a complete plan(制定一个完整的计划) 和carry out the plan, ... solve the problem step by step, and show the answer(执行计划,...逐步解决问题,并显示答案):这些是 PS 提示的核心,但在 PS+ 中进一步强调了“完整性”和“显示答案”。
-
示例 (原文 Figure 3(b)): 当输入问题为
Q: Grace weighs 125 pounds. Her father weighs 4 times as much as Grace. Her brother weighs 2 pounds less than 4 times Grace's weight. What is their combined weight?(Grace体重125磅。她父亲的体重是Grace的4倍。她哥哥的体重比Grace体重的4倍少2磅。他们总共多重?) 时,PS+ 提示会引导 GPT-3 生成类似以下结构的输出: 与 PS 相比,PS+ 明确要求提取变量,并更详细地指导计算,这在多步计算中尤其重要。
4.2.2. 第二步:答案提取 (Prompting for Answer Extraction)
与 Zero-shot-CoT 类似,在 LLM 生成了包含推理过程和答案的文本后,需要一个单独的提示来提取最终的数值答案,以便进行自动化评估。
-
答案提取提示: 这个提示将第一步生成的完整推理文本作为输入的一部分,然后追加一个明确的指令来提取答案。
- 示例:
如果第一步生成的文本是:
Combined weight of Grace and Alex = 125 + 498 = 623 pounds. Therefore, the answer (arabic numerals) is那么 LLM 被预期返回最终答案623。
- 示例:
如果第一步生成的文本是:
-
工作机制: 这种两步法可以确保 LLM 在生成推理时不受答案格式的限制,同时又能量化地评估其最终性能。通过
(arabic numerals)(阿拉伯数字) 这样的指令,可以确保答案以标准化的数字形式返回。
4.2.3. 解码策略
本文的方法默认使用贪婪解码策略 (greedy decoding),即在生成每个词元时都选择概率最高的词元,从而产生一个输出链。在结合自洽性 (Self-consistency) 进行实验时,则会设置更高的温度 (temperature) 和生成多个输出链,并通过多数投票来确定最终答案。
整个方法论强调了通过精细的提示工程 (prompt engineering),在零样本设置下,最大限度地激发 LLMs 的内在推理能力,使其能够像人类一样,先规划后执行,从而提高复杂推理任务的准确性。
5. 实验设置
5.1. 数据集
本文在十个基准数据集上评估了提出的方法,这些数据集涵盖了三种主要的推理问题类型:算术推理、常识推理和符号推理。
5.1.1. 算术推理 (Arithmetic Reasoning)
这类数据集要求模型理解数学概念、进行计算和多步推理。
- GSM8K (Cobbe et al., 2021): 高质量的、语言多样的学龄数学应用题数据集,由人类问题作者创建。
- 样本数:1319
- 平均词数:46.9
- 答案类型:数字 (Number)
- SVAMP (Patel et al., 2021): 针对四年级学生的单未知数算术应用题基准,通过对现有数据集的问题进行简单修改得到。
- 样本数:1000
- 平均词数:31.8
- 答案类型:数字 (Number)
- MultiArith (Roy and Roth, 2016): 包含需要多步推理和操作的数学应用题数据集。
- 样本数:600
- 平均词数:31.8
- 答案类型:数字 (Number)
- AddSub (Hosseini et al., 2014): 包含加法和减法算术应用题的数据集。
- 样本数:395
- 平均词数:31.5
- 答案类型:数字 (Number)
- AQuA (Ling et al., 2017): 包含代数应用题的数据集,附带自然语言的推理过程。
- 样本数:254
- 平均词数:51.9
- 答案类型:选项 (Option)
- SingleEq (Koncel-Kedziorski et al., 2015): 包含单方程学龄代数应用题的数据集,涉及非负有理数上的多重数学操作和一个变量。
- 样本数:508
- 平均词数:27.4
- 答案类型:数字 (Number)
5.1.2. 常识推理 (Commonsense Reasoning)
这类数据集要求模型基于常识知识进行判断。
- CSQA (CommonsenseQA) (Talmor et al., 2019): 多项选择题基准数据集,需要不同类型的常识知识才能获得正确答案。
- 样本数:1221
- 平均词数:27.8
- 答案类型:选项 (Option)
- StrategyQA (Geva et al., 2021): 基准数据集,问题需要多步推理,但推理步骤未给出,需要模型推断。
- 样本数:2290
- 平均词数:9.6
- 答案类型:是/否 (Yes / No)
5.1.3. 符号推理 (Symbolic Reasoning)
这类数据集要求模型通过应用形式逻辑规则来操作符号。
- Last Letter Concatenation (Wei et al., 2022b): 问题要求将名字中每个单词的最后一个字母连接起来(例如,“James Brown”的最后一个字母是“sn”)。
- 样本数:500
- 平均词数:15.0
- 答案类型:字符串 (String)
- Coin Flip (Wei et al., 2022b): 问题关于在给定步骤后硬币是否仍正面朝上。
-
样本数:500
-
平均词数:37.0
-
答案类型:是/否 (Yes / No)
以下是原文 Table 1 的数据集统计详情: 以下是原文 Table 1 的结果:
-
| Dataset | Domain | # Samples | Ave. words | Answer |
|---|---|---|---|---|
| MultiArith | Math | 600 | 31.8 | Number |
| AddSub | Math | 395 | 31.5 | Number |
| GSM8K | Math | 1319 | 46.9 | Number |
| AQUA | Math | 254 | 51.9 | Option |
| SingleEq | Math | 508 | 27.4 | Number |
| SVAMP | Math | 1000 | 31.8 | Number |
| CSQA | CS | 1221 | 27.8 | Option |
| StrategyQA | CS | 2290 | 9.6 | Yes / No |
| Last Letters | Sym. | 500 | 15.0 | String |
| Coin Flip | Sym. | 500 | 37.0 | Yes / No |
5.2. 评估指标
本文采用准确率 (Accuracy) 作为所有方法的评估指标。
-
概念定义 (Conceptual Definition): 准确率衡量了模型在给定任务中正确预测的样本比例。它是一个非常直观和常用的分类任务评估指标,特别适用于类别分布相对均衡的场景。在推理任务中,它表示模型正确给出最终答案(或选择正确选项)的问题数量占总问题数量的比例。
-
数学公式 (Mathematical Formula):
-
符号解释 (Symbol Explanation):
Number of Correct Predictions: 指模型给出正确答案的样本数量。Total Number of Predictions: 指所有进行预测的样本总数。
5.3. 对比基线
本文将提出的零样本 PS 和 PS+ 提示方法与三类基线进行了比较:
-
1. 零样本基线 (Zero-shot Baselines):
- Zero-shot-CoT (Kojima et al., 2022): 这是本文直接改进的对象。它通过在提示后附加
Let's think step by step来触发 LLM 生成推理步骤,无需任何演示示例。 - Zero-shot-PoT (Program-of-Thought) (Chen et al., 2022): 该方法使用 LLM(主要是 OpenAI Codex)生成 Python 程序作为推理过程,然后通过 Python 解释器执行程序来得出答案。它旨在将计算与推理分离。
- Zero-shot-CoT (Kojima et al., 2022): 这是本文直接改进的对象。它通过在提示后附加
-
2. 带人工演示的少样本基线 (Few-shot with manual demonstrations):
- Manual-CoT (Wei et al., 2022b): 该方法为 LLM 提供了一些人工精心制作的示例,这些示例包含问题、详细的逐步推理过程和答案。本文在实验中通常使用 8 个这样的演示示例(在某些数据集上数量不同)。
-
3. 带自动演示的少样本基线 (Few-shot with automatic demonstrations):
- Auto-CoT (Zhang et al., 2022): 该方法旨在自动化 Few-shot CoT 的示例选择过程。它首先通过聚类从数据集中自动选择 个具有多样性的示例,然后使用 Zero-shot-CoT 为这些选定的示例生成推理链,最终构建成 CoT 演示提示。
5.4. 实现细节
- 骨干语言模型 (Backbone Language Model): 遵循 Auto-CoT (Zhang et al., 2022),本文使用公开的 GPT-3 (Brown et al., 2020) (175B) 作为骨干语言模型,特别是使用了
text-davinci-003引擎。选择text-davinci-003是因为它被认为是text-davinci-002的升级版本,能够生成更高质量的文本,适应更复杂的指令,并在长文本生成方面表现更好。 - 解码策略 (Decoding Strategy): 在所有实验中,温度 (temperature) 参数设置为 0 (argmax 采样),以采用贪婪解码策略 (greedy decoding),即每次选择概率最高的词元,生成一个确定的输出链。
- 少样本基线演示示例数: 对于 Manual-CoT 和 Auto-CoT 这两个少样本基线,使用的演示示例数量根据原始论文的建议有所不同:
- MultiArith, GSM8K, AddSub, SingleEq, SVAMP:8 个示例。
- AQuA, Last Letters:4 个示例。
- CSQA:7 个示例。
- StrategyQA:6 个示例。
- 自洽性 (Self-Consistency, SC) 设置: 在评估结合自洽性 (SC) 的方法时,
temperature设置为 0.7,并生成 个推理结果,最终通过多数投票 (majority voting) 确定答案。
6. 实验结果与分析
6.1. 核心结果分析
本文在三大类推理问题(算术推理、常识推理和符号推理)的十个数据集上,对提出的 PS 和 PS+ 提示策略与多种零样本及少样本基线进行了比较。
6.1.1. 算术推理 (Arithmetic Reasoning)
以下是原文 Table 2 的结果:
| Setting | Method (text-davinci-003) | MultiArith | GSM8K | AddSub | AQuA | SingleEq | SVAMP | Average |
| Zero-Shot | CoT | 83.8 | 56.4 | 85.3 | 38.9 | 88.1 | 69.9 | 70.4 |
| PoT | 92.2 | 57.0 | 85.1 | 43.9 | 91.7 | 70.8 | 73.5 | |
| PS (ours) | 87.2 | 58.2 | 88.1 | 42.5 | 89.2 | 72.0 | 72.9 | |
| PS+ (ours) | 91.8 | 59.3 | 92.2 | 46.0 | 94.7 | 75.7 | 76.7 | |
| Few-Shot | Manual-CoT | 93.6 | 58.4 | 91.6 | 48.4 | 93.5 | 80.3 | 77.6 |
| Auto-CoT | 95.5 | 57.1 | 90.8 | 41.7 | 92.1 | 78.1 | 75.9 |
- 零样本设置下:
- PS+ 提示在所有算术推理数据集上都显著优于 (consistently outperforms by a large margin) Zero-shot-CoT。例如,在 AddSub 上准确率从 提升到 ,在 SingleEq 上从 提升到 。平均准确率从 提升到 ,提高了 。
- PS 提示也优于 Zero-shot-CoT,平均准确率从 提升到 。这表明引入“计划-解决”框架本身就能带来提升。
- 与另一个有竞争力的零样本基线 PoT 相比,PS+ 提示在六个算术数据集中有五个超越了 PoT,平均准确率为 ,高于 PoT 的 。这表明即使不生成可执行代码,通过精细的文本指令也能有效引导 LLM 进行高质量的数值推理。
- 与少样本方法的比较:
- PS+ 提示的平均准确率 () 略低于 Manual-CoT (),但高于 Auto-CoT ()。尽管这是一个不公平的比较(零样本 vs 少样本),但这一结果非常令人印象深刻,因为它表明零样本提示在某些情况下有潜力超越 (potential to outperform) 甚至不需要手动演示的少样本 CoT 提示。这突显了零样本提示工程的巨大潜力。
6.1.2. 常识推理 (Commonsense Reasoning)
以下是原文 Table 3 的结果:
| Method | CSQA | StrategyQA |
|---|---|---|
| Few-Shot-CoT (Manual) | 78.3 | 71.2 |
| Zero-shot-CoT | 65.2 | 63.8 |
| Zero-shot-PS+ (ours) | 71.9 | 65.4 |
- 在常识推理任务上,PS+ 提示在 CommonsenseQA 和 StrategyQA 数据集上均持续优于 (consistently outperforms) Zero-shot-CoT。
- 在 CommonsenseQA 上,PS+ 准确率达到 ,相比 Zero-shot-CoT 的 有显著提升。
- 在 StrategyQA 上,PS+ 准确率为 ,略高于 Zero-shot-CoT 的 。
- 虽然 PS+ 提示的性能仍低于 Few-Shot-CoT (Manual),但其零样本的优势和对 Zero-shot-CoT 的提升仍然验证了其有效性。
6.1.3. 符号推理 (Symbolic Reasoning)
以下是原文 Table 4 的结果:
| Method | Last Letter | Coin Flip |
|---|---|---|
| Few-Shot-CoT (Manual) | 70.6 | 100.0 |
| Zero-shot-CoT | 64.8 | 96.8 |
| Zero-shot-PS+ (ours) | 75.2 | 99.6 |
- 在符号推理任务上,PS+ 提示展现出更强的优势:
- 在 Last Letters 数据集上,PS+ 提示 () 不仅优于 Zero-shot-CoT (),甚至超越了 (outperforms) Few-Shot-CoT (Manual) ()。
- 在 Coin Flip 数据集上,PS+ 提示 () 略低于 Few-Shot-CoT (Manual) (),但大幅优于 Zero-shot-CoT ()。这表明 PS+ 提示在处理需要精确规则遵循和逻辑操作的任务时非常有效。
6.2. 分析
6.2.1. 结合自洽性 (Self-Consistency) 的结果
自洽性 (Self-consistency, SC) (Wang et al., 2022b) 是一种通过生成 个推理结果并进行多数投票来减少 LLM 输出随机性的方法。本文评估了 Zero-shot PS+ 提示与 SC 结合的效果。
- 在 GSM8K 和 SVAMP 数据集上,当
temperature设置为 0.7, 设置为 10 进行实验时:- PS+ 提示结合 SC 后,在 GSM8K 上的准确率从 大幅提升到 ,在 SVAMP 上从 提升到 。
- PS+ 提示结合 SC 后,其性能持续优于结合 SC 的 Zero-shot-CoT (GSM8K: vs ; SVAMP: vs )。 这表明 PS+ 提示生成的推理路径质量更高,与 SC 结合时能获得更大的收益,进一步提高了模型的鲁棒性和准确性。
下图(原文 Figure 4)展示了结合和不结合自洽性(SC)的方法在 GSM8K 和 SVAMP 上的结果。
该图像是一个示意图,展示了 Plan-and-Solve 提示策略在 GSM8K 和 SVAMP 数据集上的分类准确率。通过与无策略(w/o SC)对比,可以看到有策略(w/ SC)下的准确率显著提高,分别为 GSM8K(73.7% vs 59.3%)和 SVAMP(84.4% vs 76.3%)。
6.2.2. 提示词 (Prompts) 的影响
本文通过比较六种不同输入提示(触发语句)的性能来分析提示词对结果的影响。 以下是原文 Table 5 的结果:
| No. | Trigger Sentence | GSM8K | SVAMP | |
| 1 | Let's think step by step. | (*1) | 56.4 | 69.9 |
| 2 | import math import numpy as np # Question: example['question'] # Answer this question by implementing a solver() function. def solver(): # Let's write a Python program step by step, and then return the answer | (*2) | 57.0 | 70.8 |
| 3 | # Firstly, we need define the following variable: Extract variablesand assigntheir corresponding numeralsto these variables first and then solve the problem step by step. | 50.5 | 69.5 | |
| 4 | Firstly, ,extract variablesandtheir corresponding numerals. Then, calculate intermediate variables. Finally, solve the problem step by step. Let's first understand the problem anddevise a plan to solve the problem. | 54.8 | 70.8 | |
| 5 | Then, let'scarry out the plan and solve the problem step by step. Let's first understand the problem,extract relevant variables andtheir corresponding numerals, andmake a plan. Then, let'scarry out the plan, calculate intermediate variables (pay attention to correct numerical | 58.2 | 72.0 | |
| 6 | calculation and commonsense), solve the problem step by step, and show the answer. | 59.3 | 75.7 |
(注:原文Table 5在排版上将第6条触发语句的后半部分与第5条连接,此处我已根据语义和上下文将其修正为独立的第6条,它对应于PS+提示的完整形式。)
- Prompt 1 (
Let's think step by step.) 是 Zero-shot-CoT 的提示,性能为 GSM8K ,SVAMP 。 - Prompt 2 是 Zero-shot-PoT 的提示,性能略高于 Prompt 1。
- Prompt 3 尝试提取变量和数值,但没有包含规划指令,结果在 GSM8K 上甚至比 Zero-shot-CoT 表现更差 ( vs )。这表明仅仅提取变量而不进行规划是不够的。
- Prompt 4 在 Prompt 3 的基础上加入了“计算中间变量”和“制定计划”的一部分,性能有所改善,但仍低于 Zero-shot-CoT。
- Prompt 5 (
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.) 对应于本文提出的 PS 提示,其性能在两个数据集上均优于 Zero-shot-CoT (GSM8K , SVAMP )。这验证了“计划-解决”框架的有效性。 - Prompt 6 (
Let's first understand the problem, extract relevant variables and their corresponding numerals, and make a complete plan. Then, let's carry out the plan, calculate intermediate variables (pay attention to correct numerical calculation and commonsense), solve the problem step by step, and show the answer.) 对应于本文提出的 PS+ 提示,其在两个数据集上的表现最佳 (GSM8K , SVAMP )。这强有力地证明了在提示中加入更详细的指令能够有效引导 LLM 生成高质量的推理文本。
6.2.3. 错误分析 (Error Analysis)
为了定性评估 Zero-shot-PS+ 提示对计算错误和推理步骤缺失错误的影响,作者对 GSM8K 数据集中的 100 个随机样本进行了错误类型分布分析。 以下是原文 Table 6 的结果:
| Method | Calculation | Missing | Semantic |
|---|---|---|---|
| Zero-shot-CoT | 7% | 12% | 27% |
| Zero-shot-PS | 7% | 10% | 26% |
| Zero-shot-PS+ | 5% | 7% | 27% |
-
Zero-shot-CoT 在 46 个错误答案中,计算错误占 ,步骤缺失错误占 。
-
Zero-shot-PS 略有改善,计算错误仍为 ,步骤缺失错误减少到 。
-
Zero-shot-PS+ 表现最佳,计算错误减少到 ,步骤缺失错误减少到 。
-
三种方法的语义理解错误率相似(Zero-shot-CoT , Zero-shot-PS , Zero-shot-PS+ ),这表明 PS/PS+ 提示主要解决了计算和步骤缺失问题,但对语义误解错误的影响不大,这也被认为是未来的一个限制。
结论: PS 和 PS+ 提示通过引导 LLM 生成清晰完整的推理步骤,有效地减少了计算错误和步骤缺失错误。PS+ 提示中“提取相关变量”和“计算中间变量”等额外详细指令,进一步提升了推理步骤的质量,从而减少了计算错误。
6.2.4. 生成推理与错误类型的相关性分析 (Correlation Analysis of Generated Reasoning and Error Types)
为了更深入地了解 PS+ 提示对错误类型的影响,作者分析了生成的推理文本的子部分(如变量定义、推理计划、解决方案的存在)与错误类型之间的相关性。 下图(原文 Figure 5)展示了从 GSM8K 随机抽取的 100 个数据示例中生成的推理与错误类型之间的相关性分析。
该图像是图表,展示了从GSM8K随机抽取的100个数据示例中生成的推理与错误类型之间的相关性分析。图表中显示了计算、遗漏步骤和语义错误三种类型的相关性,突出显示了各自的相关系数。
- 结果显示: 变量定义 (Variable Definition) 和计划存在 (Plan Existence) 都与计算错误 (Calculation Error) 和步骤缺失错误 (Missing-step Error) 呈负相关。
- 这意味着,当 LLM 在推理中明确地定义了变量并制定了计划时,它产生计算错误和步骤缺失错误的可能性会降低。
- 这进一步支持了 PS+ 提示中引入这些详细指令的合理性,即通过鼓励 LLM 显式地进行这些思维过程,可以提高推理的准确性。
6.2.5. PS 预测中计划的存在性探索 (Exploring the Presence of Plans in PS Predictions)
作者随机抽取了 100 个数据示例,检查了 PS 方法生成的预测结果中是否存在计划。
- 结果: 在这 100 个预测中,有 90 个确实包含了计划。
- 结论: 这一观察结果表明,在 GPT-3.5 和 GPT-4 等最新一代 LLMs 中,已经出现了强大的规划能力 (strong planning abilities)。本文的 PS 提示策略成功地诱导了 LLMs 展现这种能力。
7. 总结与思考
7.1. 结论总结
本文深入探讨了零样本思维链 (Zero-shot-CoT) 在处理复杂推理任务时面临的计算错误、步骤缺失错误和语义误解错误。为了解决前两个问题,论文提出了两种创新的零样本提示策略:计划-解决式提示 (PS Prompting) 和其增强版 PS+ 提示 (PS+ Prompting)。
-
PS 提示的核心思想是引导大型语言模型 (LLMs) 先制定一个将整个任务分解为子任务的计划,然后按照计划逐步执行这些子任务。
-
PS+ 提示在此基础上增加了更详细的指令,如“提取相关变量及其对应的数值”和“计算中间结果(注意计算和常识)”,以进一步提高推理步骤的质量和计算的准确性。
通过在十个数据集(涵盖算术、常识和符号推理)上对 GPT-3 (text-davinci-003) 进行的广泛实验,本文取得了以下关键结论:
-
PS+ 提示在所有数据集上都显著优于传统的 Zero-shot-CoT,证明了其在生成高质量推理过程方面的有效性。
-
PS+ 提示与零样本思维程序提示 (Zero-shot-Program-of-Thought) 相比,性能相当或更优,尤其是在非数值推理任务上展现出更强的通用性。
-
在数学推理问题上,PS+ 提示在无需任何人工示例的情况下,能够达到与 8 样本思维链 (8-shot CoT) 提示相当的性能,甚至在某些数据集上超越了少样本人工 CoT 提示。
-
结合自洽性 (Self-consistency) 策略后,PS+ 提示的性能得到进一步提升,并持续优于结合 SC 的 Zero-shot-CoT。
-
错误分析表明,PS+ 提示有效减少了计算错误和步骤缺失错误,而生成的推理中包含变量定义和计划与这些错误呈负相关,验证了策略的有效性。
总体而言,本文的工作表明,通过提供更详细和结构化的零样本提示指令,可以极大地引导 LLMs 执行更准确、更完整的推理任务,这为未来开发更高效、更少人工干预的 CoT 提示方法提供了新的方向。
7.2. 局限性与未来工作
本文的作者指出了当前工作的两个主要局限性,并提出了未来的研究方向:
- 提示设计的工作量: 设计有效的提示词来精确引导 LLMs 生成正确的推理步骤需要一定的努力。LLMs (如 GPT-3) 对提示中的表达方式非常敏感,这意味着需要仔细地设计和调整提示才能达到最佳效果。
- 语义误解错误: 尽管提出的计划-解决式提示能够有效解决计算错误和步骤缺失错误,但对语义误解错误 (semantic misunderstanding errors) 的影响仍然有限(错误分析显示其错误率与 Zero-shot-CoT 相当)。这意味着即使模型能正确规划和计算,也可能因为对问题本身的深层语义理解不足而犯错。
未来的工作方向:
- 解决语义误解错误: 探索如何通过提示工程来解决语义误解错误,而不是仅仅依赖于升级 LLMs 本身的能力。这可能涉及更复杂的提示结构或交互策略。
- PS(+) 提示的通用性: 将计划-解决式提示这一通用思想应用于非推理任务,探索其在更广泛的 NLP 任务中的潜力。
- 计划的细化 (refining the plan): 探索更动态、更智能的计划生成和优化机制,例如让 LLM 能够根据执行情况调整或细化其计划。
7.3. 个人启发与批判
7.3.1. 个人启发
这篇论文提供了一些重要的启发:
- 提示工程的强大潜力: 论文再次证明了提示工程 (prompt engineering) 在激发 LLMs 潜力方面的强大作用。仅仅通过改变零样本提示的措辞,就能在不进行任何模型训练或微调的情况下,显著提升模型在复杂任务上的性能,甚至达到或超越少样本方法的表现。这对于那些无法访问或修改 LLM 参数的用户来说,具有巨大的实践意义。
- 模拟人类认知过程: “计划-解决”框架直观地模拟了人类解决复杂问题时的认知过程,即先思考策略,再逐步执行。这种对人类思维模式的模仿,使得 LLMs 能够以更结构化、更系统的方式进行推理。
- 错误分析的指导作用: 论文通过对 Zero-shot-CoT 错误的细致分类(计算、步骤缺失、语义误解),清晰地指明了改进方向。这种针对性地解决特定类型错误的方法,比盲目优化更有效率。PS 和 PS+ 成功地解决了计算和步骤缺失错误,为后续研究者提供了解决其他类型错误的范式。
- 通用性与可扩展性: PS(+) 提示作为一种零样本方法,其通用性非常强。它不仅适用于数学推理,还在常识和符号推理任务中展现了优越性。此外,这种框架也具有很强的可扩展性,可以在此基础上添加更多高级指令以应对更复杂的场景。
7.3.2. 批判性思考
- 提示的鲁棒性与泛化能力: 论文承认提示设计需要“努力”,且 GPT-3 对“表达方式敏感”。这引出了一个问题:这些精心设计的提示在面对多样化或领域外的问题时,其鲁棒性 (robustness) 和泛化能力 (generalization ability) 如何?是否需要针对每个特定任务或领域重新设计和优化提示?这可能仍然引入一定的人工成本,虽然不是在示例层面,而是在提示设计层面。未来的研究可以探索如何使提示设计过程更加自动化或自适应。
- 语义误解的深层挑战: 论文指出 PS(+) 提示未能有效解决语义误解错误。这可能暗示语义理解是一个更深层次的挑战,并非简单地通过结构化提示就能克服。它可能涉及到 LLMs 对世界知识、语境理解和抽象概念的更根本性掌握。未来的工作可能需要结合外部知识库、更强的多模态信息,或者引入更高级的交互式推理机制,才能真正解决这一问题。
- “计划”的质量与动态性: 尽管 PS 提示能够促使 LLM 制定计划,但这些计划的质量如何?是否总是最优的?目前,计划是一次性生成的。如果 LLM 在执行过程中发现计划有缺陷或遇到意外情况,它能否像人类一样动态地调整或重新规划?引入反馈机制和迭代规划 (iterative planning) 可能是未来的一个重要方向。
- LLM 规模依赖性: 论文主要基于 GPT-3 (text-davinci-003) 进行实验。这些强大的涌现能力和对复杂提示的响应,是否高度依赖于 LLM 的巨大规模?对于较小规模的开源模型,相同或类似的提示策略是否也能取得类似的性能提升?这对于推动更广泛的 LLM 应用至关重要。
相似论文推荐
基于向量语义检索推荐的相关论文。