【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》
论文链接
1. 背景与动机
-
语言空间与推理的矛盾
目前大多数大语言模型(LLMs)在解决复杂问题时采用链式思维(Chain-of-Thought, CoT)方法,即利用自然语言逐步推导出答案。然而,论文指出:- 自然语言主要为文本连贯性服务,很多生成的词令(tokens)在推理上并非关键。
- 一些关键推理步骤需要复杂规划,但用语言表达往往使模型过早做出确定性选择,丧失灵活性。
- 从神经影像学的研究来看,人脑在进行推理任务时,其语言网络并不活跃,说明语言其实是为交流而优化,而非专门用于推理。
因此,作者提出:为何不让模型在一个“无限制的隐空间”中进行推理,再在必要时将结果转换为语言?
-
连续隐向量作为推理状态
论文引入了一个新的范式——Coconut(Chain of Continuous Thought)。其核心思想在于:- 利用模型最后一层的隐藏状态(hidden state)作为当前的“连续思维”(continuous thought),代表模型的内部推理状态。
- 不通过语言头将其解码为文字,而是直接将这一隐向量反馈给模型,作为下一个时间步的输入嵌入。
这样可以让模型在没有语言约束的情况下自由推理,同时仍然可以端到端地利用梯度下降进行训练citeturn0file0。
2. 方法与架构设计

2.1 基本模型与模式切换
-
标准语言模型的表示
给定一个输入序列 $ x = (x_1, x_2, \dots, x_T) $,模型通过嵌入
E t = [ e ( x 1 ) , e ( x 2 ) , … , e ( x t ) ] E_t = [e(x_1), e(x_2), \dots, e(x_t)] Et=[e(x1),e(x2),…,e(xt)]
得到隐藏状态 $ H_t $,最终通过 softmax 预测下一个 token(即
M ( x t + 1 ∣ x ≤ t ) = s o f t m a x ( W h t ) M(x_{t+1}|x_{\le t}) = \mathrm{softmax}(W h_t) M(xt+1∣x≤t)=softmax(Wht)
)。 -
从语言模式到隐模式的转换
Coconut 的核心改动在于:- 语言模式(Language Mode):与传统方法一致,模型生成词令序列。
- 隐模式(Latent Mode):在特定区间(由特殊 token 标记,如
<bot>与<eot>)内,模型不再使用词嵌入,而是直接使用前一步的隐藏状态作为下一个输入。这一过程即“连续思维”:- 假设位置 $ i $ 处为
<bot>,位置 $ j $ 为<eot>,那么在 $ i < t < j $ 的区域,输入为 $ h_{t-1} $ 而非 $ e(x_{t-1}) $。
- 假设位置 $ i $ 处为
- 当隐模式结束后,模型恢复使用常规词嵌入继续生成。
2.2 多阶段训练策略
-
训练目标与梯度传递
由于连续思维完全可微,论文采用标准的负对数似然损失(negative log-likelihood)进行训练,不过会对问题描述和隐思维部分进行掩码处理,确保损失只计算在剩余的语言输出上。 -
逐步替换语言推理
受到 Deng 等(2024)的启发,作者设计了一个多阶段训练课程:- 初始阶段:使用完整的语言推理链(CoT)的数据训练模型。
- 后续阶段:逐步将语言推理步骤替换为连续隐思维。这里引入超参数 ( c ),表示每一步语言推理被替换为 ( c ) 个连续思维。
- 如果原始推理链不足 ( k ) 步,则将全部推理步骤替换。每换一次阶段,都重置优化器状态以便更好地适应新的训练目标。
- 此外,在连续思维的开始和结束处分别插入 与 标记。
2.3 推理过程

