【论文翻译】SSM状态空间模型的循环和卷积模式

文章介绍了StructuredStateSpaces(SSM)中递归和卷积表达的理论,强调了它们在高效推理和训练中的优势,特别是在处理序列数据时。文章还讨论了SSM与RNN和CNN的关联,并提到了不同维度的SSM变体及其在实际模型中的应用。
摘要由CSDN通过智能技术生成


这篇文章是Mamba作者博士论文 MODELING SEQUENCES WITH STRUCTURED STATE SPACES
的第二章的部分翻译,这部分关于SSM的卷积和循环模式表达。

2.3.2 递归表达(高效推理)

离散化后,离散SSM可以被定义为:
x k = A ‾ x k − 1 + B ‾ u k y k = C x k x_k = \overline{\textbf A}x_{k-1} + \overline{\textbf B}u_k \\ y_k = \textbf C x_k xk=Axk1+Bukyk=Cxk
A ‾ ∈ R N × N \overline{\textbf A} \in \mathcal{R}^{N\times N} ARN×N B ‾ ∈ R N × M \overline{\textbf B} \in \mathcal{R}^{N\times M} BRN×M u k ∈ R N {u_k} \in \mathcal{R}^N ukRN x k ∈ R M {x_k} \in \mathcal{R}^M xkRM

等式现在是sequence-to-sequence映射 ( u k ) ↦ ( y k ) (u_k) \mapsto (y_k) (uk)(yk) 而且状态等式是 x k x_k xk的递归,可以像其他例如卷积RNN的循环网络一样计算,用RNN的语言说, x k ∈ R N x_k \in \mathcal{R}^N xkRN可以被看作有转移矩阵 A ‾ \overline{\textbf A} A的隐状态。

循环模式解释

循环状态 x k ∈ R N x_k \in \mathcal{R}^N xkRN携带了时间 k k k之前的所有输入信息,换句话说,当展开上式的递归,只有循环状态需要保留。因此SSM和常规的循环模型有高效的基于状态的推理:不像CNN和Transformer,它们可以被推测一个(潜在无穷)输入序列每时间步仅需要常数计算和空间。

对于在线和自回归情形下,特别有用。值得注意的例子是自回归生成模型例如现代大语言模型,生成需要一次展开模型一步。

2.3.3 卷积表达(高效训练)

循环SSM在现代硬件上训练是不实际的,因为其序列性。而例如线性时不变(LTI)SSM和连续卷积有众所周知的联系。对应的,上面的等式也可以被写成离散卷积。

定义初始状态 x − 1 = 0 x_{-1} = 0 x1=0。因为离散卷积是线性的,它可以被分析展开,推出SSM的一个卷积形式。
x 0 = B ‾ u 0 x 1 = A B ‾ u 0 + B ‾ u 1 x 2 = A ‾ 2 B ‾ u 0 + A B ‾ u 1 + B ‾ u 2 … y 0 = C B ‾ u 0 y 1 = C A B ‾ u 0 + C B ‾ u 1 y 2 = C A ‾ 2 B ‾ u 0 + C A B ‾ u 1 + C B ‾ u 2 … \begin{aligned}x_0&=\overline{B}u_0\quad&x_1=\overline{AB}u_0+\overline{B}u_1\quad&x_2=\overline{A}^2\overline{B}u_0+\overline{AB}u_1+\overline{B}u_2\quad&\ldots\\y_0&=C\overline{B}u_0\quad&y_1=C\overline{AB}u_0+C\overline{B}u_1\quad&y_2=C\overline{A}^2\overline{B}u_0+C\overline{AB}u_1+C\overline{B}u_2\quad&\ldots\end{aligned} x0y0=Bu0=CBu0x1=ABu0+Bu1y1=CABu0+CBu1x2=A2Bu0+ABu1+Bu2y2=CA2Bu0+CABu1+CBu2
换句话说,根据输入 u u u可以推出输出 y y y的一个简单的闭式解:
y k = C A ‾ k B ‾ u 0 + C A ‾ k − 1 B ‾ u 1 + ⋯ + C A ‾ B ‾ u k − 1 + C B ‾ u k . ( 2.6 ) \begin{aligned}y_k&=C\overline{A}^k\overline{B}u_0+C\overline{A}^{k-1}\overline{B}u_1+\cdots+C\overline{A}\overline{B}u_{k-1}+C\overline{B}u_k.&(2.6)\end{aligned} yk=CAkBu0+CAk1Bu1++CABuk1+CBuk.(2.6)
可以用一个显式kernel被向量化成一个简单卷积:
y = u ∗ K ‾ w h e r e K ‾ = ( C B ‾ , C A ‾ B ‾ , … , C A ‾ k B ‾ , … ) . ( 2.7 ) \begin{aligned}y&=u*\overline{K}\quad\mathrm{where}\quad\overline{K}=(C\overline{B},C\overline{A}\overline{B},\ldots,C\overline{A}^k\overline{B},\ldots).\quad(2.7)\end{aligned} y=uKwhereK=(CB,CAB,,CAkB,).(2.7)
上式是一个简单(non-circular)卷积, K ‾ \overline{\textbf K} K有多种称呼,包括SSM(卷积)滤波器或核,或者简称为state space kernel(SSK)

