卡爾曼濾波(Kalman Filter)

爲什麼需要卡爾曼濾波?

在這裏插入圖片描述

看上圖,這其實是一個典型的測量模型,我們設y是觀測到的值,x是隱變量。舉個例子,x表示火箭燃料溫度,可惜的是,燃料內部的溫度太高,我們沒有辦法直接測量,只能測量他火箭外圍的溫度y,因此每一步的測量都伴隨着隨機誤差,那麼如何僅使用觀測到的數據y來預測真實的x,這就是卡爾曼濾波(filter)所做的事情。

State Space Model

這個圖模型有兩類概率,第一類是p(yyxt)\displaystyle p( y_{y} |x_{t}),稱爲measurement probability,或者emission probability,另外還有p(xtxt1)\displaystyle p( x_{t} |x_{t-1}),稱爲轉移概率,再加上一個初始概率p(x1)\displaystyle p( x_{1}),就可以完全表示這個state space model了。通過定義這幾個概率的形式,就可以得到不同的模型:

  1. HMM模型:(i)p(xtxt1)=Axt1,t\displaystyle p( x_{t} |x_{t-1}) =A_{x_{t-1,t}},A一個離散的轉移矩陣,x是離散的。(ii)P(ytxt)\displaystyle P( y_{t} |x_{t})是任意的。(iii)p(x1)=π\displaystyle p( x_{1}) =\pi
  2. 線性高斯SSM:(i)p(xtxt1)=N(Axt1+B,Q)\displaystyle p( x_{t} |x_{t-1}) =\mathcal{N}( Ax_{t-1} +B,Q) (ii)P(ytxt)=N(Hxt1+C,R)\displaystyle P( y_{t} |x_{t}) =\mathcal{N}( Hx_{t-1} +C,R)。(iii)p(x1)=N(μ0,σ0)\displaystyle p( x_{1}) =\mathcal{N}( \mu _{0} ,\sigma _{0})

對於上述dynamic模型或者State Space Model(SSM)來說,主要有4種任務:

  1. Evaluation:p(y1,y2,...,yt)\displaystyle p( y_{1} ,y_{2} ,...,y_{t})
  2. 參數學習:argmaxθlogp(y1,y2,...,yθ)\displaystyle \arg\max_{\theta }\log p( y_{1} ,y_{2} ,...,y|\theta )
  3. State decoding: p(x1,x2,...,xty1,y2,...,yt)\displaystyle p( x_{1} ,x_{2} ,...,x_{t} |y_{1} ,y_{2} ,...,y_{t})
  4. Filtering:p(xty1,y2,...,yt)\displaystyle p( x_{t} |y_{1} ,y_{2} ,...,y_{t})

其實HMM和線性高斯SSM都可以做這4種任務,但是,HMM可能會更多的涉及第1,2類任務,而線性高斯SSM更多是涉及濾波任務,現在我們要講的卡爾曼濾波就是做第4個任務filtering.

現在,我們形式化寫一下線性高斯SSM的定義:

xt=Axt1+B+w, wN(0,Q)yt=Hxt+C+v, vN(0,R)cov(xt1,w)=0,cov(xt,v)=0,cov(w,v)=0 x_{t} =Ax_{t-1} +B+w,\ w\sim N( 0,Q)\\ y_{t} =Hx_{t} +C+v,\ v\sim N( 0,R)\\ cov( x_{t-1} ,w) =0,cov( x_{t} ,v) =0,cov( w,v) =0

於是p(xtxt1)=N(Axt1+B,Q),P(ytxt)=N(Hxt1+C,R)\displaystyle p( x_{t} |x_{t-1}) =\mathcal{N}( Ax_{t-1} +B,Q) ,P( y_{t} |x_{t}) =\mathcal{N}( Hx_{t-1} +C,R),爲了推導的方便,我們暫時把B,C去掉。

卡爾曼濾波數學推導

現在我們看看怎麼做濾波。考慮這個濾波的概率分佈:

