微信扫码
与创始人交个朋友
我要投稿
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 在复杂问题上的解决能力,但缺点也相当明显:
但抛开上述研究的弊端,这些研究都指明,无论是模型预训练、微调,还是提示词学习,当向 LLM 提供包含中间推理步骤的示例时,LLM 能相应地生成包含中间步骤的结果。
站在人类的视角,我觉得中间步骤能够有效改善LLM推理能力的原因不难理解:
而今年,来自斯坦福大学、Google等单位的学者在 ICLR 2024 的论文“Chain of Thought Empowers Transformers to Solve Inherently Serial Problems[5]”中,从表达能力的角度,通过理论分析和实验验证,探究了 CoT 为何能提升 decoder-only Transformer 的推理能力,特别是在解决固有串行问题方面的作用机制:
我觉得这篇文章比较有意思,感兴趣的可以看一看。
另外,中间步骤能带来的好处我觉得也是显而易见的:
我在文章开头澄清了,CoT 并不仅仅包含 CoT Prompting。而构造 CoT Few-shot Prompting是十分费力的,那么有没有办法不通过提示词,就能让 LLM 逐步生成推理步骤呢?
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 也基本不起作用。
既然 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”。
但这种“自生成类比提示法”也存在一些弊端:
前面我们介绍了如何不通过在提示词中人工定制少量示例来实现 CoT,但都还是通过提示词来实现 CoT,且这这些方法难以评估模型的内在推理能力。那么,LLMs 能否在不依赖预训练、微调和提示词学习的情况下进行有效推理?如果可以,能在多大程度上进行推理?
来自 Google 及其 DeepMind 团队的 Xuezhi Wang 等人在今年 5 月发表的论文“Chain-of-Thought Reasoning Without Prompting[8]”是我觉得最有意思的一篇。他们打破常规式地从简单改变解码过程出发,发现可以从原本不天然具备 CoT 能力的预训练 LLMs 中激发出 CoT 推理路径,而不需要依赖于传统的贪婪解码。他们实验发现,LLMs 的解码轨迹中自然会出现 CoT 推理模式,且当解码过程中存在 CoT 时,模型对最终答案的信心会增加。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-26
AGI前夜!别再卷技术了,快来拯救世界!
2024-12-26
微软 OmniParser:如何让机器 “看懂” 手机电脑界面?
2024-12-26
Token已死?AI认知的新范式正在崛起
2024-12-26
字节和BAT,谁能缚住AI苍龙?
2024-12-26
大模型语义分析之嵌入(Embedding)模型
2024-12-26
Anthropic:高效构建AI Agent的最佳实践范式
2024-12-26
微软CEO纳德拉给出AI时代的关键答案:先有组织进化,才有技术突破(附视频)
2024-12-26
10分钟了解大模型应用全貌 : 大模型应用架构(LLM application architecture)
2024-05-28
2024-08-13
2024-04-26
2024-08-21
2024-07-09
2024-06-13
2024-08-04
2024-04-11
2024-07-18
2024-07-01