想象你是一位大河流域的总调度员。你的职责是掌握整片流域的水情——上游多少条支流在汇入、中游水位涨到哪条警戒线、下游农田需要多少流量。为了做出放水或蓄水的决策,你需要随时了解“现在的状态”:水位多高、流速多快、浑浊度如何。传统序列模型处理信息的方式各有局限:循环神经网络(RNN)像一条记忆力欠佳的小溪,上游的暴雨到了下游早已被冲淡遗忘;Transformer则像一位严谨却低效的档案管理员,每处理一个新时刻都要从头翻阅所有历史记录,文档一长便力不从心。状态空间模型(SSM)提供了一条全新路径——它把序列处理看作“河流系统自身的演化规律”:只要知道当前状态和输入,就能一步步推演出未来。Mamba让这套系统更聪明,能够“选择性关注”重要的来水;RWKV则把历史浓缩成一座蓄水池,需要时缓缓释放。这套思维正在改写大模型长序列处理的版图。

岗位关联

掌握SSM与Mamba/RWKV的设计哲学,你就能在Transformer之外多一把“线性复杂度”的利器,对架构选型、长文本建模和高效推理拥有更本质的判断——这是大模型研究者与AI工程师的重要技术储备。

目录
  1. 可视化演示
  2. 1. 序列建模困境
  3. 2. 状态空间数学基础
  4. 3. Mamba的选择性机制
  5. 4. RWKV的线性注意力
  6. 5. SSM与Transformer对比
  7. 6. 应用与工程落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示状态空间模型的连续到离散递推计算流程、Mamba选择性状态空间机制、以及SSM与Transformer在长序列上的复杂度对比,切换模式查看。

本节配有交互动效(进入视口后自动加载,约 3KB)。

SSM递推计算流程 离散化后h(t)=Ah(t-1)+Bx(t)递推更新 输出y(t)=Ch(t)由状态线性投影 固定大小状态实现常数推理显存 h(t) = Ā·h(t-1) + B̄·x(t), y(t) = C·h(t) 线性递推实现O(N)序列建模

1. 序列建模困境

河流调度员翻阅前辈留下的两套工具:一套是“记忆手环”,记录最近几小时的水情,但时间一久字迹就模糊——这就是RNN;另一套是“全量档案柜”,每次决策都要把所有历史档案摊开对照——这就是Transformer。手环在小流域够用,档案柜在大江大河前却把办公桌压垮。处理超长序列时,RNN的记忆被冲淡,Transformer的计算量则随文档长度平方级膨胀。

具体到技术层面,RNN用隐藏状态 $h_t$ 逐步压缩历史:

Transformer用自注意力解决遗忘问题,让任意两个位置直接通信,但代价是每步要和所有历史做内积计算。当序列从几千token涨到十万token时,平方增长的算力让训练成本难以承受。于是“线性复杂度”成为长序列建模的关键目标——这正是SSM登场的原因。手环和档案柜都不够好,我们需要一种“记住全流域、但只花线性成本”的调度方式。

ht=tanh⁡(Whht−1+Wxxt+b)\displaystyle h_t = \tanh(W_h h_{t-1} + W_x x_t + b)
这个公式描述“小溪如何把上一刻的记忆和新到的雨水混合成此刻的水情摘要”。
  1. 隐藏状态 $h_t$网络在时刻 $t$ 的“记忆摘要”,相当于小溪此刻的水情快照。
    ht=tanh⁡(⋅)h_t = \tanh(\cdot)
  2. 旧记忆加权 $W_h h_{t-1}$上一时刻的状态乘以权重矩阵,决定旧记忆保留多少,相当于河道里还剩下的水量。
    Whht−1W_h h_{t-1}
  3. 新输入加权 $W_x x_t$新到达的数据乘以输入权重,相当于新降的雨水汇入河道。
    WxxtW_x x_t
  4. 非线性压缩 $\tanh(\cdot)$把混合结果压到 $(-1,1)$ 区间,避免数值爆炸,类似水库的泄洪闸限制水量。问题是梯度在多次传递后趋近于零——记忆被“冲淡”了。
    tanh⁡(z)=ez−e−zez+e−z\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}

2. 状态空间数学基础

