卡尔曼滤波(EKF/IEKF)与非线性优化(高斯-牛顿法)的统一关系

卡尔曼滤波(EKF/IEKF)与非线性优化(高斯-牛顿法)的统一关系

"Hessian 矩阵和协方差矩阵互为逆矩阵",这一核心结论正是连接卡尔曼滤波(统计学/概率论范畴)与非线性优化(高斯-牛顿法)的关键钥匙。理解这一点,就能彻底厘清为什么扩展卡尔曼滤波(EKF)是一次高斯-牛顿迭代,而迭代扩展卡尔曼滤波(IEKF)是多次迭代。本文将结合通俗类比、核心公式与严谨推导,层层拨开迷雾,解析两者的统一本质。

一、核心直觉:卡尔曼滤波的"弹簧平衡"类比

无论是EKF、IEKF还是非线性优化,其核心目标都是求解"最准确的状态" xxx ,本质上都是一个加权最小二乘问题。我们可以用一个直观的"弹簧平衡"系统来理解这一过程:

  1. 先验(预测)约束 :我们拥有状态的先验预测值 x^−\hat{x}^-x^− ,它像一根弹簧牵引着目标状态 xxx ,弹簧的"硬度"由 P−1P^{-1}P−1 (信息矩阵)决定。核心规律是:协方差 PPP 越大,代表先验预测的不确定性越强(越不准),对应的信息矩阵 P−1P^{-1}P−1 越小(弹簧越软),对 xxx 的牵引作用越弱。

  2. 观测(更新)约束 :我们拥有观测值 zzz ,它通过观测方程 h(x)h(x)h(x) 也对状态 xxx 产生牵引,其弹簧"硬度"由 R−1R^{-1}R−1 (观测噪声协方差的逆)决定,观测噪声越小,弹簧越硬,对 xxx 的牵引作用越强。

整个过程的目标,就是找到让这个"弹簧系统"能量(即代价函数)最小的平衡点,也就是最优状态估计值 xxx 。

二、数学推导:从高斯-牛顿法看EKF的本质

卡尔曼滤波的状态更新过程,本质上是求解一个非线性最小二乘问题,而高斯-牛顿法正是求解这类问题的核心方法,我们通过代价函数推导可清晰看到两者的关联。

2.1 定义代价函数

我们需要最小化的代价函数(即弹簧系统的总能量)由先验约束和观测约束两部分组成:

J(x)=12(x−x^−)TP−1(x−x^−)⏟先验约束+12(z−h(x))TR−1(z−h(x))⏟观测约束J(x) = \underbrace{\frac{1}{2} (x - \hat{x}^-)^T P^{-1} (x - \hat{x}^-)}{\text{先验约束}} + \underbrace{\frac{1}{2} (z - h(x))^T R^{-1} (z - h(x))}{\text{观测约束}}J(x)=先验约束 21(x−x^−)TP−1(x−x^−)+观测约束 21(z−h(x))TR−1(z−h(x))

该函数的物理意义的是:状态 xxx 偏离先验预测 x^−\hat{x}^-x^− 和观测映射值 h(x)h(x)h(x) 的加权和,权重由信息矩阵(弹簧硬度)决定。

2.2 高斯-牛顿法的核心步骤(线性化与求导)

