第二十课.卡尔曼滤波器

本文详细介绍了卡尔曼滤波器的工作原理,包括参数设定、滤波问题的解决策略以及解析解的数学推导。卡尔曼滤波器在动态模型中处理线性高斯噪声,通过predict和update步骤实现对未知状态的估计。预测阶段基于上一时刻的滤波结果,更新阶段结合新观测值进行校正。整个过程可以通过正态分布的性质得到解析解,确保了卡尔曼滤波器在实际应用中的高效性和准确性。
摘要由CSDN通过智能技术生成

卡尔曼滤波器的参数

首先回顾卡尔曼滤波的概率图:
fig1
基于之前内容,卡尔曼滤波器是一种动态图模型,除了遵循齐次马尔科夫假设和观测独立性假设外,卡尔曼滤波器还遵循 Z t Z_{t} Zt Z t − 1 Z_{t-1} Zt1之间, X t X_{t} Xt Z t Z_{t} Zt之间的线性关系: Z t = A Z t − 1 + B + ε Z_{t}=AZ_{t-1}+B+\varepsilon Zt=AZt1+B+ε X t = C Z t + D + δ X_{t}=CZ_{t}+D+\delta Xt=CZt+D+δ
这里, ( A , B , C , D ) (A,B,C,D) (A,B,C,D)是线性系数, ( ε , δ ) (\varepsilon,\delta) (ε,δ)是两个满足均值为0的高斯分布随机变量,记作: ε ∼ N ( 0 , Q ) , δ ∼ N ( 0 , R ) \varepsilon\sim N(0,Q),\delta\sim N(0,R) εN(0,Q),δN(0,R)
另外,卡尔曼滤波器中,无论是隐变量 Z Z Z,还是观测变量 X X X,都服从高斯分布: p ( z t ∣ z t − 1 ) = N ( A z t − 1 + B , Q ) p(z_{t}|z_{t-1})=N(Az_{t-1}+B,Q) p(ztzt1)=N(Azt1+B,Q) p ( x t ∣ z t ) = N ( C z t + D , R ) p(x_{t}|z_{t})=N(Cz_{t}+D,R) p(xtzt)=N(Czt+D,R)
对于模型的第一个变量,即隐变量 z 1 z_{1} z1,我们直接令其服从高斯分布: p ( z 1 ) = N ( μ 1 , Σ 1 ) p(z_{1})=N(\mu_{1},\Sigma_{1}) p(z1)=N(μ1,Σ1),这时,已经可以明确卡尔曼滤波器的参数为: θ = ( A , B , C , D , Q , R , μ 1 , Σ 1 ) \theta=(A,B,C,D,Q,R,\mu_{1},\Sigma_{1}) θ=(A,B,C,D,Q,R,μ1,Σ1)
模型明确后,我们需要关注推理问题中的滤波问题,即计算概率 p ( z t ∣ x 1 , x 2 , . . . , x t ) p(z_{t}|x_{1},x_{2},...,x_{t}) p(ztx1,x2,...,xt)的过程。

滤波问题的解决方案

卡尔曼滤波器按照时间的推演顺序,我们依次观察到观测变量 x 1 , x 2 , . . . , x T x_{1},x_{2},...,x_{T} x1,x2,...,xT,在观察到 x t x_{t} xt前,我们会先观察到 x t − 1 x_{t-1} xt1,我们应该建立 p ( z t ∣ x 1 , x 2 , . . . , x t ) p(z_{t}|x_{1},x_{2},...,x_{t}) p(ztx1,x2,...,xt) p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) p(z_{t-1}|x_{1},x_{2},...,x_{t-1}) p(zt1x1,x2,...,xt1)这前后相邻两个时刻的滤波表达式间的递推关系,关系建立后,我们就能从 p ( z 1 ∣ x 1 ) p(z_{1}|x_{1}) p(z1x1)依次推导到 p ( z t ∣ x 1 , x 2 , . . . , x t ) p(z_{t}|x_{1},x_{2},...,x_{t}) p(ztx1,x2,...,xt)

