一、什么是卡爾曼濾波
在雷達目標跟蹤中,通常會用到Kalman濾波來形成航跡,以前沒有學過機器學習相關知識,學習Kalman時,總感覺公式看完就忘,而且很多東西雲里霧里並不能深入理解,最后也就直接套那幾個遞推公式了。通過上一篇CRF,我們可以順便回顧一下HMM,事實上,這幾種算法和Kalman之間是有聯系的,這個聯系,據說是在PRML這本書的第13章里講的線性動態系統(LDS)講的,有機會一定好好拜讀一下!那么什么是Kalman濾波呢?
首先,簡單的理解就是:對於一個目標,它會具有一定的速度,如果是機動的,還會有加速度,不過這都不重要,重要是的,這個目標各個時刻的位置是我們需要關心的。對於目標的找尋,尊尋方程:
X(k)=A X(k-1)+B U(k)+W(k) 狀態方程
Z(k)=H*X(k)+V(k) 量測方程
卡爾曼濾波用到的線性離散狀態和觀測方程則如上,A表示的是狀態轉移矩陣,H表示的是觀測矩陣,W和V都是滿足高斯白噪聲的分布,並且W和V是獨立的,即E{w*vT} = 0。而Kalman濾波的總體思路就是,我們用k-1時刻的估計值X^去預測k時刻的Z,然后用預測的值和實際觀測到的值進行比對,用誤差修正k+1時刻的估計方法。其實講到這里,可以回顧HMM模型,看以看到,模型中白圈代表了狀態,而藍圈代表了觀測值,因此,可以看到Kalman和HMM其實是有一定的聯系的。
二、Kalman和HMM之間的關系
其實,講到這里,我就想說一下我理解的Kalman與HMM的關系,事實上,他們解決的問題模型都是如上圖所示,只不過一個是利用最小均方誤差准則進行估計,一個是利用最大后驗進行估計。事實上,HMM的預測問題中,就是一個最大的后驗概率作為其似然函數,然后通過viterbi算法解的這個似然函數。
當然上面都是我的私貨,比較標准的答案:《Advanced Digital Signal Processing and Noise Reduction 4th Edition》
稍微翻譯下:
相同點:
- 馬爾科夫性:兩種都是基於馬爾科夫過程,當前時刻的狀態只與上一時刻有關系,譬如,當前時刻的位置只與上一時刻的位置有關;
- 高斯觀測:兩者的量測值都符合高斯分布;
不同點:
- 狀態的連續性:Kalman的狀態是連續值,而HMM的狀態是可數的(類似於一個是線性回歸、一個是邏輯回歸,或者說一個是回歸問題、一個是分類問題);
- 馬爾科夫狀態模型:Kalman用狀態轉移矩陣+高斯的過程噪聲演化馬爾科夫過程,而HMM只有狀態轉移矩陣;
- 隱藏層狀態:Kalman的隱狀態由於噪聲的原因不可觀察,而HMM由於隱層狀態的轉化沒有噪聲,也就是說,由觀測值可推斷HMM的隱藏層的狀態,但是不能推斷Kalman的狀態究竟是哪一個;
三、Kalman濾波公式
事實上,Kalman濾波的遞推公式並不復雜,只要真正理解了最小均方誤差估計,其遞推公式就很好掌握了。
首先是最基本的兩個方程:
W符合N(0,Q),V符合N(0,R)。
然后可以看到,Kalman濾波的五個基本的濾波方程:
對於這個方程組的推導:
證明到這里,可以看到,上面的式子是由公式(2)得到的。公式(2)包含一個新的定義:新息,實際上就是量測值與預測值的差嘛,在我們這個kalman濾波中,它反映了過程噪聲和測量噪聲綜合對測量狀態值的影響,即w和v兩者共同作用於新息的影響。假設一個數值c由兩部分內容a和b組成,通常兩者關系的表達方法有兩種:相加和比重。
- c = a+b(相加)
- a = n*c ; b = (1-n)*c (比重)
這樣的話,公式(2)中,如果我們想要得到歸於狀態轉移的影響,則可以用a = n*c來表示,n就是式子中的K(被稱為卡爾曼增益)。
如上公式,表示估計值與實際值之間的差,根據最小均方誤差准則,應該是E(e^2)最小。
然后,可以簡單的推導一下其中的K的求法
求:
由於:
求導得到:
求得K,如公式(5)所示:
事實上,對於上面求Pt+1的 公式和求導公式兩者結合,可以消除0項,即化簡得到公式(4).
以上即為Kalman濾波公式的簡單推導過程。
四、α-β濾波器
如上根據Kalman濾波的遞推公式,可以看到,為了求卡爾曼增益,消耗了大部分的工作量,為了減少計算量,必須改變增益矩陣的計算方法,因此人們提出了常增益濾波器,此時的增益的計算不再與協方差有關系,因而,可以在濾波過程中離線計算卡爾曼增益,這樣就大大減少了計算量,有利於工程實現。α-β濾波器是針對勻速運動目標模型的一種常增益濾波器。
α-β濾波器主要針對的是勻速運動目標模型,目標模型的狀態向量只包含位置和速度兩項。其增益表現如下:
其中,α、β為無量綱的值,分別為目標狀態的位置和速度分分量的常濾波增益,其中T為采樣間隔。對於具體的取值,可以通過《雷達數據處理及應用》書中有給出兩個值的具體取值。下面給出工程上的應用方法:
如上,可以通過k,即采樣時刻來確定兩個的值,對於α來說,從k=1開始,而β從k=2開始,濾波從k=3開始。可以看到他們的關系如下圖,對於一些應用可以讓兩者小到一定程度不在改變。
五、線性濾波與非線性濾波
5.1 擴展卡爾曼濾波(EKF)
如上都是講的是線性模型,即狀態方程和量測方程都是線性方程的情況。而實際上,有些傳感器得到的是非線性模型,即觀測數據與目標動態參數的關系是非線性的。對於非線性濾波,本文簡單的介紹一下擴展卡爾曼濾波(EKF)。
對於非線性濾波,至今未得到完善的解法,通常的處理方法是利用線性化技巧將非線性濾波問題轉化為一個近似的線性濾波問題,套用線性濾波理論得到求解原非線性濾波問題的次優濾波算法,其中最常用的線性化方法是泰勒級數展開,得到的濾波方法即為擴展卡爾曼濾波。對於二階EKF,其濾波性能遠比一階的要好,但是二階以上的效果提升就不明顯了,所以一般就是用一階、二階,但是二階計算量比較大,一般都用一階的。
5.2 泰勒展開
泰勒公式是將一個在x=x0處具有n階導數的函數f(x)利用關於(x-x0)的n次多項式來逼近函數的方法。
函數的麥克勞林展開指上面泰勒公式中x0取0的情況,即是泰勒公式的特殊形式,若f(x)在x=0處n階連續可導,則下式成立:
六、Kalman與最小二乘
6.1 線性回歸(LinearRegression)
在機器學習中,回歸算法是一種有監督的算法,用來建立變量和量測值之間的關系。回歸算法的最終結果是一個連續的數據值。既然講到了Kalman,此處也順便簡單講解一下這種線性回歸問題。
線性回歸的一個例子:租房價格問題
對於線性回歸,通常構造y = θx + ε 的模型,如果有多個特征,y = θ1x + θ2x + ... +ε ,即:
參考:線性回歸的基本假設
然后可以通過最大似然估計,獲得損失函數,損失函數的求解,可以通過最小二乘法和梯度下降的方法求解。
參考:https://www.cnblogs.com/pinking/p/8722342.html
案例:https://www.cnblogs.com/pinking/p/8970983.html
因此,線性回歸是一類問題的概念,而最小二乘估計、最小均方誤差估計是參數估計方法,最小二乘法和Kalman都是參數優化方法,包括梯度下降之類的。對於解決類似上面房價預測問題,可以通過最大似然估計進行參數估計,然后根據似然函數構造損失函數,在通過最小二乘法、梯度下降之類的進行求解;當然參數估計也可以利用最小二乘估計,然后通過最小二乘法或梯度下降求具體參數。對於雷達航跡問題,也可以利用最小二乘法求解,當然也可以利用kalman濾波,這是因為我們對於系統模型比較了解。
6.2 Kalman與最小二乘法
最小二乘(Least Square)是優化方法中的一種特殊情況,而卡爾曼濾波又是最小二乘法的一種特殊情況。 古典最小二乘中,假設了每一次測量的權重相同,但事實上這樣並不合理,后來演化為加權最小二乘法,至此最小二乘估計所做的都是批處理(Batch),這樣比較占內存,不符合動態系統狀態估計的需要,即每一次更新輸入時,都要從新計算之前所有的記錄值。而后,提出遞推最小二乘法,模型就不用每次都重新計算了。與遞歸最小二乘相似,卡爾曼濾波加入了系統內部變化的考慮。即利用process model對系統在下一時刻的狀態進行預測。
當對於系統不夠了解時,使用最小二乘法比較合適,而對於系統了解比較多時,可以采用Kalman濾波。改變量測噪聲、系統噪聲都會對Kalman濾波的效果產生影響,而不會對最小二乘濾波產生影響,而改變最小二乘的階數會對其產生影響。