计算可以在整个序列长度上并行化,而不是从每时刻从 u k u_k uk计算 y k y_k yk,因为 y k y_k yk的闭式解存在,从完整的输入序列 u u u可以并行计算出完整的输出序列 y y y

卷积模式解释

SSSM可以非常相似地解释为CNN中的线性卷积层。主要的区别是状态空间核实际上是无限长的。

Remark 2.2 注意到 SSM核 K ‾ \overline{\textbf{K}} K实际上是无限长的,但是受限于输入的长度 L L L。它可以进一步截断为更短的长度以表现地更像一个传统CNN(例如强调局部性,或者为了计算高效)。我们通常重载表示,使用 K ‾ \overline{\textbf{K}} K直接指代输入长度 L L L的截断版本。
K ‾ : = H L ( A ‾ , B ‾ , C ) : = ( C A ‾ k B ‾ ) k ∈ [ L ] = ( C B ‾ , C A ‾ B ‾ , … , C A ‾ L − 1 B ‾ ) . ( 2.8 ) \overline{K}:=\mathcal{H}_L(\overline{A},\overline{B},C):=\left(C\overline{A}^k\overline{B}\right)_{k\in[L]}=(C\overline{B},C\overline{A}\overline{B},\ldots,C\overline{A}^{L-1}\overline{B}).\quad(2.8) K:=HL(A,B,C):=(CAkB)k[L]=(CB,CAB,,CAL1B).(2.8)
这导致了相比于传统CNN的其他不同。首先SSSM的卷积形式可以选择通过3个FFT(假设核 K ‾ \overline{\textbf{K}} K是已知的)高效计算。在数学上等价于一个传统的"密集卷积"但是取决于核大小有不同的计算复杂复杂度。

Proposition 2.8 (FFT-卷积)令 u , k u,k u,k分别为长度为 L L L 1 − D 1-D 1D序列.圆周卷积 u ∗ k u\ast k uk等价于 F − 1 ( F ( u ) ∘ F ( k ) ) \mathcal{F}^{-1}\mathcal({F}(u)\circ\mathcal{F}(k)) F1(F(u)F(k)) F \mathcal{F} F是傅里叶变换。

Proposition 2.9 (因果卷积) 长度 L L L u u u和长度为 K K K的核 k k k的因果(非循环)卷积可以padding到长度 L + K L+K L+K来引用循环卷积。

Corollary 2.10 (卷积复杂度)对于一个序列长度为 L L L核长度为 K K K

  • 一个传统的密集卷积有复杂度 O ( L K ) O(LK) O(LK)
  • 一个 F F T FFT FFT卷积有复杂度 O ( ( L + K ) l o g ( L + K ) ) O((L+K)log(L+K)) O((L+K)log(L+K)) 有更多的常数

第二,卷积核是隐式的,因为它是无限长的,他是从一系列更小参数中产生的,在这里通过式2.7 ( Δ , A , B , C ) → K ‾ (\Delta,\textbf A,\textbf B,\textbf C)\rightarrow \overline{\textbf{K}} (Δ,A,B,C)K许多其他方法创建隐式核,但是通常缺乏SSSM的其他(连续性和循环性)性质。

最后我们注意到当计算长卷积 y = u ∗ K ‾ y = u\ast \overline{\textbf{K}} y=uK通过标准FFT卷积技术是快速的,但生成2.8中的隐式核 K ‾ \overline{\textbf{K}} K是不容易的,是Chapter 3关注的重点。

Remark 2.3 我们称为状态空间核的东西也被称为"Markov parameters"在SSM文献中。我们的术语强调SSM和SSSM之间的区别,后者更接近CNN,参数被称为卷积滤波器或者核。

2.3.4 SSM表达的总结

总之,SS(S)M层作为序列模型的前向传播由一个离散化步骤构成,接着不同的等价方法计算离散SSM。我们称之为第一离散化的计算图之后是2.5为循环模式,相似地,我们称第一离散化的计算图和计算式2.7为卷积模式。

Remark 2.4 我们有时把这些简称为“RNN”模式和"CNN"模式。注意一层SSSM层并不是真正的神经网络-仅仅是一个线性序列变换-因此它们本身并不是一个RNN或者CNN。

Remark 2.5 这部分展示了从循环角度的离散化, 之后从展开递归推导离散卷积形式。离散卷积形式也可以通过直接离散化连续卷积形式得到。

