本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

连续时间线性系统与 Kalman 滤波:从离散步进到平滑流动

连续时间线性系统与 Kalman 滤波:从离散步进到平滑流动

更新于 2026-04-23

回顾 Art. 14 算子全景的概念地图:

状态可观测状态隐藏
离散状态马尔可夫链(Art. 15 马尔可夫链HMM(Art. 16 HMM
连续状态线性动力系统 ← 你在这里Kalman 滤波 ← 你在这里

我们沿着时序算子子线来到最后一站。前两篇处理的是离散状态——有限个类别之间的跳转,转移矩阵的每一行是概率分布。现在,我们从表格的上方移到下方:状态不再是 {s1,,sN}\{s_1, \ldots, s_N\} 这样的离散类别,而是一个连续向量 x(t)Rn\mathbf{x}(t) \in \mathbb{R}^n——卫星的位置和速度、电路中的电压和电流、机器人关节的角度和角速度。

核心变化:

  • 离散 → 连续:差分方程 xk+1=Axk\mathbf{x}_{k+1} = A\mathbf{x}_k 变成微分方程 x˙=Ax\dot{\mathbf{x}} = A\mathbf{x}
  • 矩阵幂 → 矩阵指数AnA^n 变成 eAte^{At}
  • 模 < 1 → 实部 < 0:离散稳定性判据变成连续稳定性判据
  • Forward 算法 → Kalman 滤波:离散求和变成连续积分,但”预测 + 修正”的核心结构不变

为什么这在 ML 中重要?因为状态空间模型(State-Space Model, SSM)——Mamba(Art. 26 SSM/Mamba)的数学基础——正是连续时间线性系统的离散化。本文建立的公式将在 Part 3 中直接复用。

从离散到连续:AnA^n 变成 eAte^{At}

离散系统回顾

Art. 15 马尔可夫链中,系统的演化规则是:

xk+1=Axk\mathbf{x}_{k+1} = A\mathbf{x}_k

从初始状态 x0\mathbf{x}_0 出发,kk 步之后:

xk=Akx0\mathbf{x}_k = A^k \mathbf{x}_0

对角化 A=QΛQ1A = Q\Lambda Q^{-1} 后(Art. 2 特征分解):

xk=QΛkQ1x0=Qdiag(λ1k,λ2k,,λnk)Q1x0\mathbf{x}_k = Q \Lambda^k Q^{-1} \mathbf{x}_0 = Q\, \text{diag}(\lambda_1^k, \lambda_2^k, \ldots, \lambda_n^k)\, Q^{-1} \mathbf{x}_0

每个特征方向独立演化,第 ii 个分量乘以 λik\lambda_i^k离散系统是”一步一步走”——每乘一次 AA 就前进一步。

连续系统:微分方程形式

现在想象步长无限缩小。离散系统中 xk+1xk=(AI)xk\mathbf{x}_{k+1} - \mathbf{x}_k = (A - I)\mathbf{x}_k 描述的是一步的变化量。当步长趋于零时,差分变成导数:

x˙(t)=dxdt=Ax(t)\dot{\mathbf{x}}(t) = \frac{d\mathbf{x}}{dt} = A\mathbf{x}(t)

这是一阶线性常微分方程组(linear ODE system)。ARn×nA \in \mathbb{R}^{n \times n}系统矩阵(system matrix),它编码了状态各分量之间的耦合关系。x˙\dot{\mathbf{x}} 是状态的瞬时变化率——连续系统是”平滑流动”——状态在每个瞬间都在改变,而非等到下一步。

类比:离散系统像翻阅照片——每张照片是一个时间步的快照。连续系统像播放视频——状态在时间轴上连续变化。

离散步进 vs 连续流动离散:x_k = λ^k · x₀k = 0, 1, 2, ...像翻阅照片——每张是一步快照连续:x(t) = e^{at} · x(0)t 连续像播放视频——状态平滑变化Aᵏ → eᴬᵗ | |λ| < 1 → Re(λ) < 0 | 单位圆 → 左半平面

解:矩阵指数 eAte^{At}

标量情形大家很熟悉:x˙=ax\dot{x} = ax 的解是 x(t)=eatx(0)x(t) = e^{at} x(0)。矩阵情形完全平行:

x(t)=eAtx(0)\boxed{\mathbf{x}(t) = e^{At}\, \mathbf{x}(0)}

其中 eAte^{At}矩阵指数(matrix exponential),定义为幂级数:

eAt=k=0(At)kk!=I+At+(At)22!+(At)33!+e^{At} = \sum_{k=0}^{\infty} \frac{(At)^k}{k!} = I + At + \frac{(At)^2}{2!} + \frac{(At)^3}{3!} + \cdots

逐项理解这个级数:

  • k=0k = 0II(单位矩阵,什么都不做)
  • k=1k = 1AtAt(线性项,tt 很小时的一阶近似:x(t)(I+At)x(0)\mathbf{x}(t) \approx (I + At)\mathbf{x}(0)
  • k=2k = 2A2t22!\frac{A^2 t^2}{2!}(二阶修正)
  • 后续项:越来越高阶的修正
矩阵指数 e^{At} = 幂级数求和e^{At} = I + At + (At)²/2! + (At)³/3! + ...I不动+At线性近似+A²t²/2!二阶修正+A³t³/3!三阶修正+...高阶项递减阶乘 k! 压制增长——级数对任意 A 和 t 都绝对收敛(标量 e^a 的矩阵推广)

为什么级数收敛? 对于任何有限维矩阵 AA 和任何实数 tt,这个级数绝对收敛。直觉上,Aktkk!\frac{\|A\|^k t^k}{k!} 的增长被阶乘 k!k! “压制”——就像标量的 eat=(at)kk!e^{at} = \sum \frac{(at)^k}{k!} 对任何 aa 都收敛一样。严格证明可参考 Åström & Murray (2021), Appendix C。

验证它确实是解:对 x(t)=eAtx(0)\mathbf{x}(t) = e^{At}\mathbf{x}(0) 关于 tt 求导:

ddteAt=ddt(I+At+A2t22!+A3t33!+)=A+A2t+A3t22!+=AeAt\frac{d}{dt} e^{At} = \frac{d}{dt}\left(I + At + \frac{A^2 t^2}{2!} + \frac{A^3 t^3}{3!} + \cdots\right) = A + A^2 t + \frac{A^3 t^2}{2!} + \cdots = A \cdot e^{At}

所以 x˙(t)=AeAtx(0)=Ax(t)\dot{\mathbf{x}}(t) = A e^{At}\mathbf{x}(0) = A\mathbf{x}(t)——确实满足微分方程。\blacksquare

Inline Box:矩阵幂级数与标量 Taylor 展开的正式对应

标量矩阵
x˙=ax\dot{x} = axx˙=Ax\dot{\mathbf{x}} = A\mathbf{x}
解:x(t)=eatx(0)x(t) = e^{at} x(0)解:x(t)=eAtx(0)\mathbf{x}(t) = e^{At}\mathbf{x}(0)
eat=k=0(at)kk!e^{at} = \sum_{k=0}^{\infty} \frac{(at)^k}{k!}eAt=k=0(At)kk!e^{At} = \sum_{k=0}^{\infty} \frac{(At)^k}{k!}
稳定:a<0a < 0稳定:所有特征值 Re(λi)<0\text{Re}(\lambda_i) < 0
振荡:aa 是纯虚数振荡:特征值是纯虚数

从标量到矩阵,公式形式完全相同——“标量 aa 的位置换成矩阵 AA,标量指数换成矩阵指数”。这不是类比,而是严格的数学推广。唯一的注意事项是矩阵乘法不满足交换律,所以 e(A+B)teAteBte^{(A+B)t} \neq e^{At}e^{Bt}(除非 AB=BAAB = BA)。

通过对角化计算矩阵指数

直接用幂级数求和需要无限项,实际中不可行。但如果 AA 可以对角化为 A=QΛQ1A = Q\Lambda Q^{-1},那么(Art. 2 特征分解 中已经预告过):

Ak=QΛkQ1A^k = Q\Lambda^k Q^{-1}

代入幂级数:

eAt=k=0(QΛQ1)ktkk!=Q(k=0Λktkk!)Q1=QeΛtQ1e^{At} = \sum_{k=0}^{\infty} \frac{(Q\Lambda Q^{-1})^k t^k}{k!} = Q \left(\sum_{k=0}^{\infty} \frac{\Lambda^k t^k}{k!}\right) Q^{-1} = Q\, e^{\Lambda t}\, Q^{-1}

而对角矩阵的指数就是逐元素取指数:

eΛt=diag(eλ1t,eλ2t,,eλnt)e^{\Lambda t} = \text{diag}(e^{\lambda_1 t}, e^{\lambda_2 t}, \ldots, e^{\lambda_n t})

所以:

eAt=Qdiag(eλ1t,eλ2t,,eλnt)Q1\boxed{e^{At} = Q\, \text{diag}(e^{\lambda_1 t}, e^{\lambda_2 t}, \ldots, e^{\lambda_n t})\, Q^{-1}}

这与离散情形 Ak=Qdiag(λ1k,,λnk)Q1A^k = Q\,\text{diag}(\lambda_1^k, \ldots, \lambda_n^k)\, Q^{-1} 完全平行——从 λik\lambda_i^k 变成了 eλite^{\lambda_i t}

数值例子

A=[10.502]A = \begin{bmatrix}-1 & 0.5 \\ 0 & -2\end{bmatrix}

第一步:特征分解。 AA 是上三角矩阵,特征值直接在对角线上:λ1=1\lambda_1 = -1, λ2=2\lambda_2 = -2

λ1=1\lambda_1 = -1(A+I)q1=[00.501]q1=0(A + I)\mathbf{q}_1 = \begin{bmatrix}0 & 0.5 \\ 0 & -1\end{bmatrix}\mathbf{q}_1 = \mathbf{0},得 q1=[10]\mathbf{q}_1 = \begin{bmatrix}1 \\ 0\end{bmatrix}

λ2=2\lambda_2 = -2(A+2I)q2=[10.500]q2=0(A + 2I)\mathbf{q}_2 = \begin{bmatrix}1 & 0.5 \\ 0 & 0\end{bmatrix}\mathbf{q}_2 = \mathbf{0},得 q2=[0.51]\mathbf{q}_2 = \begin{bmatrix}-0.5 \\ 1\end{bmatrix}

Q=[10.501],Q1=[10.501]Q = \begin{bmatrix}1 & -0.5 \\ 0 & 1\end{bmatrix}, \quad Q^{-1} = \begin{bmatrix}1 & 0.5 \\ 0 & 1\end{bmatrix}

第二步:矩阵指数。

eAt=[10.501][et00e2t][10.501]=[et0.5(ete2t)0e2t]e^{At} = \begin{bmatrix}1 & -0.5 \\ 0 & 1\end{bmatrix} \begin{bmatrix}e^{-t} & 0 \\ 0 & e^{-2t}\end{bmatrix} \begin{bmatrix}1 & 0.5 \\ 0 & 1\end{bmatrix} = \begin{bmatrix}e^{-t} & 0.5(e^{-t} - e^{-2t}) \\ 0 & e^{-2t}\end{bmatrix}

第三步:验证。x(0)=[11]\mathbf{x}(0) = \begin{bmatrix}1 \\ 1\end{bmatrix}

x(t)=eAtx(0)=[et+0.5(ete2t)e2t]=[1.5et0.5e2te2t]\mathbf{x}(t) = e^{At}\mathbf{x}(0) = \begin{bmatrix}e^{-t} + 0.5(e^{-t} - e^{-2t}) \\ e^{-2t}\end{bmatrix} = \begin{bmatrix}1.5e^{-t} - 0.5e^{-2t} \\ e^{-2t}\end{bmatrix}

t=1t = 1x(1)=[1.5×0.3680.5×0.1350.135]=[0.4840.135]\mathbf{x}(1) = \begin{bmatrix}1.5 \times 0.368 - 0.5 \times 0.135 \\ 0.135\end{bmatrix} = \begin{bmatrix}0.484 \\ 0.135\end{bmatrix}

两个分量都在衰减(因为 λ1=1<0,λ2=2<0\lambda_1 = -1 < 0, \lambda_2 = -2 < 0),但以不同的速率——x2x_2 衰减更快(e2te^{-2t} vs. ete^{-t})。

稳定性:特征值的实部决定一切

连续系统的稳定性判据

对角化后,每个特征方向的分量独立演化:第 ii 个分量的时间行为由 eλite^{\lambda_i t} 决定。

如果 λi\lambda_i 是实数:

  • λi<0\lambda_i < 0eλit0e^{\lambda_i t} \to 0(指数衰减,稳定)
  • λi=0\lambda_i = 0eλit=1e^{\lambda_i t} = 1(常数,临界)
  • λi>0\lambda_i > 0eλite^{\lambda_i t} \to \infty(指数增长,不稳定)

如果 λi\lambda_i 是复数 λi=α+iβ\lambda_i = \alpha + i\beta

eλit=e(α+iβ)t=eαteiβt=eαt(cosβt+isinβt)e^{\lambda_i t} = e^{(\alpha + i\beta)t} = e^{\alpha t} \cdot e^{i\beta t} = e^{\alpha t}(\cos\beta t + i\sin\beta t)

  • α<0\alpha < 0:振荡衰减(稳定螺旋)
  • α=0\alpha = 0:等幅振荡(中心,临界稳定)
  • α>0\alpha > 0:振荡增长(不稳定螺旋)

稳定性完全由实部 α=Re(λi)\alpha = \text{Re}(\lambda_i) 决定,虚部 β=Im(λi)\beta = \text{Im}(\lambda_i) 只决定振荡频率。

连续系统稳定    所有特征值满足 Re(λi)<0\boxed{\text{连续系统稳定} \iff \text{所有特征值满足 } \text{Re}(\lambda_i) < 0}

与离散系统的对比

离散系统 xk+1=Axk\mathbf{x}_{k+1} = A\mathbf{x}_k连续系统 x˙=Ax\dot{\mathbf{x}} = A\mathbf{x}
xk=Akx0\mathbf{x}_k = A^k \mathbf{x}_0x(t)=eAtx(0)\mathbf{x}(t) = e^{At}\mathbf{x}(0)
特征方向的行为λik\lambda_i^keλite^{\lambda_i t}
稳定条件$\lambda_i
稳定区域复平面上的单位圆内部复平面上的左半平面
振荡条件λi\lambda_i 有虚部λi\lambda_i 有虚部

关键联系:离散的 λ<1|\lambda| < 1 和连续的 Re(λ)<0\text{Re}(\lambda) < 0 通过映射 z=esΔtz = e^{s\Delta t}ss 是连续特征值,zz 是离散特征值)联系起来——如果 Re(s)<0\text{Re}(s) < 0,则 esΔt=eRe(s)Δt<1|e^{s\Delta t}| = e^{\text{Re}(s)\Delta t} < 1。这个映射正是下文离散化的核心。

下图并排展示了两种稳定区域——离散系统的单位圆和连续系统的左半平面,以及连接它们的离散化映射 z=esΔtz = e^{s\Delta t}

稳定区域对比:离散系统 vs 连续系统
离散:|λ| < 1(单位圆内) ↔ 连续:Re(λ) < 0(左半平面) 通过 z = eˢΔᵗ 联系
离散系统 xₖ₊₁ = AxₖReIm稳定|λ| < 1不稳定|λ| = 1z = eˢΔᵗ离散化映射连续系统 ẋ = AxReIm稳定Re(λ) < 0不稳定Re(λ) = 0Re(s) < 0 ⟹ |eˢΔᵗ| = e^(Re(s)Δt) < 1 — 连续稳定 ⟹ 离散稳定

复特征值 → 振荡行为

当系统矩阵 AA 有复特征值 λ=α±iβ\lambda = \alpha \pm i\beta 时,对应的运动是振荡(oscillation)叠加指数包络(exponential envelope):

  • 振荡频率ω=β\omega = \beta(弧度/秒),周期 T=2π/βT = 2\pi / \beta
  • 包络变化eαte^{\alpha t}——如果 α<0\alpha < 0,振幅随时间衰减;如果 α>0\alpha > 0,振幅随时间增长

一个典型的物理例子:阻尼弹簧系统 mx¨+cx˙+kx=0m\ddot{x} + c\dot{x} + kx = 0 可以写成一阶形式

[x˙v˙]=[01k/mc/m][xv]\begin{bmatrix}\dot{x}\\\dot{v}\end{bmatrix} = \begin{bmatrix}0 & 1\\-k/m & -c/m\end{bmatrix}\begin{bmatrix}x\\v\end{bmatrix}

当阻尼 cc 较小时,特征值为复数(欠阻尼),系统表现为衰减振荡——这正是弹簧振子的经典行为。

可视化:线性系统的相平面

下面的交互组件展示了六种典型 2D 线性系统的状态演化。每条彩色轨迹从不同的初始条件出发,在系统矩阵 AA 的作用下沿 x(t)=eAtx(0)\mathbf{x}(t) = e^{At}\mathbf{x}(0) 演化。右侧面板显示特征值在复平面上的位置——绿色表示稳定(左半平面),红色表示不稳定(右半平面)。

2D 线性系统状态演化
ẋ = Ax 的相平面轨迹
A = [-1, 0.5; 0, -2]两个负实特征值:所有轨迹指数衰减到原点
-3-3-2-2-1-1112233x₁x₂t = 3.00
特征值位置
稳定不稳定ReImλ1=-1λ2=-2
A = [-1, 0.5]
    [0, -2]
连续系统稳定性判据:
Re(λᵢ) < 0 ⟹ 稳定
(对比离散系统:|λᵢ| < 1)
t = 3.00
Re(λ) < 0 稳定Re(λ) > 0 不稳定Re(λ) = 0 临界

探索建议

  1. 稳定节点:观察所有轨迹如何从不同方向收敛到原点。特征值都在左半平面,两个衰减速率不同。
  2. 不稳定节点:轨迹向外发散。特征值都在右半平面。
  3. 稳定螺旋:轨迹螺旋式收敛——这是复特征值(负实部)的标志性行为。
  4. 不稳定螺旋:轨迹螺旋式发散。复特征值(正实部)。
  5. 中心(纯振荡):轨迹在闭合曲线上运动——纯虚特征值,既不收敛也不发散。
  6. 鞍点:一正一负特征值——沿一个方向收敛,另一个方向发散。

离散化:从连续到离散的桥梁

为什么需要离散化?因为数字计算机只能处理离散的时间步。连续系统 x˙=Ax+Bu\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}(加入了输入 u\mathbf{u})需要被转换为离散形式 xk+1=Aˉxk+Bˉuk\mathbf{x}_{k+1} = \bar{A}\mathbf{x}_k + \bar{B}\mathbf{u}_k 才能在计算机上实现。这个转换在控制工程中由来已久,如今在 SSM/Mamba 中再次成为关键——Mamba 的状态矩阵就是通过离散化从连续参数得到的

零阶保持(Zero-Order Hold, ZOH)

ZOH 假设输入 u(t)\mathbf{u}(t) 在每个采样间隔 [kΔt,(k+1)Δt)[k\Delta t, (k+1)\Delta t) 内保持恒定:u(t)=uk\mathbf{u}(t) = \mathbf{u}_k

从连续方程 x˙=Ax+Bu\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u} 出发,在 [kΔt,(k+1)Δt)[k\Delta t, (k+1)\Delta t) 上积分,利用常数变易法:

x((k+1)Δt)=eAΔtx(kΔt)+(0ΔteAτdτ)Buk\mathbf{x}((k+1)\Delta t) = e^{A\Delta t}\mathbf{x}(k\Delta t) + \left(\int_0^{\Delta t} e^{A\tau}\, d\tau\right) B\, \mathbf{u}_k

定义离散化后的矩阵:

Aˉ=eAΔt,Bˉ=(0ΔteAτdτ)B=A1(eAΔtI)B\bar{A} = e^{A\Delta t}, \qquad \bar{B} = \left(\int_0^{\Delta t} e^{A\tau}\, d\tau\right) B = A^{-1}(e^{A\Delta t} - I) B

(当 AA 可逆时;不可逆时可通过级数展开计算。)

则离散系统为:

xk+1=Aˉxk+Bˉuk\mathbf{x}_{k+1} = \bar{A}\mathbf{x}_k + \bar{B}\mathbf{u}_k

ZOH 离散化的关键性质:

  • 精确性:在采样点上,离散系统给出的值与连续系统完全一致(不是近似)
  • 稳定性保持:如果连续系统稳定(Re(λi)<0\text{Re}(\lambda_i) < 0),离散系统也稳定(eλiΔt<1|e^{\lambda_i \Delta t}| < 1

双线性变换(Bilinear Transform / Tustin’s Method)

双线性变换用一种不同的方式将连续系统转换为离散系统。核心思想是用梯形法则近似积分:

s2Δtz1z+1s \approx \frac{2}{\Delta t} \cdot \frac{z - 1}{z + 1}

这给出:

Aˉ=(IΔt2A)1(I+Δt2A)\bar{A} = \left(I - \frac{\Delta t}{2}A\right)^{-1}\left(I + \frac{\Delta t}{2}A\right)

Bˉ=(IΔt2A)1ΔtB\bar{B} = \left(I - \frac{\Delta t}{2}A\right)^{-1} \Delta t \cdot B

双线性变换的关键性质:

  • 保持频率响应:将连续系统的频率特性保真地映射到离散域
  • 绝对稳定性保持:连续系统的左半平面精确映射到离散系统的单位圆内部——这意味着稳定的连续系统离散化后一定稳定(无论 Δt\Delta t 多大)
  • 这正是 S4 (Structured State Spaces) 论文中使用的离散化方法(Gu, Goel & Ré, 2022)

离散化方法对比

方法离散 Aˉ\bar{A}精确性稳定性保持用于
ZOHeAΔte^{A\Delta t}采样点精确控制工程(经典)
双线性变换(IΔt2A)1(I+Δt2A)(I - \frac{\Delta t}{2}A)^{-1}(I + \frac{\Delta t}{2}A)频率保真无条件S4 / SSM
欧拉前向I+AΔtI + A\Delta tO(Δt)O(\Delta t) 近似不保证Δt\Delta t 大时可能不稳定)教学/简单仿真
离散化方法对比:从连续 A 到离散 Ā连续 ẋ = Ax + Bu → 离散 x_{k+1} = Āx_k + B̄u_k欧拉前向Ā = I + AΔt精度: O(Δt) 近似稳定性: 不保证教学ZOHĀ = e^{AΔt}精度: 采样点精确稳定性: 保持控制 / Mamba双线性变换Ā = (I-½ΔtA)⁻¹(I+½ΔtA)精度: 频率保真稳定性: 无条件保持S4 / SSM精度和稳定性保证递增SSM/Mamba 通过离散化获得分辨率不变性——训练和推理可用不同 Δt

