当下大型语言模型(LLMs)已成为理解和生成自然语言的重要工具。然而,这些模型的传统运作方式主要局限于“语言空间”内,通过一系列语言表述的推理步骤(即思维链,Chain of Thought,简称CoT)来解决复杂问题。尽管这种方法在某些情况下有效,但语言空间并不总是最优的推理环境。为了探索LLMs在不受限制的潜在空间中进行推理的可能性,研究人员提出了一种新的范式——连续思维链(Chain of Continuous Thought,简称Coconut)。今天我们一起了解一下Coconut。
一、连续思维链(Coconut)方法概述
(一)语言模式与潜在模式的切换
Coconut 方法的核心在于 LLM 能够在 “语言模式” 和 “潜在模式” 之间灵活切换。在语言模式下,模型如同标准语言模型一样,以自回归方式生成下一个词元(token)。而在潜在模式中,模型直接利用前一个词元的最后隐藏状态作为下一个输入嵌入,此隐藏状态被定义为 “连续思维”,代表了模型当前的推理状态。
(二)特殊标记的运用
为了清晰界定潜在思维模式的起止,Coconut 引入了特殊标记和。例如,假设潜在推理发生在位置 i 和 j 之间,即当模型遇到时进入潜在模式,遇到时结束潜在模式。在潜在模式期间(i < t < j),模型使用前一个词元的最后隐藏状态 hi 作为输入嵌入,而非常规的词元嵌入。一旦潜在模式结束(t ≥ j),输入恢复为使用词元嵌入。
二、训练过程
(一)多阶段训练课程
Coconut 利用语言 CoT 数据对连续思维进行监督训练,采用多阶段训练课程。在初始阶段,模型首先在常规 CoT 实例上进行训练。随后,在第 k 个训练阶段,CoT 中的前 k 个推理步骤将被替换为 k × c 个连续思维,其中 c 是一个超参数,用于控制每个语言推理步骤被替换为的潜在思维数量。这种逐步替换的方式有助于模型逐步适应在潜在空间中进行推理。
(二)优化器状态重置与损失掩码
在训练阶段切换时,Coconut 会重置优化器状态,以确保每个阶段的训练独立性。此外,在训练过程中,模型对问题和潜在思维的损失进行掩码处理。需要注意的是,训练目标并非鼓励连续思维压缩已移除的语言思维,而是促进对未来推理的预测,这一点对于引导模型在潜在空间中进行有效推理至关重要。
(三)训练细节与计算挑战
Coconut 提出的连续思维是完全可微的,支持反向传播,这使得模型能够在训练过程中不断调整其推理策略。然而,在当前训练阶段安排 n 个潜在思维时,需要进行 n + 1 次前向传播。每次前向传播计算一个新的潜在思维,最后再进行一次额外的前向传播以获取剩余文本序列的损失。尽管可以使用键值(KV)缓存来节省重复计算,但多次前向传播的顺序性本质给并行计算带来了挑战,这也是 Coconut 在训练过程中需要解决的技术难题之一。
三、推理过程
(一)与标准语言模型解码的相似性
Coconut 的推理过程类似于标准语言模型解码,但在潜在模式下,它直接将前一个词元的最后隐藏状态作为下一个输入嵌入。在问题解决设置中,模型会在问题词元后立即插入标记,以触发潜在模式的开始。
(二)标记的处理策略
对于标记,Coconut 考虑了两种潜在策略。一种是训练一个二元分类器,使模型能够自主决定何时终止潜在推理;另一种是始终将潜在思维填充到固定长度。实验发现,这两种方法在效果上相当,都能有效地引导模型在潜在空间中完成推理过程。
四、实验设置与结果分析
(一)实验设置
-
模型选择
所有实验均使用预训练的 GPT - 2 作为基础模型,通过在其基础上应用 Coconut 方法来探索模型推理能力的提升。
-
不同任务的参数设置
-
数学推理任务
在数学推理实验中,为每个推理步骤设置 2 个潜在思维(即 c = 2)。模型除初始阶段外经历 3 个训练阶段,之后还有一个额外阶段,该阶段使用与倒数第二个阶段相同数量的连续思维(3 × c),但移除了所有剩余的语言推理链,以应对推理链长度超过 3 步的长尾分布情况。
-
逻辑推理任务
逻辑推理任务中,每个推理步骤使用一个连续思维(c = 1)。模型除初始阶段外经过 6 个训练阶段,因为这两个数据集中推理步骤的最大数量为 6。在最后阶段,模型完全使用连续思维进行推理以解决问题。
(二)基线模型与 Coconut 变体
- 基线模型
-
CoT
使用完整的推理链对语言模型进行监督微调训练,推理时模型先生成推理链再输出答案。
-
No - CoT
直接训练 LLM 生成答案,不使用推理链。
-
iCoT
模型使用语言推理链训练,并遵循精心设计的时间表,随着训练进行逐渐移除推理链开头的词元,直至仅剩下答案。推理时直接预测答案。
-
Pause token
仅使用问题和答案训练模型,不使用推理链,但在问题和答案之间插入特殊的标记,旨在为模型提供额外的计算能力以推导答案。
- Coconut 变体
-
w/o curriculum
不采用多阶段训练,直接使用最后阶段仅包含问题和答案的数据训练 Coconut,模型使用连续思维解决整个问题。
-
w/o thought
保持多阶段训练(逐步移除语言推理步骤),但不使用任何连续潜在思维。虽然在高层次想法上与 iCoT 类似,但训练时间表设置与 Coconut 一致,以确保严格比较。
-
Pause as thought
使用特殊的标记代替连续思维,并应用与 Coconut 相同的多阶段训练课程。
(三)实验结果
-
准确率与效率对比
在三个数据集(GSM8k、ProntoQA 和 ProsQA)上的实验结果表明,Coconut 在准确率和效率方面表现出色。在 GSM8k 实验中,Coconut 优于其他采用类似策略训练的架构,尤其超越了最新的基线模型 iCoT。较高的准确率表明其推理能力更强,而生成较少的词元则体现了更好的效率。
-
超参数 c 的影响
调整超参数 c(控制一个语言推理步骤对应的潜在思维数量)的实验显示,随着 c 从 0 增加到 1 再到 2,模型性能稳步提升。这表明在潜在空间中可以观察到与 CoT 类似的链式效应,进一步验证了 Coconut 在潜在空间推理的有效性。
-
不同任务中的表现
在另外两个合成任务中,Coconut 的变体(w/o thoughts 或 pause as thought)以及 iCoT 基线也取得了令人瞩目的准确率。特别是在 ProsQA 任务中,Coconut 及其变体和 iCoT 显著增强了推理能力,这表明潜在空间推理在需要大量规划的任务中具有明显优势。
五、理解 Coconut 中的潜在推理
(一)实验设置
-
控制潜在思维数量
Coconut 的设计允许在推理时通过手动设置标记的位置来控制潜在思维的数量。在针对 ProsQA 的实验中,测试了 Coconut 的不同变体,其中 k ∈ {0, 1, 2, 3, 4, 5, 6}。这些变体仅在推理时有所不同,共享相同的模型权重。
-
评估指标
应用了两组评估指标。一组基于最终答案的正确性,而不考虑推理过程;另一组用于对推理过程进行细粒度分析。具体而言,对于具有完整语言推理链(可视为图中的路径)的输出,将其分类为以下几种情况:
-
正确路径
输出是通往正确答案的最短路径之一。
-
较长路径
虽然是正确回答问题的有效路径,但比最短路径更长。
-
幻觉
路径包含不存在的边或不连通。
-
错误目标
在图中是有效路径,但目标节点不是所询问的节点。对于 No - CoT 和 k 较大的 Coconut,模型可能仅输出最终答案而无部分路径,分别属于 “正确标签” 或 “不正确标签” 类别。
(二)潜在与语言推理之间的插值
在 ProsQA 数据集上对不同推理方法的比较分析表明,随着更多推理通过连续思维完成(k 增加),最终答案准确率(图左侧)和正确推理过程的比率(图右侧 “正确标签” 和 “正确路径”)均有所提高。例如,一个案例研究显示,使用 CoT 训练的模型在陷入死胡同后会产生幻觉(如 “Every yumpus is a rempus”),而 Coconut(k = 1)输出的路径以不相关节点结束,Coconut(k = 2)则能正确解决问题。这进一步证明了 Coconut 在潜在空间推理的优势,以及随着潜在思维数量的增加,模型推理能力逐步提升的趋势。
(三)解释潜在搜索树
由于连续思维可以编码多个潜在的下一步,Coconut 中的潜在推理可被解释为一个搜索树,而非简单的推理 “链”。在潜在推理的第一步,模型可以探索多个潜在的下一步,每个下一步都可视为搜索树中的一个分支。例如,在 ProsQA 数据集中,对于以 “Alex” 为起点的推理,第一步可能有多个潜在节点,这些节点构成了搜索树的第一层分支。在第二步,前沿节点将成为 “Alex” 的孙节点。与标准的广度优先搜索(BFS)不同,Coconut 模型在潜在推理中能够优先考虑有希望的节点,同时修剪不太相关的节点。模型通过概率分布来估计每个节点到达目标的潜力,可视为一种隐式价值函数。例如,在某一推理步骤中,“lempus”、“zhorpus”、“grimpus” 和 “sterpus” 的价值分别为 0.33、0.16、0.32 和 0.01,模型会根据这些价值来决定下一步的探索方向。对模型在第一和第二个潜在思维中的并行性分析表明,在第一个潜在思维阶段(左面板),模型在推理路径上保持了显著的多样性,体现了对多种可能性的广泛探索;而在第二个潜在思维阶段(右面板),这种多样性有所缩小,表明模型在推理过程中逐渐聚焦于更有希望的路径。
Coconut的提出不仅为LLMs的推理能力带来了显著提升,还为我们理解模型的潜在推理过程提供了新的视角。通过将推理过程解释为在潜在空间中进行的搜索树,我们可以更深入地理解模型是如何在多个潜在步骤之间做出选择的。这种解释有助于我们揭示模型在推理过程中的隐式价值函数,即它如何估计每个节点到达目标的潜力。
此外,Coconut的成功还表明,在人工智能的发展中,我们应该不断探索新的方法和范式来突破现有的限制。通过将推理过程从语言空间扩展到潜在空间,我们可以为LLMs提供更广阔的思维空间,从而使其能够解决更加复杂和多样化的问题。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。