首先依据贝叶斯公式有: p ( z t ∣ x 1 , x 2 , . . . , x t ) = p ( x 1 , x 2 , . . . , x t , z t ) p ( x 1 , x 2 , . . . , x t ) p(z_{t}|x_{1},x_{2},...,x_{t})=\frac{p(x_{1},x_{2},...,x_{t},z_{t})}{p(x_{1},x_{2},...,x_{t})} p(ztx1,x2,...,xt)=p(x1,x2,...,xt)p(x1,x2,...,xt,zt)
由于 p ( x 1 , x 2 , . . . , x t ) p(x_{1},x_{2},...,x_{t}) p(x1,x2,...,xt)描述的是这一组观测变量的概率,因此是一个常数,所以就转换为以下正比关系: p ( z t ∣ x 1 , x 2 , . . . , x t ) ∝ p ( x 1 , x 2 , . . . , x t , z t ) p(z_{t}|x_{1},x_{2},...,x_{t})\propto p(x_{1},x_{2},...,x_{t},z_{t}) p(ztx1,x2,...,xt)p(x1,x2,...,xt,zt)
再次依据贝叶斯定理展开: p ( x 1 , x 2 , . . . , x t , z t ) = p ( x t ∣ x 1 , x 2 , . . . , x t − 1 , z t ) p ( x 1 , x 2 , . . . , x t − 1 , z t ) p(x_{1},x_{2},...,x_{t},z_{t})=p(x_{t}|x_{1},x_{2},...,x_{t-1},z_{t})p(x_{1},x_{2},...,x_{t-1},z_{t}) p(x1,x2,...,xt,zt)=p(xtx1,x2,...,xt1,zt)p(x1,x2,...,xt1,zt) = p ( x t ∣ z t ) p ( x 1 , x 2 , . . . , x t − 1 , z t ) =p(x_{t}|z_{t})p(x_{1},x_{2},...,x_{t-1},z_{t}) =p(xtzt)p(x1,x2,...,xt1,zt)
再展开: p ( x 1 , x 2 , . . . , x t − 1 , z t ) = p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) p ( x 1 , x 2 , . . . , x t − 1 ) p(x_{1},x_{2},...,x_{t-1},z_{t})=p(z_{t}|x_{1},x_{2},...,x_{t-1})p(x_{1},x_{2},...,x_{t-1}) p(x1,x2,...,xt1,zt)=p(ztx1,x2,...,xt1)p(x1,x2,...,xt1)
所以有: p ( x 1 , x 2 , . . . , x t , z t ) = p ( x t ∣ z t ) p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) p ( x 1 , x 2 , . . . x t − 1 ) p(x_{1},x_{2},...,x_{t},z_{t})=p(x_{t}|z_{t})p(z_{t}|x_{1},x_{2},...,x_{t-1})p(x_{1},x_{2},...x_{t-1}) p(x1,x2,...,xt,zt)=p(xtzt)p(ztx1,x2,...,xt1)p(x1,x2,...xt1)
该式子包含了两个概念:

  • 第一: p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) p(z_{t}|x_{1},x_{2},...,x_{t-1}) p(ztx1,x2,...,xt1)是预测问题;
  • 第二: p ( x 1 , x 2 , . . . , x t − 1 ) p(x_{1},x_{2},...,x_{t-1}) p(x1,x2,...,xt1)是关于观测变量的预测,是一个常数,因此式子可以用正比关系表达;

因此有: p ( x 1 , x 2 , . . . , x t , z t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) p(x_{1},x_{2},...,x_{t},z_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},x_{2},...,x_{t-1}) p(x1,x2,...,xt,zt)p(xtzt)p(ztx1,x2,...,xt1) ⇒ p ( z t ∣ x 1 , x 2 , . . . , x t ) ∝ p ( x 1 , x 2 , . . . , x t , z t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) \Rightarrow p(z_{t}|x_{1},x_{2},...,x_{t})\propto p(x_{1},x_{2},...,x_{t},z_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},x_{2},...,x_{t-1}) p(ztx1,x2,...,xt)p(x1,x2,...,xt,zt)p(xtzt)p(ztx1,x2,...,xt1)
然后思考预测问题的概率化简: p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) = ∫ z t − 1 p ( z t , z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) d z t − 1 p(z_{t}|x_{1},x_{2},...,x_{t-1})=\int_{z_{t-1}}p(z_{t},z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} p(ztx1,x2,...,xt1)=zt1p(zt,zt1x1,x2,...,xt1)dzt1 = ∫ z t − 1 p ( z t ∣ z t − 1 , x 1 , x 2 , . . . , x t − 1 ) p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) d z t − 1 =\int_{z_{t-1}}p(z_{t}|z_{t-1},x_{1},x_{2},...,x_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} =zt1p(ztzt1,x1,x2,...,xt1)p(zt1x1,x2,...,xt1)dzt1 = ∫ z t − 1 p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) d z t − 1 =\int_{z_{t-1}}p(z_{t}|z_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} =zt1p(ztzt1)p(zt1x1,x2,...,xt1)dzt1
此时,得到两个具有明显含义的式子:

  • 基于马尔科夫假设化简得到的 p ( z t ∣ z t − 1 ) p(z_{t}|z_{t-1}) p(ztzt1)
  • t − 1 t-1 t1时刻的滤波问题表达式 p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) p(z_{t-1}|x_{1},x_{2},...,x_{t-1}) p(zt1x1,x2,...,xt1)

