1. 定义

思维链(Chain-of-Thought, CoT)是一种通过引导模型分步推理来提升复杂问题解决能力的提示技术。与直接提问相比,CoT要求模型生成中间推理步骤,模拟人类“逐步思考”的过程,从而更准确地推导出最终答案。

1.1.CoT vs 直接提问

对比维度直接提问思维链(CoT)
回答方式直接输出答案分步展示推理过程后给出答案
适用问题简单事实性问题(如“法国的首都是哪里?”)需要逻辑推理、数学计算或多步分析的问题
错误率易因跳跃性思考出错通过验证中间步骤降低错误率
可解释性低(答案无过程)高(答案附带推理逻辑)

1.2. CoT与DeepSeek-R1的关系

DeepSeek-R1 核心优化之一即强化推理能力,而CoT是提升推理效果的关键技术。

  • 技术整合:DeepSeek-R1通过预训练和微调(如数学、代码数据)天然支持CoT,无需额外提示即可生成分步推理。
  • 性能对比

    • 直接提问:DeepSeek-R1在简单任务上响应速度更快。
    • CoT模式:在GSM8K(数学推理基准)等任务中,准确率显著高于直接回答。
  • 自定义扩展:用户可通过提示词显式调用CoT(如添加“请逐步解释”),或依赖模型自动判断是否需要分步。

2. 示例

2.1. 问题示例

示例1:数学问题
  • 直接提问
    输入: "若一个长方形的长是5cm,宽是3cm,面积是多少?"
    输出: "15cm²"
  • CoT提问
    输入: "若一个长方形的长是5cm,宽是3cm,面积是多少?请分步解释。"
    输出:

    1. 长方形面积公式为:面积 = 长 × 宽。  
    2. 已知长=5cm,宽=3cm。  
    3. 计算:5 × 3 = 15。  
    4. 因此,面积是15cm²。  
示例2:逻辑推理
  • 直接提问
    输入: "如果所有猫都会飞,而汤姆是一只猫,汤姆会飞吗?"
    输出: "会。" (可能忽略前提的荒谬性)
  • CoT提问
    输入: "如果所有猫都会飞,而汤姆是一只猫,汤姆会飞吗?请逐步分析。"
    输出:

    1. 前提假设:所有猫都会飞。  
    2. 汤姆是一只猫,属于前提中的“所有猫”。  
    3. 根据前提,汤姆会飞。  
    *注:实际中猫不会飞,但在此假设下结论成立。*  

2.3. 提示词模板示例

基础模板
请逐步解决以下问题:[问题描述]。  
分步思考:  
1. [第一步推理]  
2. [第二步推理]  
...  
最终答案:[答案]  
数学问题模板
问题:若一个圆的半径是4cm,周长是多少?  
分步解答:  
1. 圆的周长公式为C=2πr。  
2. 已知半径r=4cm,π≈3.14。  
3. 计算:2 × 3.14 × 4 = 25.12cm。  
答案:周长是25.12cm。  
复杂推理模板
问题:为什么夏天比冬天热?  
分步分析:  
1. 地球围绕太阳公转时,地轴倾斜导致季节变化。  
2. 夏季时,太阳直射北半球,日照时间长且光线更集中。  
3. 冬季相反,日照时间短且光线分散。  
结论:夏季接收更多太阳辐射,因此更热。  

3. LLM 回答的原理

CoT技术通过将大语言模型的隐式推理过程显式化,显著提升了复杂问题的解决能力。理解其工作原理和适用边界,可以帮助我们更有效地利用这一技术解决实际问题。随着模型能力的提升,CoT将继续向自动化、多模态和可验证的方向发展。

3.1 模型架构基础

现代大语言模型(如GPT-4、PaLM等)基于Transformer架构,其核心工作原理可分为以下几个阶段:

1. 输入编码阶段
  • 文本分词:将输入问题分解为token序列
  • 向量化:通过嵌入层(Embedding Layer)将每个token转换为高维向量(通常768-12288维)
  • 位置编码:添加位置信息以保持词序

示例
问题:"5个苹果吃掉2个还剩几个?"
→ 分词为["5","个","苹果","吃掉","2","个","还剩","几个","?"]
→ 每个词转换为512维向量

2. 注意力计算阶段
  • 自注意力机制:计算token之间的相关性权重
  • 多头注意力:并行多个注意力头捕获不同层面的关系
  • 前馈网络:非线性变换增强表达能力

计算过程

Attention(Q,K,V) = softmax(QK^T/√d)V
其中Q(Query)、K(Key)、V(Value)均由输入向量线性变换得到
3. 输出生成阶段
  • 逐token预测:基于上下文生成下一个token的概率分布
  • 采样策略:使用temperature、top-p等参数控制生成多样性
  • 自回归生成:将当前输出作为下一时间步的输入

示例
生成"3"的概率:
P("3"|"5个苹果吃掉2个还剩") = 0.85
P("4"|...) = 0.05
P("2"|...) = 0.03
...

3.2 直接回答的局限性

尽管模型表现优异,直接回答存在以下问题:

1. 隐式推理的缺陷
  • 黑箱操作:无法观察中间推理过程
  • 错误传播:早期错误会影响后续生成
  • 缺乏校验:无法验证中间步骤的正确性