-
推理时的模式切换
在推理阶段,与训练类似:- 模型在处理完问题后(即问题部分用语言模式处理完毕)插入 token,随后进入隐模式,直接使用隐藏状态进行推理。
- 对于何时结束隐模式,论文提出两种策略:
- 训练一个二分类器让模型自主决定何时结束隐推理。
- 固定隐推理的步数,即用固定长度的连续思维。
- 实验中,为了简单起见,两种方法表现相近,因此作者采用了固定步长的方案。
-
多次前向传播计算
在训练中,如果当前阶段有 ( n ) 个隐思维,则需要进行 ( n+1 ) 次前向传播来依次生成每个隐向量,最后一次前向传播用于计算剩余文本的损失。这种多次前向传播虽然可以借助 KV 缓存加速,但由于依赖前一步计算,仍然存在并行性挑战。
3. 实验设置与比较
3.1 数据集与任务
论文在三个数据集上评估模型性能,分别侧重不同的推理能力:
-
数学推理(GSM8k)
- 包含小学水平的数学题,题目多样且贴近实际。
- 训练时使用 Deng 等(2023)生成的合成数据集。
-
逻辑推理(ProntoQA)
- 题目利用虚构概念构造,要求模型根据给定条件判断某个陈述是否正确。
- 由于题目结构较简单,要求模型做出直观的下步预测。
-
规划密集型逻辑推理(ProsQA)
- 为解决 ProntoQA 中分支较少的问题,作者设计了一个新的数据集 ProsQA,其推理条件构造为随机生成的有向无环图(DAG),要求模型在较为复杂的图结构中搜索正确推理链。
3.2 基线与变种
论文与多种基线方法进行比较,包括:
-
CoT(Chain-of-Thought)
完整生成推理链后再给出答案。 -
No-CoT
模型直接生成答案,不包含任何中间推理步骤。 -
iCoT
采用内部化链式推理的策略,在训练过程中逐步移除推理链中的前几步(Deng et al., 2024)。 -
Pause Token
在问题与答案之间插入特殊 tokens,赋予模型额外计算能力(Goyal et al., 2023)。
另外,还探讨了Coconut的几种变体:
- w/o curriculum:直接使用仅包含问题和答案的最后阶段数据训练,而不使用多阶段训练。
- w/o thought:虽使用多阶段训练但不使用任何连续隐思维,相当于仅移除语言推理步骤。
- pause as thought:用 tokens 代替连续隐思维,采用相同的多阶段训练策略。
3.3 实验结果
-
总体表现(参见 Table 1)
- 在 GSM8k 上,标准 CoT 的准确率为 42.9%(生成 25 个 token),而 Coconut 达到 34.1%(生成仅 8.2 个 token),说明在生成效率上有明显优势。
- 在逻辑推理任务 ProntoQA 中,Coconut 与 iCoT 均达到了 99.8% 的高准确率,但生成 token 数量显著减少(9.0 vs. 3.0~92.5 token,不同基线有所不同)。
- 在规划要求更高的 ProsQA 上,Coconut 的准确率达到 97.0%,明显优于传统 CoT(77.5%)且生成 token 数也较少(14.2)。
-
超参数 ( c ) 的影响
实验表明,在 GSM8k 上,当每步隐思维的数量 ( c ) 从 0 增加到 2 时,模型性能呈稳步提升(见 Figure 3),说明“链式”连续思维能在隐空间中积累更多有效信息。 -
推理效率与时钟时间
除了准确率外,论文还比较了不同方法在推理过程中新生成 token 数量和平均推理时间,Coconut 在保持高准确率的同时大幅减少了生成 token 数,从而加快了推理速度(参见附录 B)。
4. 隐空间推理的深入分析
论文不仅在实验上展示了 Coconut 的优势,还对隐推理过程进行了详细的剖析与解释:
4.1 推理过程的隐搜索树解释
-
多候选路径编码
由于连续隐向量可以同时编码多个可能的下步推理,作者将其解释为一种隐式的广度优先搜索(BFS):- 在隐模式中,模型并没有立即确定唯一的下步选择,而是保留多个可能性,并在后续逐步淘汰不正确的路径。
- 这种机制使得模型在遇到复杂规划任务时更为稳健,能够在面对多个分支时延迟决策。
-
隐式价值函数
当模型从隐空间切换回语言模式时,可以观察到预测分布中各候选项的概率。作者将这种概率分布视为一种隐式的“价值函数”,用于评估每个候选路径(例如在图结构中的“子节点”)通向正确答案的潜力(参见 Figure 7 和 Figure 8)。
4.2 隐推理与语言推理的对比
-
延迟决策与规划能力
在传统 CoT 中,每一步生成都会“锁定”一个具体的文本描述,容易导致过早决策;而在隐空间中,模型可以延迟决策,利用后续信息逐步修正路径,从而在规划密集型任务(如 ProsQA)中表现更优。 -
节点高度与评价准确度
论文还提出了一个分析方法:- 定义搜索树中节点的“高度”为该节点到叶子节点的最短距离。
- 分析表明,对于高度较低的节点(即后续探索空间有限),模型能够更准确地分辨正确与错误的选项。而对于高度较高的节点,由于潜在分支较多,模型的区分能力会下降(见 Figure 9)。
4.3 模型平行探索的变化
- 从宽广探索到聚焦收敛
分析显示,在第一隐思维阶段,模型在候选路径上具有较高的多样性(即并行探索),而在第二阶段后,多数候选分布迅速收敛到少数高概率路径。这种变化表明模型在初期保持探索性,随后逐步聚焦到最有希望的解答路径。
5. 结论与未来方向
-
主要贡献
- 提出了 Coconut 这一全新的在连续隐空间中进行推理的方法,突破了传统 CoT 依赖自然语言表达的局限。
- 实验结果表明,尤其在规划密集型任务中,Coconut 能够提高推理准确率,同时大幅减少生成的 token 数,从而提升推理效率。
- 通过对隐搜索树的分析,展示了模型如何在隐空间中延迟决策、并行探索并最终收敛到正确解答。
-
未来工作
- 如何进一步优化多阶段训练过程、提高并行计算效率;
- 探索预训练阶段就引入连续隐思维,从而使模型能在更广泛的推理任务上泛化;
- 结合语言与隐空间推理的优势,开发更加高效且鲁棒的推理系统。
总结
这篇论文系统地阐述了一种新的大语言模型推理方法——Coconut,其核心在于让模型在一个连续的、无限制的隐空间中进行推理,通过多阶段训练逐步将传统语言推理替换为连续隐向量。实验结果和细致的分析表明,这种方法在逻辑、数学和规划密集型任务上均能展现出较传统方法更高的效率和准确率,同时为理解大模型内部推理机制提供了新的视角。
相关文章:
【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》
论文链接 1. 背景与动机 语言空间与推理的矛盾 目前大多数大语言模型(LLMs)在解决复杂问题时采用链式思维(Chain-of-Thought, CoT)方法,即利用自然语言逐步推导出答案。然而,论文指出: 自然语言…...
topN 相似度 torch实现
目录 优化版,去重相似度 topN 欧式距离版 没有去重复, 优化版,去重相似度 import torch import torch.nn.functional as F torch.manual_seed(42) # 假设 10 条数据,每条数据的特征维度是 128 data = torch.randn(10, 128)# 计算所有数据对之间的余弦相似度 cosine_simi…...
深度剖析 C 语言函数递归:原理、应用与优化
在 C 语言的函数世界里,递归是一个独特且强大的概念。它不仅仅是函数调用自身这么简单,背后还蕴含着丰富的思想和广泛的应用。今天,让我们跟随这份课件,深入探索函数递归的奥秘。 一、递归基础:概念与思想 递归是一种…...
goredis常见基础命令
基本操作 //删除键 exists,err: rdb.Exists(ctx,"key").Result() if err!nil{panic(err) } if exists>0{err rdb.Del(ctx,"key").Err()if err!nil{panic(err)} }string类型 //设置一个键值对 //0表示没有过期时间 err:rdb.Set(ctx,"key1",…...
【Linux网络】序列化、守护进程、应用层协议HTTP、Cookie和Session
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、序列化和反序列化2、守护进程2.1 什么是进程组?2.2 什么是会话? 3、应用层协议HTTP3.1 HTTP协议3.2 HT…...
JavaScript函数-arguments的使用
在JavaScript编程语言中,函数是构建复杂逻辑和实现代码复用的关键组件。虽然现代JavaScript(尤其是ES6及之后版本)提供了更多灵活的方式来处理函数参数(如剩余参数、默认参数等),但arguments对象仍然是一个…...
Hadoop常用操作命令
在NameNode节点格式化集群 初始化集群 hdfs namenode -format启动HDFS sbin/start-dfs.sh启动yarn sbin/start-yarn.sh启动NodeManager yarn-daemon.sh start nodemanager启动DataNode hadoop-daemon.sh start datanode启动SecondaryNameNode hadoop-daemon.sh start se…...
system verilog的流操作符
流操作符,有分为操作对象是一整个数组和单独的数据两种,例如bit [7:0] a[4]和bit [31:0] b,前者操作对象是数组,后者是单独一个较大位宽的数。 流操作符有<<和>>,代表从右向左打包和从左向右打包。 打包的…...
LLM2CLIP论文学习笔记:强大的语言模型解锁更丰富的视觉表征
1. 写在前面 今天分享的一篇论文《LLM2CLIP: P OWERFUL L ANGUAGE M ODEL U NLOCKS R ICHER V ISUAL R EPRESENTATION》, 2024年9月微软和同济大学的一篇paper, 是多模态领域的一篇工作,主要探索了如何将大模型融合到Clip模型里面来进一步提…...
计算机毕业设计SpringBoot+Vue.jst网上超市系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
python-静态方法和类方法
Java之类的编程语言还带有静态方法,Python类也拥有与静态方法明确对应的方法。此外,Python还拥有类方法,要比静态方法更高级一些。 静态方法与Java一样,即便没有创建类的实例,静态方法也是可以调用的,当然…...
什么是手机9008模式?如何进入9008
之前给大家分享了一些有关手机刷机的知识,今天给大家讲一讲如果刷机过程中不慎变砖应该如何应对(当然了,希望大家都不会遇到)😂😄 在给手机 Root 或刷机时,线刷 9008 指的是利用 高通 9008 模式…...
嵌入式之指针
在嵌入式系统中指针是一种非常重要的概念。它们用于直接访问内存地址,能够提高程序的灵活性和效率。 一、基本概念 1. 指针的基本概念 定义:指针是一个变量,其值为另一个变量的地址。通过指针,可以间接访问和修改该变量的值。声…...
网络安全研究
1.1 网络安全面临的威胁 网络安全面临的威胁呈现出多样化和复杂化的趋势,给个人、企业和国家的安全带来了严峻挑战。以下是当前网络安全面临的主要威胁: 1.1.1 数据泄露风险 数据泄露是当前网络安全的重大威胁之一。根据国家互联网应急中心发布的《20…...
Git入门:数据模型 to 底层原理
版本控制系统(VCS)是软件开发中不可或缺的工具,而Git作为现代版本控制的事实标准,其底层设计远比表面命令更加优雅。本文将从数据模型的角度,揭示Git的核心工作原理。 Git的核心概念 1. 快照(Snapshot&am…...
openharmony中hdf框架的驱动消息机制的实现原理
openharmony中hdf框架的驱动消息机制的实现原理 在分析hdf框架时发现绕来绕去的,整体梳理画了一遍流程图,发现还是有点模糊甚至不清楚如何使用的,详细的每个点都去剖析细节又过于消耗时间,所以有时间便从功能应用的角度一块块的去…...
HTTP SSE 实现
参考: SSE协议 SSE技术详解:使用 HTTP 做服务端数据推送应用的技术 一句概扩 SSE可理解为:服务端和客户端建立连接之后双方均保持连接,但仅支持服务端向客户端推送数据。推送完毕之后关闭连接,无状态行。 下面是基于…...
二分图检测算法以及最大匹配算法(C++)
上一节我们学习了有向图中的最大连通分量. 本节我们来学习二分图. 二分图是一种特殊的图结构, 能够帮助我们高效地解决这些匹配和分配问题. 本文将带你了解二分图的基本概念, 判定方法, 最大匹配算法以及实际应用场景. 环境要求 本文所用样例在Windows 11以及Ubuntu 24.04上面…...
Keepalive基础
一。简介和功能 vrrp协议的软件实现,原生设计目的是为了高可用ipvs服务 功能: 1.基于vrrp协议完成地址流动 2.为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 3.为ipvs集群的各RS做健康状况检测 4.基于脚本调用接口…...
计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【Java消息队列】应对消息丢失、重复、顺序与积压的全面策略
应对消息丢失、重复、顺序与积压的全面策略 引言kafka消息丢失生产者消费者重复消费顺序消费消息积压生产者消费者其他RabbitMQ消息丢失生产者事务机制,保证生产者发送消息到 RabbitMQ Server发送方确认机制,保证消息能从交换机路由到指定队列保证消息在 RabbitMQ Server 中的…...
AI大模型学习(三): LangChain(二)
Langchain构建聊天机器人 安装依赖 pip install langchain_community Chat History:它允许聊天机器人"记住"过去的互动,并在回应后续问题时考虑他们 代码 # 创建模型 from langchain_core.messages import HumanMessage from langchain_core.prompts import ChatP…...
apply的用法
apply 是一个在编程语言中常见的函数,它在不同的上下文和语言中有不同的用途。以下是 apply 在常见编程语言中的几种常见用法: 1. Python 中的 apply 方法 在 Python 中,apply 主要用于 pandas 库中的 DataFrame 或 Series 对象,…...
【论文解读】TransMLA: Multi-Head Latent Attention Is All You Need
论文链接 1. 论文背景与问题动机 现代大规模语言模型(LLM)在推理时往往遇到通信瓶颈,主要原因在于自注意力机制中需要缓存大量的 Key-Value(KV)对。例如,对于 LLaMA‑65B 这种模型,即使采用 8…...
CentOS 下安装和配置 HTTPD 服务的详细指南
CentOS 下安装和配置 HTTPD 服务的详细指南 CentOS 下安装和配置 HTTPD 服务的详细指南1. 环境准备2. 安装 HTTPD 服务2.1 更新系统2.2 安装 HTTPD2.3 启动 HTTPD 服务2.4 检查 HTTPD 服务状态 3. 配置防火墙3.1 开放 HTTP 和 HTTPS 端口3.2 验证防火墙规则 4. 配置 HTTPD4.1 主…...
VUE3中子组件改变父组件传过来的值(props)的方法和使用场景详解
在 Vue 3 中,子组件改变父组件传过来的值(props)的方法主要有以下几种:通过事件发射、使用 v-model、模拟 .sync 修饰符的功能(Vue 3 中已移除),以及使用 ref 或 reactive。下面我将结合代码示例…...
登录-06.JWT令牌-生成和校验
一.JWT令牌的生成和校验 JWT令牌生成 想要生成JWT令牌,那么就要首先引入JWT令牌的相关依赖, <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version>…...
【Git】多人协作
文章目录 完成准备工作多人协作场景一场景二远程分支删除后,本地 git branch -a 依然能看到的解决办法 完成准备工作 在之前,我们所完成的工作如下: 基本完成 Git 的所有本地库的相关操作,git基本操作,分支理解&#…...
Python爬虫-破解字体加密技术
前言 本文是该专栏的第77篇,后面会持续分享python爬虫干货知识,记得关注。 字体加密是一种常见的反爬虫技术,通过自定义字体文件和字符映射来保护网页内容,防止爬虫直接获取文本信息。 在文章《Python爬虫-猫眼电影的影院数据》中,笔者有详细介绍过猫眼的相关数据采集。…...
邮件安全之发件人伪造
电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议,具体功能如下: SMTP:全称Simple Mail Transfer Protocol,即简单邮件传输协议,主要用于发送邮件,使用端口号25。 IMAP:全称Internet Mail Acce…...