调度员决定换一种思路:不去翻历史档案,而是维护一张“流域全景快照”——上游各支流的流量、中游的水位、下游的需求,全部写进一个向量 $x(t)$。只要知道快照和降雨输入 $u(t)$,再掌握河道本身的演化规律,就能一步步推演未来。这张快照就是“状态”,描述快照如何随时间变化的方程组,就是状态空间方程。

连续的河流用微分方程描述:

计算机无法直接处理连续微分方程,必须“离散化”。想象调度员每隔 $\Delta t$ 小时用采样瓶取一次水样,把连续水情变成逐拍记录的离散序列。零阶保持离散化是最常用的方法:

当 $A$ 固定不变时,系统称为“线性时不变”(LTI)——河道结构不变,演化规律就永远相同。这使得系统可以用卷积高效计算,但也带来了局限:一条始终用相同眼光看待所有来水的河流,无法区分“暴雨预警”和“毛毛雨”。调度员需要更聪明的机制,这正是Mamba的切入点。快照+演化规律+递推更新,让河流管理从“翻档案”变成了“推公式”。

x˙(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)\displaystyle \dot{x}(t) = Ax(t) + Bu(t), \quad y(t) = Cx(t) + Du(t)
矩阵指数 $e^{A\Delta t}$ 把“河道演化规律”翻译成“每 $\Delta t$ 时间步的状态递推规则”。
  1. 采样间隔 $\Delta t$连续时间被切成固定长度的小段,相当于取水样的时间间隔。
    Δt>0\Delta t > 0
  2. 矩阵指数 $\bar{A} = e^{A\Delta t}$对矩阵 $A$ 做指数运算,把微分方程的解精确搬到离散时间步上,是离散化的灵魂。
    eAΔt=∑n=0∞(AΔt)nn!e^{A\Delta t} = \sum_{n=0}^{\infty} \frac{(A\Delta t)^n}{n!}
  3. 离散输入矩阵 $\bar{B}$把连续输入在采样间隔内的累积效应折算成单次脉冲。
    Bˉ=A−1(eAΔt−I)B\bar{B} = A^{-1}(e^{A\Delta t} - I)B
  4. 差分递推 $x_k = \bar{A}x_{k-1} + \bar{B}u_k$最终得到一个逐拍更新的规则——新快照 = 旧快照按 $\bar{A}$ 演化 + 新输入的注入。这就是状态空间模型的“心脏”。
    xk=Aˉxk−1+Bˉukx_k = \bar{A}x_{k-1} + \bar{B}u_k

3. Mamba的选择性机制

普通SSM像一条“一视同仁”的自然河流:不管上游来的是暴雨还是细流,河道的反应规律都固定不变。调度员很快发现,真正优秀的调度必须“看人下菜碟”:暴雨预警时要重点盯防山区支流,枯水期则要关注蓄水工程。Mamba把这个直觉变成了数学——让状态空间模型的参数随输入动态变化。

具体来说,Mamba让 $B$、$C$ 以及离散化步长 $\Delta$ 都由当前输入 $u_k$ 实时生成:

当 $B, C, \Delta$ 都依赖输入后,系统从“线性时不变”变成了“线性时变”——状态递推公式中每一步的 $\bar{A}, \bar{B}, \bar{C}$ 都不同。这让Mamba能够“选择性遗忘”不重要的历史,“选择性记住”关键时刻的信息。为了不让时变递推退化成慢速循环,Mamba还引入了硬件感知的并行扫描算法(parallel scan),把 $n$ 步串行递推重组为可并行的分段计算,在GPU上接近线性时间。调度员终于拥有了一双“会看情况的眼睛”,而且看得足够快。