错误示例
问题:"(12×3)+5-10=?"
直接回答:"41"(正确答案应为31)
错误原因:可能先计算了12+3=15

2. 统计偏好的影响
  • 频率偏差:倾向于高频答案
  • 表面匹配:容易被问题表层形式误导
  • 语境误解:忽略关键限定条件

错误示例
问题:"2的50次方和50的2次方哪个大?"
直接回答:"50的2次方"(正确答案应为2^50)
原因:模型更熟悉50²=2500这个常见结果

4. CoT的原理与优势

4.1 CoT的核心机制

1. 显式推理的强制实现
CoT通过特殊提示设计,强制模型将隐式计算过程外化为语言表达:
标准流程:
1. 问题理解 → 2. 分步解决 → 3. 最终确认

实现方式

  • Few-shot CoT:提供分步解答示例
  • Zero-shot CoT:添加"让我们逐步思考"等指令
  • Program-of-Thought:生成可执行的中间代码
2. 工作记忆的扩展
CoT通过以下方式缓解模型的记忆限制:
  • 外部化工作记忆:将中间结果保留在生成文本中
  • 注意力再分配:分步聚焦不同信息片段
  • 错误隔离:单步错误不影响整体流程
示例对比
直接提问:
Q: 若x+3=7,2y=10,求x+y=?
A: 10(错误)

CoT提问:
Q: 逐步求解:若x+3=7,2y=10,求x+y=?
A: 1. 由x+3=7得x=4
   2. 由2y=10得y=5
   3. 因此x+y=9

4.2 CoT提升准确性的原理

1. 分治策略(Divide-and-Conquer)
  • 问题分解:将复杂问题拆解为简单子问题
  • 逐步求解:降低单步认知负荷
  • 结果整合:合并中间结果

数学证明
设问题复杂度为C,直接求解错误率P(C)=1-(1-ε)^C
分n步求解时,P(C)≈1-(1-ε/n)^n → e^(-ε) (当n→∞)

2. 双重校验机制
  • 前向验证:检查每步推导的合理性
  • 后向验证:确认结果是否符合初始条件

案例演示

问题:连续三个偶数之和为30,求这三个数
CoT解答:
1. 设中间数为x,则三个数为x-2,x,x+2
2. 和为(x-2)+x+(x+2)=3x=30
3. 解得x=10
4. 验证:8+10+12=30 ✓
3. 知识检索增强
  • 分步提示激活相关知识
  • 减少语义歧义
  • 避免概念混淆

示例

直接提问:
Q: 氟利昂对臭氧层的影响是?
A: 有益的保护作用(错误)

CoT提问:
Q: 逐步分析氟利昂对臭氧层的影响
A: 1. 氟利昂是含氯氟烃
   2. 在平流层紫外线分解释放氯原子
   3. 氯原子催化臭氧分解
   4. 因此会破坏臭氧层

5. CoT的适用场景

5.1 最适合使用CoT的任务类型

1. 多步数学问题
  • 特征:需要超过3步计算
  • 优势:避免中间结果丢失
  • 示例:

    问题:商店有120个苹果,首日卖出1/3,次日卖出剩余的1/4,还剩多少?
    CoT解答:
    1. 首日卖出:120×1/3=40个
    2. 剩余:120-40=80个
    3. 次日卖出:80×1/4=20个
    4. 最终剩余:80-20=60个
2. 逻辑推理问题
  • 特征:需要假设和演绎
  • 优势:保持逻辑一致性
  • 示例:

    问题:如果所有A都是B,有些B是C,那么有些A是C吗?
    CoT解答:
    1. 前提1:A⊆B
    2. 前提2:B∩C≠∅
    3. 但A与C的交集不确定
    4. 结论:不能确定"有些A是C"
3. 复杂决策问题
  • 特征:多因素权衡
  • 优势:明确评估标准
  • 示例:

    问题:应该选择哪款笔记本电脑?
    CoT解答:
    1. 需求分析:主要用于编程和轻度游戏
    2. 选项A:CPU强但GPU弱
    3. 选项B:均衡配置但价格高
    4. 根据需求优先选择选项A

5.2 不太适合CoT的场景

1. 简单事实查询
  • 示例:"中国的首都是?"
  • 原因:单步检索即可完成
试着问一下 DeepSeek R1

问题:

中国的首都是?

已深度思考13.9秒

好的,我现在要回答用户的问题:“中国的首都是?”这个问题看起来挺直接的,但我还是得仔细想想,确保自己回答正确。首先,我需要确认中国现在的首都是哪个城市。根据我所学的知识,中国的首都是北京。不过,为了确保准确性,我应该回忆一下相关的知识点,避免犯低级错误。

首先,中国是一个有着悠久历史的国家,历史上多个朝代都有不同的首都。 ... ...

回答:

中国的首都是北京。

这也是很多人吐槽:问 DeepSeek R1 “1+1=?”,都得思考半分钟。

2. 创意生成任务
  • 示例:"写一首关于春天的诗"
  • 原因:分步推理可能限制创造性
3. 高度专业化问题
  • 示例:"量子场论中的重整化技术"
  • 原因:模型可能缺乏足够专业知识分步推导

KerryWu
679 声望171 粉丝

保持饥饿