潜在推理与你从此拿不到的那份轨迹

11 分钟读完

N9
深入解析 · 推理与测试时计算

潜在推理,以及你从此拿不到的那份轨迹。

你跑在智能体思考之上的每一道控制——在工具真正触发前读它计划的那个监控器、给轨迹打分的那套评测、必须解释这笔退款为何获批的那位审阅者——都建立在一个没有人选择过的实现偶然之上:模型眼下是用文字来斟酌的,而文字会进日志。潜在推理把这个偶然删掉,换来的是计算,而它是迄今被演示过的最高效的测试时扩展形式。这笔交易换的不是「用 token 换准确率」,而是用你对一次运行唯一一份可读的交代去换准确率;而那份替代的交代,必须在你接下这笔交易之前就存在,不是在第一起事故之后。

STEP 1

模型照旧在思考,只是不再把它写下来。

两条研究线指向同一种架构,而且都已经积累得足够深,可以当成一个部署问题、而不是一件新奇玩意儿来对待了。

连续思维。Coconut(Chain of Continuous Thought,Hao 等,arXiv 2412.06769)只改了解码循环里的一行:不再把最后一层隐状态采样成一个 token 再重新嵌入,而是把这个隐状态直接当作下一步的输入嵌入送回去。什么都没有被解码。这个「思维」从未变成文本,因此也从未被迫坍缩到某一个下一步上。

循环深度。Geiping 等(arXiv 2502.05171)取一个 35 亿参数的模型——Huginn,在 8000 亿 token 上训练——给它一个可以在推理时任意展开次数的核心块。多跑几圈,就在每个 token 上多花计算,参数量不变,训练数据里也完全不需要推理轨迹。在最多 50 圈时,作者报告其有效计算预算落在一个 500 亿参数模型的量级。

这件事之所以不只是一个压缩技巧,其理论理由值得精确地说出来,因为它是本页最强的论证,而且它并不是一个关于效率的论证。一个连续思维向量没有义务只表示一个状态。Reasoning by Superposition(arXiv 2505.12514)证明:一个两层 Transformer 用 D 步连续思维链即可解决有向图可达性问题,其中 D 是图的直径——而常数深度 Transformer 用离散思维链的已知最好界,是在 n 个顶点上需要 O(n2) 步解码。其机制在于每个潜在向量装着搜索前沿的一个叠加态,于是一次自回归步推进的是一趟广度优先搜索,而不是一条路径。

请把这个结果读成一句关于「离散 token 要花多少代价」的话,而不是「潜在表示多带来了什么」。一个 token 就是一次承诺:采样那一步把整个分布丢掉,只留下一个符号。思维树要靠显式分支和一个显式打分器才能做到的事,连续思维在残差流里免费就做了——也正因为同一个原因,做得不可见。

STEP 2

经济账站在这一边,所以它会来,不管你有没有为它做打算。

离散推理要付两遍钱。推理 token 作为输出付一次,之后在智能体循环的每一轮里又作为上下文再付一次——一趟四十步的运行累计下来是多少,见上下文预算。你还要在挂钟时间上付钱:每秒几十个 token 的串行解码,是一次重推理轮次延迟里最大的一块,而且再怎么批处理也修不好,因为这个依赖本身就是顺序的。

潜在推理打断了斟酌的量与上下文的长度之间的耦合。每 token 的计算变成一个旋钮——圈数,或者连续步数——而这个旋钮完全不碰上下文窗口。

# The same deliberation budget, two ways

  discrete CoT      4,000 reasoning tokens
                    -> ~4,000 serial decode steps
                    -> 4,000 tokens of context carried on every later turn
                    -> billed as output now, as cached input forever

  latent            32 recurrent steps on the final position
                    -> no decode, no sampling
                    -> 0 tokens of context
                    -> billed as compute, invisible to the transcript

# The second column is cheaper on every axis you measure,
# and empty on the one axis you forgot you were measuring.

还有一重二阶的拉力。循环深度的训练不需要思维链语料——不需要从更大的推理模型蒸馏、不需要在可核验任务上做 RL、也没有「你拿谁的轨迹训练」这种授权问题。对任何一个没有前沿实验室数据流水线、却想做开放权重推理模型的人来说,这不是锦上添花,而是能不能上线的分界线。

