AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


DeepMind:CoT推理无需prompt也可进行,一文回顾CoT推理及其发展(上)
发布日期:2024-11-16 10:07:18 浏览次数: 1898 来源:机智流


LLM(大语言模型)或许已经深入读者你生活的方方面面,但不可否认的是,LLM自身的不可解释性易产生幻觉等问题,使我们难以信任LLM生成的回答。同时,在强逻辑推断、数学推断等问题上,LLM的能力往往远不及普通人类。但Openai o1模型的发布似乎让这一切有了些许转变。今天我们通过简要介绍几篇里程碑式的论文及其局限性,来盘一盘o1模型中起重要作用的CoT(思维链)的前世今生,让大家更深入地理解这项技术。

首先我觉得需要澄清的是,CoT 并不是指某个或某类具体的技术,而是一种引导模型解决复杂问题的方法论。思维链的概念是由 Google 在 NIPS 2022 的论文 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models[1]" 中首次提出的,其最初的含义即:让模型在输出答案之前展示出逐步的推理步骤,以辅助复杂问题的解决。因此 CoT 重点关注的是推理的中间步骤本身,而不是让模型呈现出推理中间步骤的某种或某类特定技术。但很多人会把 CoT 狭义地理解为“思维链提示词工程”,或说 CoT Prompting,我认为这是不对的。

核心思想:通过中间步骤得出最终答案

为了让模型具备解决复杂推理问题的能力,学者们付出了不少努力。比如,Ling 等人在 ACL 2017 的论文“Program Induction by Rationale Generation : Learning to Solve and Explain Algebraic Word Problems[2]”中构建了一个新的包含100,000个样本的代数问题数据集,包括问题、答案和理由;并提出了一个seq2seq模型,该模型生成一系列指令,当执行这些指令时,会生成理由;在此之后才选择答案。

随后来自 OpenAI 的 Cobbe 等人在 2021 年发表的论文“Training Verifiers to Solve Math Word Problems[3]”中构建了一个更大的具有自然语言原理的数学单词问题数据集(GSM8K),并使用它来微调 GPT-3。

同年,Nye 等人在论文“Show Your Work: Scratchpads for Intermediate Computation with Language Models[4]”中将算法的中间步骤编码为文本(scratchpad),并将其包含在训练数据中。例如,在长加法任务中,scratchpad 包含了标准长加法算法的中间结果。

然而研究发现,LLM 在单步推理任务(比如回答1+1=?)中,few-shot 和 zero-shot 都可以取得很好的效果,但是在需要推理的多步任务(复杂算术推理、常识推理、符号推理等)中,上述方法都变得不再有效。于是 Jason 等人在 NIPS 2022 论文“Chain-of-Thought Prompting Elicits Reasoning in Large Language Models”中首次将思维链示例引入提示词中,从而将推理过程分解为多个步骤,并在每个步骤中指导模型逐步进行推理,使模型能够理解和执行每个推理阶段所需的操作。这样 CoT Few-shot Prompting 的做法的确非常显著地改善了 LLM 在复杂问题上的解决能力,但缺点也相当明显:

  • 这是100B参数量级的LLM才能涌现的能力,小模型并不具备这种能力
  • 要求所提供的少量思维链示例(即 CoT Few-shot)具有广泛的代表性,并与广泛分布的文本示例相关。这就意味着不仅需要耗费人力在定制精致的提示词上,还需要花精力思考提示词示例的完备性和准确性
  • 在简单问题上,CoT Few-shot反而可能提供负增益

但抛开上述研究的弊端,这些研究都指明,无论是模型预训练、微调,还是提示词学习,当向 LLM 提供包含中间推理步骤的示例时,LLM 能相应地生成包含中间步骤的结果。

为什么中间步骤能够改善LLM的推理能力

