
大语言模型(LLM)中广泛研究和应用的一种方法,用于增强模型的推理能力和解决复杂问题的能力。
与直接生成答案的方式相比,思维链能够帮助模型以类人逻辑的方式逐步拆解问题,逐步推导最终答案。
它在解决需要多步推理或逻辑推断的问题时表现尤为突出。尤其在数学推理、常识推理、逻辑推理、符号推理、逻辑谜题、语言理解方面。
具体过程包括:
- 问题理解:明确问题的需求和背景。
- 逐步推导:通过逻辑推理逐步拆解问题。
- 验证与总结:确保推理的逻辑正确性,输出答案。
这种逐步推理方式模仿了人类的思考模式,特别适合需要多步推理的复杂任务。
应用场景:
- 数学推理:解决复杂的数学问题或多步计算。
- 逻辑推理:例如解谜题、逻辑断言。
- 问答系统:需要引用背景知识并进行多步推理的问答。
- 任务规划:生成细化的行动计划或解决方案。
- 对话生成:更复杂、连贯的对话逻辑。
- 科学研究:分析实验数据、推导科学结论。
一、模型规模
模型规模的影响:
-
大规模模型(>10B参数) :
- 思维链效果最优。
- 更好的语言理解能力和推理深度。
-
中小规模模型(1B-10B参数) :
- 可通过提供更多高质量的提示或微调改善效果。
-
小模型(<1B参数) :
- 思维链效果有限,因为模型可能无法很好地生成或理解复杂的逻辑过程。
注意事项:
- 思维链对模型的推理能力有提升作用,但效果依赖于模型本身的语言能力。
- 自然语言推理任务通常需要较大的模型来充分发挥思维链的潜力。
二、实现和扩展思维链的方法
(1)标准思维链(Standard Chain-of-Thought)
直接在问题提示后要求模型输出详细的推理过程。例如:
- 提示: "请逐步推导答案并解释理由。问题是:..."
- 输出:模型首先生成逻辑步骤,最后得出结论。
(2)自洽性验证(Self-Consistency)
在生成多个思维链后,统计不同链条的答案分布,通过投票机制选择最一致的答案。
- 应用于需要避免单一推理路径带来的偏差的场景。
- 提升了鲁棒性和准确性。
(3)问题分解(Problem Decomposition)
将复杂问题通过提示分解为多个独立的子问题,让模型分别解答后再汇总答案。
- 示例: "首先回答第一个子问题,接着回答第二个子问题..."
- 常用于任务规划、复杂决策等场景。
(4)反思与优化(Reflection and Refinement)
引导模型对初始生成的思维链进行自我审查,并修正可能的逻辑错误。
- 示例: "检查并验证你的推导过程是否合理。"
(5)知识补充(Knowledge Augmentation)
在模型生成思维链时,提供额外的知识背景或上下文信息,帮助模型更准确地推理。
- 使用外部知识库、文档或事实检索。
(6)多模态思维链(Multi-Modal Chain-of-Thought)
扩展至多模态场景,例如文本与图像联合推理,或文本与表格数据结合。
- 适合需要跨模态信息协同推理的任务,如视觉问答。
(7)提示优化(Prompt Engineering for CoT)
通过设计更有效的提示,例如加入明确的格式要求或示例,来引导模型生成更优质的思维链。
- 例子: "按照以下格式回答:1. 分析... 2. 推导... 3. 结论..."
三、具体案例
- 增强推理能力:通过将复杂问题拆解成多个子问题,COT显著增强了大模型的推理能力,降低了忽视关键细节的风险。
- 提高可解释性:通过展示中间推理步骤,COT使得大模型的推理过程更加透明和可解释,便于用户理解和评估。
- 提升可控性:通过逐步输出推理步骤,用户可以更好地控制模型的推理过程,避免模型成为无法控制的"黑盒"。
- 增强灵活性:COT技术几乎适用于所有类型的大模型,只需在few-shot样例中添加COT Prompt即可生效,无需重新训练模型。
论文中提出了 Zero-shot、One-shot、Few-shot 三种不同的 prompt 方法,如下图所示。
Few-shot


Zero-shot-CoT
零样本思维链(Zero Shot Chain of Thought,Zero-shot-CoT)提示过程是对 CoT prompting 的后续研究,引入了一种非常简单的零样本提示。他们发现,通过在问题的结尾附加"Let's think step by step"这几个词,大语言模型能够生成一个回答问题的思维链。从这个思维链中,他们能够提取更准确的答案。
其实 Zero-shot-CoT 是一个 pipeline。也就是说"Let's think step by step"这句话,只是通过这个 prompt 让LLM 尽可能生成一些思考过程,然后再将生成的 rationale(理由) 和 question 拼在一起,重新配合一个answer 指向的 prompt 如"The answer is "来激励模型生成答案。
从技术上讲,完整的零样本思维链(Zero-shot-CoT)过程涉及两个单独的提示/补全结果。在下图中,左侧生成一个思维链,而右侧接收来自第一个提示(包括第一个提示本身)的输出,并从思维链中提取答案。这个第二个提示是一个自我增强的提示。

LtM (Least to Most prompting)提示
Least-to-Most 和 CoT 不是选择关系,而是可以互相打配合的。具体怎么做呢?其实就是两步走,分别是:
- 分解问题

四、COT(Chain-of-Thought)的增强策略
主要包括以下几种:
-
结合验证和细化:
- 思维链推理过程中可能会出现误差,产生错误的推理步骤。为了减少这种现象,可以结合验证来获取反馈,并根据反馈改进推理过程。这与人类的反思过程类似。
- 例如,VerifyCoT设计了一种自然程序(NaturalProgram),允许模型产生精确的推理步骤,每个后续步骤都严格基于之前的步骤。
-
问题分解:
- COT通过将多步骤推理问题分解成多个中间步骤,分配给更多的计算量,生成更多的token,再进行求解。这种策略有助于更好地推理问题的每个部分。
-
利用外部知识:
- 在某些情况下,为了促进知识密集型任务,可以结合外部知识对不确定的例子进行重新推理,从而减少再分析中的事实错误。
-
投票排序:
- DIVERSE等策略利用投票机制消除错误答案,然后对每个推理步骤进行独立的细粒度验证,从而提高推理的准确性。
-
提高效率:
- 通过优化模型结构和算法,减少不必要的计算量,提高推理的效率。
-
偏差增强一致性训练(BCT):
- 针对COT可能产生的系统性偏见问题,引入了BCT无监督微调方案。这种方法可以训练模型在包含和不包含偏见特征的提示下给出一致的推理,减少偏见推理。实验表明,BCT可以显著降低偏差推理率,提高模型解释的可信度。
-
Zero-shot-COT:
- 引入了一种简单的零样本提示方法,通过在问题的结尾附加"Let's think step by step"等词语,使大语言模型能够生成一个回答问题的思维链。这种方法无需额外的训练数据,可以直接应用于各种推理任务。
五、CoT的局限性
- 首先 ,思维链必须在模型规模足够大时才能涌现。
所以思维链必须要探索,如何在较小的模型中进行推理,降低实际应用的成本。
- 其次 ,思维链的应用领域是有限的。
目前,思维链只是在一些有限的领域,比如数学问题,五个常识推理基准(CommonsenseQA,StrategyQA,Date Understanding 和 Sports Understanding 以及 SayCan)上显现出作用,其他类型的任务,像是机器翻译,性能提升效果还有待评估。
它强在,模型规模的提高,让语义理解、符号映射、连贯文本生成等能力跃升,从而让多步骤推理的思维链成为可能,带来"智能涌现"。