Bk=FB(uk),Ck=FC(uk),Δk=Softplus(FΔ(uk))\displaystyle B_k = \mathcal{F}_B(u_k), \quad C_k = \mathcal{F}_C(u_k), \quad \Delta_k = \text{Softplus}(\mathcal{F}_\Delta(u_k))
Mamba的选择性核心:系统不再用一副固定眼镜看所有数据,而是每次根据当前输入重新调整“关注重点”和“采样节奏”。
  1. 输入依赖的 $B_k$第 $k$ 步的输入映射矩阵由当前输入 $u_k$ 通过线性层生成,决定“哪些新来水值得进入状态”。这就像一个动态的支流闸门,只放行重要的来水。
    Bk=WBuk+bBB_k = W_B u_k + b_B
  2. 输入依赖的 $C_k$观测矩阵同样随输入变化,决定“从当前状态读取哪些信息作为输出”,类似调度员根据场景选择查看哪块仪表。
    Ck=WCuk+bCC_k = W_C u_k + b_C
  3. 动态步长 $\Delta_k$离散化的采样间隔也随输入变化——信息变化剧烈时采样更密($\Delta$ 小),平稳时采样更疏($\Delta$ 大)。
    Δk=Softplus(WΔuk+bΔ)\Delta_k = \text{Softplus}(W_\Delta u_k + b_\Delta)
  4. Softplus 保证正数$\Delta$ 必须是正数,Softplus 函数确保这一点,相当于采样间隔不可能为负数。
    Softplus(z)=ln⁡(1+ez)>0\text{Softplus}(z) = \ln(1 + e^z) > 0

4. RWKV的线性注意力

另一条技术路线来自RWKV。如果说Mamba是让河流学会选择性关注,RWKV则是直接改造档案柜本身——它把历史信息浓缩成一座蓄水池,每次只维护池子的水位和库存量,而不再保存每一桶水的原始记录。这个“蓄水池”就是RNN式的隐藏状态,但它内部的注意力权重被设计成“随时间指数衰减”的固定模式。

RWKV的核心是“时间混合”(Time Mixing)模块,它用指数衰减重新定义了注意力权重:

时间混合之外还有“通道混合”(Channel Mixing)模块,负责对特征维度做类似前馈网络的非线性融合。RWKV最吸引人的地方是推理形态:因为它本质上是一个RNN式的递推过程,推理时只需维护一个固定大小的状态向量,每生成一个token的额外成本是 $\mathcal{O}(1)$,不需要Transformer那样不断增长的KV缓存。蓄水池的好处在于:无论上游有多长的历史,调度员只需要管理一座池子。

ot=∑i=1te−(t−i)w+kivi∑i=1te−(t−i)w+ki\displaystyle o_t = \frac{\sum_{i=1}^{t} e^{-(t-i)w + k_i} v_i}{\sum_{i=1}^{t} e^{-(t-i)w + k_i}}
RWKV的时间混合:历史信息越久远,贡献越小;$k$ 值决定哪些信息值得被“记住”,$w$ 控制整体遗忘速度。
  1. 衰减因子 $e^{-(t-i)w}$$w$ 是固定的衰减率(可学习标量),时间差 $t-i$ 越大权重越小——蓄水池里的旧水会缓慢渗漏。
    e−(t−i)we^{-(t-i)w}
  2. Key 的指数 $e^{k_i}$第 $i$ 步的 $k$ 值越大,该历史信息越“值得被记住”,类似水库中某批水需要重点保留(如暴雨洪水)。
    ekie^{k_i}
  3. 值向量 $v_i$第 $i$ 步携带的实际信息内容,相当于每桶水的化学成分。
    viv_i
  4. 分子聚合对全部历史按“衰减 × 重要度”加权求和,得到当前输出——蓄水池放水的混合水样。
    ∑i=1te−(t−i)w+kivi\sum_{i=1}^{t} e^{-(t-i)w + k_i} v_i
  5. 分母归一化所有权重求和后做除法,使输出规模稳定,防止蓄水池水位无限上涨。
    ∑i=1te−(t−i)w+ki\sum_{i=1}^{t} e^{-(t-i)w + k_i}

5. SSM与Transformer对比

把河流调度方案并排比较,差异一目了然。Transformer的档案管理员打法,优点是任意两个历史时刻都能直接通信,缺点是要同时摊开所有档案;SSM/Mamba的调度员打法,优点是只维护一张快照加一条递推规则,缺点是极端远程的依赖需要靠足够好的状态压缩来承载。

两个家族的复杂度对比是核心:

那SSM是否全面碾压?并非如此。在中等长度(如 $n < 2048$)的任务上,Transformer 的并行性和成熟实现往往更快;SSM 的状态压缩是“有损”的——它必须把全部历史塞进有限维度的状态向量,对于需要“精确回忆某句话”的任务(如检索、复制)不如显式注意力。任务适配差异决定了架构选型没有银弹:需要全量精确回溯时用Transformer,需要超长上下文或低延迟流式处理时SSM更有优势。河流调度员明白:档案柜有档案柜的价值,蓄水池有蓄水池的边界。