卡尔曼滤波的predict和update

在递推的过程中, t − 1 t-1 t1时刻,总是先利用 t − 1 t-1 t1时刻的滤波结果,在 t − 1 t-1 t1时刻的观测序列 x 1 , x 2 , . . . , x t − 1 x_{1},x_{2},...,x_{t-1} x1,x2,...,xt1的基础上,去预测下一时刻 t t t的状态 z t z_{t} zt的概率,这一步,称为predict: p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) = ∫ z t − 1 p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) d z t − 1 p(z_{t}|x_{1},x_{2},...,x_{t-1})=\int_{z_{t-1}}p(z_{t}|z_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} p(ztx1,x2,...,xt1)=zt1p(ztzt1)p(zt1x1,x2,...,xt1)dzt1
得到 t − 1 t-1 t1时刻对 t t t时刻状态的预测后,进入 t t t时刻,此时,新增 t t t时刻的观测值 x t x_{t} xt,我们通过它来对 t − 1 t-1 t1时刻的预测进行修正,也就是修正隐变量 z t z_{t} zt的概率,这一步称为update: p ( z t ∣ x 1 , x 2 , . . . , x t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 , x 2 , . . . , x t − 1 ) p(z_{t}|x_{1},x_{2},...,x_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},x_{2},...,x_{t-1}) p(ztx1,x2,...,xt)p(xtzt)p(ztx1,x2,...,xt1)
直观地,从 t = 1 t=1 t=1演示以上过程:

t = 1 t=1 t=1时刻:
update:计算 p ( z 1 ∣ x 1 ) p(z_{1}|x_{1}) p(z1x1)
predict:计算 p ( z 2 ∣ x 1 ) p(z_{2}|x_{1}) p(z2x1)

t = 2 t=2 t=2时刻:
update:计算 p ( z 2 ∣ x 2 , x 1 ) p(z_{2}|x_{2},x_{1}) p(z2x2,x1)
predict:计算 p ( z 3 ∣ x 2 , x 1 ) p(z_{3}|x_{2},x_{1}) p(z3x2,x1)

然后不断按照 t = 3 , 4 , . . . , n − 1 , n t=3,4,...,n-1,n t=3,4,...,n1,n迭代;对于 t = 1 t=1 t=1的启动步update, p ( z 1 ∣ x 1 ) ∝ p ( x 1 ∣ z 1 ) p ( z 1 ) p(z_{1}|x_{1})\propto p(x_{1}|z_{1})p(z_{1}) p(z1x1)p(x1z1)p(z1),隐状态 z 1 z_{1} z1会是一个提前给定的正态分布。

基于正态分布得到解析结果

证明解析解存在

在上面看到,predict和update都是比较复杂的运算,实际处理时,我们将基于正态分布的性质得到解析结果。

卡尔曼滤波器中有重要假设,即服从带高斯分布噪声的线性关系: p ( z t ∣ z t − 1 ) = N ( A z t − 1 + B , Q ) p(z_{t}|z_{t-1})=N(Az_{t-1}+B,Q) p(ztzt1)=N(Azt1+B,Q) p ( x t ∣ z t ) = N ( C z t + D , R ) p(x_{t}|z_{t})=N(Cz_{t}+D,R) p(xtzt)=N(Czt+D,R) p ( z 1 ) = N ( μ 1 , Σ 1 ) p(z_{1})=N(\mu_{1},\Sigma_{1}) p(z1)=N(μ1,Σ1)
另外已知,高斯分布的联合概率,边缘概率,条件概率依然是高斯分布。

