Files
2026-05-16 17:16:51 +08:00

575 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: CoT 与推理搜索:显式推理链的数学体系
draft: false
tags:
- Chain-of-Thought
- Self-Consistency
- Tree-of-Thoughts
- 推理
- 大语言模型
---
# CoT 与推理搜索:显式推理链的数学体系
---
## 一、为什么需要显式推理
### 1.1 标准语言模型的局限
**标准语言模型的目标**
给定输入 $x$,直接预测输出 $y$
$$P(y | x; \theta) = \prod_{t=1}^T P(y_t | x, y_{<t}; \theta) \tag{1.1}$$
**问题**:对于多步推理任务(如数学题),模型需要:
1. 理解问题的隐含结构
2. 执行多个推理步骤
3. 整合中间结果得到最终答案
直接让模型"一步到位"预测最终答案,**模型需要在内部隐式地完成所有推理**——这对于复杂任务过于困难。
### 1.2 中间步骤的作用
**关键观察**
> 如果要求模型显式地写出中间步骤 $z_1, z_2, \ldots, z_k$,然后基于这些步骤得到最终答案 $y$,推理难度被分散到多个更简单的子任务。
**数学表示**
设原始问题为 $x$,目标是 $y$,中间推理链为 $z_1, \ldots, z_k$。
原问题:$P(y | x; \theta)$
改为条件分解:
$$P(y | x; \theta) = \sum_{z_1, \ldots, z_k} P(y | x, z_{1:k}; \theta) \cdot \prod_{i=1}^k P(z_i | x, z_{1:i-1}; \theta) \tag{1.2}$$
通过引入中间变量,模型可以:
1. 每个 $P(z_i | \cdot)$ 只负责当前一步推理
2. 每个子任务比完整任务更简单
3. 最终答案由清晰的推理链支撑
### 1.3 从隐式到显式推理
**隐式推理**(直接预测):
$$x \rightarrow y$$
**显式推理**(链式):
$$x \rightarrow z_1 \rightarrow z_2 \rightarrow \cdots \rightarrow z_k \rightarrow y$$
**核心收益**
- 可解释性:可以看到推理过程
- 错误定位:可以找出哪一步出了问题
- 纠错能力:可以通过提示引导回到正确方向
---
## 二、Chain-of-ThoughtCoT
### 2.1 CoT 的核心思想
**提示式推理的统一核心边界**以上四类方法CoT、Self-Consistency、Least-to-Most、ToT全部属于**无参数提示工程**,仅通过文本引导生成逻辑,**不修改模型任何底层权重**,无法从根本修正模型固有知识缺陷与逻辑漏洞。
**CoT**Wei et al., 2022的核心是在提示prompt中包含中间推理步骤的示例引导模型生成类似的推理链。
**形式上**CoT 提示由以下三部分组成:
1. **输入问题** $x$
2. **中间步骤** $z_1, z_2, \ldots, z_k$(在提示中)
3. **最终答案** $y$(在提示中)
**关键设计**:提示中包含的是 "reasoning steps",而非仅仅 "input-output pairs"。
### 2.2 CoT 的数学分析
**定理CoT 的条件化效应)**
设 $P_\theta(y | x)$ 是原始模型对问题 $x$ 输出 $y$ 的概率。
CoT 诱导的分布为:
$$P_\theta(y | x) = \sum_{z_{1:k}} P_\theta(y | x, z_{1:k}) \cdot P_\theta(z_{1:k} | x) \tag{2.1}$$
**物理意义**
- 模型首先生成中间推理 $z_{1:k}$(这本身就是一个推理过程)
- 然后基于中间结果给出最终答案
**引理CoT 的计算分解)**
对于加法/乘法等可分解操作CoT 显式地展示了计算过程:
$$(23 + 45) \times 7$$
$$\rightarrow z_1: 23 + 45 = 68$$
$$\rightarrow z_2: 68 \times 7 = 476$$
$$\rightarrow y: 476$$
每一步的输出空间比原问题小得多。
### 2.3 CoT 的 prompting 策略
**Few-shot CoT**
在提示中提供 $K$ 个 (问题, 推理链, 答案) 示例:
```
示例 1
输入: 小明有3个苹果小红给了他2个他又买了5个。他现在有多少个
推理: 3 + 2 = 5得到后的苹果...
答案: 10
示例 2
输入: ...
推理: ...
答案: ...
```
**示例划分**Few-shot CoT 需区分**通用推理示例**与**领域专属示例**。领域专属示例在垂直场景(如医疗、法律)效果远优于通用示例,应优先注入领域固定推理范式。
**Zero-shot CoT**Kojima et al., 2022
不需要手工编写示例,只需要添加标准提示语:
```
Let's think step by step.
```
**数学形式**
$$P_\theta(y | x) = P_\theta(y | x, \text{"Let's think step by step"}) \tag{2.2}$$
### 2.4 CoT 在不同任务上的效果
**实验结论**Wei et al., 2022
| 任务类型 | 标准 prompting | CoT prompting | 提升 |
|---------|---------------|---------------|------|
| **数学 word problems** | 17.9% | 46.9% | +29% |
| **Commonsense QA** | 53.3% | 64.9% | +11.6% |
| **Symbolic manipulation** | 78.6% | 92.1% | +13.5% |
**关键发现**CoT 对**需要多步推理的任务**效果显著,对**单步推理或记忆类任务**效果有限。
**关键前提**CoT 属于**大模型涌现能力**,小参数量模型使用 CoT 几乎无效果,仅**百亿级以上**大模型才能稳定生成合规推理链。这是工业落地核心边界。
**推理方法选择**
- 短推理任务(单步或少量步骤):直接用 Zero-shot CoT`Let's think step by step.`
- 长复杂推理任务:优先 Few-shot 注入领域固定推理范式,减少模型推理自由度过高导致的幻觉风险
**所有提示推理通用优化**:加入**推理终止符**(如 `∴``Therefore, the answer is`),限制无效长文本生成,大幅提升答案收敛速度。
### 2.5 CoT 的局限性
**局限性 1推理链质量依赖模型能力**
模型必须有能力生成**正确**的推理链。如果模型在推理链上犯错,最终答案也会错。
**局限性 2无法回溯和纠错**
一旦推理链生成,模型不会主动检查和修正中间的步骤。
**局限性 3长推理链的误差累积**
在长推理链中前面的错误会导致后续所有推理错误。CoT 线性推理误差单向累积,自洽性仅能缓解单链错误,无法彻底根除系统性逻辑错误。
**局限性 4推理链易产生事实幻觉最致命工业痛点**
推理链看似逻辑通顺实则中间结论违背客观事实。模型可能生成流畅但虚构的推导步骤,例如错误地引用历史数据、捏造不存在的逻辑关系。这是实际落地最大阻碍。
---
## 三、Self-Consistency自洽性
### 3.1 核心思想
**Self-Consistency**Wang et al., 2023的核心是与其只采样一条推理链不如采样**多条不同的推理链**,然后通过投票选出最自洽的答案。
**关键洞察**
> 正确的推理路径应该比错误的路径产生更多**一致**的最终答案。即使每条路径都有随机性,多条路径的交集更可能是正确答案。
### 3.2 数学形式化
**定义(推理路径采样)**
对于问题 $x$,模型采样 $M$ 条独立的推理路径:
$$\{(z_{1:k}^{(m)}, y^{(m)})\}_{m=1}^M \sim P_\theta(\cdot | x) \tag{3.1}$$
每条路径包含:
- 推理链 $z_{1:k}^{(m)}$
- 最终答案 $y^{(m)}$
**定义(自洽性投票)**
统计每个答案的出现频率:
$$V(y) = \sum_{m=1}^M \mathbf{1}_{y^{(m)} = y} \tag{3.2}$$
**自洽性答案**
$$y^* = \arg\max_y V(y) \tag{3.3}$$
### 3.3 与抽样温度的关系
**定理Self-Consistency 的采样多样性)**
Self-Consistency 的效果与采样温度 $T$ 正相关。
- **低温度**$T \to 0$):几乎所有采样都产生相同的推理路径和答案
- **高温度**$T > 1$):采样产生多样化的推理路径,但可能包含无意义路径
**最优配置**(细分场景):
- **理科数学推理**:温度 $T \in [0.7, 0.9]$,采样数 $M \in [20, 40]$
- **常识问答**:温度 $T \in [0.5, 0.7]$,采样数 $M \in [10, 20]$
除温度外Top-P 核采样、重复惩罚等生成策略同样极大影响推理路径多样性与投票准确率。
### 3.4 自洽性的信息论解释
**定义(推理链的信息熵)**
对于答案 $y$,定义其推理链的条件熵:
$$H(Z | Y=y, X=x) = -\sum_{z} P(z | y, x) \log P(z | y, x) \tag{3.4}$$
**自洽性度量的信息论含义**
前提:推理链 $Z$ 对 $Y$ 条件独立,即 $P(y|z,x) = P(y|x)$(推理链完备、无冗余信息)。
在此前提下可证:
$$H(Y | X) \leq H(Z | X) \tag{3.5}$$
最终答案的信息量不超过完整推理链的信息量。投票机制通过压缩多个推理路径来降低不确定性。
### 3.5 自洽性的实验结果
**主要结论**
| 模型 | GSM8K数学| SVAMP数学| GAIR推理|
|------|------------|------------|------------|
| **CoT only** | 40.1% | 52.7% | 55.3% |
| **+Self-Consistency** | 60.3% | 62.1% | 67.4% |
| **提升** | +20.2% | +9.4% | +12.1% |
---
## 四、Least-to-Most从少到多
### 4.1 核心思想
**Least-to-Most**Zhou et al., 2023的核心是对于复杂问题先让模型自己把问题**分解成一系列子问题**,然后逐一解决这些子问题。
**与 CoT 的区别**
| 方法 | 问题分解 | 解决顺序 |
|------|---------|---------|
| **CoT** | 隐式(在推理链中) | 顺序执行 |
| **Least-to-Most** | 显式(分解步骤) | 可以指定依赖 |
### 4.2 算法步骤
**Algorithm: Least-to-Most**
**Step 1问题分解**Prompt
```
Given problem X, break it down into sub-problems:
1. [sub-problem 1]
2. [sub-problem 2]
...
```
**Step 2子问题解决**(顺序执行)
```
For each sub-problem i:
- If all dependencies solved:
- Solve sub-problem i
- Add to known facts
```
### 4.3 数学形式化
**定义(问题分解)**
设原问题为 $Q$,分解后的子问题为 $\{q_1, q_2, \ldots, q_K\}$。
分解满足:
$$Q \iff \{q_1, q_2, \ldots, q_K\} \tag{4.1}$$
即原问题的解决等价于所有子问题的解决。
**定义(依赖图)**
每个子问题 $q_i$ 有一个依赖集合 $D(q_i) \subseteq \{q_1, \ldots, q_{i-1}\}$。
解决顺序必须满足:
- $D(q_i)$ 中的所有子问题先于 $q_i$ 被解决
**子问题依赖图类型**Least-to-Most 拆解出的子问题依赖大多为**无环 DAG 有向无环图**,几乎不存在循环依赖,贴合现实绝大多数推理任务。
**核心优势——逐层纠错**:可逐层校验子问题答案,提前阻断错误向后传播,优于 CoT 线性误差累积。
**数学约束**
$$q_i \text{ can be solved} \iff D(q_i) \subseteq \text{Solved} \tag{4.2}$$
### 4.4 Least-to-Most 的示例
**数学问题**
```
Q: "如果小明有23美元他想买3本书每本书7美元他还能剩多少钱"
分解:
q1: "每本书的价格是多少?" → q1 = 7美元
q2: "3本书总价是多少" → q2 = q1 × 3 = 21美元
q3: "小明买书后还剩多少钱?" → q3 = 23 - q2 = 2美元
答案: 2美元
```
### 4.5 与 CoT 的对比
| 维度 | CoT | Least-to-Most |
|------|-----|--------------|
| **分解方式** | 隐式在推理链中 | 显式分解步骤 |
| **子问题依赖** | 自然顺序 | 显式依赖图 |
| **适合问题类型** | 有自然顺序的多步问题 | 需要规划的问题 |
| **错误传播** | 线性累积 | 可通过依赖检测 |
---
## 五、Tree of Thoughts思维树
### 5.1 核心思想
**Tree of Thoughts**Yao et al., 2023的核心是将推理过程建模为**搜索树**,允许**回溯和分支**。
**与 CoT 的区别**
| 方法 | 推理结构 | 回溯能力 |
|------|---------|---------|
| **CoT** | 链式(一条路) | 无 |
| **Self-Consistency** | 多链(并联) | 无 |
| **ToT** | 树状(分支+回溯) | 有 |
### 5.2 ToT 的数学框架
**定义(思维节点)**
在 ToT 中,每个节点表示一个**中间推理状态**
$$s = (x, z_{1:i}, \text{context}) \tag{5.1}$$
其中 $x$ 是原始输入,$z_{1:i}$ 是当前推理序列context 是相关上下文。
**定义(思维树)**
树结构为 $\mathcal{T} = (S, E, s_0)$
- $S$ 是节点集合
- $E \subseteq S \times S$ 是边集合
- $s_0$ 是根节点
**定义(候选生成)**
从节点 $s$ 生成候选下一步:
$$P_\theta(\text{expand}(s) | s) \tag{5.2}$$
这通常通过 prompt 或采样实现。
### 5.3 ToT 的算法框架
**Algorithm: Tree of Thoughts**
```
Function ToT(x):
S = {s_0 = (x, [], [])}
for depth = 1 to K:
For each s in frontier(S, depth):
# 生成候选
candidates = generate_candidates(s)
For each c in candidates:
# 评估
if evaluate(c) == "continue":
add c to S
if evaluate(c) == "terminal":
record solution
# 从所有解中选择最优
return select_best(S, solution_set)
```
### 5.4 节点评估函数
**定义(评估函数)**
$$V(s) = \mathbb{E}_{y \sim P_\theta(\cdot | s)}[\text{score}(s, y)] \tag{5.3}$$
其中 $\text{score}(s, y)$ 可以是:
- 完整性(是否解决了子问题)
- 一致性(是否与已知事实矛盾)
- 前景(是否能导向最终解决)
**具体实现**Prompt 形式):
```
评估这个推理步骤:
- 正确性:[肯定/可能正确/不确定/错误]
- 完整性:[完整/部分/不完整]
- 继续价值:[高/中/低]
```
**工程落地评估简化方案**:理论中精细打分评估在纯文本场景难以实现,**实战主流方案**是改用二元对错判别(正确/错误)+ 事实一致性校验替代精细分值评估,降低评估复杂度同时保证效果。
### 5.5 BFS vs DFS 搜索策略
**广度优先搜索BFSToT**
```
Level 1: [s1, s2, s3]
Level 2: [s1's children] [s2's children] [s3's children]
...
```
适合:评估每个分支成本较低的场景
**深度优先搜索DFSToT**
```
Follow s1 to leaf
Then backtrack to s2
...
```
适合:某些分支可以快速到达解
**最佳优先搜索Best-First**
优先探索评估分数最高的节点。**是目前 ToT 落地主流方法**,兼顾效率与解题成功率。
### 5.6 ToT 与 MCTS 的联系
**ToT 可以看作简化的 MCTS**
| MCTS | ToT | 说明 |
|------|-----|------|
| **UCB 置信上界选择** | 评估 + 剪枝 | MCTS 使用 UCB 公式平衡探索/利用ToT 用评估函数替代 |
| **随机 rollout** | 采样评估 | 两者均通过随机采样估算节点价值 |
| **反向传播** | 候选生成 | MCTS 统计访问计数更新父节点ToT 将候选向下传播 |
| **虚拟访问计数** | 探索广度控制 | MCTS 通过 $N(s)$ 控制节点访问次数ToT 通过深度/广度限制替代 |
ToT 与 MCTS 并非完全等价ToT 省略了 MCTS 的核心 UCB 选择策略和访问计数机制,在工程实现上更为简化。
---
## 六、推理方法的对比与适用场景
### 6.1 方法对比表
| 方法 | 推理结构 | 并行性 | 回溯 | 适合问题类型 |
|------|---------|--------|------|-------------|
| **CoT** | 链式 | 低 | 无 | 有自然顺序的多步推理 |
| **Self-Consistency** | 并联多链 | 高 | 无 | 答案可枚举的问题 |
| **Least-to-Most** | 分层树 | 中 | 部分 | 需要规划的问题 |
| **ToT** | 搜索树 | 中 | 完全 | 需要探索的问题 |
### 6.2 适用场景分析
**适合 CoT 的场景**
1. 数学应用题(有明确步骤)
2. 简单代码生成
3. 规则明确的逻辑推导
**适合 Self-Consistency 的场景**
1. 数学计算(多数投票)
2. 常识推理(多角度验证)
3. 事实性问题(多源确认)
**适合 Least-to-Most 的场景**
1. 复杂规划问题
2. 需要分解的复合问题
3. 依存关系复杂的问题
**适合 ToT 的场景**
1. 创意写作(多方案探索)
2. 复杂搜索问题
3. 需要回溯的证明问题
**工业落地算力取舍**:推理方法优先级为 **CoT > 自洽性 > Least-to-Most > ToT**,算力有限场景优先轻量化链式推理。算力充足时,复杂问题可用 ToT 探索,自洽性可显著提升数学推理准确率。
### 6.3 计算成本分析
**定义(总计算量)**
对于每个问题 $x$,设:
- $M$ 是采样数量
- $K$ 是平均推理长度
- $C$ 是每次评估的成本
| 方法 | 总计算量 |
|------|---------|
| **CoT** | $O(K)$ |
| **Self-Consistency** | $O(M \cdot K)$ |
| **Least-to-Most** | $O(K^2)$(仅无环子问题依次求解理想情况,实际需叠加问题分解开销,不可单一定论) |
| **ToT** | $O(B^D)$(最坏情况,$B$=分支数,$D$=深度) |
---
## 七、数学公式速查
### 7.1 CoT 公式
**条件推理链分解**
$$P(y | x) = \sum_{z_{1:k}} P(y | x, z_{1:k}) \cdot \prod_{i=1}^k P(z_i | x, z_{1:i-1}) \tag{7.1}$$
**Zero-shot CoT**
$$P_\theta(y | x) = P_\theta(y | x, \text"Let's think step by step") \tag{7.2}$$
### 7.2 Self-Consistency 公式
**投票计数**
$$V(y) = \sum_{m=1}^M \mathbf{1}_{y^{(m)} = y} \tag{7.3}$$
**自洽性答案**
$$y^* = \arg\max_y V(y) \tag{7.4}$$
### 7.3 Least-to-Most 公式
**依赖约束**
$$D(q_i) \subseteq \text{Solved} \tag{7.5}$$
### 7.4 ToT 公式
**节点评估**
$$V(s) = \mathbb{E}_{y \sim P_\theta(\cdot | s)}[\text{score}(s, y)] \tag{7.6}$$
---
## 八、总结
**推理方法演进**
```
直接预测
CoT显式推理链
Self-Consistency多链投票
Least-to-Most显式分解
ToT搜索树+回溯)
```
**核心洞察**
1. **CoT**:通过中间步骤分散推理复杂度
2. **Self-Consistency**:用多数投票对抗单链的不确定性
3. **Least-to-Most**:显式规划子问题依赖
4. **ToT**:在搜索树上进行探索,允许回溯
**这些方法共同指向一个方向**:推理不是一次性的前向传播,而是**迭代式的、可以分支和回溯的搜索过程**。
---
**延伸阅读**
1. Wei et al., "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" (NeurIPS 2022)
2. Wang et al., "Self-Consistency Improves Chain of Thought Reasoning in Language Models" (ICLR 2023)
3. Zhou et al., "Least-to-Most Prompting Enables Complex Reasoning in Large Language Models" (ICLR 2023)
4. Yao et al., "Tree of Thoughts: Deliberate Problem Solving with Large Language Models" (NeurIPS 2023)
5. Kojima et al., "Large Language Models are Zero-Shot Reasoners" (NeurIPS 2022)