Transformer: O(n2d)SSM/Mamba: O(nd)\displaystyle \text{Transformer: } \mathcal{O}(n^2 d) \qquad \text{SSM/Mamba: } \mathcal{O}(nd)
序列长度 $n$ 每翻一倍,Transformer 计算量翻四倍,而 SSM 只翻两倍——长序列下差距是指数级的。
  1. $n^2$ 的来源自注意力中每个 token 都要和其他所有 token 做内积,$n$ 个 token 共 $n^2$ 次交互。
    O(n2d)\mathcal{O}(n^2 d)
  2. $n$ 的来源SSM 逐时间步递推,每步成本是常数(状态维度 $d$ 的函数),$n$ 步总计线性。
    O(nd)\mathcal{O}(nd)
  3. 推理成本Transformer 解码第 $t$ 步要计算与前面 $t-1$ 个 KV 缓存的内积,总成本随序列增长;Mamba/RWKV 推理每步只做一次固定维度的状态更新,常数时间。
    每步: O(d2)\text{每步: } \mathcal{O}(d^2)
  4. 显存占用Transformer 的注意力矩阵需要 $\mathcal{O}(n^2)$ 显存;SSM 的状态向量只需 $\mathcal{O}(d)$,长序列训练时显存压力天差地别。
    O(n2)≫O(d)\mathcal{O}(n^2) \gg \mathcal{O}(d)

6. 应用与工程落地

调度员把新方案推向真实世界,SSM家族的用武之地远超想象。第一个场景是长文本理解。当模型需要处理整本书、季度财报或数万条法律条款时,Transformer的平方复杂度让显存和算力都难以承受,而Mamba的线性扫描让百万token的文档变成“匀速读完的一条长河”。第二个场景是语音信号处理。语音采样率动辄每秒数万帧,天然是超长序列,RWKV的恒定内存推理让实时转写可以在低功耗设备上持续运转。第三个场景是流式生成——对话机器人、代码补全这类逐token输出的任务,SSM每步只更新一个固定状态,延迟和显存都不会随对话轮次增长而膨胀,非常适合在线服务。

当然,SSM的工程化仍处于早期。大规模预训练的生态、指令微调的稳定性、与现有推理框架的适配都在快速演进中。Mamba 2和RWKV-6等迭代版本已经引入类似注意力的并行计算优化。对工程师而言,把SSM当作“长序列场景的专用武器”而非“Transformer的全面替代者”,是当前最务实的定位——就像调度员既保留档案柜,也修建蓄水池,根据水情选用最合适的工具。线性复杂度的潜力正在被逐步兑现,河流管理的下一章才刚刚翻开。

AI 应用场景

长文本跨文档理解

阶段:模型推理 / 长上下文建模

解决的问题:传统Transformer处理几十万token的文档集时,自注意力的显存占用随序列长度平方增长,常常OOM;SSM只维护固定维度状态,可用线性成本扫描完整文档,让“读完整本书再回答”成为现实。

具体案例:某法律科技公司用Mamba架构搭建合同审查助手,输入一份2万条款的并购合同(约15万token),模型逐段流式扫描后直接回答“第VIII章是否存在对赌条款的重大遗漏”,上下文窗口不再是瓶颈。

实时语音流式转写

阶段:在线推理 / 流式处理

解决的问题:语音信号每秒数千帧,Transformer需要缓存大量注意力历史,延迟和内存随说话时长不断增加;RWKV把历史压缩为固定状态,帧与帧之间只需一次 $\mathcal{O}(1)$ 状态更新,适合无限时长的流式转写。

具体案例:会议纪要产品在手机端部署RWKV语音识别模型,录制2小时会议全程内存占用几乎恒定,实时显示字幕而无需等会议结束再批量转录。

低功耗边缘设备上的代码补全

阶段:模型部署 / 端侧推理

解决的问题:云端大模型延迟高且有隐私风险,本地小模型若用Transformer结构,KV缓存随上下文增长会耗尽手机内存;Mamba/RWKV每步只更新一个固定状态向量,可塞进端侧NPU持续运行。

