一、引言:为什么需要思维链?
大语言模型(LLMs)在复杂推理任务(如数学、逻辑、常识推理)中,单步输出答案的准确性有限。**思维链(Chain-of-Thought, CoT)**通过引导模型显式分解问题、逐步推理,提升答案的准确性和可解释性。它模仿人类的分步思考过程,尤其适用于多步推理任务。
1.1 定义
CoT是一种提示工程技术,要求模型以自然语言输出中间推理步骤,逐步推导答案,适用于数学、逻辑、编程等任务。
1.2 起源
- 提出时间:2022年,Google Research的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》(Jason Wei et al.)。
- 背景:Zero-shot或One-shot提示在复杂推理任务中性能不稳定,CoT通过显式推理显著提升效果。
- 关键发现:CoT效果随模型规模(10B到540B)增强。
1.3 核心思想
- 显式推理:将推理过程语言化,强制“慢思考”。
- 问题分解:拆分复杂问题为简单子问题。
- 语言驱动:利用LLM的序列生成能力。
1.4 例子
问题:一辆车以60公里/小时行驶2.5小时,行驶多少公里?
传统提示:
- 输入:一辆车以60公里/小时行驶2.5小时,行驶多少公里?
- 输出:150公里(过程不透明)。
CoT提示:
- 输入:一辆车以60公里/小时行驶2.5小时,行驶多少公里?请一步步推理。
- 输出:
- 距离 = 速度 × 时间。
- 速度 = 60公里/小时,时间 = 2.5小时。
- 距离 = 60 × 2.5 = 150公里。
答案:150公里。
二、理论基础:CoT为何有效?
2.1 语言建模与推理
- LLMs通过自回归建模学习逻辑模式,CoT激活这些模式,将推理转化为语言生成。
- 数学视角:优化 P ( 推理链 + 答案 ∣ x ) \text{P}(\text{推理链}+\text{答案}|x) P(推理链+答案∣x),提高正确答案概率。
2.2 上下文学习
- CoT利用LLMs的In-context Learning,通过示例或指令引导推理。
- 数学视角:Few-shot CoT提高 P ( 推理链 ∣ x , 示例 ) \text{P}(\text{推理链}|x, \text{示例}) P(推理链∣x,示例)。
2.3 问题分解
- 复杂问题分解为子问题,降低每次推理难度。
- 示例: ( 2 + 3 ) × 4 − 5 = 15 (2 + 3) \times 4 - 5 = 15 (2+3)×4−5=15,CoT分步计算。
2.4 错误修正
- CoT允许中间步骤检查错误,降低总错误率。
- 数学视角:每步错误率 ϵ / n \epsilon/n ϵ/n,显式检查减少累计错误。
2.5 规模律
- CoT在大型模型(>100B参数)上效果显著,因其更强语言建模能力。
- 数学建模:性能 P ∝ f ( N , Q ) \text{P} \propto f(N, Q) P∝f(N,Q),CoT提高提示质量 Q Q Q.
2.6 类比人类认知
- CoT类似“系统2思维”(逻辑驱动),提供“工作记忆”空间。
三、CoT的实现方法
3.1 Zero-shot CoT
- 定义:仅通过指令要求“一步步推理”。
- 提示:
问题:[问题描述] 请一步步推理,写出思考过程,最后给出答案。
- 优缺点:简单但依赖模型能力。
- 例子:
问题:一本书20元,买3本享8折,多少钱? 输出: 1. 原价:3 × 20 = 60元。 2. 折扣:60 × 0.8 = 48元。 答案:48元。
3.2 Few-shot CoT
- 定义:提供推理示例,引导模仿。
- 提示:
问题1:[问题] 解答1:[推理 + 答案] 问题2:[问题] 解答2:[推理 + 答案] 问题:[目标问题] 请一步步推理,写出思考过程。
- 优缺点:稳定但需手动设计示例。
- 例子:
问题1:苹果1元,橙子2元,买2苹果3橙子多少钱? 解答1: 1. 苹果:2 × 1 = 2元。 2. 橙子:3 × 2 = 6元。 3. 总计:2 + 6 = 8元。 答案:8元。
3.3 Self-Consistency with CoT
- 定义:多次运行CoT,投票选择答案。
- 步骤:
- 运行CoT n n n 次。
- 投票选最常见答案。
- 数学视角:提高正确率 P sc > p \text{P}_{\text{sc}} > p Psc>p.
- 优缺点:鲁棒但成本高。
- 例子:
- 问题: ( 2 + 3 ) × 4 − 5 = ? (2 + 3) \times 4 - 5 = ? (2+3)×4−5=?.
- 推理1、2:15(正确);推理3:19(错误)。
- 答案:15。
3.4 Tree-of-Thought (ToT)
- 定义:探索多条推理路径,形成树状结构。
- 提示:
问题:[问题] 探索多种推理路径,评估正确性,选择最佳答案。
- 优缺点:适合复杂问题但实现复杂。
- 例子:
- 问题:分配3苹果2橙子给3人。
- 路径1:每人1苹果,橙子随机。
- 路径2:2人1苹果,1人1苹果+2橙子。
- 选择:路径1更公平。
3.5 自动化CoT生成(Auto-CoT)【扩展部分】
3.5.1 定义
自动化CoT生成(Auto-CoT)旨在通过算法或模型自动构造CoT提示,减少人工设计Few-shot示例的成本。它通过生成高质量推理链并优化提示结构,实现与手动CoT相当甚至更好的性能。
3.5.2 背景与动机
- 人工CoT的局限:
- 手动设计示例费时费力,需领域知识。
- 示例质量不均,可能引入偏差。
- 难以适配大规模或多样化任务。
- Auto-CoT目标:
- 自动化生成逻辑清晰、覆盖广泛的推理链。
- 适配不同任务(数学、逻辑、问答等)。
- 降低提示工程门槛,推广CoT应用。
- 关键论文:
- 《Automatic Chain of Thought Prompting in Large Language Models》(Zhang et al., 2022)。
- 《AutoPrompt: Eliciting Knowledge from Pretrained Language Models with Automatically Generated Prompts》(Shin et al., 2020,启发性工作)。
3.5.3 核心思想
- 自生成推理链:利用LLM自身生成推理步骤,作为Few-shot示例。
- 示例优化:通过过滤、聚类、评分等方法选择高质量示例。
- 动态调整:根据任务特性(如问题难度、领域)调整提示。
- 数学视角:
- 优化目标:最大化提示有效性 E [ P ( 正确答案 ∣ Q , 自动提示 ) ] \mathbb{E}[\text{P}(\text{正确答案}|Q, \text{自动提示})] E[P(正确答案∣Q,自动提示)].
- 问题建模:从问题集 { Q i } \{Q_i\} { Qi} 中采样,生成推理链集合 { S i } \{S_i\} { Si},选择子集 S ∗ ⊂ { S i } S^* \subset \{S_i\} S∗⊂{ Si} 构造提示。
3.5.4 实现方法
以下是Auto-CoT的常见实现方法,逐一展开:
方法1:随机采样与自生成
- 流程:
- 从问题集 D = { Q 1 , Q 2 , … , Q n } D = \{Q_1, Q_2, \dots, Q_n\} D={ Q1,Q2,…,Qn} 随机采样 k k k 个问题。
- 对每个问题 Q i Q_i Qi,使用Zero-shot CoT提示(如“请一步步推理”)生成推理链 S i S_i Si.
- 收集 { ( Q i , S