p(xty1,y2,...,yt)filtering at t=p(xt,y1,y2,...,yt)p(y1,y2,...,yt)=p(ytxt,y1,y2,...,yt1)p(xt,y1,y2,...,yt1)p(y1,y2,...,yt)=p(ytxt)p(xty1,y2,...,yt1)p(y1,y2,...,yt1)p(y1,y2,...,yt)p(ytxt)p(xty1,y2,...,yt1)Prediction at t \begin{aligned} \underbrace{p( x_{t} |y_{1} ,y_{2} ,...,y_{t})}_{filtering\ at\ t} & =\frac{p( x_{t} ,y_{1} ,y_{2} ,...,y_{t})}{p( y_{1} ,y_{2} ,...,y_{t})}\\ & =\frac{p( y_{t} |x_{t} ,y_{1} ,y_{2} ,...,y_{t-1}) p( x_{t} ,y_{1} ,y_{2} ,...,y_{t-1})}{p( y_{1} ,y_{2} ,...,y_{t})}\\ & =\frac{p( y_{t} |x_{t}) p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1}) p( y_{1} ,y_{2} ,...,y_{t-1})}{p( y_{1} ,y_{2} ,...,y_{t})}\\ & \varpropto p( y_{t} |x_{t})\underbrace{p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1})}_{Prediction\ at\ t} \end{aligned}

那個正比是因爲觀測值y是確定的,所以p(y)可以看作常數,於是我們發現,一個濾波,其實是prediction和一個生成概率的乘積,而如果我們把prediction展開來寫:

p(xty1,y2,...,yt1)prediction at t=p(xtxt1)p(xt1y1,y2,...,yt1)filtering at t1dxt1=N(AE(xt1y1,y2,...,yt1),AΣ^t1AT+Q) \underbrace{p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1})}_{prediction\ at\ t} =\int p( x_{t} |x_{t-1})\underbrace{p( x_{t-1} |y_{1} ,y_{2} ,...,y_{t-1})}_{filtering\ at\ t-1} dx_{t-1} =N\left( AE( x_{t-1} |y_{1} ,y_{2} ,...,y_{t-1}) ,A\hat{\Sigma }_{t-1} A^{T} +Q\right)

神奇的事情發生了,那就是我們的prediction恰好可以用上一時刻的濾波來算,這就形成了一個遞歸的過程,只要我們迭代地來算,那麼整個濾波的都可以算出來!所以,基本套路就是,

  1. 計算t時刻的prediction,然後t時刻的prediction就用到t-1時刻的filtering,
  2. 計算t時刻的filtering,而t時刻的filtering又用到了t時刻的prediction。

那麼這個迭代的過程就是從t=1開始,往下迭代計算:

t=1:(Filter)p(x1y1)N(μ^1,σ^1)t=2:(Predict)p(x2y1)N(μ2,σ2)(Filter)p(x2y1,y2)N(μ^2,σ^2)t=3:(Predict)p(x3y1,y2)N(μ3,σ3)(Filter)p(x3y1,y2,y3)N(μ^3,σ^3) \begin{aligned} t=1: & ( Filter) & p( x_{1} |y_{1}) \sim N\left(\hat{\mu }_{1} ,\hat{\sigma }_{1}\right)\\ t=2: & ( Predict) & p( x_{2} |y_{1}) \sim N\left(\overline{\mu }_{2} ,\overline{\sigma }_{2}\right)\\ & ( Filter) & p( x_{2} |y_{1} ,y_{2}) \sim N\left(\hat{\mu }_{2} ,\hat{\sigma }_{2}\right)\\ t=3: & ( Predict) & p( x_{3} |y_{1} ,y_{2}) \sim N\left(\overline{\mu }_{3} ,\overline{\sigma }_{3}\right)\\ & ( Filter) & p( x_{3} |y_{1} ,y_{2} ,y_{3}) \sim N\left(\hat{\mu }_{3} ,\hat{\sigma }_{3}\right) \end{aligned}