具体案例:某IDE插件在手机平板上运行基于Mamba-2B的代码补全模型,用户在编辑器中输入2000行代码后,补全延迟仍稳定在50ms内,CPU占用远低于同规模Transformer模型。

Python 演示

python59 行
import numpy as np class TinySSM:    """简化版状态空间模型:演示线性递推与长程记忆"""    def __init__(self, dim=8):        rng = np.random.default_rng(42)        # A矩阵:对角化稳定(值越接近1,记忆越长)        self.A = np.eye(dim) * 0.99        # 输入映射:把标量输入广播到状态维度        self.B = rng.normal(0, 0.1, dim)        # 输出映射:把状态聚合为标量        self.C = rng.normal(0, 0.1, dim)        self.x = np.zeros(dim)     def reset_state(self):        self.x = np.zeros_like(self.x)     def step(self, u):        # 单步递推: x_k = A x_{k-1} + B u_k; y_k = C x_k        self.x = self.A @ self.x + self.B * u        y = self.C @ self.x        return float(y)     def forward(self, seq):        self.reset_state()        return [self.step(u) for u in seq]     def memory_halflife(self):        # A对角线决定状态衰减速度,换算为半衰期步数        diag = np.diag(self.A)        return np.log(0.5) / np.log(diag.max())  def main():    # 构造带长程依赖的输入:前9步为0,第10步给一个脉冲    seq_len = 50    input_seq = np.zeros(seq_len)    input_seq[9] = 1.0     # 持久记忆模型 vs 快速遗忘模型    model_long = TinySSM()    model_long.A = np.eye(8) * 0.999     model_short = TinySSM()    model_short.A = np.eye(8) * 0.5     y_long = model_long.forward(input_seq)    y_short = model_short.forward(input_seq)     print("长记忆模型半衰期(步数):", round(model_long.memory_halflife(), 2))    print("短记忆模型半衰期(步数):", round(model_short.memory_halflife(), 2))    print("\n脉冲(t=9)后第45步的输出:")    print("  长记忆模型:", round(y_long[45], 6))    print("  短记忆模型:", round(y_short[45], 6))    print("\n=> A越接近1,历史信息保留越久,这正是SSM长程记忆的关键。")  if __name__ == "__main__":    main()
目的:用70行代码实现一个微型状态空间模型,直观演示“A矩阵接近1则记忆持久、接近0则快速遗忘”的核心性质。
  1. self.A = np.eye(dim) * 0.99初始化状态转移矩阵为接近单位阵的对角矩阵,保证系统稳定且能记住历史
  2. self.x = self.A @ self.x + self.B * u状态递推核心公式:旧状态按A演化 + 新输入注入,体现SSM每步O(1)的本质
  3. self.C @ self.x输出是状态的线性投影,对应状态空间方程中的 y = Cx
  4. np.log(0.5) / np.log(diag.max())用衰减因子计算半衰期步数,量化“记忆能存多久”
  5. input_seq[9] = 1.0构造脉冲输入模拟“暴雨事件”,观察下游(输出端)多久还能感知到它
  6. model_long.A = np.eye(8) * 0.999把A调到0.999,模拟“河道结构稳固、记忆持久”的流域

常见误区

误区我听说SSM也是靠一个隐藏状态逐步递推,那它跟LSTM、GRU这些RNN不是一回事吗?换了个马甲而已。

正解两者在“递推”这个外形上相似,但底层逻辑有本质区别。SSM有严格的控制论数学基础——状态空间方程、矩阵指数离散化、线性时不变系统的卷积等价性,这让SSM可以用并行扫描高效训练,而传统RNN必须逐时间步反向传播,训练效率天差地别。更重要的是Mamba/RWKV的设计已经超越了朴素RNN的表达能力。就像河流的“涓涓细流”和“人工运河”都流经河道,但蓄水、调度和通航能力完全不同。

为何常见:因为从表面结构看,h_t = f(h_{t-1}, x_t) 和 x_k = Āx_{k-1} + B̄u_k 确实都是“用一个状态向量走遍序列”,初学者很容易归为一类。