高斯-牛顿法求解非线性最小二乘问题的核心是"线性化近似",具体分为三步:

  1. 观测方程线性化(一阶泰勒展开) :在当前估计点 xopx_{op}xop 附近,将非线性观测方程 h(x)h(x)h(x) 线性化,得到: h(x)≈h(xop)+H(x−xop)h(x) \approx h(x_{op}) + H (x - x_{op})h(x)≈h(xop)+H(x−xop) 其中 HHH 是雅可比矩阵,即 H=∂h∂xH = \frac{\partial h}{\partial x}H=∂x∂h ,描述了观测值随状态变化的"斜率"。

  2. 梯度与Hessian矩阵求解 :为找到代价函数的最小值,需对 J(x)J(x)J(x) 求一阶导(梯度 ggg )和二阶导(Hessian矩阵 H\mathcal{H}H ),高斯-牛顿法中对Hessian矩阵做近似简化(忽略二阶项):

    • Hessian矩阵(近似): H≈P−1+HTR−1H\mathcal{H} \approx P^{-1} + H^T R^{-1} HH≈P−1+HTR−1H
      这里的关键洞察是:Hessian矩阵 H\mathcal{H}H 本质就是后验信息矩阵,即后验协方差矩阵的逆 Ppost−1P_{post}^{-1}Ppost−1 ,这直接验证了"协方差矩阵与Hessian矩阵互为逆矩阵"的核心结论。
      梯度(一阶导):当线性化点选在先验预测值 xop=x^−x_{op} = \hat{x}^-xop=x^− 时,梯度推导可得: g=−HTR−1(z−h(x^−))g = - H^T R^{-1} (z - h(\hat{x}^-))g=−HTR−1(z−h(x^−))
      梯度为0时对应代价函数的最小值点。
  3. 状态更新(高斯-牛顿迭代步) :高斯-牛顿法的标准迭代公式为 Δx=−H−1g\Delta x = - \mathcal{H}^{-1} gΔx=−H−1g

    将上述Hessian矩阵和梯度代入,可得:
    Δx=(P−1+HTR−1H)−1HTR−1(z−h(x^−))\Delta x = (P^{-1} + H^T R^{-1} H)^{-1} H^T R^{-1} (z - h(\hat{x}^-))Δx=(P−1+HTR−1H)−1HTR−1(z−h(x^−)) 此时的状态更新为 xnew=x^−+Δxx_{new} = \hat{x}^- + \Delta xxnew=x^−+Δx

    表面上这是信息滤波的形式,但通过谢尔曼-莫里森-伍德伯里矩阵求逆引理展开,可得到 (P−1+HTR−1H)−1HTR−1≡PHT(HPHT+R)−1(P^{-1} + H^T R^{-1} H)^{-1} H^T R^{-1} \equiv P H^T (H P H^T + R)^{-1}(P−1+HTR−1H)−1HTR−1≡PHT(HPHT+R)−1

    而右边的表达式正是卡尔曼增益 KKK 。最终,高斯-牛顿的更新步等价于卡尔曼滤波的状态更新: Δx=K(z−h(x^−))\Delta x = K (z - h(\hat{x}^-))Δx=K(z−h(x^−))

2.3 关键结论

卡尔曼滤波的状态更新步骤,本质上就是高斯-牛顿法的一次完整迭代------这是EKF与高斯-牛顿法最核心的关联,也是理解EKF和IEKF区别的基础。

三、EKF与IEKF的核心区别:高斯-牛顿迭代次数的差异

明确了"卡尔曼更新=高斯-牛顿一次迭代"后,EKF与IEKF的区别就变得十分简单:两者的本质差异的是高斯-牛顿法的迭代次数,以及线性化点的选择。

3.1 EKF:高斯-牛顿法的单次迭代

EKF的核心特点是"仅线性化一次":

  • 线性化点固定:始终选在先验预测值 x^k∣k−1\hat{x}_{k|k-1}x^k∣k−1 ,即初始预测点。

  • 迭代次数:仅执行一次高斯-牛顿迭代(算一次雅可比 HHH 、一次卡尔曼增益 KKK ,完成一次状态更新)。

  • 局限性:当观测方程 h(x)h(x)h(x) 非线性较强("曲面较弯曲"),且先验预测值离真实状态较远时,固定初始点的线性化近似误差会很大,导致状态估计精度下降------相当于"在初始位置估算一次下坡方向,闭着眼睛跳一步",很可能偏离最优解。

3.2 IEKF:高斯-牛顿法的多次迭代(直至收敛)

IEKF的核心改进是"迭代线性化、逐步逼近最优解",其逻辑完全对应高斯-牛顿法的完整求解过程(线性化→求解线性系统→更新状态→验证收敛):

  1. 第一步:在先验预测点 x^k∣k−1\hat{x}_{k|k-1}x^k∣k−1 线性化,执行一次标准EKF更新,得到第一次状态估计 x^(1)\hat{x}^{(1)}x^(1) 。

  2. 第二步:以更接近真实值的 x^(1)\hat{x}^{(1)}x^(1) 作为新的线性化点,重新计算雅可比矩阵 HHH (此时的"斜率"更准确)。

  3. 第三步:基于新的雅可比矩阵,重新构造Hessian矩阵(即重新计算卡尔曼增益 KKK ),执行第二次状态更新,得到 x^(2)\hat{x}^{(2)}x^(2) 。

  4. 重复上述步骤,直至状态估计值收敛(两次更新的差值小于设定阈值),停止迭代。