t = 1 t=1 t=1时刻看:
update p ( z 1 ∣ x 1 ) ∝ p ( x 1 ∣ z 1 ) p ( z 1 ) p(z_{1}|x_{1})\propto p(x_{1}|z_{1})p(z_{1}) p(z1x1)p(x1z1)p(z1)
其中, p ( x 1 ∣ z 1 ) p(x_{1}|z_{1}) p(x1z1) p ( z 1 ) p(z_{1}) p(z1)都服从正态分布,它们联合概率的乘积 p ( z 1 ∣ x 1 ) p(z_{1}|x_{1}) p(z1x1)也服从正态分布。

predict p ( z 2 ∣ x 1 ) = ∫ z 1 p ( z 2 ∣ z 1 ) p ( z 1 ∣ x 1 ) d z 1 p(z_{2}|x_{1})=\int_{z_{1}}p(z_{2}|z_{1})p(z_{1}|x_{1})dz_{1} p(z2x1)=z1p(z2z1)p(z1x1)dz1
这里 p ( z 1 ∣ x 1 ) p(z_{1}|x_{1}) p(z1x1) p ( z 2 ∣ z 1 ) p(z_{2}|z_{1}) p(z2z1)都服从正态分布,所以联合概率 p ( z 2 ∣ z 1 ) p ( z 1 ∣ x 1 ) p(z_{2}|z_{1})p(z_{1}|x_{1}) p(z2z1)p(z1x1)也服从正态分布,边缘概率 p ( z 2 ∣ x 1 ) = ∫ z 1 p ( z 2 ∣ z 1 ) p ( z 1 ∣ x 1 ) d z 1 p(z_{2}|x_{1})=\int_{z_{1}}p(z_{2}|z_{1})p(z_{1}|x_{1})dz_{1} p(z2x1)=z1p(z2z1)p(z1x1)dz1也服从正态分布。

过度到 t − 1 t-1 t1时刻的predict步: p ( z t ∣ x 1 , . . . , x t − 1 ) = ∫ z t − 1 p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) d z t − 1 p(z_{t}|x_{1},...,x_{t-1})=\int_{z_{t-1}}p(z_{t}|z_{t-1})p(z_{t-1}|x_{1},x_{2},...,x_{t-1})dz_{t-1} p(ztx1,...,xt1)=zt1p(ztzt1)p(zt1x1,x2,...,xt1)dzt1
p ( z t ∣ z t − 1 ) p(z_{t}|z_{t-1}) p(ztzt1) p ( z t − 1 ∣ x 1 , . . . , x t − 1 ) p(z_{t-1}|x_{1},...,x_{t-1}) p(zt1x1,...,xt1)都服从正态分布,所以其联合概率,边缘概率也服从。

再进入 t t t时刻的update步: p ( z t ∣ x 1 , . . . , x t ) ∝ p ( x t ∣ z t ) p ( z t ∣ x 1 , . . . , x t − 1 ) p(z_{t}|x_{1},...,x_{t})\propto p(x_{t}|z_{t})p(z_{t}|x_{1},...,x_{t-1}) p(ztx1,...,xt)p(xtzt)p(ztx1,...,xt1)
同样服从正态分布,所以卡尔曼滤波器的每一步都可以得到解析解。

解析解计算

