鐵嶺做網(wǎng)站信息網(wǎng)店推廣的渠道有哪些
前兩篇文章介紹了離散時間的批量估計、離散時間的遞歸平滑,本文著重介紹離散時間的遞歸濾波。
前兩篇位置:【狀態(tài)估計】線性高斯系統(tǒng)的狀態(tài)估計——離散時間的批量估計、【狀態(tài)估計】線性高斯系統(tǒng)的狀態(tài)估計——離散時間的遞歸平滑。
離散時間的遞歸濾波算法
批量優(yōu)化的方案及其對應的平滑算法方案,是LG問題下能找到的最好的方法了。它利用了所有能用的數(shù)據(jù),來估計所有時刻的狀態(tài)。不過這個方法有一個致命的問題:無法在線運行,因為它需要用未來時刻的信息估計過去的狀態(tài)。為了在實時場合下使用,當前時刻的狀態(tài)只能由它之前時間的信息決定,而卡爾曼濾波則是對這樣一個問題的傳統(tǒng)解決方案。
之前講述了如何從Cholesky分解推導出卡爾曼濾波,實際上并不需要這么復雜,接下來介紹幾種推導卡爾曼濾波的方法。
通過MAP推導卡爾曼濾波
假設已經(jīng)有了 k ? 1 k-1 k?1時刻的前向估計:
{ x ^ k ? 1 , P ^ k ? 1 } \{\hat x_{k-1},\hat P_{k-1}\} {x^k?1?,P^k?1?}
這兩個量是根據(jù)初始時刻到 k ? 1 k-1 k?1時刻的數(shù)據(jù)推導出來的。目標是計算:
{ x ^ k , P ^ k } \{\hat x_k,\hat P_k\} {x^k?,P^k?}
其中,需要用到直到 k k k時刻的數(shù)據(jù)。實際上沒有必要再從初始時刻開始,而是簡單地用 k ? 1 k-1 k?1時刻的狀態(tài),以及 k k k時刻的 v k v_k vk?、 y k y_k yk?就能估計出 k k k時刻的狀態(tài)了:
{ x ^ k ? 1 , P ^ k ? 1 , v k , y k } ? ? > { x ^ k , P ^ k } \{\hat x_{k-1},\hat P_{k-1},v_k,y_k\}-->\{\hat x_k,\hat P_k\} {x^k?1?,P^k?1?,vk?,yk?}??>{x^k?,P^k?}
為了推導這個過程,定義:
z = [ x ^ k ? 1 v k y k ] z=\begin{bmatrix}\hat x_{k-1}\\v_k\\y_k\end{bmatrix} z= ?x^k?1?vk?yk?? ?
H = [ 1 ? A k ? 1 1 C k ] H=\begin{bmatrix}1\\-A_{k-1}&1\\&C_k\end{bmatrix} H= ?1?Ak?1??1Ck?? ?
W = [ P ^ k ? 1 Q k R k ] W=\begin{bmatrix}\hat P_{k-1}\\&Q_k\\&&R_k\end{bmatrix} W= ?P^k?1??Qk??Rk?? ?
x ^ = [ x ^ k ? 1 ′ x ^ k ] \hat x=\begin{bmatrix}\hat x_{k-1}^{'}\\\hat x_k\end{bmatrix} x^=[x^k?1′?x^k??]
其中, x ^ k ? 1 ′ \hat x_{k-1}^{'} x^k?1′?表示使用了直到 k k k時刻的數(shù)據(jù)計算的 k ? 1 k-1 k?1時刻的狀態(tài)估計,而 x ^ k ? 1 \hat x_{k-1} x^k?1?表示使用了直到 k ? 1 k-1 k?1時刻的數(shù)據(jù)計算的 k ? 1 k-1 k?1時刻的狀態(tài)估計,兩者之間相差一個 k k k時刻的后向估計。
通常MAP的最優(yōu)解 x ^ \hat x x^寫成:
( H T W ? 1 H ) x ^ = H T W ? 1 z (H^TW^{-1}H)\hat x=H^TW^{-1}z (HTW?1H)x^=HTW?1z
將上面的定義代入:
[ P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ? A k ? 1 T Q k ? 1 ? Q k ? 1 A k ? 1 Q k ? 1 + C k T R k ? 1 C k ] [ x ^ k ? 1 ′ x ^ k ] = [ P ^ k ? 1 ? 1 x ^ k ? 1 ? A k ? 1 T Q k ? 1 v k Q k ? 1 v k + C k T R k ? 1 y k ] \begin{bmatrix}\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1}&-A_{k-1}^TQ_k^{-1}\\-Q_k^{-1}A_{k-1}&Q_k^{-1}+C_k^TR_k^{-1}C_k\end{bmatrix}\begin{bmatrix}\hat x_{k-1}^{'}\\\hat x_k\end{bmatrix}=\begin{bmatrix}\hat P_{k-1}^{-1}\hat x_{k-1}-A_{k-1}^TQ_k^{-1}v_k\\Q_k^{-1}v_k+C^T_kR_k^{-1}y_k\end{bmatrix} [P^k?1?1?+Ak?1T?Qk?1?Ak?1??Qk?1?Ak?1???Ak?1T?Qk?1?Qk?1?+CkT?Rk?1?Ck??][x^k?1′?x^k??]=[P^k?1?1?x^k?1??Ak?1T?Qk?1?vk?Qk?1?vk?+CkT?Rk?1?yk??]
由于并不關心 x ^ k ? 1 ′ \hat x_{k-1}^{'} x^k?1′?的實際值,因此可以將它邊緣化,等式兩側左乘:
[ 1 0 Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 1 ] \begin{bmatrix}1&0\\Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}&1\end{bmatrix} [1Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1?01?]
這是一元線性方程的行操作,于是變成:
[ P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ? A k ? 1 T Q k ? 1 0 Q k ? 1 ? Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 A k ? 1 T Q k ? 1 + C k T R k ? 1 C k ] [ x ^ k ? 1 ′ x ^ k ] = [ P ^ k ? 1 ? 1 x ^ k ? 1 ? A k ? 1 T Q k ? 1 v k Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 ( P ^ k ? 1 ? 1 x ^ k ? 1 ? A k ? 1 T Q k ? 1 v k ) + Q k ? 1 v k + C k T R k ? 1 y k ] \begin{bmatrix}\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1}&-A_{k-1}^TQ_k^{-1}\\0&Q_k^{-1}-Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}A_{k-1}^TQ_k^{-1}+C_k^TR_k^{-1}C_k\end{bmatrix}\begin{bmatrix}\hat x_{k-1}^{'}\\\hat x_k\end{bmatrix}=\begin{bmatrix}\hat P_{k-1}^{-1}\hat x_{k-1}-A_{k-1}^TQ_k^{-1}v_k\\Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}(\hat P_{k-1}^{-1}\hat x_{k-1}-A_{k-1}^TQ_k^{-1}v_k)+Q_k^{-1}v_k+C_k^TR_k^{-1}y_k\end{bmatrix} [P^k?1?1?+Ak?1T?Qk?1?Ak?1?0??Ak?1T?Qk?1?Qk?1??Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1Ak?1T?Qk?1?+CkT?Rk?1?Ck??][x^k?1′?x^k??]=[P^k?1?1?x^k?1??Ak?1T?Qk?1?vk?Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1(P^k?1?1?x^k?1??Ak?1T?Qk?1?vk?)+Qk?1?vk?+CkT?Rk?1?yk??]
因此,只需要關注 x ^ k \hat x_k x^k?:
( Q k ? 1 ? Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 A k ? 1 T Q k ? 1 + C k T R k ? 1 C k ) x ^ k = Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 ( P ^ k ? 1 ? 1 x ^ k ? 1 ? A k ? 1 T Q k ? 1 v k ) + Q k ? 1 v k + C k T R k ? 1 y k (Q_k^{-1}-Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}A_{k-1}^TQ_k^{-1}+C_k^TR_k^{-1}C_k)\hat x_k=Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}(\hat P_{k-1}^{-1}\hat x_{k-1}-A_{k-1}^TQ_k^{-1}v_k)+Q_k^{-1}v_k+C_k^TR_k^{-1}y_k (Qk?1??Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1Ak?1T?Qk?1?+CkT?Rk?1?Ck?)x^k?=Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1(P^k?1?1?x^k?1??Ak?1T?Qk?1?vk?)+Qk?1?vk?+CkT?Rk?1?yk?
根據(jù)SMW恒等式:
Q k ? 1 ? Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 A k ? 1 T Q k ? 1 = ( Q k + A k ? 1 P ^ k ? 1 A k ? 1 T ) ? 1 Q_k^{-1}-Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}A_{k-1}^TQ_k^{-1}=(Q_k+A_{k-1}\hat P_{k-1}A_{k-1}^T)^{-1} Qk?1??Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1Ak?1T?Qk?1?=(Qk?+Ak?1?P^k?1?Ak?1T?)?1
定義:
P ˇ k = Q k + A k ? 1 P ^ k ? 1 A k ? 1 T \check P_k=Q_k+A_{k-1}\hat P_{k-1}A_{k-1}^T Pˇk?=Qk?+Ak?1?P^k?1?Ak?1T?
P ^ k = ( P ˇ k ? 1 + C k T R k ? 1 C k ) ? 1 \hat P_k=(\check P_k^{-1}+C_k^TR_k^{-1}C_k)^{-1} P^k?=(Pˇk?1?+CkT?Rk?1?Ck?)?1
原式可化簡為:
P ^ k ? 1 x ^ k = Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 ( P ^ k ? 1 ? 1 x ^ k ? 1 ? A k ? 1 T Q k ? 1 v k ) + Q k ? 1 v k + C k T R k ? 1 y k = Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 P ^ k ? 1 ? 1 x ^ k ? 1 + ( Q k ? 1 ? Q k ? 1 A k ? 1 ( P ^ k ? 1 ? 1 + A k ? 1 T Q k ? 1 A k ? 1 ) ? 1 A k ? 1 T Q k ? 1 ) v k + C k T R k ? 1 y k = P ˇ k ? 1 A k ? 1 x ^ k ? 1 + P ˇ k ? 1 v k + C k T R k ? 1 y k = P ˇ k ? 1 ( A k ? 1 x ^ k ? 1 + v k ) + C k T R k ? 1 y k = P ˇ k ? 1 x ˇ k + C k T R k ? 1 y k \begin{aligned}\hat P_k^{-1}\hat x_k&=Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}(\hat P_{k-1}^{-1}\hat x_{k-1}-A_{k-1}^TQ_k^{-1}v_k)+Q_k^{-1}v_k+C_k^TR_k^{-1}y_k \\&=Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}\hat P_{k-1}^{-1}\hat x_{k-1}+(Q_k^{-1}-Q_k^{-1}A_{k-1}(\hat P_{k-1}^{-1}+A_{k-1}^TQ_k^{-1}A_{k-1})^{-1}A_{k-1}^TQ_k^{-1})v_k+C_k^TR_k^{-1}y_k \\&=\check P_k^{-1}A_{k-1}\hat x_{k-1}+\check P_k^{-1}v_k+C_k^TR_k^{-1}y_k \\ &=\check P_k^{-1}(A_{k-1}\hat x_{k-1}+v_k)+C_k^TR_k^{-1}y_k \\ &=\check P_k^{-1}\check x_k+C_k^TR_k^{-1}y_k\end{aligned} P^k?1?x^k??=Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1(P^k?1?1?x^k?1??Ak?1T?Qk?1?vk?)+Qk?1?vk?+CkT?Rk?1?yk?=Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1P^k?1?1?x^k?1?+(Qk?1??Qk?1?Ak?1?(P^k?1?1?+Ak?1T?Qk?1?Ak?1?)?1Ak?1T?Qk?1?)vk?+CkT?Rk?1?yk?=Pˇk?1?Ak?1?x^k?1?+Pˇk?1?vk?+CkT?Rk?1?yk?=Pˇk?1?(Ak?1?x^k?1?+vk?)+CkT?Rk?1?yk?=Pˇk?1?xˇk?+CkT?Rk?1?yk??
梳理一下整個過程:
預測:
x ˇ k = A k ? 1 x ^ k ? 1 + v k P ˇ k = A k ? 1 P ^ k ? 1 A k ? 1 T + Q k \begin{aligned}\check x_k&=A_{k-1}\hat x_{k-1}+v_k \\ \check P_k&=A_{k-1}\hat P_{k-1}A_{k-1}^T+Q_k\end{aligned} xˇk?Pˇk??=Ak?1?x^k?1?+vk?=Ak?1?P^k?1?Ak?1T?+Qk??
更新:
P ^ k = ( P ˇ k ? 1 + C k T R k ? 1 C k ) ? 1 P ^ k ? 1 x ^ k = P ˇ k ? 1 x ˇ k + C k T R k ? 1 y k \begin{aligned}\hat P_k&=(\check P_k^{-1}+C_k^TR_k^{-1}C_k)^{-1} \\ \hat P_k^{-1}\hat x_k&=\check P_k^{-1}\check x_k+C_k^TR_k^{-1}y_k\end{aligned} P^k?P^k?1?x^k??=(Pˇk?1?+CkT?Rk?1?Ck?)?1=Pˇk?1?xˇk?+CkT?Rk?1?yk??
這是逆協(xié)方差形式(信息形式)的卡爾曼濾波。為了得到經(jīng)典形式的卡爾曼濾波,需要定義卡爾曼增益 K k K_k Kk?:
K k = P ^ k C k T R k ? 1 K_k=\hat P_kC_k^TR_k^{-1} Kk?=P^k?CkT?Rk?1?
經(jīng)過化簡,更新:
K k = P ˇ k C k T ( C k P ˇ k C k T + R k ) ? 1 P ^ k = ( 1 ? K k C k ) P ˇ k x ^ k = x ˇ k + K k ( y k ? C k x ˇ k ) \begin{aligned}K_k&=\check P_kC_k^T(C_k\check P_kC_k^T+R_k)^{-1} \\ \hat P_k&=(1-K_kC_k)\check P_k \\\hat x_k&=\check x_k+K_k(y_k-C_k\check x_k)\end{aligned} Kk?P^k?x^k??=Pˇk?CkT?(Ck?Pˇk?CkT?+Rk?)?1=(1?Kk?Ck?)Pˇk?=xˇk?+Kk?(yk??Ck?xˇk?)?
其中, y k ? C k x ˇ k y_k-C_k\check x_k yk??Ck?xˇk?稱為更新量,指的是實際與期望觀測量的誤差,而卡爾曼增益則是這部分更新量對估計值的權重。
通過貝葉斯推斷推導卡爾曼濾波
使用貝葉斯推斷方法還能夠以更簡潔的方式推出卡爾曼濾波。假設 k ? 1 k-1 k?1時刻的高斯先驗為:
p ( x k ? 1 ∣ x ˇ 0 , v 1 : k ? 1 , y 0 : k ? 1 ) = N ( x ^ k ? 1 , P ^ k ? 1 ) p(x_{k-1}|\check x_0,v_{1:k-1},y_{0:k-1})=N(\hat x_{k-1},\hat P_{k-1}) p(xk?1?∣xˇ0?,v1:k?1?,y0:k?1?)=N(x^k?1?,P^k?1?)
首先,對于預測部份,考慮最近時刻的輸入 v k v_{k} vk?,來計算 k k k時刻的先驗:
p ( x k ∣ x ˇ 0 , v 1 : k , y 0 : k ? 1 ) = N ( x ˇ k , P ˇ k ) p(x_k|\check x_0,v_{1:k},y_{0:k-1})=N(\check x_k,\check P_k) p(xk?∣xˇ0?,v1:k?,y0:k?1?)=N(xˇk?,Pˇk?)
其中:
x ˇ k = E [ x k ] = E [ A k ? 1 x k ? 1 + v k + w k ] = A k ? 1 x ^ k ? 1 + v k \check x_k=E[x_k]=E[A_{k-1}x_{k-1}+v_k+w_k]=A_{k-1}\hat x_{k-1}+v_k xˇk?=E[xk?]=E[Ak?1?xk?1?+vk?+wk?]=Ak?1?x^k?1?+vk?
P ˇ k = E [ ( x k ? E [ x k ] ) ( x k ? E [ x k ] ) T ] = A k ? 1 E [ ( x k ? 1 ? x ^ k ? 1 ) ( x k ? 1 ? x ^ k ? 1 ) T ] A k ? 1 T + E [ w k w k t ] = A k ? 1 P ^ k ? 1 A k ? 1 T + Q k \begin{aligned}\check P_k&=E[(x_k-E[x_k])(x_k-E[x_k])^T]\\&=A_{k-1}E[(x_{k-1}-\hat x_{k-1})(x_{k-1}-\hat x_{k-1})^T]A_{k-1}^T+E[w_kw_k^t]\\&=A_{k-1}\hat P_{k-1}A_{k-1}^T+Q_k\end{aligned} Pˇk??=E[(xk??E[xk?])(xk??E[xk?])T]=Ak?1?E[(xk?1??x^k?1?)(xk?1??x^k?1?)T]Ak?1T?+E[wk?wkt?]=Ak?1?P^k?1?Ak?1T?+Qk??
然后,對于更新部分,將狀態(tài)與最新一次測量(即 k k k時刻)寫成聯(lián)合高斯分布的形式:
p ( x k , y k ∣ x ˇ 0 , v 1 : k , y 0 : k ? 1 ) = N ( [ μ x μ y ] , [ Σ x x Σ x y Σ y x Σ y y ] ) = N ( [ x ˇ k C k x ˇ k ] , [ P ˇ k P ˇ k C k T C k P ˇ k C k P ˇ k C k T + R k ] ) p(x_k,y_k|\check x_0,v_{1:k},y_{0:k-1})=N(\begin{bmatrix}\mu_x\\\mu_y\end{bmatrix},\begin{bmatrix}\Sigma_{xx}&\Sigma_{xy}\\\Sigma_{yx}&\Sigma_{yy}\end{bmatrix})=N(\begin{bmatrix}\check x_k\\C_k\check x_k\end{bmatrix},\begin{bmatrix}\check P_k&\check P_kC_k^T\\C_k\check P_k&C_k\check P_kC_k^T+R_k\end{bmatrix}) p(xk?,yk?∣xˇ0?,v1:k?,y0:k?1?)=N([μx?μy??],[Σxx?Σyx??Σxy?Σyy??])=N([xˇk?Ck?xˇk??],[Pˇk?Ck?Pˇk??Pˇk?CkT?Ck?Pˇk?CkT?+Rk??])
根據(jù)高斯推斷,可以得到:
p ( x k ∣ x ˇ 0 , v 1 : k , y 0 : k ) = N ( μ x + Σ x y Σ y y ? 1 ( y k ? μ y ) , Σ x x ? Σ x y Σ y y ? 1 Σ y x ) p(x_k|\check x_0,v_{1:k},y_{0:k})=N(\mu_x+\Sigma_{xy}\Sigma_{yy}^{-1}(y_k-\mu_y),\Sigma_{xx}-\Sigma_{xy}\Sigma_{yy}^{-1}\Sigma_{yx}) p(xk?∣xˇ0?,v1:k?,y0:k?)=N(μx?+Σxy?Σyy?1?(yk??μy?),Σxx??Σxy?Σyy?1?Σyx?)
代入之前的結果,有:
K k = P ˇ k C k T ( C k P ˇ k C k T + R k ) ? 1 P ^ k = ( 1 ? K k C k ) P ˇ k x ^ k = x ˇ k + K k ( y k ? C k x ˇ k ) \begin{aligned}K_k&=\check P_kC_k^T(C_k\check P_kC_k^T+R_k)^{-1} \\ \hat P_k&=(1-K_kC_k)\check P_k \\ \hat x_k&=\check x_k+K_k(y_k-C_k\check x_k)\end{aligned} Kk?P^k?x^k??=Pˇk?CkT?(Ck?Pˇk?CkT?+Rk?)?1=(1?Kk?Ck?)Pˇk?=xˇk?+Kk?(yk??Ck?xˇk?)?
這與MAP給出的更新步驟的方程是完全一致的。
重申一遍,這件事情的根本在于使用了線性模型,且噪聲和先驗也都是高斯的。在這些條件下,后驗概率也是高斯的,于是它的均值和模正巧是一樣的。然而在使用非線性模型之后就不能保證這個性質了。
從增益最優(yōu)化的角度來看卡爾曼濾波
通常來說,卡爾曼濾波是線性高斯系統(tǒng)下的最優(yōu)解。因此,也可以從其他的角度來看卡爾曼濾波的最優(yōu)特性。下面介紹其中的一個:
假設有一個估計器,形式如下:
x ^ k = x ˇ k + K k ( y k ? C k x ˇ k ) \hat x_k=\check x_k+K_k(y_k-C_k\check x_k) x^k?=xˇk?+Kk?(yk??Ck?xˇk?)
但是此時并不知道如何選取 K k K_k Kk?的值,才能正確地衡量修正部分的權重。如果定義狀態(tài)的誤差為(估計值 - 真值):
e ^ k = x ^ k ? x k \hat e_k=\hat x_k-x_k e^k?=x^k??xk?
那么有:
P ^ k = E [ e ^ k e ^ k T ] = E [ ( x ^ k ? x k ) ( x ^ k ? x k ) T ] = E [ ( x ˇ k + K k ( C k x k + n k ? C k x ˇ k ) ? x k ) ( x ˇ k + K k ( C k x k + n k ? C k x ˇ k ) ? x k ) T ] = E [ ( ( 1 ? K k C k ) ( x ˇ k ? x k ) + K k n k ) ( ( 1 ? K k C k ) ( x ˇ k ? x k ) + K k n k ) T ] = ( 1 ? K k C k ) E [ ( x ˇ k ? x k ) ( x ˇ k ? x k ) T ] ( 1 ? K k C k ) T + K k E [ C k C k T ] K k T = ( 1 ? K k C k ) P ˇ k ( 1 ? K k C k ) T + K k R k K k T = P ˇ k ? K k C k P ˇ k ? P ˇ k C k T K k T + K k ( C k P ˇ k C k T + R k ) K k T \begin{aligned}\hat P_k&=E[\hat e_k\hat e_k^T]\\&=E[(\hat x_k-x_k)(\hat x_k-x_k)^T]\\&=E[(\check x_k+K_k(C_kx_k+n_k-C_k\check x_k)-x_k)(\check x_k+K_k(C_kx_k+n_k-C_k\check x_k)-x_k)^T]\\&=E[((1-K_kC_k)(\check x_k-x_k)+K_kn_k)((1-K_kC_k)(\check x_k-x_k)+K_kn_k)^T]\\&=(1-K_kC_k)E[(\check x_k-x_k)(\check x_k-x_k)^T](1-K_kC_k)^T+K_kE[C_kC_k^T]K_k^T\\&=(1-K_kC_k)\check P_k(1-K_kC_k)^T+K_kR_kK_k^T \\ &=\check P_k-K_kC_k\check P_k-\check P_kC_k^TK_k^T+K_k(C_k\check P_kC_k^T+R_k)K_k^T\end{aligned} P^k??=E[e^k?e^kT?]=E[(x^k??xk?)(x^k??xk?)T]=E[(xˇk?+Kk?(Ck?xk?+nk??Ck?xˇk?)?xk?)(xˇk?+Kk?(Ck?xk?+nk??Ck?xˇk?)?xk?)T]=E[((1?Kk?Ck?)(xˇk??xk?)+Kk?nk?)((1?Kk?Ck?)(xˇk??xk?)+Kk?nk?)T]=(1?Kk?Ck?)E[(xˇk??xk?)(xˇk??xk?)T](1?Kk?Ck?)T+Kk?E[Ck?CkT?]KkT?=(1?Kk?Ck?)Pˇk?(1?Kk?Ck?)T+Kk?Rk?KkT?=Pˇk??Kk?Ck?Pˇk??Pˇk?CkT?KkT?+Kk?(Ck?Pˇk?CkT?+Rk?)KkT??
接下來最小均方差開始正式登場了。由于協(xié)方差矩陣的對角線元素就是方差,這樣一來,把協(xié)方差矩陣的對角線元素求和,用 t r tr tr來表示這種算子,它的學名叫矩陣的跡。
于是,可以由它定義出一個代價函數(shù):
J ( K k ) = t r ( E [ e ^ k e ^ k T ] ) = t r ( P ˇ k ) ? 2 t r ( K k C k P ˇ k ) + t r ( K k ( C k P ˇ k C k T + R k ) K k T ) \begin{aligned}J(K_k)&=tr(E[\hat e_k\hat e_k^T])\\&=tr(\check P_k)-2tr(K_kC_k\check P_k)+tr(K_k(C_k\check P_kC_k^T+R_k)K_k^T)\end{aligned} J(Kk?)?=tr(E[e^k?e^kT?])=tr(Pˇk?)?2tr(Kk?Ck?Pˇk?)+tr(Kk?(Ck?Pˇk?CkT?+Rk?)KkT?)?
最小均方差就是使得 J ( K k ) J(K_k) J(Kk?)最小,對未知量 K k K_k Kk?求導,令導函數(shù)等于0:
d J ( K k ) d K k = ? 2 ( C k P ˇ k ) T + 2 K k ( C k P ˇ k C k T + R k ) \frac{dJ(K_k)}{dK_k}=-2(C_k\check P_k)^T+2K_k(C_k\check P_kC_k^T+R_k) dKk?dJ(Kk?)?=?2(Ck?Pˇk?)T+2Kk?(Ck?Pˇk?CkT?+Rk?)
因此:
K k = P ˇ k C k T ( C k P ˇ k C k T + R k ) ? 1 K_k=\check P_kC_k^T(C_k\check P_kC_k^T+R_k)^{-1} Kk?=Pˇk?CkT?(Ck?Pˇk?CkT?+Rk?)?1
這正是卡爾曼增益的通常表達式。
關于卡爾曼濾波的討論
以下是卡爾曼濾波的要點:
- 對于高斯噪聲的線性系統(tǒng),卡爾曼濾波器是最優(yōu)線性無偏估計;
- 必須有初始狀態(tài): { x ˇ 0 , P ˇ 0 } \{\check x_0,\check P_0\} {xˇ0?,Pˇ0?};
- 協(xié)方差部分與均值部分可以獨立地遞推。有時甚至可以計算一個固定的 K k K_k Kk?,用于所有時刻的均值修正,這種做法稱為固定狀態(tài)的卡爾曼濾波。