解密Prompt系列68. 告别逐词蹦字 - 重塑 Transformer 的推理范式
<p>Transformer 的核心范式一直是“Next Token Prediction”——像接龙一样,一个词一个词地往后蹦。虽然 OpenAI o1 和 DeepSeek-R1 通过 Chain of Thought (CoT) 开启了“慢思考”时代,但其本质依然是通过生成更多的显性 Token 来换取计算时间。</p><p>这就带来了一个巨大的效率悖论:为了想得深,必须说得多。这一章我们看四篇极具代表性的论文(Huginn, COCONUT, TRM, TiDAR),它们不约而同地试图打破这一局限:能否在不输出废话的情况下,让模型在内部“空转”思考? 甚至打破自回归的束缚,进行全局规划?</p>
<h1 id="hugin内生循环思考提升深度">Hugin:内生循环思考提升深度</h1>
<blockquote>
<ul>
<li>Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach</li>
</ul>
</blockquote>
<p>这篇论文的核心在于打破大模型推理时计算量恒定的限制,提出了一种在“深度”上进行循环的架构,从而实现了在<strong>隐空间(Latent Space)</strong>进行递归推理。</p>
<h2 id="-核心痛点固定计算图与动态难度的矛盾">🚨 核心痛点:固定计算图与动态难度的矛盾</h2>
<p>传统的 LLM 一旦训练完成,其层数(Depth)是固定的。这意味着无论输入是简单的“1+1”还是复杂的数学证明,模型在生成每一个 Token 时消耗的 FLOPs是一样的 。这显然不符合直觉——难题应该需要更多的“思考时间”。因此我们有了COT和现在的Reasoning模式。</p>
<ul>
<li>现状:为了处理难题,现在的 CoT 策略不得不强迫模型“自言自语”生成大量 Token,这导致了显存(KV Cache)的爆炸式增长和推理速度的线性下降。</li>
<li>目标:能否让模型在内部“停下来想一会儿”,但不占用输出带宽?</li>
</ul>
<h2 id="️解决方案循环深度架构">🛠️解决方案:循环深度架构</h2>
<p>Huginn 提出了一种特殊的架构设计,试图在 Transformer 中原生实现“慢思考”。<br>
<img alt="image" loading="lazy" src="https://img2024.cnblogs.com/blog/1326688/202601/1326688-20260115085105177-208095282.png" class="lazyload"></p>
<p>如上图,模型包括三个部分</p>
<ul>
<li>(P)Prelude: 相当于Encoder层,负责将 Input Token 映射为隐状态。</li>
<li>(R)recurrent block: 这是一个多层Transformer Layer,所有的思考都发生在这里,但是和传统Transformer不同的点在于,这个模块可以循环运行任意次。</li>
<li>(C)Coda:相当于输出头,对思考完成的隐状态进行token解码生成。</li>
</ul>
<p><strong>这本质上是“层参数共享”的极致应用</strong>。 模型通过动态决定 R 模块循环的次数,实现了在参数量不变的情况下,动态调整推理时的计算深度。为了防止深层循环导致的梯度消失或遗忘,模型在每一步循环都会注入原始输入的 Embedding,起到锚点(Anchor)的作用。</p>
<h2 id="-深度洞察">💡 深度洞察</h2>
<ol>
<li>
<p><strong>高效推理</strong>:递归模块不产生线性增长的KV-Cache,只是不断更新递归参数</p>
</li>
<li>
<p><strong>难度自适应</strong>:可以通过控制递归的轮数来对不同难度的问题实现自适应计算,不需要对所有难度的问题进行统一的思考或者不思考</p>
</li>
<li>
<p><strong>Test Time Scaling</strong>:论文发现递归的模式同样存在Test-time scaling,更多的递归次数会带来持续的表现提升。</p>
</li>
</ol>
<h1 id="coconut抛弃语言用直觉思考">COCONUT:抛弃语言,用“直觉”思考</h1>
<blockquote>
<ul>
<li>Meta: Training Large Language Models to Reason in a<br>
Continuous Latent Space</li>
</ul>
</blockquote>
<p>如果说 Huginn 是在架构层面“折叠”了深度,那么 COCONUT则是在思维载体上进行了一次革命。它质疑了大模型推理的一个基本假设:为什么思考的过程必须用人类语言(Tokens)来表达?</p>
<h2 id="核心痛点语言空间的局限性">🚨核心痛点:语言空间的局限性</h2>
<p>由OpenAI-O1拉开序幕的Reasoning时代,当前的推理过程一般是<br>
:Hidden State <span class="math inline">\(\rightarrow\)</span> Logits <span class="math inline">\(\rightarrow\)</span> Sampling (Token) <span class="math inline">\(\rightarrow\)</span> Embedding <span class="math inline">\(\rightarrow\)</span> Next Input。</p>
<p>这就引入了一些局限性</p>
<ul>
<li><strong>信息丢失</strong>:将高维连续的 Hidden State 坍缩为离散的 Token,会丢失大量非结构化的“直觉”信息。就像你脑海里有大量信息,却必须用一句话说出来。</li>
<li><strong>效率低下</strong>:当CoT 中充斥着 "Let's think step by step", "Therefore" 等无意义的连接词。</li>
<li><strong>线性约束</strong>:语言是线性的,但思维往往是发散的、网状的。之前很多parrallel思考的方案都是为了打破这个约束。</li>
</ul>
<h2 id="️解决方案连续思维链">🛠️解决方案:连续思维链</h2>
<p>COCONUT 提出了一种Latent Mode。虽然架构仍基于 Transformer,但它改变了数据流转方式:</p>
<p><img alt="image" loading="lazy" src="https://img2024.cnblogs.com/blog/1326688/202601/1326688-20260115085105194-1917453690.png" class="lazyload"></p>
<ol>
<li><strong>推理模式:Latent Mode (隐模式)</strong></li>
</ol>
<p>Coconut 引入了一种新的推理模式。模型可以在Language Mode和Latent Mode之间切换。</p>
<p>机制:当模型进入Latent Mode后(输出<bot>特殊字符),它不再将 Last Hidden State 解码为 Token。而是直接将这个 Hidden State 作为下一步的 Input Embedding 喂给模型。</p>
<p>这就像是模型在“自言自语”,但是用只有它自己听得懂的“脑电波”(向量)在交流,而不是用人类语言。这种“连续思维”一直持续到模型输出<eot>特殊字符,然后再切回语言模式输出最终答案。</p>
<ol start="2">
<li><strong>训练策略:多阶段课程学习</strong></li>
</ol>
<p>为了让模型学会使用上述的思考向量信息,论文使用了渐进式的训练方案,如下图</p>
<p><img alt="image" loading="lazy" src="https://img2024.cnblogs.com/blog/1326688/202601/1326688-20260115085105334-1938958125.png" class="lazyload"></p>
<ul>
<li>Stage 0:先用标准的 CoT 数据训练模型,让它学会逻辑。</li>
<li>Stage 1 ~ k:逐步“擦除”CoT 中的文本。
<ul>
<li>例如,在 Stage 1,把 CoT 的第 1 步推理文本去掉,替换为 <span class="math inline">\(c\)</span> 个 Continuous Thoughts(隐向量)。模型必须学会用这 <span class="math inline">\(c\)</span> 个向量来承载原本那句话的逻辑信息</li>
<li>随着训练进行,逐步把更多的文本推理步骤替换为隐向量。</li>
</ul>
</li>
<li>最终形态:所有的中间推理文本都被“内化”成了连续的隐向量,模型只输出最终答案。</li>
</ul>
<h2 id="-深度洞察-1">💡 深度洞察</h2>
<ol>
<li><strong>核心能力涌现:隐式 BFS (Implicit Breadth-First Search)</strong></li>
</ol>
<p>这是最精彩的发现。相比原有COT是线性的,同一时刻只能推理一个思路。但COconut因为Hidden State是高维连续向量,所以它可以处于“叠加态”,可以同时编码多个可能的推理路径。隐式进行了广度搜索。</p>
<ol start="2">
<li><strong>推理效率提升</strong></li>
</ol>
<p>虽然和Hugin相比依旧需要使用KV-cache,但因为连续向量的数量往往显著小于token数,所以推理效率会有提升,同时也因为省略了推理token采样的步骤,而进一步提升吞吐。</p>
<ol start="3">
<li><strong>超越人了语言思维密度</strong></li>
</ol>
<p>尤其对于一些复杂多路径规划任务,以及部分需要<code>look ahead</code>推理的任务,因为隐向量比token包含广度更大的思考信息,因此效果有所提升。</p>
<p>看到这里我也有个想法,逻辑上hidden thought一定会比token携带更多的信息量,但最大的问题就是无法可视化,那能否想一会,说两句,想一会说两句,也就是把hidden thought和token reasoning通过interleave串联起来?</p>
<h1 id="trm-像改代码一样迭代推理">TRM: 像改代码一样迭代推理</h1>
<blockquote>
<ul>
<li>Less is More: Recursive Reasoning with Tiny Networks</li>
</ul>
</blockquote>
<p>TRM和前面的Hugin是非常相似的,几乎都是走的“循环思维载体”的思路。但是TRM多了双流递归的设计,把循环过程中的草稿和打磨这两个不同信息拆分开处理。</p>
<p>和COCONUT也有相似之处,只不过COCONUT更像是潜意识在时间轴上(自回归推理)的延伸,而TRM是在质量轴上的不断迭代修正。</p>
<h2 id="-核心痛点自回归的落子无悔">🚨 核心痛点:自回归的“落子无悔”</h2>
<p>Reasoning最大的问题,就是前面COCONUT提到的“落子无悔”问题,想要进一步反思或者修正,就需要继续显性延伸你的思考链路进行反思。</p>
<p>论文的目标:能否构建一个模型,它的推理过程不是“生成下一个词”,而是不断修正当前的答案?这需要模型具备迭代修正的能力。</p>
<h2 id="️-解决方案trm-tiny-recursive-model">🛠️ 解决方案:TRM (Tiny Recursive Model)</h2>
<p>TRM 的架构设计非常精简,它直接回到了最本质的递归结构,如下图</p>
<p><img alt="image" loading="lazy" src="https://img2024.cnblogs.com/blog/1326688/202601/1326688-20260115085105282-1502186343.png" class="lazyload"></p>
<ol>
<li><strong>双流递归状态</strong></li>
</ol>
<p>TRM 维护两个核心状态,并在循环中不断更新它们 :</p>
<ul>
<li>Latent (Z):推理状态。这和Huginn多步递归循环的R Block类似,都是思维的载体,存储不断更新的思维上下文。</li>
<li>Prediction (Y):当前答案的草稿。这是 TRM 最独特的地方。它把“当前的预测结果”Embedding 之后,作为下一轮的输入喂给自己。(对比Hugin所有信息都在R,TRM把已经形成的预测结果解耦出来了)</li>
</ul>
<p>推理循环逻辑 (The Loop):</p>
<p></p><div class="math display">\[\begin{aligned}
z_{t+1} &= \text{Net}(x, y_t, z_t) \quad \text{// 思考:基于当前草稿和思维,更新思维} \\
y_{t+1} &= \text{Net}(y_t, z_{t+1}) \quad \text{// 修改:基于新的思维,修正草稿}
\end{aligned}
\]</div><p></p><p>这就像我们写代码:先写个大概 (<span class="math inline">\(y_0\)</span>) -> 脑子转一下 (<span class="math inline">\(z_1\)</span>) -> 改一行代码 (<span class="math inline">\(y_1\)</span>) -> 发现有个 Bug (<span class="math inline">\(z_2\)</span>) -> 再改一行 (<span class="math inline">\(y_2\)</span>)。</p>
<ol start="2">
<li><strong>架构极简主义</strong></li>
</ol>
<ul>
<li>Tiny Network:模型只有 2 层 Transformer Layer,参数量仅 5M - 7M</li>
<li>参数共享:同一个网络(Net)在每一次循环中被反复使用</li>
<li>全量推理模式:并非自回归模型token by token的推理,而是每一步循环都生成全量的Y,并且每一步都对全量的Y进行修正</li>
</ul>
<h2 id="-深度洞察-2">💡 深度洞察</h2>
<ol>
<li><strong>全量生成的思维转换</strong>:TRM 的生成方式更像 Diffusion Model(扩散模型),是从模糊到清晰的过程,而不是从左到右的过程。但这同样也约束了当前TRM只能用于固定长度内容的输出。</li>
<li><strong>Deep Supervision</strong>:训练时,TRM 并不只在最后一步计算 Loss,而是对每一步生成的草稿都计算 Loss。这强迫模型在第一步就给出一个“大致正确”的解,然后在后续步骤中精细化。</li>
</ol>
<h1 id="tidar">TiDAR</h1>
<blockquote>
<ul>
<li>TiDAR: Think in Diffusion, Talk in Autoregression</li>
</ul>
</blockquote>
<p>英伟达的这篇论文,则是和TRM思路非常相像,都是在生成阶段抛弃自回归“蹦字”的方案,采用全局生成并不断打磨的思路。只不过TIDAR引入了扩散模型,并切让模型在同一个 Forward Pass(前向传播)里,既作为“起草者”并行地想,又作为“验证者”自回归地确认。</p>
<h2 id="-核心痛点既要还要的困境">🚨 核心痛点:既要还要的困境</h2>
<p>在大模型推理中,我们一直面临一个trade-off</p>
<ul>
<li>AR:自回归模型由于符合语言的因果律,质量最高,但推理速度慢</li>
<li>Diffusion:非自回归模型可以并行生成,吞吐量极高但往往质量不佳,并且质量会随着生成的token个数而持续下降。</li>
</ul>
<p>现在已有的一些解决方案例如DeepSeek提出的MTP,同时预测多个token,也是在尝试解决以上的问题,但MTP的本质还是自回归的。</p>
<p>还有Speculative decoding,使用一个轻量级的AR模型去生成多个token的草稿,再用大模型并行对草稿的每个token进行验证,但这样就需要同时部署多个模型进行推理。</p>
<h2 id="️-解决方案-think--talk的双流协同">🛠️ 解决方案: Think + Talk的双流协同</h2>
<p>TiDAR 的模型结构则是在speculative Decoding的基础上,把草稿模型和验证模型合并在了一个模型结构里,通过特殊掩码实现同时推理。</p>
<ol>
<li><strong>Think in Diffusion</strong></li>
</ol>
<p>在推理时,TiDAR 并不像 GPT 那样一次只预测一个词。它使用 Diffusion的方案,在当前位置之后的K个槽位上,同时生成所有候选Token。这 <span class="math inline">\(K\)</span> 个 Token 是<strong>并行</strong>生成的。它利用了扩散模型的全局视野。</p>
<ol start="2">
<li><strong>Talk in Autoregression"</strong></li>
</ol>
<p>生成的这K个候选词并不能直接作为答案,因为 Diffusion 的逻辑一致性不如 AR。TiDAR 在同一个前向传播中,利用 AR 的逻辑对这K个候选词进行拒绝采样。</p>
<p><img alt="image" loading="lazy" src="https://img2024.cnblogs.com/blog/1326688/202601/1326688-20260115085105141-52488943.png" class="lazyload"></p>
<ol start="3">
<li><strong>双流的核心实现:结构化注意力掩码</strong></li>
</ol>
<p>为了在一次向前推理时,同时实现以上两种推理,TIDAR设计了一个特殊的二维MASK,将序列分成了两个部分</p>
<ul>
<li>Diffusion MASK:这个区域的token直接是全连接的,为了让模型能够根据上文同时猜出后面K个词</li>
<li>AR MASK:这个区域是causal MASK,它负责根据上下文和前面猜出的草稿进行递归生成。</li>
</ul>
<p>这样在一次向前推理中,Inp亡的KV Cache会参与两次计算</p>
<ul>
<li>Input —> Think Mask -> Diffusion Drafts</li>
<li>Input + Diffusion Drafts -> AR Mask -> Final verified Token</li>
</ul>
<ol start="4">
<li><strong>多任务联合优化训练</strong></li>
</ol>
<p>为了同时训练Diffusion和AR,TIDAR在传统的NSP训练的基础上进行了改良,同时训练两个loss</p>
<ul>
<li>Diffusion Loss:训练模型在给定上下文和部分噪声的情况下,并行重构出后续 <span class="math inline">\(K\)</span> 个词的能力。</li>
<li>AR Loss:标准的交叉熵损失,确保模型的最终输出符合语言概率分布</li>
</ul>
<hr>
<h1 id="总结推理的未来是向内生长">总结:推理的未来是“向内生长”?</h1>
<p>从以上四篇论文,我们不妨猜测下后Reasoning时代的技术演进方向</p>
<ol>
<li>从Explicit到Implicit?</li>
<li>从Linear到Recurrent?</li>
<li>从AR到Hybrid?</li>
</ol>
<p>未来的大模型,或许会变得更像人类的大脑: 表面上沉默寡言,但内心戏极其丰富,并且能够反复推敲,最终给出一个深思熟虑的答案。</p>
<p>想看更全的大模型论文·微调预训练数据·开源框架·AIGC应用 >> DecryPrompt</p><br><br>
来源:https://www.cnblogs.com/gogoSandy/p/19485562
頁:
[1]