站在人类的视角,我觉得中间步骤能够有效改善LLM推理能力的原因不难理解:

  • 降低认知负荷:复杂的问题往往涉及多个概念和环节,直接求解可能会让模型陷入混乱。通过中间步骤,可以将复杂问题分解为多个相对简单的子问题,使模型能够逐步处理每个子问题,从而降低认知负荷,更有条理地进行思考。
  • 明确问题结构:中间步骤有助于模型更好地理解问题的结构和逻辑关系。它可以像搭建积木一样,逐步构建起对整个问题的解决方案,使模型能够更清晰地把握问题的关键要素和求解方向。

而今年,来自斯坦福大学、Google等单位的学者在 ICLR 2024 的论文“Chain of Thought Empowers Transformers to Solve Inherently Serial Problems[5]”中,从表达能力的角度,通过理论分析和实验验证,探究了 CoT 为何能提升 decoder-only Transformer 的推理能力,特别是在解决固有串行问题方面的作用机制:

  • 一方面,生成中间步骤的Transformer可以解决任何固有的串行问题,只要其深度超过一个恒定的阈值
  • 另一方面,生成直接答案的Transformer要么需要很大的深度来求解,要么根本无法求解

我觉得这篇文章比较有意思,感兴趣的可以看一看。

另外,中间步骤能带来的好处我觉得也是显而易见的:

  • 透明化推理过程:中间步骤使模型的推理过程更加透明,用户可以清楚地看到模型是如何从已知信息逐步推导出最终答案的。这有助于用户更好地理解模型的行为,增加对模型的信任度。
  • 便于纠错和改进:当推理结果出现错误时,中间步骤可以帮助我们更容易地定位错误所在。通过检查中间步骤的合理性,我们可以发现模型在哪个环节出现了问题,从而有针对性地进行调整和改进。
  • 甚至可能有助于实现 AGI

能否不通过提示示例来实现 CoT?

我在文章开头澄清了,CoT 并不仅仅包含 CoT Prompting。而构造 CoT Few-shot Prompting是十分费力的,那么有没有办法不通过提示词,就能让 LLM 逐步生成推理步骤呢?

方法 1: "Let's think step by step"

Kojima 等人在 NeurIPS 2022 上发表的论文“Large language models are zero-shot reasoners[6]”提出了 Zero-shot CoT,这是一种更加简单的CoT。即仅仅通过在提示词中加入一句简单的“Let’s think step by step”就能让 LLM 自动输出中间的推理步骤。这种办法与最初 Jason 等人提出的 Few-shot CoT 相比,尽管在增强效果上略差,且需要两次调用 LLM(分别用于推理提取和答案提取),但可以被广泛地应用在所有文本生成任务上,具有通用性和任务无关性。当然,实验也表明,当模型很小时(小于60B),Zero-shot CoT 也基本不起作用

方法 2: LLMs as Analogical Reasoners

既然 Zero-shot CoT 具有通用性和简易性,而 Few-shot CoT 能带来更好的性能提升,那有没有办法可以对这两种方法进行融合呢?

由于 LLM 在知识储备方面比大部分人类还要强,在训练时已经积累了各种知识和各种案例,因此可以考虑“激发”LLM 去找出与问题相关的知识和案例,然后用这些知识和案例来推理解决问题。这便是 Michihiro Yasunaga 等人在 ICLR 2024 上发表的论文“Large Language Models as Analogical Reasoners[7]”的核心思想。这份工作提出让 LLM 自适应地自动生成相关的示例和知识,而不是人为地定制固定的或事先准备好的示例集。即,让 LLM 先不着急解题,而是先列出若干个与问题相关的例子,并最终打印出原问题,从而借助 LLM 自己生成的例子来推理解决原问题。这相当于让 LLM 帮我写 few-shot,自动生成了思维链示例。我讲这种方法称为“Self-generated Few-shot CoT”。

但这种“自生成类比提示法”也存在一些弊端:

  • 更适合参数量大的模型自我生成示例的优势在于更自包含和方便,能根据模型的全部训练数据生成更适合特定测试问题的示例,但可能因模型弱或未学习相关知识而无法生成有效示例;对比之下,检索示例的优势在于可靠性,但需要标注示例和复杂的检索步骤。实验结果表明,对于较大规模的语言模型,自我生成示例的方法表现更好,而对于较小规模的语言模型,检索示例的方法更优。
  • 提示词稳健性差:通过自我生成示例来改善语言模型的性能可能会受到特定提示短语的影响,本文工作也受到这种提示敏感性的影响

