Prompt工程 - 思维链
概述
随着语言模型参数规模的持续扩张,其可以更好的捕捉语言特征和结构,从而在语义分析、文本分类、机器翻译等自然语言处理任务中的表现显著增强。但是,在面对算术求解、常识判断和符号推理等需要复杂推理能力的任务时,模型参数规模的增长并未带来预期的性能突破,这种现象被称作Flat Scaling Curves。
人类在解决复杂问题时,通常会逐步构建推理路径以导出最终答案。基于这一理念,一种创新的Prompt 范式——**思维链提示(Chain-of-Thought,CoT)**被用于引导模型进行逐步推理。
定义
思维链提示(Chain-of-Thought,CoT)通过模拟人类解决复杂问题时的思考过程,引导大语言模型在生成答案的过程中引入一系列的中间推理步骤。这种方法不仅能够显著提升模型在推理任务上的表现,而且还能够揭示模型在处理复杂问题时的内部逻辑和推理路径。
CoT 方法的核心是构造合适的Prompt以触发大语言模型一步一步生成推理路径,并生成最终答案。
在CoT 核心思想的指引下,衍生出了一系列的扩展的方法。这些扩展的方法按照其推理方式的不同,可以归纳为三种模式:按部就班、三思后行和集思广益。
- 按部就班
- 模型一步接着一步地进行推理,推理路径形成了一条逻辑连贯的链条。在这种模式下,模型像是在遵循一条预设的逻辑路径,“按部就班”的一步步向前。以CoT、Zero-Shot CoT、Auto-CoT等方法为代表。
- 三思后行
- 模型每一步都停下来估当前的情况,然后从多个推理方向中选择出下一步的行进方向。在这种模式下,模型像是在探索一片未知的森林,模型在每一步都会停下来评估周围的环境,“三思后行”以找出最佳推理路径。以思维树(Tree of Thoughts, ToT)、思维图(Graph of Thoughts, GoT)等方法为代表。
- 集思广益。
- 模型同时生成多条推理路径并得到多个结果,然后整合这些结果,得到一个更为全面和准确的答案。在这种模式下,模型像是在召开一场智者的会议,每个智者都带来了自己的见解,最终通过讨论和整合,“集思广益”得出一个更优的结论。以Self-Consistency等方法为代表。

按部就班
按部就班模式强调的是逻辑的连贯性和步骤的顺序性。在这种模式下,模型一步接着一步的进行推理,最终得到结论。
少样本思维链(CoT)
- 通过手工构造几个一步一步推理回答问题的例子作为示例放入Prompt 中,来引导模型一步一步生成推理步骤,并生成最终的答案。
Zero-Shot CoT
- 通过简单的提示,如“Let’s think step by step”,引导模型自行生成一条推理链。
Auto-CoT
- 引入与待解决问题相关的问题及其推理链作为示例,以继续提升CoT的效果。相关示例的生成过程是由大语言模型自动完成的,无需手工标注。
三思后行
三思后行模式强调的是在决策过程中的融入审慎和灵活性。在这种模式下,模型在每一步都会停下来评估当前的情况,判断是否需要调整推理方向。这种模式的核心在于允许模型在遇到困难或不确定性时进行回溯和重新选择,确保决策过程的稳健性和适应性。
以思维树(Tree of Thoughts, ToT)为例介绍:
- 拆解:将复杂问题拆分成多个简单子问题,每个子问题的解答过程对应一个思维过程。
- 衍生:模型需要根据当前子问题生成可能的下一步推理方向。衍生有两种模式:样本启发和命令提示。
- 样本启发:以多个独立的示例作为上下文,增大衍生空间,适合于创意写作等思维空间宽泛的任务
- 命令提示:在Prompt 中指明规则和要求,限制衍生空间
- 评估:利用模型评估推理节点合理性。
- 搜索:从一个或多个当前状态出发,搜索通往问题解决方案的路径。
集思广益
集思广益模式强调的是通过汇集多种不同的观点和方法来优化决策过程。在这种模式下,模型不仅仅依赖于单一的推理路径,而是通过探索多种可能的解决方案,从中选择最优的答案。———— 多专家模式? X 不一样
- Self-Consistency
- 一种推理时的解码策略,用于提升大模型在复杂推理任务上的准确性。通过生成多条不同的思维链(Chain-of-Thought, CoT),然后对最终答案进行投票,选择最一致的答案。
- MoE (Mixture of Experts)
- 一种模型架构设计,在训练和推理中动态选择不同的“专家子网络”来处理不同类型的输入,以提高模型容量和效率。
Self-Consistency(自一致性) 是一种用于提升大语言模型(LLM)在复杂推理任务中准确性的推理优化策略。它通过“生成多条不同的思维链 → 比较结果 → 投票选择最一致答案”的方式,来减少模型单次生成的随机性和错误。
具体实现步骤:
- 在随机采样策略下,使用CoT 或Zero-Shot CoT 的方式来引导大语言模型针对待解决问题生成一组多样化的推理路径;
- 针对大语言模型生成的每个推理内容,收集其最终的答案,并统计每个答案在所有推理路径中出现的频率;
- 选择出现频率最高的答案作为最终的、最一致的答案。