误区Mamba让参数随输入变化,这不就是在SSM里加了个注意力吗?本质上还是让模型学会“关注重要的位置”。

正解选择性确实是“关注重要信息”的思想,但实现机制和注意力完全不同。注意力是让当前token与所有历史token显式计算相似度,Mamba则是通过输入依赖的参数(B、C、Δ)调整状态递推本身——没有直接的两两比较,也没有位置间显式的注意力矩阵。更准确地说,Mamba是“条件计算”——系统在递推过程中根据当前输入动态调整如何读写状态,而不是建立一个全局的token间联系表。

为何常见:因为“选择性”和“关注”在直觉上很容易联想到注意力机制,加上Mamba论文中也提到它融合了注意力的一些优点,容易让人产生混同。

误区RWKV推理时状态递推,本质还是个RNN,那它的表达能力肯定比Transformer差很多,学不会复杂的长程依赖。

正解RWKV的时间混合模块用指数衰减的权重重新定义了注意力,但它包含了可学习的衰减率 w 和可学习的 key 值 k,使得模型拥有“哪些历史值得记住”的自由度。实验表明,RWKV在长序列语言建模、逻辑推理等任务上接近同规模Transformer的水平。它的约束在于“历史信息必须浓缩进固定状态”,对于需要精确复制某段原文的任务确实不占优,但这不是简单的“表达能力弱”,而是“压缩方式不同”。就像蓄水池虽然装不下每一滴水的原始样本,但通过科学调配,仍能满足绝大多数用水需求。

为何常见:人们惯性地认为“RNN = 记忆力差”,忽略了RWKV用精心设计的衰减注意力大幅缓解了这一问题,也忽略了Transformer的KV缓存同样是一种有损的历史压缩。

误区SSM是O(n),Transformer是O(n²),那SSM肯定更快更强,以后大模型都该用SSM,Transformer要过时了。

正解复杂度只是理论刻度,实际性能还取决于常数因子、并行度、硬件利用率。在短序列(如n<2048)上,Transformer的高度并行化实现和成熟的kernel优化往往比SSM更快;SSM的线性优势要在超长序列(如数万token)上才明显。此外SSM的状态压缩是有损的,对于需要精确检索记忆的任务(如引用原文、信息抽取)表现不如显式注意力。两者更适合互补而非取代——混合架构(如Jamba、Zamba)正在成为新趋势。

为何常见:理论分析中的O记号省略了常数因子,学习者容易把“渐进复杂度低”直接等同于“实际绝对更快”,忽略了工程实现的重要影响。

误区SSM推理只维护一个状态向量,不需要KV缓存,所以内存占用永远是一个固定小值。

正解状态向量的确是固定大小的,但状态维度 d 在实际模型中并不小(通常d≥1024),且Mamba中还存在多层的状态、中间激活和滑动窗口缓冲区。严格说,SSM推理的内存从“随序列增长的KV缓存”变成了“随隐藏维度固定但可能不小的状态矩阵”,增长的驱动因素从序列长度转移到了模型宽度。对于很长上下文,这依然是巨大优势,但并非“零缓存”。

为何常见:理解“固定维度状态”时,容易忽略维度本身的大小,以及实际工程中的激活内存开销。

面试题

Q1. SSM相对Transformer的核心增益是什么?

单选题 · easy

  • A.更强的非线性表达能力
  • B.线性复杂度处理长序列← 正确答案
  • C.更大的模型参数量
  • D.依赖全局注意力机制

答案:B。SSM通过固定维度的状态递推取代两两注意力计算,把序列处理复杂度从O(n²)降到O(n)。A中“更强非线性”不准确,Transformer同样有非线性;C参数量不是SSM特有的增益;D恰恰相反,SSM不依赖全局注意力。

Q2. 状态空间方程中矩阵 $A$ 表示什么?

单选题 · mid

  • A.输出到输入的反馈映射
  • B.输入到状态的线性映射
  • C.状态自身的内部演化规律← 正确答案
  • D.离散化的采样时间间隔

答案:C。$A$ 矩阵描述系统在没有外部输入时状态如何自然变化,相当于河道的自身结构。B描述的是输入矩阵的职能;D是采样间隔;A则对应$C$矩阵的观测职能。

Q3. Mamba与传统SSM的主要区别有哪些?

