告别逐词蹦字,Transformer推理范式如何重塑?
摘要:慢思考的本质依然是通过生成更多的显性 Token 来换取计算时间。为了想得深,必须说得多。这一章的四篇论文都在尝试:能否在不输出废话的情况下,让模型在内部“空转”思考? 甚至打破自回归全局规划?
Transformer 的核心范式一直是“Next Token Prediction”——像接龙一样,一个词一个词地往后蹦。虽然 OpenAI o1 和 DeepSeek-R1 通过 Chain of Thought (CoT) 开启了“慢思考”时代,但其本质依然是通过生成更多的显性 Token 来换取计算时间。
这就带来了一个巨大的效率悖论:为了想得深,必须说得多。这一章我们看四篇极具代表性的论文(Huginn, COCONUT, TRM, TiDAR),它们不约而同地试图打破这一局限:能否在不输出废话的情况下,让模型在内部“空转”思考? 甚至打破自回归的束缚,进行全局规划?
Hugin:内生循环思考提升深度
Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach
这篇论文的核心在于打破大模型推理时计算量恒定的限制,提出了一种在“深度”上进行循环的架构,从而实现了在隐空间(Latent Space)进行递归推理。
🚨 核心痛点:固定计算图与动态难度的矛盾
传统的 LLM 一旦训练完成,其层数(Depth)是固定的。这意味着无论输入是简单的“1+1”还是复杂的数学证明,模型在生成每一个 Token 时消耗的 FLOPs是一样的 。这显然不符合直觉——难题应该需要更多的“思考时间”。因此我们有了COT和现在的Reasoning模式。
现状:为了处理难题,现在的 CoT 策略不得不强迫模型“自言自语”生成大量 Token,这导致了显存(KV Cache)的爆炸式增长和推理速度的线性下降。
目标:能否让模型在内部“停下来想一会儿”,但不占用输出带宽?
🛠️解决方案:循环深度架构
Huginn 提出了一种特殊的架构设计,试图在 Transformer 中原生实现“慢思考”。
如上图,模型包括三个部分
(P)Prelude: 相当于Encoder层,负责将 Input Token 映射为隐状态。
(R)recurrent block: 这是一个多层Transformer Layer,所有的思考都发生在这里,但是和传统Transformer不同的点在于,这个模块可以循环运行任意次。
(C)Coda:相当于输出头,对思考完成的隐状态进行token解码生成。
这本质上是“层参数共享”的极致应用。 模型通过动态决定 R 模块循环的次数,实现了在参数量不变的情况下,动态调整推理时的计算深度。为了防止深层循环导致的梯度消失或遗忘,模型在每一步循环都会注入原始输入的 Embedding,起到锚点(Anchor)的作用。
💡 深度洞察
高效推理:递归模块不产生线性增长的KV-Cache,只是不断更新递归参数
难度自适应:可以通过控制递归的轮数来对不同难度的问题实现自适应计算,不需要对所有难度的问题进行统一的思考或者不思考
Test Time Scaling:论文发现递归的模式同样存在Test-time scaling,更多的递归次数会带来持续的表现提升。
COCONUT:抛弃语言,用“直觉”思考
Meta: Training Large Language Models to Reason in a
Continuous Latent Space
如果说 Huginn 是在架构层面“折叠”了深度,那么 COCONUT则是在思维载体上进行了一次革命。它质疑了大模型推理的一个基本假设:为什么思考的过程必须用人类语言(Tokens)来表达?
🚨核心痛点:语言空间的局限性
由OpenAI-O1拉开序幕的Reasoning时代,当前的推理过程一般是
:Hidden State \(\rightarrow\) Logits \(\rightarrow\) Sampling (Token) \(\rightarrow\) Embedding \(\rightarrow\) Next Input。
这就引入了一些局限性
信息丢失:将高维连续的 Hidden State 坍缩为离散的 Token,会丢失大量非结构化的“直觉”信息。就像你脑海里有大量信息,却必须用一句话说出来。
效率低下:当CoT 中充斥着 "Let's think step by step", "Therefore" 等无意义的连接词。
线性约束:语言是线性的,但思维往往是发散的、网状的。之前很多parrallel思考的方案都是为了打破这个约束。
🛠️解决方案:连续思维链
COCONUT 提出了一种Latent Mode。
