扩展卡尔曼滤波中旧状态高斯近似表述的含义咨询
扩展卡尔曼滤波框架下“旧状态高斯近似”的具体含义
这个表述其实是EKF最容易被新手混淆的核心假设——很多教程会笼统说“EKF要做高斯近似”,但从来没说清近似的对象、位置和目的,你遇到的这个表述就是把这个模糊的点给锚定清楚了。
它的具体含义可以顺着EKF的迭代流程拆明白:
- 先说背景:纯线性KF的场景里,状态转移、观测过程全是线性操作,只要初始状态是高斯分布,后续每一步的状态先验、后验都是严格的高斯分布,半毛钱近似都不需要。但EKF面对的是非线性系统——状态转移靠非线性函数
f(·)算,观测映射靠非线性函数h(·)算,真实状态的概率分布经过非线性操作后,会出现偏斜、多峰、非对称拖尾这些非高斯特征,根本没法用一个标准高斯函数完美表示,更求不出简单的闭式解。 - 所谓“当前状态之前的状态采用正态分布近似”,就是在每一轮迭代刚进入预测步的时候,我们直接把上一时刻(也就是“旧时刻”)已经完成观测更新的后验状态,强制拉回成标准多元正态分布:只保留这个旧状态的两个统计量——后验均值
μ_{t-1|t-1}、后验协方差Σ_{t-1|t-1},完全扔掉旧状态可能带的非高斯高阶矩、历史传播攒下的分布偏移、计算截断误差这些信息,默认这个旧状态的概率密度完全可以用高斯函数拟合。 - 为啥要做这层近似?因为如果不对旧状态做这个简化,我们根本没法用解析方法推导出非线性传播后的状态均值和协方差,后面的雅可比线性化、卡尔曼增益计算更是无从谈起——这是EKF能跑起来的基础前提。
这里一定要把这层近似和EKF里其他常见的近似给划清边界,不然很容易学混:
- 这和“对非线性函数做一阶泰勒展开的线性化近似”是完全独立的两步:旧状态的高斯近似是对计算输入(也就是上一步的状态分布)的简化,线性化是对映射函数本身的简化,谁也不包含谁。举个极端的例子:哪怕你不对
f(·)、h(·)做任何线性化,只要你算预测的时候默认上一步的旧状态是高斯的,你就已经做了这层旧状态高斯近似。 - 这层近似也是EKF容易发散的常见诱因:如果上一步的旧状态经过长期非线性传播,已经攒了很明显的非高斯偏差,你直接把它抹成对称的高斯,会导致后续预测的状态均值偏掉、协方差被严重低估,慢慢滤波器就会过度信任有问题的预测值,最终飘离真实状态轨迹。
很多资料里笼统说的“EKF假设状态服从高斯分布”其实是不准确的——EKF从来不会要求真实状态必须是高斯分布,它的硬要求从来都是:每一步用来推导当前状态的那个“旧状态”,必须被人为近似成高斯,这也是为啥资料要专门把这个点单独拿出来说的原因。
内容的提问来源于stack exchange,提问作者Lilla
相关产品推荐
相关产品推荐