为什么 SSM/Mamba 关注离散化? 因为 SSM 的核心参数(A,B,C,DA, B, C, D)定义在连续时间域——这赋予了模型分辨率不变性(resolution invariance)。训练时用特定的 Δt\Delta t 离散化;推理时可以改变 Δt\Delta t 以适应不同的输入分辨率。离散化方法的选择直接影响数值稳定性和计算效率。

Kalman 滤波:连续世界的”Forward 算法”

问题设置

回顾 Art. 16 HMM 的核心问题:状态隐藏了,只能通过噪声观测来推断。 Kalman 滤波处理的是同一个问题,但在连续状态空间中:

HMM(Art. 16)Kalman 滤波(本文)
隐状态离散 Xt{s1,,sN}X_t \in \{s_1, \ldots, s_N\}连续 xtRn\mathbf{x}_t \in \mathbb{R}^n
状态转移转移矩阵 AA(概率)状态方程 xk+1=Axk+wk\mathbf{x}_{k+1} = A\mathbf{x}_k + \mathbf{w}_k(线性 + 噪声)
观测发射矩阵 BB(概率)观测方程 yk=Cxk+vk\mathbf{y}_k = C\mathbf{x}_k + \mathbf{v}_k(线性 + 噪声)
推断方法Forward 算法(求和)Kalman 滤波(高斯积分)
核心结构传播 + 修正预测 + 更新

