跳到主要内容

思维链(Chain-of-Thought)

思维链(Chain-of-Thought,CoT)提示是迄今为止最有效的 LLM 推理增强技术之一。通过引导模型在给出最终答案之前展示中间推理步骤,CoT 能够显著提升模型在数学计算、逻辑推理、多步骤问题解决等任务上的表现。

CoT 原理

直观上,CoT 模拟了人类在解决复杂问题时"打草稿"的思考过程。当你解一道复杂的数学题,你不会直接写出答案,而是在草稿纸上一步一步推导。CoT 让 LLM 做同样的事情。

为什么 CoT 有效?

从模型机制来看,Transformer 在单次前向传播中处理能力有限,难以在一步之内完成复杂的多步推理。展示推理链相当于给模型提供了更多"计算空间"(token 数量),让复杂推理分布在多个生成步骤中,每一步都可以利用之前的中间结果。

不使用 CoT:
问题 → [黑盒推理] → 答案

模型需要在这里完成所有推理

使用 CoT:
问题 → 步骤1 → 步骤2 → 步骤3 → 答案
↑ ↑ ↑
每步都可以利用前面的中间结论

标准 CoT:在示例中包含推理链

原始 CoT 论文(Wei et al., 2022)通过在少样本示例中展示推理过程来激活模型的推理能力:

示例(few-shot CoT):

问:Roger 有 5 个网球。他又买了 2 罐网球,每罐 3 个。他现在共有多少个网球?
答:Roger 开始有 5 个网球。
2 罐 × 3 个/罐 = 6 个新网球。
5 + 6 = 11 个网球。
所以答案是 11 个。

问:餐厅有 23 位顾客。又来了 2 组,每组 5 人。有 7 人离开。现在有多少人?
答:餐厅开始有 23 位顾客。
新来 2 × 5 = 10 人,共有 23 + 10 = 33 人。
7 人离开后:33 - 7 = 26 人。
所以答案是 26 人。

问:[实际问题]
答:[模型将模仿上面的推理风格展示推理链]

通过看到示例中推理的形式,模型会在回答实际问题时自动模仿这种逐步推理的方式。

Zero-shot CoT:魔法短语

2022 年的另一项重要发现:只需在 Prompt 末尾加上特定短语,即可在无示例的情况下激活模型的 CoT 推理能力:

  • 英文"Let's think step by step."
  • 中文等效"让我们一步步思考。" / "请逐步分析:"
不使用 CoT:
问:如果一个旅行者以 60km/h 的速度行驶 2.5 小时,然后以 80km/h 再行驶 1.5 小时,
总行驶距离是多少?
答:230 km(有时错误,直接给结果)

使用 Zero-shot CoT:
问:[同样的问题] 让我们一步步思考。
答:第一段路程:60 km/h × 2.5 h = 150 km
第二段路程:80 km/h × 1.5 h = 120 km
总距离:150 + 120 = 270 km
所以答案是 270 km。(正确)

这个简单的技巧在 GSM8K(小学数学题)基准上可以将正确率从约 10% 提升至 40-50%(对于当时的模型)。

Self-Consistency:多路采样取最优

Self-Consistency(Wang et al., 2022)是 CoT 的重要增强:

原理:同一个问题生成多条推理链(通过随机采样,温度参数 > 0),对最终答案进行多数投票

import anthropic

client = anthropic.Anthropic()
question = "逻辑题:A 比 B 高,C 比 A 矮,D 比 C 高但比 A 矮,请排出从高到低的顺序。让我们一步步思考。"

# 生成多条推理链
answers = []
for _ in range(5):
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=500,
temperature=0.7, # 增加多样性
messages=[{"role": "user", "content": question}]
)
answers.append(response.content[0].text)

# 从每条推理链提取最终答案,进行多数投票
# 出现次数最多的答案被选为最终结果

Self-Consistency 相比单次 CoT 通常能额外提升 5-15% 的准确率,代价是多倍的 API 调用成本。

Tree of Thoughts(ToT):树状推理

Tree of Thoughts(Yao et al., 2023) 将 CoT 从线性推理链扩展为树状搜索:

  • 在每个推理步骤,生成多个候选延续(树的分支)
  • 使用 LLM 对每个候选分支进行评估/剪枝
  • 用 BFS 或 DFS 探索推理树,找到最优路径
                    问题
├── 思路A
│ ├── A→1(无效,剪枝)
│ └── A→2 → A→2→α → 答案(找到!)
└── 思路B
├── B→1
└── B→2(评估分低,剪枝)

ToT 在需要计划和探索的任务(如 24 点游戏、创意写作规划)上效果显著,但计算成本更高。

内化 CoT:o1 模型的推理模式

OpenAI 的 o1 系列模型(2024)代表了 CoT 的最新演进:内化推理(Internal Chain-of-Thought)

传统 CoT 是用户在 Prompt 中要求展示推理过程,o1 则通过强化学习训练模型在生成最终回复前自动进行大量内部推理("思考 token"),用户看不到这些内部推理过程,但模型的推理准确性大幅提升。

  • o1 在 AIME(美国数学邀请赛)上达到 74% 正确率(此前 GPT-4o 约 12%)
  • 每个问题花费数秒到数分钟进行内部推理
  • 推理 token 不计入上下文窗口限制,但计入账单

Claude 的**扩展思考(Extended Thinking)**模式是 Anthropic 的类似功能,在复杂问题上显示出同等甚至更强的推理能力。

CoT 对各类任务的提升效果

任务类型CoT 提升程度适用性
多步数学题(小学/初中级别)极大(10% → 50%+)高度适用
逻辑推理(演绎/归纳)高度适用
代码调试(Bug 定位)中等适用
常识推理中等适用
简单分类/情感分析几乎无帮助不适用
翻译几乎无帮助不适用
事实问答小(知识型问题无法靠推理弥补)有限适用

关键洞察:CoT 对需要多步推理的任务帮助显著,对只需召回知识的任务帮助有限,对简单任务甚至可能引入冗余、降低效率。

实践建议

  • 推理类任务:始终开启 CoT,使用"让我们一步步思考"或直接要求展示推理过程
  • 生产环境:权衡 CoT 的精度提升与额外 token 成本(CoT 通常增加 2-5 倍输出 token)
  • 复杂问题:考虑 Self-Consistency(5-10 次采样投票)以进一步提升可靠性
  • o1/Extended Thinking:对最复杂的推理任务(竞赛数学、复杂代码分析)使用推理模型,成本更高但效果最好