状态空间模型与 Mamba
Transformer 的 O(n²) 注意力是长序列的天敌。以 Mamba 为代表的状态空间模型(SSM)用 O(n) 复杂度挑战 Transformer,是近年最受关注的架构方向之一,也是进阶面试的前沿加分点。
为什么要挑战 Transformer?
Transformer 的注意力有两个长序列痛点(详见 长上下文专题):
- 训练:注意力计算量随序列长度 O(n²) 增长。
- 推理:KV Cache 随序列长度线性增长,越长越占显存。
理想的序列模型应该:训练能并行、推理是常数显存、复杂度随长度线性。RNN 推理是常数显存(只存一个状态)但不能并行训练且易遗忘;Transformer 能并行但 O(n²)。SSM 想兼得两者之长。
什么是状态空间模型(SSM)?
SSM 源自控制理论,核心是一个线性递推:用一个固定大小的「隐藏状态 h」来压缩历史信息,每来一个新输入就更新状态、产出输出:
$$h_t = \mathbf{A} h_{t-1} + \mathbf{B} x_t, \qquad y_t = \mathbf{C} h_t$$
- 像 RNN 一样逐步递推,但因为是线性的,可以改写成卷积形式 → 训练时能并行。
- 推理时按递推式走,只需保存固定大小的状态 h,与序列长度无关 → 常数显存、无需 KV Cache。
S4 是早期代表,通过特殊的矩阵结构(HiPPO 初始化)让状态能有效记住长程历史。
Mamba:选择性 SSM(S6)
早期 SSM 的硬伤:A、B、C 矩阵是固定的(时不变),对所有输入一视同仁,缺乏「根据内容选择性记忆/遗忘」的能力,因此在语言这种信息密度不均的任务上打不过 Transformer。
Mamba 的核心创新是「选择性(Selective)」:让 B、C 和步长 Δ 随输入动态变化(input-dependent),模型于是能根据当前 token 决定「记住什么、忽略什么」——这赋予了类似注意力的内容感知能力。
代价:参数随输入变化后,不能再用固定卷积核并行了。Mamba 用硬件感知的并行扫描(parallel scan)算法,把递推放在 GPU 高速 SRAM 里高效并行计算,解决了训练效率问题。
SSM vs Transformer
| 维度 | Transformer | Mamba / SSM |
|---|---|---|
| 训练复杂度 | O(n²) | O(n) |
| 推理显存 | KV Cache 线性增长 | 常数(固定状态) |
| 长序列 | 受限、昂贵 | 天然友好 |
| 并行训练 | 强 | 需特殊扫描算法 |
| 精确回忆/复制 | 强(能直接看全历史) | 弱(状态有损压缩) |
| 上下文学习 | 强 | 相对弱 |
核心权衡:注意力「记住所有细节」(强回忆、高成本);SSM「压缩成固定状态」(高效、但有损、回忆弱)。
混合架构:取长补短
实践发现纯 SSM 在「精确检索上下文中的某条信息」(如复制、in-context learning)上不如注意力。于是出现混合架构——大部分层用 Mamba(省、快),少量层穿插注意力(保住精确回忆):
- Jamba(AI21):Mamba + Attention + MoE 混合。
- Zamba、Hymba(NVIDIA)等也是混合思路。
这是当前更务实的方向:不是替代 Transformer,而是融合。
高频追问
Q:Mamba 为什么能做到推理常数显存、无 KV Cache? 因为它用一个固定大小的隐藏状态压缩全部历史,每步只更新这个状态,不像注意力需要保存所有历史 token 的 K、V。所以推理显存与序列长度无关,长序列上优势明显。
Q:SSM 既然 O(n) 这么好,为什么还没取代 Transformer? 因为「固定状态」是有损压缩,在需要精确回忆/复制上下文具体内容、强 in-context learning 的任务上弱于注意力。所以更现实的是混合架构(Mamba 为主 + 少量注意力)。
Q:Mamba 相比早期 SSM(如 S4)的关键改进? 引入选择性机制:让 B、C、Δ 随输入动态变化,使模型能基于内容选择性地记忆和遗忘(类似注意力的内容感知),并用硬件感知并行扫描解决随之而来的训练并行问题。
Q:SSM 训练为什么能并行? 当参数时不变时,线性递推可改写成卷积,从而并行;Mamba 参数随输入变化后用 parallel scan(并行前缀扫描) 算法在 GPU 上并行计算递推,兼顾选择性与训练效率。
Q:为什么主流大模型目前还是 Transformer 为主? 生态成熟、可解释性和可控性经过大量验证、在通用任务上综合最强;SSM/混合架构在长序列、推理成本上有潜力,正在快速发展,但尚未在全面能力上稳定超越,目前多用于长序列或混合方案。