概述
Latent Reasoning(隐式推理)是一种新型语言模型架构,能够通过在隐空间(latent space)中隐式地进行推理来扩展测试时计算(test-time compute)。该方法通过迭代一个递归块(recurrent block),在测试时展开到任意深度,从而实现计算量的动态扩展。1
与主流推理模型通过生成更多 token 来扩展计算不同,Latent Reasoning 不需要任何专门的训练数据,可以在较小的上下文窗口下工作,并且能够捕获不易用文字表示的推理类型。
核心思想
隐空间推理 vs Chain-of-Thought
传统的 Chain-of-Thought (CoT) 方法通过显式生成中间推理步骤(token 序列)来扩展测试时计算。这种方法存在以下局限:
| 特性 | Chain-of-Thought | Latent Reasoning |
|---|---|---|
| 推理表示 | 显式 token 序列 | 隐空间向量 |
| 训练数据需求 | 需要专门标注 | 无需专门数据 |
| 上下文窗口 | 较长(包含所有中间步骤) | 可使用小窗口 |
| 非语言推理 | 难以表示 | 自然支持 |
递归深度架构
Latent Reasoning 的核心是一个递归块(recurrent block),它可以在测试时迭代任意次数:
class LatentReasoningLayer(nn.Module):
"""
隐式推理层:通过递归迭代实现隐空间推理
"""
def __init__(self, d_model: int, n_heads: int):
super().__init__()
self.recurrent_block = RecurrentBlock(d_model)
self.norm = nn.LayerNorm(d_model)
def forward(self, x: Tensor, num_steps: int = 1) -> Tensor:
"""
Args:
x: 输入隐表示 [batch, seq, d_model]
num_steps: 推理迭代次数(测试时可调)
"""
h = x
for _ in range(num_steps):
h = self.norm(h + self.recurrent_block(h))
return h在测试时,我们可以根据任务复杂度动态调整 num_steps,实现计算量的自适应扩展。
数学框架
递归推理过程
设输入表示为 ,递归块定义为:
其中 , 为递归深度。经过 次迭代后,最终表示为:
测试时计算扩展
测试时计算量随递归深度 线性增长,但模型能力可能呈超线性提升:
其中 表示由于更深入推理带来的额外能力提升。
与Transformer的关系
Latent Reasoning 架构可以被视为 Transformer 的一种变体,其中自注意力机制被递归状态更新所替代:
| 组件 | Transformer | Latent Reasoning |
|---|---|---|
| 状态更新 | Multi-Head Attention | Recurrent Block |
| 深度控制 | 固定层数 | 可变递归深度 |
| 计算扩展 | 更多 token/层 | 更多递归迭代 |
| 上下文 | 完整序列 | 压缩隐表示 |
实验结果
基准测试性能
研究团队将模型扩展到 35亿参数 和 8000亿训练token,实验结果如下:
| 基准 | 标准模型 | Latent Reasoning () | 提升 |
|---|---|---|---|
| MATH | 20.3 | 47.8 | +135% |
| AIME 2024 | 8.2 | 35.6 | +334% |
| GSM8K | 52.1 | 78.4 | +50% |
| HumanEval | 31.5 | 52.3 | +66% |
计算效率
Latent Reasoning 展现出显著的计算效率优势:
- 等效参数规模: 的模型在推理时等效于更大的模型
- 峰值性能:在 足够大时,等效于 500亿参数 模型的性能
- 能效比:相比直接增大模型,隐式推理更加高效
实现细节
递归块设计
class RecurrentBlock(nn.Module):
"""
递归块:包含门控机制的状态更新
"""
def __init__(self, d_model: int, expansion: int = 4):
super().__init__()
self.gate = nn.Sequential(
nn.Linear(d_model, d_model),
nn.Sigmoid()
)
self.transform = nn.Sequential(
nn.Linear(d_model, d_model * expansion),
nn.GELU(),
nn.Linear(d_model * expansion, d_model)
)
def forward(self, h: Tensor) -> Tensor:
z = self.gate(h) # 门控信号
return z * self.transform(h) + (1 - z) * h训练策略
- 标准语言建模预训练:使用常规文本数据进行训练
- 递归深度课程学习:逐步增加训练时的递归深度
- 无专门推理数据:不需要 CoT 或 reasoning traces 标注
优势与局限
优势
- 无需专门训练数据:可以直接使用标准文本语料
- 小上下文窗口:推理过程在隐空间进行,不需要存储中间步骤
- 通用推理能力:可以捕获不易于语言表达的模式
- 动态计算分配:根据任务难度自适应调整计算量
局限
- 递归训练的挑战:深层递归可能导致训练不稳定
- 表达能力的理论上限:隐空间容量可能限制推理深度
- 与CoT的可解释性对比:隐式推理难以提供人类可读的中间步骤
相关工作
- 链式推理:显式 token 级别的推理
- 测试时计算扩展:测试时推理的总体框架
- 推理模型:o1/o3/R1等推理专用模型
- 编码-思考-解码框架:类似的隐式推理框架
参考文献
Footnotes
-
Geiping, J., et al. (2025). Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach. NeurIPS 2025. https://arxiv.org/abs/2502.05171 ↩