Kalman Filter的数学推导

前言

关于Kalman Filter,有一篇很好的入门文章,建议先通读:

Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation

不过这篇文章只推导了一元分布的情况,对多元分布的情况只是简单地写出结论。因此这里给出推导过程。

预备知识1:多元正态分布

多元正态分布$N(mu,Sigma)$的分布密度函数为:

$p(x)=frac{1}{(2pi)^{frac{k}{2}}|Sigma|^{frac{1}{2}}}exp(-frac{(x-mu)^TSigma^{-1}(x-mu)}{2})$

对于没有涉及过多元统计的读者来说,重点在于理解协方差矩阵$Sigma$。

具体介绍参看:The Multivariate Gaussian Distribution - CS 229

分布函数中还出现了协方差行列式$|Sigma|$,这是一个Jacobian行列式,具体用途请复习多变量积分。

预备知识2:正态分布的乘积

对于同一个随机变量有两个预测:1、$x$服从$N(mu_1,Sigma_1)$的正态分布,2、$x$服从$N(mu_2,Sigma_2)$的正态分布。

作为一个中庸主义者,希望对$x$估算一个值,使得同时符合两种预测的似然最大。因此最直接的方式是将两个概率分布相乘。结果依然是正态分布,且

$Sigma=(Sigma_1^{-1}+Sigma_2{-1})^{-1}$

$mu=(Sigma_1^{-1}+Sigma_2{-1})^{-1}(Sigma_1^{-1}mu_1+Sigma_2^{-1}mu_2)$

具体推导参看: Products and Convolutions of Gaussian Probability Density Functions

上面两个式子表达很简洁,但是为了引入Kalman Gain这个概念,我们要对结果作进一步的推导。如果不熟悉矩阵运算尤其是逆矩阵的变换技巧,这个推导过程会显得晦涩,可以把整个过程使用单变量(而不是多变量)来演算一遍,再对照下面这个过程,会豁然开朗。

$Sigma=(Sigma_1^{-1}+Sigma_2^{-1})^{-1}$

$=Sigma_1Sigma_1^{-1}(Sigma_1^{-1}+Sigma_2^{-1})^{-1}Sigma_2^{-1}Sigma_2$

$=Sigma_1(Sigma_1^{-1}(Sigma_1^{-1}+Sigma_2^{-1})^{-1}Sigma_2^{-1})Sigma_2$

$=Sigma_1(Sigma_1+Sigma_2)^{-1}Sigma_2$

$=Sigma_1-Sigma_1(Sigma_1+Sigma_2)^{-1}Sigma_1$

$mu=(Sigma_1^{-1}+Sigma_2^{-1})^{-1}(Sigma_1^{-1}mu_1+Sigma_2^{-1}mu_2)$

$=(Sigma_1^{-1}+Sigma_2^{-1})^{-1}Sigma_1^{-1}mu_1+(Sigma_1^{-1}+Sigma_2{-1})^{-1}Sigma_2^{-1}mu_2$

$=Sigma_2(Sigma_1+Sigma_2)^{-1}Sigma_1Sigma_1^{-1}mu_1+Sigma_1(Sigma_1+Sigma_2)^{-1}Sigma_2Sigma_2^{-1}mu_2$

$=Sigma_2(Sigma_1+Sigma_2)^{-1}mu_1+Sigma_1(Sigma_1+Sigma_2)^{-1}mu_2$

$=(Sigma_1+Sigma_2)(Sigma_1+Sigma_2)^{-1}mu_1-Sigma_1(Sigma_1+Sigma_2)^{-1}mu_1+Sigma_1(Sigma_1+Sigma_2)^{-1}mu_2$

$=mu_1+Sigma_1(Sigma_1+Sigma_2)^{-1}(mu_2-mu_1)$

Kalman Filter的推导:

1、状态转移:

$x_t=F_tx_{t-1}+B_tu_t+w_t$

$w_tsim N(0, Q_t)$

2、测量过程:

$z_t=H_tx_t+v_t$

$v_tsim N(0, R_t)$

将测量值转换到状态空间中:

$H_t^{-1}z_t=x_t+H_t^{-1}v_t$

$x_t=H_t^{-1}z_t-H_t^{-1}v_t$

正态分布在线性变换后依然是正态分布,$H_t^{-1}v_tsim N(0, H_t^{-1}R_tH_t^{-T})$

因此,测量过程表明:$x_tsim N(H_t^{-1}z_t, H_t^{-1}R_tH_t^{-T})$

3、估计过程:

$hat x_{t|t-1}=F_t hat x_{t-1|t-1}+B_tu_t$

估计误差的协方差矩阵:

$P_{t|t-1}=Cov(x_t-hat x_{t|t-1})=E[x_t-hat x_{t|t-1})(x_t-hat x_{t|t-1})^T]=FP_{t-1|t-1}F^T+Q_t$

因此估计过程表明:$x_tsim N(hat x_{t|t-1}, P_{t|t-1})$

4、组合

测量过程和估计过程都对$x_t$作了阐述,因此,引入预备知识二中的公式将两者组合到一起,

$x_tsim N(hat x_{t|t}, P_{t|t})$

其中

$hat x_{t|t}=mu_1+Sigma_1(Sigma_1+Sigma_2)^{-1}(mu_2-mu_1)$

$=hat x_{t|t-1}+P_{t|t-1}(P_{t|t-1}+H_t^{-1}R_tH_t^{-T})^{-1}(H_t^{-1}z_t-hat x_{t|t-1})$

$=hat x_{t|t-1}+P_{t|t-1}H_t^TH_t^{-T}(P_{t|t-1}+H_t^{-1}R_tH_t^{-T})^{-1}H_t^{-1}H_t(H_t^{-1}z_t-hat x_{t|t-1})$

$=hat x_{t|t-1}+P_{t|t-1}H_t^T(H_tP_{t|t-1}H_t^T+R_t)^{-1}(z_t-H_that x_{t|t-1})$

$P_{t|t}=Sigma_1-Sigma_1(Sigma_1+Sigma_2)^{-1}Sigma_1$

$=P_{t|t-1}-P_{t|t-1}(P_{t|t-1}+H_t^{-1}R_tH_t^{-T})^{-1}P_{t|t-1}$

$=P_{t|t-1}-P_{t|t-1}H_t^TH_t^{-T}(P_{t|t-1}+H_t^{-1}R_tH_t^{-T})^{-1}H_t^{-1}H_tP_{t|t-1}$

$=P_{t|t-1}-P_{t|t-1}H_t^T(H_tP_{t|t-1}H_t^T+R_t)^{-1}H_tP_{t|t-1}$

令$K=P_{t|t-1}H_t^T(H_tP_{t|t-1}H_t^T+R_t)^{-1}$,代入上述两式,有:
$hat x_{t|t}=hat x_{t|t-1}+K(z_t-H_that x_{t|t-1})$
$P_{t|t}=P_{t|t-1}-KH_tP_{t|t-1}$

原文地址:https://www.cnblogs.com/milaohu/p/6577341.html