首先記住一個事實,只要隨機變量組成的聯合分佈是高斯分佈,那麼這些變量的邊緣概率分佈,或者條件概率分佈,都是服從高斯分佈的。在這裏,顯然由於SSM服從線性高斯的模型,所以上面的這些條件概率分佈都是服從高斯分佈的。此外再記一個事實,當聯合分佈是高斯分佈的時候,條件概率分佈的高斯分佈是這樣的:

(x1x2)N((μ1μ2),(Σ11Σ12Σ21Σ22))p(x1x2)N(μ1+Σ12Σ221(x2μ2),Σ11Σ12Σ221Σ21) \left(\begin{array}{ c } \mathbf{x}_{1}\\ \mathbf{x}_{2} \end{array}\right) \sim N\left(\left(\begin{array}{ c } \boldsymbol{\mu }_{1}\\ \boldsymbol{\mu }_{2} \end{array}\right) ,\left(\begin{array}{ c c } \boldsymbol{\Sigma }_{11} & \boldsymbol{\Sigma }_{12}\\ \boldsymbol{\Sigma }_{21} & \mathbf{\Sigma }_{22} \end{array}\right)\right)\\ p(\mathbf{x}_{1} |\mathbf{x}_{2}) \sim N\left(\boldsymbol{\mu }_{1} +\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2}) ,\boldsymbol{\Sigma }_{11} -\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}\boldsymbol{\Sigma }_{21}\right)

那好現在,我們回顧一下,我們的目標就是要推導出一下兩個公式的具體形式:

prediction: p(xty1,y2,...,yt1)filtering: p(xty1,y2,...,yt) prediction:\ p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1})\\ filtering:\ p( x_{t} |y_{1} ,y_{2} ,...,y_{t})

我們先考慮prediction,想要預測t時刻f的真實狀態xt\displaystyle x_{t},那麼根據SSM的定義,自然是需要t-1時刻的真實值xt1\displaystyle x_{t-1}來預測的,而這個真實值是用t-1時刻的filtering得到的。那麼t-1時刻的真實值(filter)是怎樣的呢?設t-1時刻的filter爲p(xt1y1,y2,...,yt1)N(μ^t1,σ^t1)\displaystyle p( x_{t-1} |y_{1} ,y_{2} ,...,y_{t-1}) \sim N\left(\hat{\mu }_{t-1} ,\hat{\sigma }_{t-1}\right),對其做重參數化:

xt1y1,y2,...,yt1=E(xt1y1,...,yt1)+Δxt1, Δxt1N(0,σ^t1) x_{t-1} |y_{1} ,y_{2} ,...,y_{t-1} =E( x_{t-1} |y_{1} ,...,y_{t-1}) +\Delta x_{t-1} ,\ \Delta x_{t-1} \sim N\left( 0,\hat{\sigma }_{t-1}\right)

因爲這個分佈是高斯分佈,所以我們將他可以寫成是均值加上一個隨機變量來表示。於是t時刻的預測值可以通過下面的公式進行計算:

xty1,y2,...,yt1=Axt1+w=A(E(xt1y1,...,yt1)+Δxt1)+w=AE(xt1y1,...,yt1)E(xty1,...,yt1)+AΔxt1+wΔxt \begin{aligned} x_{t} |y_{1} ,y_{2} ,...,y_{t-1} & =Ax_{t-1} +w\\ & =A( E( x_{t-1} |y_{1} ,...,y_{t-1}) +\Delta x_{t-1}) +w\\ & =\underbrace{AE( x_{t-1} |y_{1} ,...,y_{t-1})}_{E( x_{t} |y_{1} ,...,y_{t-1})} +\underbrace{A\Delta x_{t-1} +w}_{\Delta x_{t}} \end{aligned}

好了現在t時刻prediction有了,那麼t時刻filtering怎麼得到呢?剛纔介紹的用聯合高斯分佈來求條件概率分佈的技巧就可以用上了,我們發現,如果能夠寫出這個聯合分佈的形式:

p(xt,yty1,y2,...,yt1) p( x_{t} ,y_{t} |y_{1} ,y_{2} ,...,y_{t-1})

那不就能夠用公式算出p(xty1,y2,...,yt1,yt)\displaystyle p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1} ,y_{t})的形式了嗎?所以爲了知道這個聯合分佈,我們還需要知道分佈p(yty1,y2,...,yt1)\displaystyle p( y_{t} |y_{1} ,y_{2} ,...,y_{t-1})的形式,於是同樣的套路:

yty1,y2,...,yt1=Hxt+v=H(Axt1+w)+v=H(AE(xt1y1,...,yt1)+AΔxt1+w)+v=HAE(xt1y1,...,yt1)E(yty1,y2,...,yt1)+HAΔxt1+Hw+vΔyt \begin{aligned} y_{t} |y_{1} ,y_{2} ,...,y_{t-1} & =Hx_{t} +v\\ & =H( Ax_{t-1} +w) +v\\ & =H( AE( x_{t-1} |y_{1} ,...,y_{t-1}) +A\Delta x_{t-1} +w) +v\\ & =\underbrace{HAE( x_{t-1} |y_{1} ,...,y_{t-1})}_{E( y_{t} |y_{1} ,y_{2} ,...,y_{t-1})} +\underbrace{HA\Delta x_{t-1} +Hw+v}_{\Delta y_{t}} \end{aligned}

現在我們已經知道了兩個高斯的概率形式了:

p(xty1,y2,...,yt1)N(AE(xt1y1,...,yt1),E(ΔxtΔxtT)Σt)p(yty1,y2,...,yt1)N(HAE(xt1y1,...,yt1),E(ΔytΔytT)Σ^t) p( x_{t} |y_{1} ,y_{2} ,...,y_{t-1}) \sim N\left( AE( x_{t-1} |y_{1} ,...,y_{t-1}) ,\underbrace{E\left( \Delta x_{t} \Delta x^{T}_{t}\right)}_{\overline{\Sigma }_{t}}\right)\\ p( y_{t} |y_{1} ,y_{2} ,...,y_{t-1}) \sim N\left( HAE( x_{t-1} |y_{1} ,...,y_{t-1}) ,\underbrace{E\left( \Delta y_{t} \Delta y^{T}_{t}\right)}_{\hat{\Sigma }_{t}}\right)

所以

p(xt,yty1,y2,...,yt1)=N((AE(xt1y1,...,yt1)HAE(xt1y1,...,yt1)),(E(ΔxtΔxtT)E(ΔxtΔytT)E(ΔytTΔxtT)E(ΔytΔytT))) p( x_{t} ,y_{t} |y_{1} ,y_{2} ,...,y_{t-1}) =N\left(\left(\begin{array}{ c } AE( x_{t-1} |y_{1} ,...,y_{t-1})\\ HAE( x_{t-1} |y_{1} ,...,y_{t-1}) \end{array}\right) ,\left(\begin{array}{ c c } E\left( \Delta x_{t} \Delta x^{T}_{t}\right) & E\left( \Delta x_{t} \Delta y^{T}_{t}\right)\\ E\left( \Delta y^{T}_{t} \Delta x^{T}_{t}\right) & E\left( \Delta y_{t} \Delta y^{T}_{t}\right) \end{array}\right)\right)

現在,我們終於能夠算 p(xty1,y2,...,yt)\displaystyle \ p( x_{t} |y_{1} ,y_{2} ,...,y_{t})了,剩下的問題就是的他協方差是什麼,我們可以化簡一下:

ΔxtΔxtT=(AΔxt1+w)(AΔxt1+w)T=(AΔxt1+w)(Δxt1TAT+wT)=AΔxt1Δxt1TAT+wΔxt1TAT+wΔxt1TATcov=0+wwTE(ΔxtΔxtT)=AE(Δxt1Δxt1T)AT+E(wwT)=AΣ^t1AT+Q \begin{aligned} \Delta x_{t} \Delta x^{T}_{t} & =( A\Delta x_{t-1} +w)( A\Delta x_{t-1} +w)^{T}\\ & =( A\Delta x_{t-1} +w)\left( \Delta x^{T}_{t-1} A^{T} +w^{T}\right)\\ & =A\Delta x_{t-1} \Delta x^{T}_{t-1} A^{T} +\underbrace{w\Delta x^{T}_{t-1} A^{T} +w\Delta x^{T}_{t-1} A^{T}}_{cov=0} +ww^{T}\\ E\left( \Delta x_{t} \Delta x^{T}_{t}\right) & =AE\left( \Delta x_{t-1} \Delta x^{T}_{t-1}\right) A^{T} +E\left( ww^{T}\right)\\ & =A\hat{\Sigma }_{t-1} A^{T} +Q \end{aligned}

同理,對於y

ΔytΔytT=(HAΔxt1+Hw+v)(HAΔxt1+Hw+v)T=(HAΔxt1+Hw+v)(Δxt1TATHT+wTHT+vT)=HAΔxt1Δxt1TATHT+HwwTHT+vvT+...cov=0E(ΔytΔytT)=HA(Δxt1Δxt1T)ATHT+HE(wwT)HT+E(vvT)=HAΣ^t1ATHT+HQHT+R \begin{aligned} \Delta y_{t} \Delta y^{T}_{t} & =( HA\Delta x_{t-1} +Hw+v)( HA\Delta x_{t-1} +Hw+v)^{T}\\ & =( HA\Delta x_{t-1} +Hw+v)\left( \Delta x^{T}_{t-1} A^{T} H^{T} +w^{T} H^{T} +v^{T}\right)\\ & =HA\Delta x_{t-1} \Delta x^{T}_{t-1} A^{T} H^{T} +Hww^{T} H^{T} +vv^{T} +\underbrace{...}_{cov=0}\\ E\left( \Delta y_{t} \Delta y^{T}_{t}\right) & =HA\left( \Delta x_{t-1} \Delta x^{T}_{t-1}\right) A^{T} H^{T} +HE\left( ww^{T}\right) H^{T} +E\left( vv^{T}\right)\\ & =HA\hat{\Sigma }_{t-1} A^{T} H^{T} +HQH^{T} +R \end{aligned}

對於交叉項:

ΔxtΔytT=(AΔxt1+w)(HAΔxt1+Hw+v)T=(AΔxt1+w)(Δxt1TATHT+wTHT+vT)=AΔxt1Δxt1TATHT+wwTHT+...cov=0E(ΔytΔytT)=A(Δxt1Δxt1T)ATHT+E(wwT)HT=(AΣ^t1AT+Q)HT=ΣtHT \begin{aligned} \Delta x_{t} \Delta y^{T}_{t} & =( A\Delta x_{t-1} +w)( HA\Delta x_{t-1} +Hw+v)^{T}\\ & =( A\Delta x_{t-1} +w)\left( \Delta x^{T}_{t-1} A^{T} H^{T} +w^{T} H^{T} +v^{T}\right)\\ & =A\Delta x_{t-1} \Delta x^{T}_{t-1} A^{T} H^{T} +ww^{T} H^{T} +\underbrace{...}_{cov=0}\\ E\left( \Delta y_{t} \Delta y^{T}_{t}\right) & =A\left( \Delta x_{t-1} \Delta x^{T}_{t-1}\right) A^{T} H^{T} +E\left( ww^{T}\right) H^{T}\\ & =\left( A\hat{\Sigma }_{t-1} A^{T} +Q\right) H^{T}\\ & =\overline{\Sigma }_{t} H^{T} \end{aligned}

至此推導完成,我們可以不停地迭代計算卡爾曼濾波了!總結一下,基本流程就是filtering1prediction2filtering2prediction3...\displaystyle filtering_{1}\rightarrow prediction_{2}\rightarrow filtering_{2}\rightarrow prediction_{3}\rightarrow ...

附錄:多元高斯分佈