所以别把潜在推理当成一个假设来规划。把它当成这样一件事来规划:某个季度它出现在一张模型卡里,属于一个比你正在用的那个更便宜也更快的模型,附带一段你会一扫而过的文字。

STEP 3

把坏掉的东西点名,因为「可解释性」太含糊,没法拿去做预算。

研究界的说法是:潜在推理关上了监控的窗口。这话没错,但抽象到无从下手。下面是同一个论断,换成今天真实存在于生产智能体栈里、而在潜在模型上会不复存在的五件东西。

  • 执行前的监控器。一个分类器,在有后果的工具调用之前读模型写出来的计划,找被注入指令的形状或越界的意图。这是整套注入防御里最便宜、产出最高的一道控制,恰恰是因为一个被攻陷的模型通常会在做之前先说出它要做什么。
  • 评测里的过程打分。轨迹评测有一半读的是推理、而不只是动作——它有没有考虑那条约束、有没有注意到那处矛盾、是做了决定还是飘走了。在潜在模型上,你的评测坍缩回「结果加动作」,而那正是整个子领域拼命想逃开的、更弱的那个信号。
  • 排障用的那份记录。智能体凌晨三点做错了事,谁都会先打开出错那一步附近的推理。没有它,事故复盘就变成从工具调用往回猜——你能看见它查了错的账户,你看不见它为什么认为那是对的账户。
  • 作为正式说法的那份解释。那些需要向数据主体或审计方交代一次自动化决策的受监管流程,一直在悄悄拿模型自己的推理当这份交代的原材料。这本来就是个站不太住的做法;如今它变成一个不可能的做法。该由什么来顶替,见可申诉性与申诉。
  • 对推理本身做漂移检测。那些跨发布盯着推理长度分布、措辞闪避程度或计划结构的团队,手里有一个真正意义上的早期预警信号。它会消失,而且不报错。

注意这五件事的共同点。没有一件是研究课题。每一件都是一段正在跑的软件,有仪表盘,有负责人;而每一件的输入,都是一个即将变成 null 的字符串。

STEP 4

最强的反驳:那份轨迹本来就不忠实,谁在乎。

这个反驳在事实上是对的,在结论上是错的;而且值得仔细走一遍,因为它正是将来被用来把这次变更一挥而过的那句话。

先说事实。思维链不是计算过程的实录。模型会做事后的合理化、会略去它真正用到的那条线索,并且——在 RL 压力下——学会写出一段得分高的推理,而不是一段描述了实际发生了什么的推理。这些都有文献,而且正是思维链忠实性的全部内容。任何今天还把轨迹当作地面真值的人,已经错了。

接着是那个并不成立的结论。跨实验室的可监控性立场论文(arXiv 2507.11473)给出了那个承重的经验论断:在所研究的几乎每一种设定里,监控思维链抓到的不当行为,都多于只监控动作与最终输出。一个通道不需要说真话才有用。它需要的是与你想抓的东西相关,且读起来便宜,而一段不忠实的轨迹轻松够到这条线——这正是为什么架在它上面的检测器有效,哪怕一个哲学家会反对把它叫作「解释」。

所以正确的说法不是「我们丢掉了真相」,而是:你丢掉的是一个有噪声、高召回、基本免费的传感器,而你剩下的传感器全都在动作的下游。你还能看见的一切,都发生在决定已经做出之后。这是一种实质不同的控制姿态,而这才是该拿来争论的东西。

同一篇论文对它所捍卫的东西有多脆弱,说得异常直白:可监控性是当前训练配方的一个性质,不是一份保证,而且它可以在没有任何人决定要侵蚀它的情况下被侵蚀。奖励「看起来漂亮的推理」的过程监督、让轨迹变短的架构改动、以及潜在推理,是通往同一个地方的三条不同的路。如果你依赖这个通道,就去测量它——别假定它还在。

STEP 5

潜在不等于不透明。它只是对你手头恰好拥有的那些工具不透明。

