本講的核心問題就是線性系統卡爾曼濾波的推導。
離散時間的批量估計
線性高斯模型
運動方程:xk=Ak−1xk−1+vk+wk,k=1,2……K
觀測方程:yk=Ckxk+nk,k=0,1,2……K
各個變量的意義:
系統狀態:xk∈RN
初始狀態:x0∈RN∼N(x0ˇ,P0ˇ)
輸入:vk∈RN
狀態轉移矩陣:Ak−1
過程噪聲:wk∈RN∼N(0,Qk)
觀測矩陣:CK
觀測噪聲:nk∈RN∼N(0,Rk)
觀測量:yk∈RN
狀態估計問題: 通過初始狀態、各時刻的觀測數據、輸入數據,估計系統的真實狀態
最大後驗估計(MAP)
MAP問題:已知輸入和觀測,求最大概率的狀態
x^=argxmaxp(x∣y,v)
用貝葉斯公式重寫上述公式
x^=argxmaxp(y∣v)p(y∣x,v)∗p(x∣v)=argxmaxp(x∣v)p(y∣x)
由於各個時刻觀測、輸入的噪聲都是無關的,上面兩個項可以因式分解:
p(x∣v)=p(x0∣xˇ0)∏k=1Kp(xk,∣xk−1,vk)
p(y∣x)=∏k=0Kp(yk∣xk)
對目標函數取對數可得:
ln(p(y∣x)p(x∣v))=lnp(x0∣x0ˇ)+∑k=1Klnp(xk∣xk−1,vk)+∑k=0Klnp(yk∣xk)
將概率化成相應的數學形式有:
lnp(x0∣xˇ0)=−21(x0−xˇ0)TPˇ0−1(x0−xˇ0)−21ln((2π)NdetPˇ0)
lnp(xk∣xk−1,vk)=−21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk)−21ln((2π)NdetQk)
lnp(yk∣xk)=−21(yk−Ckxk)TRk−1(yk−Ckxk)−21ln((2π)MdetRk)
去掉與x無關的項,定義如下等式:
Jv,k(x)={−21(x0−xˇ0)TPˇ0−1(x0−xˇ0),k=0−21(xk−Ak−1xk−1−vk)TQk−1(xk−Ak−1xk−1−vk),k=1,……K
Jy,k(x)=−21(yk−Ckxk)TRk−1(yk−Ckxk),k=0,……,K
於是目標函數變成最小二乘問題:
x^=argxmaxJx,Jx=∑k=0K(Jv,k(x)+Jy,k(x))
寫成更緊湊的矩陣形式:
把運動和觀測寫在一起:
z=Hx+W
提升形式的目標函數:
J(x)=21(z−Hx)TW−1(z−Hx)
該式是個二次的,求其最小值,只令自變量最小值導數爲0:
∂xT∂J(x)=−HTW−1(z−Hx^)=0
⇒(HTW−1H)x^=HTW−1z
貝葉斯推斷
在LG(線性高斯)系統中,可以根據運動方程和觀測方程顯式寫出狀態變量分佈的變化過程。
單個時刻:
xk=Ak−1xk−1+vk+wk
提升形式:
x=A(v+w)
A=⎣⎢⎢⎢⎢⎢⎢⎢⎡1A0A1A0⋮AK−1…A0AK−1…A01A1⋮AK−2…A1AK−1…A11⋮AK−2…A2AK−1…A2……1AK−11⎦⎥⎥⎥⎥⎥⎥⎥⎤
提升形式裏,右側只有v和w,容易求得其均值和協方差:
xˇ=E[x]=E[A(v+w)]=Av
Pˇ=E[(x−E[x])(x−E[x])T]=AQAT
先驗部分寫爲:p(x∣v)=N(xˇ,Pˇ)=N(Av,AQAT)
觀測模型:
單次觀測:yk=Ckxk+nk
提升形式:y=Cx+n,C=diag(C0,C1,……CK)
聯合分佈:
p(x,y∣v)=N([xˇCxˇ],[PˇCPˇPˇCTCPˇCT+R])
由第一章的高斯推斷可得:
p(x∣v,y)=N(xˇ+PˇCT(CPˇCT+R)−1(y−Cxˇ),Pˇ−PˇCT(CPˇCT+R)−1CPˇ)
帶入SMW式進行化簡可得:
p(x∣v,y)=N((Pˇ−1+CTR−1C)−1(Pˇ−1xˇ+CTR−1y),均值x^(Pˇ−1+CTR−1C)−1)後驗協方差P^
均值部分:(Pˇ−1+CTR−1C)x^=Pˇ−1xˇ+CTR−1y
代入xˇ=Av和Pˇ−1=A−TQ−1A−1
得均值式:(A−TQ−1A−1+CTR−1C)x^=A−TQ−1v+CTR−1y
由於A的結構,A逆具有特殊形式:
A−1=⎣⎢⎢⎢⎢⎢⎢⎡1−A01−A11−A2⋱⋱1−AK−11⎦⎥⎥⎥⎥⎥⎥⎤
按照均值式,定義矩陣:
z=[vy],H=[A−1C],W=[QR]
可得:(HTW−1H)x^=HTW−1z與MAP結果完全一致!
MAP結果和貝葉斯推斷結果一致,說明了什麼?
• MAP只關心達到最大後驗概率的一個點,這個點的狀態稱爲MAP估計。
• 而貝葉斯推斷寫出了p(x|y,v)的完整形式,它是一個高斯分佈,其均值與MAP估計相等;同時,給出了這個估計的協方差。
• 如果我們只關心狀態估計變量取值,那麼MAP給出了後驗分佈的模(Mode),貝葉斯推斷給出了均值。
• 而在LG系統中,二者是一樣的,使得這兩類方法給出了同樣的結果。
LG系統最優估計結果唯一的條件:rank(HTW−1H)=N(K+1),N(K+1)表示x的維度。
由於協方差矩陣的對稱正定性,即要求rank(HTH)=rank(HT)=N(K+1)
H的具體形式取決於問題有沒有0時刻的先驗條件。
離散時間的遞歸平滑算法
很多在線問題當中(比如定位),我們有上一個時刻的先驗估計,希望通過這個時刻的控制和觀測,計算這個時刻的狀態估計。這裏介紹遞歸解法。遞歸解法的基礎是批量問題的解法。
批量問題的核心是用Cholesky分解法求解方程(HTW−1H)x^=HTW−1z
Cholesky解方程的流程:
•Cholesky分解:HTW−1H=LLT
• 先解:Ld=HTW−1z 得到d,從上往下解;
• 再解: LTx^=d得到最優狀態,從下往上解;
• 注意這種解法對一般線性方程也是有效的,不光是針對狀態估計問題
• 這兩步分別稱爲前向過程和後向過程(forward/backward)。
迭代法是建立在Cholesky基礎上,最終得到經典的RTS Smoother:
前向:k=1,……,K
Pˇk,f=Ak−1P^k−1,fAk−1T+Qk
xˇk,f=Ak−1x^k−1,f+vk
Kk=Pˇk,fCkT(CkPˇk,fCkT+Rk)−1
P^k,f=(1−KkCk)Pˇk,f
x^k,f=xˇk,f+Kk(yk−Ckxˇk,f)
後向:k=K,……,1
x^k−1=x^k−1,f+P^k−1,fAk−1TPˇk,f−1(x^k−xˇk,f)
離散時間的濾波算法
• RTS Smoother是無法在線運行的(非因果的Not causal)
• 它的後向迭代過程使用下個時刻的信息更新之前的估計
• 初始值中需要知道x(K)的後驗
利用MAP和貝葉斯推斷均可推導出卡爾曼濾波,在此只給出卡爾曼濾波最終形式:
關於卡爾曼濾波器的結論
• 卡爾曼濾波器給出了LG系統下最優線性無偏估計(Best Linear Unbiased Estimate, BLUE)
• 需要有初始狀態
• 卡爾曼濾波器即RTS Smoother的前向部分
• 在非線性場合下,我們會使用擴展卡爾曼濾波器(EKF),但此時MAP、貝葉斯推斷、EKF給出的結果均會不一樣