方法 3:Step-by-step Reasoning without training, pre-training and Prompting

前面我们介绍了如何不通过在提示词中人工定制少量示例来实现 CoT,但都还是通过提示词来实现 CoT,且这这些方法难以评估模型的内在推理能力。那么,LLMs 能否在不依赖预训练、微调和提示词学习的情况下进行有效推理?如果可以,能在多大程度上进行推理?

来自 Google 及其 DeepMind 团队的 Xuezhi Wang 等人在今年 5 月发表的论文“Chain-of-Thought Reasoning Without Prompting[8]”是我觉得最有意思的一篇。他们打破常规式地从简单改变解码过程出发,发现可以从原本不天然具备 CoT 能力的预训练 LLMs 中激发出 CoT 推理路径,而不需要依赖于传统的贪婪解码。他们实验发现,LLMs 的解码轨迹中自然会出现 CoT 推理模式,且当解码过程中存在 CoT 时,模型对最终答案的信心会增加。

思维链(CoT)解码方法:

  • 预训练语言模型无需提示即可推理:通过实验发现,仅考虑贪婪解码路径时,LLMs 推理能力有限;但考虑前 k 个解码路径中的替代路径时,许多任务中会自然出现 CoT 推理模式,表明 LLMs 具有内在推理能力,只是被贪婪解码掩盖。
  • CoT 解码提取 CoT 路径:提出 CoT 解码方法,根据模型对最终答案的信心(通过计算概率差异 Δ 来衡量)从解码路径中提取 CoT 路径。实验表明,CoT 路径的存在与模型对答案的信心高度相关,CoT 解码能有效提取 CoT 路径,显著提升模型推理性能,优于传统解码方法和基于模型概率的路径选择方法。

实验结果与分析

  • CoT 解码有效激发语言模型推理:在多个数据集和语言模型上进行实验,CoT 解码是唯一能有效提升语言模型推理能力的解码策略,能在不同模型和任务中显著提高准确率,部分情况下性能提升明显,还能缩小预训练模型与指令微调模型在推理能力上的差距。
  • CoT 解码有助于理解模型内在推理能力:通过在合成任务上的实验,发现正确 CoT 路径的出现与任务难度和预训练分布有关,任务越简单,越易找到正确推理路径;同时揭示了模型在推理中的弱点,如状态跟踪和计算顺序问题。此外,CoT 解码能更好展现模型解决问题的内在策略,不受外部提示影响。
  • CoT 解码与 CoT 提示结合效果更佳:CoT 解码与 CoT 提示相结合,能进一步提升模型推理性能,且 CoT 解码在与 CoT 提示结合时,与自一致性方法相比表现良好。

研究贡献与意义

  • 首次表明无需提示,仅通过改变解码过程就能激发 LLMs 的推理能力,挑战了以往认为 LLMs 无提示则无法有效推理的观点。
  • 提出的 CoT 解码方法能更好评估 LLMs 的内在推理能力,揭示预训练语言模型在多任务上的固有推理能力,且发现现有提示方法主要是将内在推理路径提前,而 CoT 路径在复杂合成任务中作用不同。
  • CoT 解码为提高 LLMs 推理能力提供了新视角和方法,对理解和改进语言模型推理能力有重要意义。

研究局限与未来方向

  • 探索替代解码路径会增加计算成本,未来可利用 CoT 解码路径微调模型以增强推理能力。
  • 当前答案概率差异衡量指标在开放式答案场景中不够精确,未来需研究更准确的方法。
  • 当前主要探索了在第一个解码步骤的分支情况,未来可探索在任何解码步骤进行分支并寻找最佳路径,但计算成本会更高,如何可靠识别最佳分支点是未来研究方向。
  • 当然,使用 CoT-decoding 方法只能应对预训练任务中频繁出现的任务,对于复杂的任务还是需要设计小样本 prompt 更有指导作用


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询