Skip to content

状态空间模型

State Space Models

在机器学习和统计建模中,SSM 是一类非常常用的动态模型,用于表示系统随时间演化(或随其他序列索引变化)的过程。它将系统的“内在状态”与观测到的“输出”分离,并通过状态转移与观测方程来刻画整体系统的动态行为。

物理

以弹簧-质量-阻尼系统 (SMD)为例,在给定一个力作为系统输入量 u(t) ,质量块 M 随时间变化的位移 x,速度为 v,其中 x 作为系统的输出量 y(t)

系统的状态向量可以表示为:

X=[x1x2]=[xv]=[y(t)dy(t)dt]

根据牛顿第二定律:F=Ma,弹簧提供的力为 kx,阻尼器提供的力为 bv,外部力为 u(t),有:

Ma=kxbv+u(t)Md2xdt2+bdxdt+kx=u(t)

可以表示为:

Mx˙2+bx2+kx1=u(t)

求解该微分方程,可得:

x˙1=x2x˙2=u(t)bx2kx1M

即:

X˙=[x˙1x˙2]=[x2u(t)bx2kx1M]

即:

X˙=[01kMbM][x1x2]+[01M]u(t)

输出 y(t) 也可以写成:

y=[10][x1x2]+[0]u(t)

卡尔曼滤波

基本动态系统模型

卡尔曼滤波模型假设 k+1 时刻的真实状态是从 k 时刻的状态演化而来,符合状态方程:

xk=Fkxk1+BkuK+wk

其中:

  • Fk 是作用在 x 上的状态变换模型
  • B_k 是作用在控制器向量 uk 上的输入-控制模型
  • w_k 是过程噪声,并假定其符合均值为 0,协方差矩阵为 Qk 的多元正态分布

算法逻辑

卡尔曼滤波器的状态由以下变量表示:

  • X^k|k=E(Xk|Y1,Y2,,Yk) 表示在时刻 k 的状态的估计
  • X^k|k1=E(Xk1|Y1,Y2,,Yk1) 表示已知过去 k1 个时刻的状态,对 k 时刻状态的预测。
  • P^k|k 为后验估计误差协方差矩阵,度量估计值的精确程度。
1. 预测 X^k1|k1X^k|k1

预测步骤中,根据上一时刻的状态和控制量,预测当前时刻的状态。这个预测值是一个估计值,因为它还没有考虑当前时刻的观测值。预测值的误差协方差矩阵是通过上一时刻的误差协方差矩阵和系统噪声协方差矩阵计算得到的。

x^k|k1=Fkx^k1+BkukPk|k1=FkPk1|k1FkT+Qk
2. 更新 X^n|n1X^n|n

更新步骤中,根据当前时刻的观测值和预测值,计算出当前时刻的状态估计值。这个估计值是一个更加准确的估计值,因为它已经考虑了当前时刻的观测值。状态估计值的误差协方差矩阵是通过预测步骤中计算得到的误差协方差矩阵、观测噪声协方差矩阵和卡尔曼增益计算得到的。

Kk=Pkk1HkT(HkPkk1HkT+Rk)1x^kk=x^kk1+Kk(zkHkx^kk1)Pkk=(IKkHk)Pkk1

以上五个公式为卡尔曼滤波的核心公式。更新步骤更加简洁便于理解的形式为,首先计算以下三个量:

{y^k=zkHkx^kk1 (测量残差)Sk=HkPkkHkT+Rk (测量残差协方差) Kk=Pkk1HkTSk1 (最优卡尔曼增益) 

然后用它们来更新滤波器变量:

{x^kk=x^kk1+Kky^k (更新的状态估计) Pkk=(IKkHk)Pkk1 (更新的协方差估计) 

两个方程:状态方程与输出方程

RNN

状态方程

h(t)=Ah(t1)+Bx(t)

输出方程

y(t)=Ch(t)+Dx(t)

其中:

  • ARd×d:状态转移矩阵
  • BRd×m:输入映射矩阵
  • CRp×d:观测矩阵
  • DRd×m:前馈矩阵

离散化

在实际应用中往往是离散的数据,因此要对模型进行离散化表示。

欧拉法
双线性(bilinear method)

采用双线性变换将连续 SSM 转换为离散形式:

xk=Axk1+Bukyk=Cxk+DukA=(IΔ/2A)1(I+Δ/2A)B=(IΔ/2A)1ΔB
零阶保持法(Zero-Order Hold Technoloty)

SSM 的 RNN 表示

SSM 的卷积表示

yk=xkkernel

假设初始状态 x1=0,有:

y0=CBu0y1=CABu0+CBu1y2=CA2Bu0+CABu1+CBu2yk=CAkBu0+CAk1Bu1++CABuk1+CBuk

将其写成卷积表达:

yk=[CAkBCAk1BCB][u0u1uk]=Ku

K 被称为 SSM 卷积核


S4(结构化序列状态空间模型)

Structured State Space for Sequences

Gu A, Goel K, Ré C. Efficiently modeling long sequences with structured state spaces[J]. arXiv preprint arXiv:2111.00396, 2021.

https://srush.github.io/annotated-s4/

ICLR2022

核心改进:

  • 使用低秩修正来优化矩阵 A 的性质,使其更容易对角化。
  • 使用 HiPPO 矩阵解决长距离依赖问题
  • 将连续 SSM 转换为离散形式

HiPPO 矩阵:

Ank={(2n+1)1/2(2k+1)1/2 if n>kn+1 if n=k0 if n<k

S4 的参数化

为了避免 HiPPO 矩阵运算量过大,作者提出将 HiPPO 矩阵转换为:正规矩阵+低秩矩阵

NPLR(Normal Plus Low-Rank)

A=VΛVPQ=V(Λ(VP)(VQ))V

矩阵 A 转换为 NPLR 后:

  • RNN 形式

    • S4 1 个 step 的计算复杂度依旧为 O(N)
  • 卷积形式

    • K 计算复杂度从 O(N2L) 降低为 O(N+L)

S4D(对角状态空间模型)

Gu A, Goel K, Gupta A, et al. On the parameterization and initialization of diagonal state space models[J]. Advances in Neural Information Processing Systems, 2022, 35: 35971-35983.

S4D 模型是一种对角 SSM,它结合了 S4 的计算和参数化优势以及 DSS 的初始化方法。

S4D 模型的核心在于其对角状态矩阵的参数化和初始化,这使得模型在保持简单性的同时,也具备了强大的性能。

S4D 模型的卷积核 K 可以通过 Vandermonde 矩阵乘法来高效计算:

K=[CBCABCAL1B]=[B0C0BN1CN1][1A0A02A0L11A1A12A1L11AN1AN12AN1L1]=(BC)VL(A)

S5

Smith J T H, Warrington A, Linderman S W. Simplified state space layers for sequence modeling[J]. arXiv preprint arXiv:2208.04933, 2022.

ICLR2023

S4 采用的离散 SSM 形式为:

xk=Axk1+Buk

该形式为单输入单输出,对于输入向量 u=[u1,u2,,uk],S4 直接对每个分量独立地应用上述公式,然后将结果拼接起来。

而 S5 采用了多输入多输出(MIMO)形式。


S6(Mamba)

Mamba