3. 概率论与线性代数基础
卡尔曼滤波并不是一组“凭经验调出来的公式”,它本质上是高斯分布假设下的贝叶斯递推,而递推的每一步都靠线性代数完成。理解这一章,你才能明白为什么卡尔曼增益长成那个样子、为什么协方差矩阵必须正定、为什么数值上会出现“滤波发散”。本章把后续建模所需的数学工具一次性讲透,并始终围绕“动态配对关系建模”这一目标。
一、核心原理:高斯分布是卡尔曼滤波的“语言”
一维高斯分布由均值 μ 和方差 σ² 完全确定,记作 x ~ N(μ, σ²)。多维情况下,均值变成向量 x,方差变成协方差矩阵 P,即 x ~ N(μ, P)。协方差矩阵的对角线是各维方差,非对角线是两维之间的协方差,它刻画了变量之间的线性相关方向与强度。
高斯分布有三个对滤波极其友好的性质:第一,线性变换后仍是高斯分布;第二,两个高斯分布的乘积仍是高斯分布(只差归一化常数);第三,边缘分布与条件分布都仍是高斯分布。正因为这三条,卡尔曼滤波的“预测—更新”才能始终用均值和协方差两个量闭合地描述,而不需要维护完整的概率密度函数。
二、条件概率与贝叶斯公式:滤波的推理骨架
条件概率 P(A|B) 表示在 B 发生的前提下 A 发生的概率。贝叶斯公式把它反过来用:
P(A|B) = P(B|A) * P(A) / P(B)
在滤波语境下,A 是“状态”,B 是“观测”。P(A) 是先验(预测),P(B|A) 是似然(观测模型),P(A|B) 是后验(更新后的状态估计)。卡尔曼滤波的更新步,本质上就是用观测似然去修正先验,而由于高斯假设,这个修正可以写成闭式的矩阵运算。
把高斯形式代入贝叶斯公式,可以得到一个非常重要的直觉:后验均值是先验均值与观测值的加权平均,权重由各自的协方差决定。谁的方差小(更确定),谁的权重就大。卡尔曼增益 K 正是这个权重的多维推广。
三、矩阵运算与协方差矩阵正定性
卡尔曼滤波的每一步都是矩阵运算:矩阵乘法用于状态预测与观测映射,矩阵转置用于协方差传播,矩阵求逆用于计算增益。下面列出最常用的几个操作及其在滤波中的角色。
| 运算 | 数学形式 | 在卡尔曼滤波中的作用 |
|---|---|---|
| 矩阵乘法 | AB | 状态转移、观测映射、协方差传播 |
| 转置 | AT | 协方差对称化、投影到观测空间 |
| 求逆 | A-1 | 计算卡尔曼增益中的新息协方差逆 |
| 行列式 | det(A) | 判断矩阵是否可逆、协方差是否退化 |
| 特征值 | λi | 判断正定性、分析数值稳定性 |
协方差矩阵 P 必须是对称正定的。正定意味着对任意非零向量 v,都有 vTPv > 0,即方差永远为正。如果 P 失去正定性,滤波可能产生负方差、增益异常甚至发散。工程上常用“对称化 + 特征值截断”来修复:
P = (P + P.T) / 2 # 强制对称
eigvals, eigvecs = np.linalg.eigh(P)
eigvals = np.clip(eigvals, 1e-9, None) # 截断非正特征值
P = eigvecs @ np.diag(eigvals) @ eigvecs.T
四、案例场景:动态配对关系中的高斯建模
假设我们在做目标与观测的动态配对:状态是目标位置与速度,观测是传感器返回的候选点。配对关系可以建模为一个隐变量,而每个候选点的“可信度”用高斯似然衡量。具体流程如下:
- 用先验状态 xk|k-1 和协方差 Pk|k-1 描述目标预测分布。
- 对每个候选观测 zi,计算新息 yi = zi − Hxk|k-1 及其协方差 S = HPHT + R。
- 用高斯似然 N(yi; 0, S) 计算该候选点的匹配概率,概率越高越可能是正确配对。
- 按概率加权或选择最大似然候选,执行卡尔曼更新,得到后验 xk|k 与 Pk|k。
这个过程中,条件概率负责“在预测位置附近观测到该点的可能性”,贝叶斯公式负责“把先验配对信念与观测似然融合”,协方差矩阵则决定了融合时谁的话语权更大。三者缺一不可。
五、误区复盘与工程建议
- 把高斯假设当摆设:如果实际噪声重尾或存在多峰,标准卡尔曼滤波会失效,需要考虑粒子滤波或高斯混合。
- 忽略协方差正定性:长期运行必须做对称化与特征值截断,否则数值误差会累积。
- 混淆条件概率方向:P(观测|状态) 是似然,P(状态|观测) 是后验,写反会导致更新方向错误。
- 矩阵求逆硬算:实际工程中优先用 Cholesky 分解或求解线性方程组,避免显式求逆带来的数值不稳定。
- 噪声矩阵随意设:Q 和 R 的比值直接决定滤波器的“信任倾向”,应结合传感器精度与运动模型不确定性来标定。
掌握高斯分布、条件概率、贝叶斯公式、矩阵运算与协方差正定性之后,你就具备了读懂卡尔曼滤波全部公式的数学基础。下一阶段我们将把这些工具组装成完整的预测与更新递推,并进入动态配对关系建模的实战环节。