假设 p ( x ) p(x) p(x) p ( y ∣ x ) p(y|x) p(yx)都服从正态分布,且随机变量 y y y x x x满足带噪声的线性关系,所以有: p ( x ) = N ( X ∣ μ , Λ − 1 ) p(x)=N(X|\mu,\Lambda^{-1}) p(x)=N(Xμ,Λ1) p ( y ∣ x ) = N ( y ∣ A x + b , L − 1 ) p(y|x)=N(y|Ax+b,L^{-1}) p(yx)=N(yAx+b,L1)
所以有: p ( y ) = ∫ x p ( x ) p ( y ∣ x ) d x = N ( y ∣ A μ + b , L − 1 + A Λ − 1 A T ) p(y)=\int_{x}p(x)p(y|x)dx=N(y|A\mu+b,L^{-1}+A\Lambda^{-1}A^{T}) p(y)=xp(x)p(yx)dx=N(yAμ+b,L1+AΛ1AT)
这个过程于predict对应,所以有: p ( x ) ⇒ p ( z t − 1 ∣ x 1 , x 2 , . . . , x t − 1 ) = N ( μ t − 1 , Σ t − 1 ) p(x)\Rightarrow p(z_{t-1}|x_{1},x_{2},...,x_{t-1})=N(\mu_{t-1},\Sigma_{t-1}) p(x)p(zt1x1,x2,...,xt1)=N(μt1,Σt1) p ( y ∣ x ) ⇒ p ( z t ∣ z t − 1 ) = N ( A z t − 1 + B , Q ) p(y|x)\Rightarrow p(z_{t}|z_{t-1})=N(Az_{t-1}+B,Q) p(yx)p(ztzt1)=N(Azt1+B,Q) p ( y ) ⇒ p ( z t ∣ x 1 , . . . , x t − 1 ) = N ( μ t ∗ , Σ t ∗ ) p(y)\Rightarrow p(z_{t}|x_{1},...,x_{t-1})=N(\mu_{t}^{*},\Sigma_{t}^{*}) p(y)p(ztx1,...,xt1)=N(μt,Σt)
其中,参数为: μ t ∗ = A μ t − 1 + B \mu_{t}^{*}=A\mu_{t-1}+B μt=Aμt1+B Σ t ∗ = Q + A Σ t − 1 A T \Sigma_{t}^{*}=Q+A\Sigma_{t-1}A^{T} Σt=Q+AΣt1AT
所以predict的预测结果可以得到,由于服从正态分布,得到参数就是得到分布,即得到解析解。

另一个 p ( x ∣ y ) p(x|y) p(xy)的分布解析解如下: p ( x ∣ y ) = N ( x ∣ M ( A T L ( y − b ) + Λ μ ) , M ) p(x|y)=N(x|M(A^{T}L(y-b)+\Lambda\mu),M) p(xy)=N(xM(ATL(yb)+Λμ),M)其中有: M = ( Λ + A T L A ) − 1 M=(\Lambda+A^{T}LA)^{-1} M=(Λ+ATLA)1
注意到 p ( x ∣ y ) ∝ p ( x ) p ( y ∣ x ) p(x|y)\propto p(x)p(y|x) p(xy)p(x)p(yx)update对应: p ( x ) ⇒ p ( z t ∣ x 1 , . . . , x t − 1 ) = N ( μ t ∗ , Σ t ∗ ) p(x)\Rightarrow p(z_{t}|x_{1},...,x_{t-1})=N(\mu_{t}^{*},\Sigma_{t}^{*}) p(x)p(ztx1,...,xt1)=N(μt,Σt) p ( y ∣ x ) ⇒ p ( x t ∣ z t ) = N ( C z t + D , R ) p(y|x)\Rightarrow p(x_{t}|z_{t})=N(Cz_{t}+D,R) p(yx)p(xtzt)=N(Czt+D,R) p ( x ∣ y ) ⇒ p ( z t ∣ x 1 , . . . , x t ) = N ( μ t , Σ t ) p(x|y)\Rightarrow p(z_{t}|x_{1},...,x_{t})=N(\mu_{t},\Sigma_{t}) p(xy)p(ztx1,...,xt)=N(μt,Σt)
对应着参数为: μ t = Σ t ( C T R − 1 ( x t − D ) + ( Σ t ∗ ) − 1 μ t ∗ ) \mu_{t}=\Sigma_{t}(C^{T}R^{-1}(x_{t}-D)+(\Sigma_{t}^{*})^{-1}\mu_{t}^{*}) μt=Σt(CTR1(xtD)+(Σt)1μt)其中 Σ t = ( ( Σ t ∗ ) − 1 + C T R − 1 C ) − 1 \Sigma_{t}=((\Sigma_{t}^{*})^{-1}+C^{T}R^{-1}C)^{-1} Σt=((Σt)1+CTR1C)1
其中, μ t ∗ \mu_{t}^{*} μt Σ t ∗ \Sigma_{t}^{*} Σt t − 1 t-1 t1时刻的预测概率,即 p ( z t ∣ x 1 , . . . , x t − 1 ) = N ( μ t ∗ , Σ t ∗ ) p(z_{t}|x_{1},...,x_{t-1})=N(\mu_{t}^{*},\Sigma_{t}^{*}) p(ztx1,...,xt1)=N(μt,Σt)的参数;

所以,我们按照以上解析解,一轮一轮进行滤波,即卡尔曼滤波。对于 t t t轮的 update 步,从分布中取期望作为该时刻的滤波结果。卡尔曼滤波器的参数通常根据具体控制系统的建模确定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值