IEKF相当于"跳一步后,睁开眼修正方向,再跳几步,直到跳到坑底(最优解)",能有效降低非线性较强场景下的估计误差,这也是VINS-Mono、ORB-SLAM3等顶级SLAM系统中,优先选用IEKF而非EKF的核心原因。

四、核心概念对应表(卡尔曼滤波 vs 非线性优化)

为进一步强化两者的统一认知,下表汇总了两个领域中核心概念的对应关系,清晰体现"同一本质、不同命名"的特点:

核心概念 卡尔曼滤波(EKF/IEKF)中的命名 非线性优化(高斯-牛顿法)中的命名 核心关系与解读
PPP 协方差矩阵 逆Hessian矩阵( H−1\mathcal{H}^{-1}H−1 ) 协方差描述状态不确定性,Hessian描述代价函数"陡峭程度"(信息量); PPP 越大, H\mathcal{H}H 越小,不确定性越强、信息量越弱。
P−1P^{-1}P−1 信息矩阵 Hessian矩阵( H\mathcal{H}H ) 两者完全等价,均描述"状态信息的置信度",是连接两者的核心桥梁。
z−h(x)z - h(x)z−h(x) 新息(Innovation) 残差(Residual) 本质一致,均表示"观测值与状态估计值的偏差",是更新状态的核心依据。
KKK 卡尔曼增益 近似牛顿步长系数 决定状态更新的"步长",本质是平衡先验信息与观测信息的权重。
EKF 扩展卡尔曼滤波 单次高斯-牛顿迭代 仅在初始先验点线性化一次,近似求解最优解,计算量小但精度较低。
IEKF 迭代扩展卡尔曼滤波 多次高斯-牛顿迭代(直至收敛) 动态更新线性化点,逐步逼近最优解,精度高,与高斯-牛顿法完全等价(高斯假设下)。

五、总结:非线性估计的终极真相

本文的核心结论可概括为一句话:EKF和IEKF本质上都是高斯-牛顿法求解非线性最小二乘问题的具体实现,区别仅在于迭代次数;卡尔曼滤波与非线性优化(高斯-牛顿法)在高斯假设下完全统一,只是"穿了不同的马甲"

具体来说:

  • EKF是"简化版"高斯-牛顿法:只执行一次迭代,以先验预测点为固定线性化点,用一次更新近似最优解,牺牲精度换取计算效率。

  • IEKF是"完整版"高斯-牛顿法:执行多次迭代,动态更新线性化点,直至状态收敛,能精确求解非线性高斯最大后验(MAP)问题,精度更高。

  • 核心桥梁是"协方差矩阵与Hessian矩阵互为逆矩阵":这一关系将卡尔曼滤波的"协方差更新"与非线性优化的"代价函数优化"紧密结合,让我们能从统一的视角理解两类算法的本质。

理解这一统一关系,不仅能彻底厘清EKF与IEKF的区别,更能打通非线性估计领域的核心逻辑------无论是递归贝叶斯框架下的卡尔曼滤波,还是批量优化框架下的高斯-牛顿法,其底层目标都是找到最优状态估计,只是实现路径和命名方式不同而已。

相关推荐
仰泳的熊猫2 小时前
题目1433:蓝桥杯2013年第四届真题-危险系数
数据结构·c++·算法·蓝桥杯·深度优先·图论
平哥努力学习ing2 小时前
补充 part 1——防御性编程
算法
wbs_scy2 小时前
C++:智能指针完全指南(原理、用法与避坑实战,从 RAII 到循环引用)
开发语言·c++·算法
u0109272712 小时前
C++中的对象池模式
开发语言·c++·算法
试试勇气2 小时前
算法工具箱之哈希表
数据结构·算法·散列表
HaiLang_IT2 小时前
【信息安全毕业设计】基于双层滤波与分割点改进孤立森林的网络入侵检测算法研究
网络·算法·课程设计
hansang_IR2 小时前
【记录】AT_abc400模拟赛
c++·算法·模拟赛
iAkuya3 小时前
(leetcode)力扣100 59括号生成(回溯||按括号序列的长度递归)
算法·leetcode·职场和发展
共享家95273 小时前
双指针算法(一)
数据结构·算法·leetcode