State-Space 形式 (A,B,C,D)(A, B, C, D)

一个完整的线性 state-space 模型由四个矩阵描述:

x˙(t)=Ax(t)+Bu(t)\dot{\mathbf{x}}(t) = A\mathbf{x}(t) + B\mathbf{u}(t) y(t)=Cx(t)+Du(t)\mathbf{y}(t) = C\mathbf{x}(t) + D\mathbf{u}(t)

逐项解释:

  • x(t)Rn\mathbf{x}(t) \in \mathbb{R}^n状态向量——系统的内部状态,维度 nn 称为状态维度
  • u(t)Rm\mathbf{u}(t) \in \mathbb{R}^m输入向量——外部驱动
  • y(t)Rp\mathbf{y}(t) \in \mathbb{R}^p输出向量——可观测的量
  • ARn×nA \in \mathbb{R}^{n \times n}状态矩阵——描述状态的自演化(没有输入时系统如何自行演化)
  • BRn×mB \in \mathbb{R}^{n \times m}输入矩阵——描述输入如何影响状态(本文首次引入)
  • CRp×nC \in \mathbb{R}^{p \times n}输出矩阵——描述状态如何被观测
  • DRp×mD \in \mathbb{R}^{p \times m}直通矩阵——描述输入对输出的直接影响(很多系统中 D=0D = 0

第一个方程是状态方程——描述系统的内部动态。第二个是观测方程——描述我们能看到什么。

与 HMM 的对应:HMM 的转移矩阵 AHMMA_{\text{HMM}} 对应 state-space 的 AA(状态如何演化),HMM 的发射矩阵 BHMMB_{\text{HMM}} 对应 state-space 的 CC(状态如何被观测)。注意符号差异:HMM 文献用 BB 表示发射矩阵,state-space 文献用 BB 表示输入矩阵——完全不同的含义,需要根据上下文区分。

离散 Kalman 滤波

实际中,Kalman 滤波通常在离散时间上实现。离散化后的 state-space 模型为:

xk+1=Axk+Buk+wk,wkN(0,Q)\mathbf{x}_{k+1} = A\mathbf{x}_k + B\mathbf{u}_k + \mathbf{w}_k, \quad \mathbf{w}_k \sim \mathcal{N}(\mathbf{0}, Q) yk=Cxk+vk,vkN(0,R)\mathbf{y}_k = C\mathbf{x}_k + \mathbf{v}_k, \quad \mathbf{v}_k \sim \mathcal{N}(\mathbf{0}, R)

其中 wk\mathbf{w}_k 是过程噪声(模型不完美性),vk\mathbf{v}_k 是观测噪声(传感器不完美性),QQRR 分别是它们的协方差矩阵。

Kalman 滤波在每个时间步执行两步操作——与 HMM 的 Forward 算法结构完全对应:

步骤 1:预测(Predict) —— 对应 HMM Forward 的”传播”

x^kk1=Ax^k1k1+Buk1\hat{\mathbf{x}}_{k|k-1} = A\hat{\mathbf{x}}_{k-1|k-1} + B\mathbf{u}_{k-1} Pkk1=APk1k1AT+QP_{k|k-1} = A P_{k-1|k-1} A^T + Q

第一个方程用状态方程将上一步的最优估计 x^k1k1\hat{\mathbf{x}}_{k-1|k-1} 推进一步,得到先验估计 x^kk1\hat{\mathbf{x}}_{k|k-1}。 第二个方程将上一步的估计协方差矩阵 Pk1k1P_{k-1|k-1} 也推进一步——不确定性通过 AA 传播,加上过程噪声 QQ 带来的额外不确定性。

步骤 2:更新(Update) —— 对应 HMM Forward 的”修正”

Kk=Pkk1CT(CPkk1CT+R)1K_k = P_{k|k-1} C^T (C P_{k|k-1} C^T + R)^{-1} x^kk=x^kk1+Kk(ykCx^kk1)\hat{\mathbf{x}}_{k|k} = \hat{\mathbf{x}}_{k|k-1} + K_k(\mathbf{y}_k - C\hat{\mathbf{x}}_{k|k-1}) Pkk=(IKkC)Pkk1P_{k|k} = (I - K_kC) P_{k|k-1}

逐项解释:

  • KkK_kKalman 增益(Kalman gain)——核心权重矩阵
  • ykCx^kk1\mathbf{y}_k - C\hat{\mathbf{x}}_{k|k-1}新息(innovation)——实际观测与预测观测的差异
  • x^kk\hat{\mathbf{x}}_{k|k}后验估计——用新息修正先验估计
  • PkkP_{k|k}后验协方差——更新后的不确定性(因为获得了观测信息,不确定性降低)

Kalman 增益的直觉

KkK_k 是 Kalman 滤波的灵魂。它平衡两个信息来源之间的”可信度”:

Kk=Pkk1CT状态预测的不确定性投影到观测空间(CPkk1CT+R)1总不确定性(预测 + 观测)的逆K_k = \underbrace{P_{k|k-1} C^T}_{\text{状态预测的不确定性投影到观测空间}} \cdot \underbrace{(C P_{k|k-1} C^T + R)^{-1}}_{\text{总不确定性(预测 + 观测)的逆}}

直觉上:

  • 如果观测噪声 RR 很小(传感器很准):KkC1K_k \to C^{-1}(右伪逆),更新步几乎完全相信观测
  • 如果观测噪声 RR 很大(传感器很差):Kk0K_k \to 0,更新步几乎忽略观测,完全相信模型预测
  • 如果预测不确定性 Pkk1P_{k|k-1} 很大(模型不确定):KkK_k 增大,更依赖观测
  • 如果预测不确定性 Pkk1P_{k|k-1} 很小(模型很确定):KkK_k 减小,更依赖模型
Kalman 增益 K:模型预测 vs 传感器观测的信任平衡完全信模型完全信观测K → 0K → C⁻¹KR 小(传感器准)KR ≈ P(平衡)KR 大(传感器差)K_k = P_k|k-1 C^T (C P_k|k-1 C^T + R)^{-1} ← 预测不确定性 P 大则 K 大,观测噪声 R 大则 K 小

“预测 + 更新”与 HMM “传播 + 修正”的统一结构

步骤HMM ForwardKalman 滤波
传播/预测乘转移矩阵:α=αk1A\alpha' = \alpha_{k-1} A状态方程推进:x^kk1=Ax^k1k1\hat{x}_{k \mid k-1} = A \hat{x}_{k-1 \mid k-1}
修正/更新乘发射概率(逐元素)用观测新息修正:加 KkK_k 倍的新息
数学本质离散概率的乘法高斯分布的贝叶斯更新

结构完全一致:先用系统模型推进一步,再用观测数据修正估计。HMM 用离散概率的乘法实现修正,Kalman 用高斯分布的贝叶斯公式实现修正。这就是 Art. 16 HMM 末尾提到的”传播 + 修正范式”在连续状态空间的自然延伸。

下图展示了 Kalman 滤波的”预测-更新”循环结构,以及它与 HMM Forward 算法的对应关系。

Kalman 滤波的"预测-更新"循环
与 HMM Forward 的"传播-修正"结构完全对应
x̂ₖ₋₁|ₖ₋₁Pₖ₋₁|ₖ₋₁上一步后验① 预测 (Predict)x̂ₖ|ₖ₋₁ = A·x̂ₖ₋₁|ₖ₋₁Pₖ|ₖ₋₁ = A·P·Aᵀ + Q不确定性增大② 更新 (Update)Kₖ = P·Cᵀ·(C·P·Cᵀ+R)⁻¹x̂ₖ|ₖ = x̂ₖ|ₖ₋₁ + Kₖ·(yₖ − C·x̂)观测修正,不确定性减小yₖ观测数据后验成为下一步的先验 → 循环HMM 对应:① = 乘转移矩阵 A(传播) ② = 乘发射概率 b(oₜ)(修正)

Inline Box:Cholesky 分解在协方差计算中的角色

Kalman 增益的计算涉及矩阵求逆 (CPkk1CT+R)1(C P_{k|k-1} C^T + R)^{-1}。在实际实现中,直接求逆数值不稳定且效率低。更好的做法是利用 Cholesky 分解

因为 Sk=CPkk1CT+RS_k = C P_{k|k-1} C^T + R对称正定矩阵(协方差矩阵之和),它可以唯一分解为:

Sk=LkLkTS_k = L_k L_k^T

其中 LkL_k 是下三角矩阵。然后通过前代-回代求解 SkKkT=(CPkk1)TS_k K_k^T = (C P_{k|k-1})^T,避免显式求逆。

Cholesky 分解的优势:

  • 计算量是一般 LU 分解的一半(13n3\frac{1}{3}n^3 vs. 23n3\frac{2}{3}n^3
  • 保证数值稳定性(利用了正定性)
  • 保持协方差矩阵的正定性(避免舍入误差导致”负方差”)

这种技巧在高维 Kalman 滤波(如 GPS 定位、SLAM)中至关重要。“square-root Kalman filter”就是将整个算法改写为 Cholesky 因子的传播,而非协方差矩阵本身的传播。

Kalman 滤波的最优性

Kalman (1960) 证明了一个深刻的结果:在线性系统 + 高斯噪声的假设下,Kalman 滤波是最小均方误差(MMSE)最优估计器。 即:

x^kk=E[xky0,y1,,yk]\hat{\mathbf{x}}_{k|k} = \mathbb{E}[\mathbf{x}_k \mid \mathbf{y}_0, \mathbf{y}_1, \ldots, \mathbf{y}_k]

这不是某种启发式——它是给定所有过去观测后对状态的条件期望,在均方误差意义下不可能被任何其他估计器超越。这个最优性源于高斯分布在线性变换下的封闭性:高斯的先验乘以高斯的似然,后验仍然是高斯——所以只需要追踪均值和协方差就足够了。

与 SSM/Mamba 的 State-Space 公式对照

Kalman 滤波的 state-space 公式与 SSM/Mamba(Art. 26 SSM/Mamba)使用的公式是同一套公式,只是语境和目标不同:

Kalman 滤波SSM / Mamba
连续形式x˙=Ax+Bu\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}, y=Cx\mathbf{y} = C\mathbf{x}x˙=Ax+Bu\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}, y=Cx+Du\mathbf{y} = C\mathbf{x} + D\mathbf{u}
离散形式xk+1=Aˉxk+Bˉuk\mathbf{x}_{k+1} = \bar{A}\mathbf{x}_k + \bar{B}\mathbf{u}_kxk+1=Aˉxk+Bˉuk\mathbf{x}_{k+1} = \bar{A}\mathbf{x}_k + \bar{B}\mathbf{u}_k
AA 的结构由物理系统决定可学习参数(约束为对角矩阵)
B,CB, C由物理系统决定可学习参数
离散化ZOH(经典)双线性变换(S4)/ ZOH(Mamba)
目标从噪声观测中推断隐状态从输入序列预测输出序列
核心关注点最优估计(最小方差)高效序列建模(线性时间复杂度)

