思维链推理论文综述
思维链(Chain-of-Thought, CoT)提示通过引导大语言模型生成中间推理步骤,显著提升了模型的复杂推理能力。从原始 CoT 到自一致性、树搜索和推理时间缩放,CoT 已成为释放 LLM 推理潜力的核心技术。
CoT 的提出
Wei et al. (2022) 的开创性工作发现:
在提示中加入推理步骤示例,可以让大模型在算术、常识和符号推理任务上获得显著提升。
CoT 的三种形式
- 少样本 CoT:提供包含推理过程的示例
- 零样本 CoT:添加"让我们一步一步思考"
- 自动 CoT:自动生成推理链作为示例
python
# CoT 提示示例
zero_shot_prompt = """
问题:一个商店有 23 个苹果,卖出了 17 个,又进货了 8 个。现在有多少个苹果?
让我们一步一步思考。
"""
few_shot_cot_prompt = """
问题:Roger 有 5 个网球,他又买了 2 罐网球,每罐 3 个。他现在有多少个网球?
推理:Roger 开始有 5 个网球。2 罐各 3 个网球 = 6 个网球。5 + 6 = 11。
答案:11
问题:一个商店有 23 个苹果,卖出了 17 个,又进货了 8 个。现在有多少个苹果?
推理:"""自一致性
Wang et al. (2022) 提出自一致性(Self-Consistency)策略:
- 对同一问题采样多条推理路径
- 对最终答案进行多数投票
- 选择得票最多的答案
python
def self_consistency(model, question, num_samples=40):
"""自一致性推理"""
answers = []
for _ in range(num_samples):
# 采样多条推理路径(temperature > 0)
reasoning_chain = model.generate(
question, temperature=0.7, max_tokens=512
)
answer = extract_answer(reasoning_chain)
answers.append(answer)
# 多数投票
from collections import Counter
answer_counts = Counter(answers)
best_answer = answer_counts.most_common(1)[0][0]
return best_answer高级推理策略
树搜索推理
- Tree-of-Thought (ToT):将推理组织为搜索树,支持回溯和探索
- Graph-of-Thought (GoT):将推理建模为有向图,允许合并和分解
推理时间缩放
OpenAI o1 开创了推理时间缩放范式:
- 模型在推理时投入更多计算资源
- 自动生成长推理链
- 通过更多"思考时间"换取更高的答案质量
CoT 的涌现性
CoT 是一种涌现能力——仅在大模型(约 100B+ 参数)中才有效。小模型即使提供 CoT 示例,也无法生成有意义的推理链。这表明 CoT 能力是规模效应的产物。
CoT 的理论理解
为什么 CoT 有效?
- 计算增强:CoT 增加了推理步骤,等价于增加了计算深度
- 注意力的分配:中间步骤帮助模型分配注意力到关键信息
- 错误定位:分步推理使得错误更容易被定位和修正
CoT 的局限
- 推理链可靠性:推理链可能包含正确答案但错误的中间步骤
- 计算开销:长推理链增加推理时间和成本
- 不一致性:同一问题可能生成矛盾的推理链