与思维链(Chain of Thought, CoT)相关的技术
思维链(Chain of Thought, CoT)是一种通过让模型先显式输出推理步骤来提升可解释性与推理准确度的技术。近年来,在大语言模型的研究与应用领域,围绕思维链还衍生、发展出了许多相关或基于其思路改进的技术与方法。以下列举一些重要或常见的相关技术,并简要说明其核心思想与主要用途。
目录
- 少样本与零样本的思维链提示(Few-Shot & Zero-Shot CoT Prompting)
- 自洽性(Self-Consistency)
- 最少到最多提示(Least-to-Most Prompting)
- 自检与自反(Self-Check / Self-Reflect)
- 草稿/便笺(Scratchpad Approach)
- 树状思维链(Tree-of-Thoughts)
- ReAct:推理与行动(ReAct Prompting)
- 程序辅助推理(Program-Aided Language Model, PAL)
- 思维链蒸馏(Chain-of-Thought Distillation)
- Toolformer:模型调用外部工具
- 总结
1. 少样本与零样本的思维链提示(Few-Shot & Zero-Shot CoT Prompting)
- 背景:思维链通常需要在提示中向模型展示“如何分步推理”的示例。
- Few-Shot CoT:在提示(Prompt)里给出若干示例,每个示例都包含问题、完整的思维链以及答案,让模型学习模仿这种“分步推理—输出结论”的流程。
- Zero-Shot CoT:也称“零样本思维链提示”。通过在提示中直接指令模型“请详细展示你的推理步骤”,从而让模型自动生成思维链,而不再提供显式示例。
- 优势:相比传统的单步答案,思维链提示能显著提升对复杂任务(如数学推理、多跳问答等)的解决效果。
2. 自洽性(Self-Consistency)
- 核心思想:在生成思维链时,由于语言模型本身具有随机采样的特性,可以通过多次采样得到不同的思维链。随后,对这些不同思维链得出的答案进行投票或汇总,选择出现次数最多或最具一致性的结果作为最终答案。
- 数学视角:假设模型在给定提示
X
X
X 时,对中间推理
C
C
C 服从随机采样:
C ( 1 ) , C ( 2 ) , … , C ( k ) ∼ P θ ( C ∣ X ) , C^{(1)}, C^{(2)}, \dots, C^{(k)} \sim P_\theta(C \mid X), C(1),C(2),…,C(k)∼Pθ(C∣X),
而后各自生成对应答案 A ( i ) A^{(i)} A(i)。可以将最终答案定为
A ^ = arg max A ∑ i = 1 k 1 ( A ( i ) = A ) , \hat{A} = \arg\max_{A} \sum_{i=1}^k \mathbf{1}(A^{(i)} = A), A^=argAmaxi=1∑k1(A(i)=A),
即取多个思维链采样结果中最频繁出现的答案。 - 优点:通过多路径推理和结果投票可有效缓解单一路径中的偶然性错误,提升总体可靠性。
3. 最少到最多提示(Least-to-Most Prompting)
- 动机:在一步到位解决复杂问题时,模型容易出现“跳步”或“漏洞”错误。
- 做法:把大问题分解为多个子问题,让模型先回答容易或局部的小问题,再逐步合并先前得到的中间答案,最终得出完整问题的解答。
- 特点:
- 与思维链相似,都提倡显式分步推理;
- 最少到最多提示往往需要模型在提示中按照问题结构“逐级递进”,形成一个解题“树状”或“分块”过程;
- 例如做数学推理时,可以先让模型回答子表达式,再合并。
4. 自检与自反(Self-Check / Self-Reflect)
- 思路:让模型在生成完思维链后,再阅读自身的推理过程并进行反思或检查,修正可能出现的矛盾或失误。
- 实现:
- 先生成一版思维链和答案;
- 再用一个或同一个模型去“审阅”该思维链,如“请你检查这段推理是否正确,并指出错误”,若发现问题则修正。
- 好处:进一步提高最终答案的准确度,并能在可解释层面上展示模型发现错误并改正的过程。
5. 草稿/便笺(Scratchpad Approach)
- 由Google等团队提出,也被视为思维链的早期实践形式。
- 核心:让模型在内部“写”一份逐步推理的草稿(scratchpad),然后将这份草稿视为上下文输入来指导后续答案生成。
- 区别:
- Scratchpad 既可以对外可见,也可以设为“只在模型内部保留”,用户只看最终答案;
- 其重点是鼓励模型在解题过程中显式保留中间结果(如变量计算、逻辑推导等),再整合得到最后的回答。
6. 树状思维链(Tree-of-Thoughts)
- 基本点:与传统思维链的线性结构不同,树状思维链允许对中间推理步骤进行分叉和回溯。
- 方法:
- 在推理过程中模拟搜索算法,让模型可以针对不同假设或分支并行展开推理;
- 最终可基于某种评分函数(如自洽性投票、逻辑一致性评分等)来选择最佳路径或合并多个路径。
- 应用场景:更复杂的推理场景,如多步规划、复杂逻辑题。通过“树搜索”式的思维链可以更全面地探索可能性。
7. ReAct:推理与行动(ReAct Prompting)
- 来源:ReAct(Reason + Act)是哈佛与DeepMind等提出的一种把“思维链”(Reasoning)与“行动”(Action,即对外部环境的操作或查询)相结合的策略。
- 形式:
- 思维链部分:模型以自然语言的方式写下推理过程;
- 行动部分:模型可调用外部工具、接口或执行操作(如数据库查询、计算器运算等);
- 结果再回到模型,以更新推理过程。
- 优势:在需要外部知识或算力时,ReAct 允许模型边推理、边调用工具,拥有更强的“动手能力”。
8. 程序辅助推理(Program-Aided Language Model, PAL)
- 概念:让模型在思维链中生成一段可执行的“代码”,再通过执行该代码来得到准确的结果。
- 典型做法:当遇到数学或逻辑推理场景,模型将自己的推理过程以Python、SQL等脚本形式输出,然后执行脚本获取答案;
- 优点:
- 代码本身具有可执行性和可验证性;
- 可大大减少复杂运算或逻辑链条中的笔误与遗漏;
- 在算术、数据处理、知识查询等场景十分有效。
9. 思维链蒸馏(Chain-of-Thought Distillation)
- 概念:将大型模型产生的思维链(高质量推理过程)当作训练数据,用于训练或微调较小的模型。
- 过程:
- 大模型在大量任务上输出高质量思维链 + 答案;
- 将这些“(输入, 中间推理, 答案)”对作为监督数据;
- 训练小模型在相同输入时能模仿大模型的思维链、最终答案;
- 意义:
- 缩减推理成本:小模型推理速度更快;
- 提高性能:小模型也能部分继承大模型的“思维链经验”;
- 实现“知识压缩”,让小模型获得更强的推理能力。
10. Toolformer:模型调用外部工具
- 由Meta提出,与思维链相关,类似于ReAct,但更侧重训练模型自动学会在特定时机调用外部API或工具。
- 思维链维度:
- 模型在产生推理过程中若发现需要某项外部功能(例如计算、翻译、检索),可插入一个API调用,然后将结果再纳入后续推理;
- 这使得思维链可以包含“调用工具”这样的行动节点,进一步扩展模型能力。