y ( t ) = ( K ∗ u ) ( t ) = ∫ 0 ∞ C e s A B u ( t − s ) d s y(t) = (K \ast u)(t) = \int_0^{\infin}\textbf Ce^{s\textbf A}\textbf Bu(t-s)ds y(t)=(Ku)(t)=0CesABu(ts)ds

这涉及保持模型卷积结构的方式近似积分(这种情况通常被称为正交)

Remark 2.6 如2.2.1指出的,我们在这个部分只考虑T-SSM,对于卷积和SSM之间的等效是必要的。我们注意到对于通常的时变SSM,推广这两种模式是可能的。

2.3.5 关于SSM维度

在定义2.1中,我们定义序列模型为映射 R L × D → R L × D \mathcal R ^{L\times D}\rightarrow \mathcal{R}^{L\times D} RL×DRL×D。从另一个角度,SSM和因此SSSM被定义为一个 R L × M → R L × M \mathcal R ^{L\times M}\rightarrow \mathcal{R}^{L\times M} RL×MRL×M。我们把 D D D看作输入的维度(独立于模型定义) M M M作为一个定义模型的超参数。我们约定 M M M必须被整除 D D D,对于 D > M D>M D>M的输入,通过切分模型维度 D D D M M M,对于每个这些输入 R L × M \mathcal R^{L\times M} RL×M最后把 D / M D/M D/M个SSM的输出拼接在一块。

注意这实际上在模拟多头注意力是如何实现的,因此这也可以被解释为一个多头SSM,其中 H = D / N H = D/N H=D/N是头的数目。

Definition 2.11 不同模型维度的SSM变体

  • 单输入单输出(SISO)SSM M = 1 M = 1 M=1

  • 多输入多输出(MIMO)SSM M > 1 M > 1 M>1

  • 我们通常使用MIMO来 指代最大MIMO M = D M = D M=D

  • 多头SSM强调 M < D M<D M<D的情况,我们定义 H = M / D H = M/D H=M/D

    注意一个SISO SSM是一个有最大head数 H = D H = D H=D的多头SSM

Definition 2.12 (SSM 维度)重要维度的术语:

  • D D D是模型的尺寸或者维度
  • N N N是状态尺寸或维度,或者模糊地称为“SSM 状态尺寸”
  • N H = N D / M NH = ND/M NH=ND/M是总的状态尺寸

例如,一个(最大)MIMO SSM有总状态尺寸 N N N,而一个SISO SSM有总状态尺寸 N D ND ND

当我们把SSM和其它模型做比较时,对RNN和CNN风格进行对比是有用的。

Remark 2.7 (与RNN维度的关系)传统地,RNN相对应于 M I M O ( M = D   o r   H = 1 ) MIMO (M = D \ or\ H = 1) MIMO(M=D or H=1)的情况。总的状态维度是 N N N,对于模型维度 D D D来说是一个独立的超参数。通过投影矩阵 B ‾ \overline{\textbf B} B C \textbf C C输入在这些维度间变换。

许多最近的RNN变种转变成 S I S O SISO SISO类型,其 D D D个通道被一个 1 − D 1-D 1D递归独立地处理。值得注意的例子包括LSTM的cell state,QRNN,SRU,indRNN和RWKV。对于维度,这些模型对应一个 M = 1 , H = D M = 1, H = D M=1,H=D N = 1 N = 1 N=1的SSM,总的状态大小是 D D D

Remark 2.8(和CNN维度的关系)对于一个 M = D M = D M=D M I M O   S S M MIMO \ SSM MIMO SSM C A ‾ i B ‾ ∈ R M × M \textbf C\overline{\textbf A}^i\overline {\textbf B} \in \mathcal R ^{M\times M} CAiBRM×M K ‾ \overline{\textbf K} K是一个 ( L , M , M ) (L,M,M) (L,M,M)的张量。在标准CNN形式下解释被 K ‾ \overline{\textbf{K}} K卷积,准备些维度可以表示 ( s e q u e n c e , o u t _ c h a n n e l s , i n _ c h a n n e l s ) (sequence, out\_channels, in\_channels) (sequence,out_channels,in_channels)

一个有 D ∣ M D|M DM的多头SSM在CNN文献中被称作分组卷积。

M = 1 M = 1 M=1或者输入维度是独立通道没有交互,在CNN文献中称为深度(或深度可分离)卷积。

在本文剩余部分中,我们只关注 M = 1 M = 1 M=1 H = D H = D H=D S I S O SISO SISO情况

主要动机是一维输入下,在线记忆的理论框架。然而,我们注意到文献中许多流行在经验上有效的模型也采取了独立输入维度的版本,例如RWKV RNN和ConvNeXt CNN。我们还注意到,S4的大多数后序模型都保留了SISO形式,尽管出现了一些切换到MIMO公式的变体,如S5。

  • 34
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值