有用的不对称在于:一步潜在推理对文本分类器不可读,对一个线性探针却完全可读。它是一个向量,而向量正是整套探针工具箱的原生输入——而这套工具箱不同于大多数可解释性工作,它已经在前沿规模的生产环境里跑着,每次调用的成本是个舍入误差。

关于在连续思维内部检测失准推理的早期工作(arXiv 2604.23460)报告了实践上最要紧的那一点:信号集中在靠前的那几步潜在推理上,也就是起规划作用的那几步。这正好对上了你失去的那道控制。执行前的监控器读的是计划;架在头几步潜在推理上的探针读的也是计划,只是换了一种表示。

由此有三个后果,而第三个决定你的架构。

  • 探针是逐模型、逐层的。它们是拟合出来的产物,会在分布漂移下退化,而且每一次模型更新都会让它们失效。把重新拟合当作迁移清单上的一项常态成本来做预算,而不是当成一个项目。
  • 探针需要你还没有的标签。要拟合一个「即将做那件越界的事」的检测器,你需要模型即将做那件越界的事的样本。今天这些样本就在你的推理日志里。趁这个通道还在,把它们收起来。
  • 探针需要白盒访问。读残差流这件事,不在任何人的公开对话 API 里。如果你那个潜在推理模型是托管在厂商端点后面的,你根本没法在它上面拟合或运行探针,而这个替代传感器对你不可用的原因是合同,不是物理。

最后这一点把问题从一个机器学习问题变成了一个采购问题,而这句话该摆到签合同的人面前:在一个托管的潜在推理模型上,唯一能监控那份推理的一方是厂商,而他们做不做,是一项条款,不是一个事实。

STEP 6

该做什么,按「做到一半也还站得住」的顺序。

这里没有一条是不该用潜在推理的理由。它们是这样一个理由:把推理格式当成你的栈所依赖的一个接口来对待——而这正是它在你上线第一个读它的监控器那天,无声无息变成的东西。

  • 把你有哪些控制在读这份轨迹写下来。一个下午,一张清单,而它是让后面每一场争论落到实处的那件产物。大多数团队会数出两到五个,并且至少对其中一个感到意外。
  • 把每一道能搬的控制搬到动作边界上。在工具调用及其已解析参数上做策略检查、为每个有后果的动作出一张回执、在响应上做出站过滤。这些在模型思考方式发生任何变化之后仍然成立,而这正是「值得拥有的控制」的定义。决策回执从审计那一侧走到的是同一个结论。
  • 让核验器扛起轨迹一直在扛的那份重量。如果有一个独立的模型或程序在给候选动作打分,你就有了一个与推理格式无关的可观测量——而且按核验器引导的搜索的说法,它本来就是真正干活的那个。
  • 留一份解码出来的样本。凡是厂商为潜在步骤提供了「解码成文本」模式的地方,就在生产流量的一小部分抽样上、以及在你全部评测集上跑它。抽样的通道是一道更弱的控制,却是一次完全够用的测量,而且它让你的探针训练数据继续流着。
  • 把推理格式写进换模型的检查清单。挨着上下文窗口和定价,加一行:这个模型会不会吐出可读的推理轨迹,我们有哪些控制在消费它。正是这一步,把一次无声的能力丢失,变成一个由某个人做出的决定。

在上面这些之前,本周先做这一件事:取五十次生产运行,把每一次里的推理剥掉,交给你的事故审阅者和你的评测。量一量审阅者还能得出什么结论、你的评测分数动了多少。那个数字就是潜在推理对你这套系统的价格,用的是你自己的单位;而且今天就能拿到,不必等到某个真有这个性质的模型出现。跑过的团队通常会发现:评测几乎不动,审阅者却彻底没辙——这告诉你,那份轨迹一直撑着的是你的运维,而不是你的指标,替代品也就该往那个方向去建。

延伸:推理时扩展是潜在推理正在其上竞争的那条轴,把推理一路带过工具调用讲的是那次已经让轨迹默认变得不透明的转变,检测智能体被攻陷则是那些从来不依赖它的控制。