s4,mamba,mamba vision

RNN对比S4
image
image

SMM
当前状态+输入 -> 预测下一个状态

推理时以RNN的自回归形式
训练时,以一维卷积核的形式,并行计算。
image
区分离散、连续下的 状态方程与输出方程
连续:
image
离散
image

带skip-connection的连续SSM
image
image
灰色部分不包含skip-connection
image
image

离散->连续,连续->离散

通过零阶保持技术(Zero-order hold technique),指定步长(size) \(\Delta\) 达到离散输入->连续输入
根据步长size进行采样,达到 连续输出->离散输出

对A,B做零阶保持
image

问题:

  1. 为何可以像卷积一样计算(训练时)?
    因为 SSM 的状态转移方程是线性的(没有非线性激活函数),所以它可以被展开并重写为一个卷积操作。1. 为什么没有激活函数是关键?在传统的 RNN 中,每一步更新状态时都会套一个非线性激活函数(如 \(tanh\)\(ReLU\)):$$h_k = \sigma(Ah_{k-1} + Bx_k)$$由于 \(\sigma\) 的存在,你无法将 \(h_{k-1}\) 的项简单地提取出来。你必须先算出 \(h_1\),才能算 \(h_2\),这导致了必须串行计算。而在 S4/SSM 中,方程是纯线性的:$$h_k = \overline{A}h_{k-1} + \overline{B}x_k$$2. 线性推导:从递归到卷积由于它是线性的,我们可以像剥洋葱一样把递归式展开:\(h_0 = \overline{B}x_0\)\(h_1 = \overline{A}h_0 + \overline{B}x_1 = \overline{A}\overline{B}x_0 + \overline{B}x_1\)\(h_2 = \overline{A}h_1 + \overline{B}x_2 = \overline{A}^2\overline{B}x_0 + \overline{A}\overline{B}x_1 + \overline{B}x_2\)...\(h_k = \sum_{i=0}^k \overline{A}^{k-i}\overline{B}x_i\)最终的输出 \(y_k = \overline{C}h_k\) 就可以写成:$$y_k = \overline{C}\overline{A}^k\overline{B}x_0 + \overline{C}\overline{A}^{k-1}\overline{B}x_1 + \dots + \overline{C}\overline{B}x_k$$3. 生成 1D 卷积核观察上面的公式,你会发现这完美符合卷积的定义:\(y = x * \mathbf{K}\)。我们可以构造一个全局卷积核 \(\mathbf{K}\):$$\mathbf{K} = (\overline{C}\overline{B}, \overline{C}\overline{A}\overline{B}, \overline{C}\overline{A}^2\overline{B}, \dots, \overline{C}\overline{A}^{L-1}\overline{B})$$这样一来:训练时:我们直接用这个卷积核和输入序列 \(x\) 做 FFT(快速傅里叶变换)卷积,一次性算出所有位置的输出。这和 Transformer 一样是并行的。推理时:我们退回到递归模式(RNN 模式),一步步计算,省去了 Transformer 重复计算的开销。
    image

  2. SSM是如何解决长期记忆问题的?
    长距离依赖问题的解决之道:HiPPO(不懂)

  3. 不理解这里的S4概括
    image

posted @ 2025-12-29 09:59  main(void)  阅读(9)  评论(0)    收藏  举报
.c_ad_block { display: none !important; } #ad_t2{ display: none !important; }