外观
思维链 Chain-of-Thought (CoT)
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
一、什么是思维链?
思维链(Chain-of-Thought, CoT):通过让大语言模型将一个问题拆解为多个步骤,一步一步分析,逐步得出正确答案。针对复杂问题,LLM 直接给出最终答案更容易出错;CoT 首先是一种提示/推理范式。也可以收集 CoT 轨迹做 SFT,但「思维链」本身并不等于指令微调。
示例:在算术词题解答中给出每一步计算过程,而非仅给出最终答案;在常识推理中给出一系列语言推论步骤。
二、CoT 的本质
CoT 的本质是利用模型的生成能力和涌现能力来解决复杂或特殊问题。即将复杂任务拆解为多个简单子任务,指思维过程中连续逻辑推理步骤或关联的序列。
三、CoT 与标准提示学习的区别
| 维度 | 标准提示学习 | 思维链提示 |
|---|---|---|
| 输出形式 | 只给出最终输出 | 提供从输入到输出的完整推理路径 |
| 推理过程 | 不展示 | 模拟人类逐步思考解决复杂问题的过程 |
| 适用场景 | 简单任务效果好 | 多步推理任务上显著提升 |
| 模型要求 | 小模型也可用 | 仅在足够大的模型上有效 |
四、CoT 为什么能提高复杂推理能力?
| 优势 | 说明 |
|---|---|
| 分解复杂问题 | 将多步推理任务分解为多个简单子任务,降低问题难度 |
| 提供步骤示范 | 为每一步推理提供语言表达,示范如何逐步推理 |
| 引导组织语言 | 引导模型学习组织语言进行逻辑推理 |
| 加强逻辑思维 | 让模型模拟人类逻辑思维过程,强化推理能力 |
| 调动背景知识 | 语言表达可以激活模型的背景常识 |
| 提供可解释性 | 使模型的推理过程可解释,便于 Debug |
| 适用范围广 | 原则上适用于任何文本到文本的任务 |
| 单模型多任务 | 基于同一模型即可做思维链提示,无需针对每个任务微调 |
| 少样本学习 | 只需给出几个示范示例,不需要大量标注数据 |
五、适用场景
| 场景 | 说明 |
|---|---|
| 算术推理 | 数学文本问题解答,如 GSM8K 数据集上准确率提高两倍 |
| 常识推理 | CSQA、StrategyQA 等数据集上效果明显 |
| 符号推理 | 帮助模型推广到更长的未见过的序列,实现长度泛化 |
六、CoT 的不足
| 不足 | 说明 |
|---|---|
| 事实性不保证 | 生成的思维链不一定事实准确,需要进一步改进 |
| 模型规模依赖 | 成功依赖于较大规模语言模型,使用成本高 |
| 标注成本高 | 思维链标注成本高,不易大规模应用 |
| 易受提示影响 | 结果易受提示工程影响,变化大 |
| 内在机制不明 | 不能完全反映模型计算过程,需深入研究 |
| 简单任务提升有限 | 在一些简单任务上的效果提升不明显 |
七、CoT 与其他提示方法对比
| 方法 | 特点 | 对比 CoT |
|---|---|---|
| 标准提示 | 直接输入-输出 | CoT 提供完整推理路径 |
| Few-shot | 多示例学习 | CoT 在示例中加入推理步骤 |
| Self-Consistency | 多次采样投票 | 在 CoT 基础上增强一致性 |
| Auto-CoT | 自动生成推理链 | 减少 CoT 的人工标注成本 |
八、为什么模型规模越大 CoT 效果越好?
| 能力维度 | 说明 |
|---|---|
| 算术运算能力 | 参数量越大,基本算数运算能力越强 |
| 语义理解能力 | 更大模型可建立更丰富的词汇语义信息 |
| 逻辑推理能力 | 参数量提升可增强逻辑推理建模能力 |
| 知识表示能力 | 更大模型学习更丰富的知识,提供相关背景常识 |
| 长依赖建模能力 | 参数增加增强学习长距离依赖的能力 |
| 抽象建模和泛化 | 更大模型学到更抽象的知识表示并应用于新问题 |
| 计算资源支撑 | 更多计算资源支持训练更大模型,大数据集提供更丰富学习素材 |
九、改进方向与未来研究
当前改进方向
- 提高提示泛化能力:减少对具体示例的依赖,探索零示例泛化
- 自动生成提示:减少人工编写成本,探索自动生成思维链的方法
- 结合验证器:提高生成的事实准确性和推理正确性
- 小模型适配:研究在小模型上实现类似推理提升的技术
- 拓展任务范围:从算术推理拓展到更多语言任务
应用拓展方向
CoT 思路可应用于:复杂问题解决、程序合成(先输出自然语言说明再生成代码)、翻译(先逐词翻译再整合)、文本总结(先主题句再要点)、创意写作、可解释预测等场景。
十、对通用人工智能的启示
- CoT 提出了思路链提示这一新颖的训练范式,为增强语言模型推理能力提供了新思路
- 证明了语言表达的中间推理步骤对语言模型的重要作用
- 显示了模型规模增长对产生正确思路链的重要性
- 展示了语言模型的惊人推理潜力,通过简单提示就能实现强大推理