关键差异:Kalman 滤波中 (A,B,C)(A, B, C) 由物理系统(力学方程、电路方程等)给定,是”领域知识”;SSM/Mamba 中 (A,B,C)(A, B, C) 是从数据中学习的参数——这正是 Part 3 “汇——学习算子”的核心转变。

关键连接:SSM/Mamba 将 AA 约束为对角矩阵A=diag(a1,,an)A = \text{diag}(a_1, \ldots, a_n)),此时 eAt=diag(ea1t,,eant)e^{At} = \text{diag}(e^{a_1 t}, \ldots, e^{a_n t})——各状态分量独立演化,离散化后 Aˉ\bar{A} 也是对角的,使得卷积形式的并行计算成为可能。这是 Art. 2 特征分解中”对角化简化一切”这个洞察的终极应用。

总结与展望

本文从离散步进走向连续流动,完成了 Part 2 时序算子子线的最后一站:

  • 连续线性系统 x˙=Ax\dot{\mathbf{x}} = A\mathbf{x} 的解是 x(t)=eAtx(0)\mathbf{x}(t) = e^{At}\mathbf{x}(0)——矩阵指数是矩阵幂的连续时间推广
  • 矩阵指数的计算依赖对角化:eAt=Qdiag(eλ1t,,eλnt)Q1e^{At} = Q\,\text{diag}(e^{\lambda_1 t}, \ldots, e^{\lambda_n t})\, Q^{-1},与离散的 Ak=QΛkQ1A^k = Q\Lambda^k Q^{-1} 完全平行
  • 稳定性判据从离散的 λi<1|\lambda_i| < 1 变成连续的 Re(λi)<0\text{Re}(\lambda_i) < 0——特征值的实部决定系统命运
  • 复特征值带来振荡行为——实部控制包络增长/衰减,虚部控制振荡频率
  • 离散化(ZOH、双线性变换)将连续系统转换为可在计算机上实现的离散系统——这是 SSM/Mamba 的关键步骤
  • Kalman 滤波是 HMM Forward 算法在连续状态空间的自然延伸——“预测 + 更新”对应”传播 + 修正”,是线性高斯系统的 MMSE 最优估计
  • State-Space 公式 (A,B,C,D)(A, B, C, D) 统一了控制论和现代序列建模——同一套数学,不同的参数来源(物理给定 vs. 数据学习)

统一线索:特征分解贯穿始终。 Ak=QΛkQ1A^k = Q\Lambda^k Q^{-1} 描述离散迭代,eAt=QeΛtQ1e^{At} = Qe^{\Lambda t}Q^{-1} 描述连续演化,Aˉ=eAΔt\bar{A} = e^{A\Delta t} 实现离散化——这三个公式构成一条因果链,连接着 Art. 2 特征分解→ 本文 → Art. 26 SSM/Mamba

至此,Part 2 的时序算子子线画上句号。从最简单的马尔可夫链(离散、可观测)到 HMM(离散、隐藏)到本文的连续系统和 Kalman 滤波——我们沿着概念地图走完了”离散 → 连续”和”可观测 → 隐藏”的两个维度。

下一篇,我们进入 Part 2 的第二条子线——图/空间算子。PageRank 将马尔可夫链的思想应用于互联网的链接图:把整个万维网看作一个巨大的马尔可夫链,网页是状态,超链接定义转移概率,稳态分布就是每个网页的”重要性”。它是时序算子子线和图算子子线的交汇点——同时身兼两个身份,连接我们已经走过的路和即将踏入的新领域。