Skip to content

思维链推理论文综述

思维链(Chain-of-Thought, CoT)提示通过引导大语言模型生成中间推理步骤,显著提升了模型的复杂推理能力。从原始 CoT 到自一致性、树搜索和推理时间缩放,CoT 已成为释放 LLM 推理潜力的核心技术。

思维链推理

CoT 的提出

Wei et al. (2022) 的开创性工作发现:

在提示中加入推理步骤示例,可以让大模型在算术、常识和符号推理任务上获得显著提升。

CoT 的三种形式

  1. 少样本 CoT:提供包含推理过程的示例
  2. 零样本 CoT:添加"让我们一步一步思考"
  3. 自动 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)策略:

  1. 对同一问题采样多条推理路径
  2. 对最终答案进行多数投票
  3. 选择得票最多的答案
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 的局限

  • 推理链可靠性:推理链可能包含正确答案但错误的中间步骤
  • 计算开销:长推理链增加推理时间和成本
  • 不一致性:同一问题可能生成矛盾的推理链

相关资源

最近更新