多选题 · mid

  • A.参数随输入动态变化← 正确答案
  • B.完全抛弃状态向量
  • C.引入硬件感知并行扫描← 正确答案
  • D.恢复平方级注意力计算

答案:AC。Mamba的B、C、Δ由输入实时生成,实现了选择性;同时用硬件感知的并行扫描算法加速训练,接近线性时间。B错误,Mamba依然维护状态向量;D错误,Mamba没有恢复O(n²)注意力。

Q4. 零阶保持离散化中的离散状态转移矩阵 $\bar{A}$ 等于什么?

单选题 · hard

  • A.单位矩阵 $I$
  • B.矩阵指数 $e^{A\Delta t}$← 正确答案
  • C.输入矩阵 $A^{-1}B$
  • D.观测矩阵 $CA^T$

答案:B。零阶保持假设输入在采样间隔内恒定,精确离散化结果为$\bar{A}=e^{A\Delta t}$。A是特例(当AΔt接近0时);C对应$\bar{B}$的表达式;D是观测投影,与离散转移无关。

Q5. Transformer自注意力机制的时间复杂度是多少?

单选题 · easy

  • A.O(n) 线性时间
  • B.O(n log n) 近线性时间
  • C.O(n²) 平方时间← 正确答案
  • D.O(1) 常数时间

答案:C。每个token要与其他所有token计算内积,n个token共n²次两两交互,因此复杂度为O(n²)。SSM的O(n)正是用来突破这个瓶颈的,O(n log n)是快速傅里叶变换的特征,O(1)则完全不可能处理序列间交互。

Q6. RWKV的时间混合机制包含哪些特征?

多选题 · hard

  • A.指数衰减的历史权重← 正确答案
  • B.线性注意力的计算结构← 正确答案
  • C.两两全连接的显式内积
  • D.RNN式恒定状态递推← 正确答案

答案:ABD。RWKV用$e^{-(t-i)w}$实现指数衰减,整体是一个可线性递推的注意力形式,推理时只需维护固定状态。C是Transformer自注意力的特征,RWKV特意避免了两两显式内积。

Q7. Mamba/RWKV解码生成时,每生成一个token的额外计算代价是?

单选题 · mid

  • A.O(n²) 随整体序列增长
  • B.O(n) 需要重看全部历史
  • C.O(1) 只做一次状态更新← 正确答案
  • D.O(log n) 取决于分段大小

答案:C。生成时只需用当前状态和新token做一次线性递推,状态维度固定所以是O(1)。Transformer解码需要与KV缓存中的全部历史计算注意力,代价随n增长。

Q8. 传统RNN在长序列建模中最主要的缺陷是什么?

单选题 · easy

  • A.参数量远少于现代模型
  • B.梯度消失导致历史遗忘← 正确答案
  • C.无法引入非线性激活
  • D.不支持批量数据处理

答案:B。RNN逐步传递梯度,链式法则导致梯度随距离指数衰减,早期的信息在训练中几乎无法更新权重,表现为“遗忘上游”。A不是本质缺陷,C错误(RNN有非线性),D不准确(RNN可以批处理)。

Q9. 下列哪些场景更适合选择SSM而非Transformer?

多选题 · mid

  • A.百万token级超长文本理解← 正确答案
  • B.需精确复制原文片段的检索任务
  • C.实时流式语音转写← 正确答案
  • D.低内存边缘设备推理← 正确答案

答案:ACD。SSM的线性复杂度适合超长文本、流式处理和内存受限的边缘设备。B适合Transformer的显式注意力——精确复制需要位置间的直接对应,SSM的固定状态压缩是“有损”的,难以逐字还原。

Q10. 为什么Mamba让 $\Delta$ 随输入变化且用Softplus约束?

单选题 · mid

  • A.为了增加模型参数量
  • B.保证采样间隔为正且自适应信息变化节奏← 正确答案
  • C.为了让输出范围限制在0到1之间
  • D.为了将连续模型转化为离散模型

答案:B。Δ控制离散化步长,必须为正数,Softplus天然满足;信息剧烈变化时模型可自动缩小Δ加密采样,平稳时放大Δ节省计算。A是副作用而非目的;C是Sigmoid的功能;D本身由离散化完成,Δ的作用是调节精度。