假設x=(x1,x2)\mathbf{x} =(\mathbf{x}_{1} ,\mathbf{x}_{2})是聯合高斯分佈,並且參數爲:

μ=(μ1μ2),Σ=(Σ11Σ12Σ21Σ22),Λ=Σ1=(Λ11Λ12Λ21Λ22) \boldsymbol{\mu } =\left(\begin{array}{ c } \boldsymbol{\mu }_{1}\\ \boldsymbol{\mu }_{2} \end{array}\right) ,\boldsymbol{\Sigma } =\left(\begin{array}{ c c } \boldsymbol{\Sigma }_{11} & \boldsymbol{\Sigma }_{12}\\ \boldsymbol{\Sigma }_{21} & \mathbf{\Sigma }_{22} \end{array}\right) ,\boldsymbol{\Lambda } =\mathbf{\Sigma }^{-1} =\left(\begin{array}{ c c } \boldsymbol{\Lambda }_{11} & \mathbf{\Lambda }_{12}\\ \boldsymbol{\Lambda }_{21} & \mathbf{\Lambda }_{22} \end{array}\right)

那麼他們的邊緣分佈爲

p(x1)=N(x1μ1,Σ11)p(x2)=N(x2μ2,Σ22) \begin{aligned} p(\mathbf{x}_{1}) & =\mathcal{N}(\mathbf{x}_{1} |\boldsymbol{\mu }_{1} ,\mathbf{\Sigma }_{11})\\ p(\mathbf{x}_{2}) & =\mathcal{N}(\mathbf{x}_{2} |\boldsymbol{\mu }_{2} ,\boldsymbol{\Sigma }_{22}) \end{aligned}

以及其條件分佈爲:

p(x1x2)=N(x1μ12,Σ12)μ12=μ1+Σ12Σ221(x2μ2)=μ1Λ111Λ12(x2μ2)=Σ12(Λ11μ1Λ12(x2μ2))Σ12=Σ11Σ12Σ221Σ21 \begin{aligned} p(\mathbf{x}_{1} |\mathbf{x}_{2}) & =\mathcal{N}(\mathbf{x}_{1} |\boldsymbol{\mu }_{1|2} ,\boldsymbol{\Sigma }_{1|2})\\ \boldsymbol{\mu }_{1|2} & =\boldsymbol{\mu }_{1} +\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\\ & =\boldsymbol{\mu }_{1} -\boldsymbol{\Lambda }^{-1}_{11}\boldsymbol{\Lambda }_{12}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\\ & =\boldsymbol{\Sigma }_{1|2}(\boldsymbol{\Lambda }_{11}\boldsymbol{\mu }_{1} -\boldsymbol{\Lambda }_{12}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2}))\\ \boldsymbol{\Sigma }_{1|2} & =\boldsymbol{\Sigma }_{11} -\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}\boldsymbol{\Sigma }_{21} \end{aligned}

以上條件分佈非常重要!
這個東西是怎麼推出來的呢?他的推導比較直接,那就是利用概率分解:

p(x1,x2)=p(x1x2)p(x2) p(\mathbf{x}_{1} ,\mathbf{x}_{2}) =p(\mathbf{x}_{1} |\mathbf{x}_{2}) p(\mathbf{x}_{2})

只要我們把p(x1,x2)\displaystyle p(\mathbf{x}_{1} ,\mathbf{x}_{2})p(x2)\displaystyle p(\mathbf{x}_{2})都寫出來,自然就知道p(x1x2)\displaystyle p(\mathbf{x}_{1} |\mathbf{x}_{2})是什麼了。首先對於p(x1,x2)\displaystyle p(\mathbf{x}_{1} ,\mathbf{x}_{2})的分佈如下:

E=exp{12(x1μ1x2μ2)T(Σ11Σ12Σ21Σ22)1(x1μ1x2μ2)} E=\exp\left\{-\frac{1}{2}\left(\begin{array}{ c } \mathbf{x}_{1} -\boldsymbol{\mu }_{1}\\ \mathbf{x}_{2} -\boldsymbol{\mu }_{2} \end{array}\right)^{T}\left(\begin{array}{ c c } \boldsymbol{\Sigma }_{11} & \boldsymbol{\Sigma }_{12}\\ \boldsymbol{\Sigma }_{21} & \boldsymbol{\Sigma }_{22} \end{array}\right)^{-1}\left(\begin{array}{ c } \mathbf{x}_{1} -\boldsymbol{\mu }_{1}\\ \mathbf{x}_{2} -\boldsymbol{\mu }_{2} \end{array}\right)\right\}

於是我們用公式將逆矩陣展開得到:

E=exp{12(x1μ1x2μ2)T(I0Σ221Σ21I)((Σ/Σ22)100Σ221)×(IΣ12Σ2210I)(x1μ1x2μ2)}=exp{12(x1μ1Σ12Σ221(x2μ2))μ12T(Σ/Σ22Σ12)1(x1μ1Σ12Σ221(x2μ2))μ12}×exp{12(x2μ2)TΣ221(x2μ2)}=p(x1x2)p(x2) \begin{aligned} E= & \exp\{-\frac{1}{2}\left(\begin{array}{ c } \mathbf{x}_{1} -\boldsymbol{\mu }_{1}\\ \mathbf{x}_{2} -\boldsymbol{\mu }_{2} \end{array}\right)^{T}\left(\begin{array}{ c c } \mathbf{I} & \mathbf{0}\\ \mathbf{\Sigma }^{-1}_{22}\boldsymbol{\Sigma }_{21} & \mathbf{I} \end{array}\right)\left(\begin{array}{ c c } (\boldsymbol{\Sigma } /\boldsymbol{\Sigma }_{22})^{-1} & \mathbf{0}\\ \mathbf{0} & \mathbf{\Sigma }^{-1}_{22} \end{array}\right)\\ & \times \left(\begin{array}{ c c } \mathbf{I} & -\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}\\ \mathbf{0} & \mathbf{I} \end{array}\right)\left(\begin{array}{ l } \mathbf{x}_{1} -\boldsymbol{\mu }_{1}\\ \mathbf{x}_{2} -\boldsymbol{\mu }_{2} \end{array}\right)\}\\ = & \exp\left\{-\frac{1}{2}\underbrace{\left(\mathbf{x}_{1} -\boldsymbol{\mu }_{1} -\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\right)}_{\boldsymbol{\mu }_{1|2}}^{T}\left(\underbrace{\boldsymbol{\Sigma } /\mathbf{\Sigma }_{22}}_{\mathbf{\Sigma }_{1|2}}\right)^{-1}\underbrace{\left(\mathbf{x}_{1} -\boldsymbol{\mu }_{1} -\mathbf{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\right)}_{\boldsymbol{\mu }_{1|2}}\right\}\\ & \times \exp\left\{-\frac{1}{2}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})^{T}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\right\}\\ = & p(\mathbf{x}_{1} |\mathbf{x}_{2}) p(\mathbf{x}_{2}) \end{aligned}

最終我們發現,條件高斯分佈的期望和方差分別就是

μ12=μ1+Σ12Σ221(x2μ2)Σ12=Σ/Σ22=Σ11Σ12Σ221Σ21 \begin{aligned} \boldsymbol{\mu }_{1|2} & =\boldsymbol{\mu }_{1} +\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}(\mathbf{x}_{2} -\boldsymbol{\mu }_{2})\\ \boldsymbol{\Sigma }_{1|2} & =\boldsymbol{\Sigma } /\boldsymbol{\Sigma }_{22} =\boldsymbol{\Sigma }_{11} -\boldsymbol{\Sigma }_{12}\boldsymbol{\Sigma }^{-1}_{22}\boldsymbol{\Sigma }_{21} \end{aligned}

參考資料

文本思路主要參考了徐亦達老師的課程:徐亦達 卡爾曼濾波

https://en.wikipedia.org/wiki/Kalman_filter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章