从最小二乘法到卡尔曼滤波
??作者 | 李承蒙
學校 | 桂林電子科技大學
研究方向 | 計算機視覺
本文旨在梳理總結學習到的一些知識。由于筆者水平有限,文中難免存在一些不嚴謹和錯誤之處,誠請各位批評指正。
最近看了一篇文章,文章從最小二乘法的角度推導了卡爾曼濾波的公式(鏈接在文末)。看完后震驚不已,很受啟發,于是寫了這篇文章。一是為了倒逼輸出從而達到知新的效果,二是為了記錄一下自己的理解以便日后自己翻閱。
最小二乘法
最小二乘法是解決曲線擬合問題最常用的方法,本質是進行參數估計。實現方式是先使用待定系數法設出擬合函數,然后使用擬合函數和觀測數據構造出目標函數來評估擬合效果,并取擬合效果最好時的擬合函數。擬合函數由參數和事先選定的一組線性無關的函數(這里我們姑且叫它基函數)構成,基函數已事先確定,求解擬合函數的問題便轉變為參數估計的問題。
是一組觀測數據:
假定其噪聲(隨機變量) 分別為: 。
并且 ,噪聲之間互不相關。
為擬合函數,其中 為參數(也就是我們求解的重點)、 為事先選定的一組線性無關的函數:
為目標函數:
其中除以 的目的是加權,噪聲方差越大的觀測數據其權值越小,保證整體結果不會被個別噪聲較大的數據所影響。同時也滿足了高斯-馬爾可夫定理的要求:
高斯-馬爾可夫定理
在線性回歸模型中,如果誤差滿足零均值、同方差且互不相關,則回歸系數的最佳線性無偏估計(BLUE, Best Linear Unbiased Estimator)就是普通最小二乘法估計。
我們的目的便是使 取到最小值,將此時得到的 作為最佳的擬合函數。
舉個例子:
如馬同學的這張圖為例,圖中的 至 便是觀測數據并且每個都對應 軸上的一個坐標。通過觀察我們可以取擬合函數為 ,其中 便是我們要估計的參數。
構造目標函數:
分別對 求偏導,當滿足下式時目標函數 取到最小值,可求出參數 :
從而得到擬合函數 。當然如果你對擬合出的函數不滿意,可以再取其他的函數作為擬合函數并去估計其參數。
一個簡單的狀態估計問題
還是這張圖,不過這次我們給坐標軸一些物理意義。橫坐標代表時間,縱坐標代表位置,我們將其視為一維的勻速運動目標的位置-時間圖。你可以想象成一個小車沿著直線勻速前進,你每隔一段時間觀測它一次并記錄位置和時間數據。
分我們定義狀態量 ,其中 代表目標所處的位置, 代表目標當前的速度。
觀測數據 :
自然還有我們剛剛得出來的擬合函數?
自然還有我們剛剛得出來的擬合函數 。
不過在被賦予了物理意義之后它現在長這樣: ,其中 代表函數與縱軸的截距,也就是 時刻時的位置, 代表目標的運動速度。不過我們對目標 0 時刻的位置不感興趣,我們對它當前的狀態估計值感興趣,于是有:
其中 代表對當前目標位置的估計值, 代表對當前目標速度的估計值。這樣的擬合函數 才是我們想要的,它包含了目標在 時刻的位置與速度。換句話說,我們通過這五個觀測數據得到了目標在 時刻的狀態估計值 。
于是,如果我們能繼續獲得更多的觀測數據(一直到 ),那么有:
從而有:
于是:
其中 為 時刻下的觀測矩陣,它將目標 時刻下的狀態 轉化觀測值 。
這是個很怪的擬合函數,非常反直覺。它的觀測方式似乎是使用最新的狀態估計值,去獲得其他時間節點上的觀測值;如此一來它既是在對狀態進行觀測,又是實現了不同時刻間狀態的轉移。但我們根本不關心擬合函數本身,我們只關心構成它的參數。它的參數包含了目標當前時刻的狀態估計值 。如果我們不斷地繼續獲得數據,我們也能不斷地對擬合函數的參數進行估計,從而得出目標最新的狀態估計值。
鋪墊
但是我們發現這個方法?太 慢 了。隨著迭代推進,每一次迭代都需要用到歷史的所有數據來估計目標當前的狀態。也就是說隨著運行時間增長,積累的歷史數據越多,計算出目標當前狀態估計值所需要的時間也就越長。
我們先把最小二乘法拓展為矩陣形式來看一看。
將歷史觀測量合起來:
觀測噪聲:
同理,也把對應的觀測矩陣合起來:
對于目標函數:
雖然變成了矩陣形式,但最小二乘法的思想沒有變,通過類比一維的情況可以快速的理解矩陣形式。?
我們不妨來實實在在的求一下矩陣形式下擬合函數的參數。
在當前我們已經有 個觀測數據的情況下,我們對當前目標的狀態估計量求導,并令其為零:
于是就有:
上式中的 便是我們目前獲得到的觀測量數量,可見隨著迭代的進行我們的運算量會越來越大。
我們肯定無法接受這一點!
所以我們還需要更進一步。
遞推最小二乘法
我們的目的就是避免運算量隨著時間而增長,所以必須想方設法將 改為遞推形式。換句話說,只使用 時刻的各種數據來推算 時刻的狀態,而不是像現在這樣將所有的歷史信息全部用上。但是忘記歷史意味著背叛,所以我們選一個折中的辦法——“只送大腦”,我們可以遞推地求解目標每個時刻狀態的協方差矩陣。這樣可以將歷史信息蘊含在協方差矩陣中,達到我們的目的。
對于:
有以下性質:
于是求解 的協方差矩陣 ?:
其中:
所以:
并且我們發現 。
然后我們把 拆開可以看到:
記 于是有狀態協方差矩陣遞推公式:
同理把 拆開可得:
并且我們知道 ,于是推理可得:
于是:
至此我們得到了以下公式:
式 的形式非常有趣,它以 為基準,并通過 的方式來估計 時刻觀測量的誤差( 表示對 時刻觀測量的估計),最后乘以 并補償到 上。我們一般稱 這樣的系數為觀測增益。這種綜合了觀測數據與狀態數據的計算方式已經有些接近卡爾曼濾波了,但是只有更新過程,幾乎沒有預測過程。比如在 式中的 和 式中的 完全可以替換成由他們自己經過預測后得出的 時刻的估計量,然后再進行更新,這也是卡爾曼濾波的思想之一。
問題的根源在于我們怪異而又反直覺的觀測矩陣。它雖然叫觀測矩陣,但它耦合了觀測與狀態轉移兩個功能。觀測指的是將狀態量轉化為觀測量的過程,狀態轉移指的是將某時刻的狀態轉化為另一個時刻的狀態。與卡爾曼濾波相比,遞推最小二乘法在整個遞推過程中缺少了過程噪聲。所以我們需要對其進行解耦合,重新定義觀測矩陣與狀態轉移矩陣。
從最小二乘法到卡爾曼濾波
讓我們先用正常的方式來描述目標狀態的遞推過程:
為狀態轉移矩陣,它可以將 時刻的狀態轉變為 時刻的。其中 為目標在 時刻的先驗狀態量,也就是說它是我們使用 時刻的狀態預測得來的。 為 時刻的后驗狀態量,也就是經過上輪遞推后得到的 時刻的最優狀態估計值。
同時我們用 來表示過程噪聲,其中 代表位置噪聲, 代表速度噪聲,且有:
注意,我們將 視為一個隨機變量,且有:
同時設
并稱 為過程噪聲協方差矩陣。
現在我們再去求一次狀態協方差矩陣:
其中:
但要注意的是此時( 時刻)計算的狀態協方差矩陣為先驗狀態協方差矩陣 ,也就是我們根據 時刻的狀態協方差矩陣推算得出的。
現在我們獲得了預測過程的公式:
從而對應的更新過程公式應該改寫為:
發現式 到 中只出現過 ,也就是觀測矩陣的下標只有 。觀測矩陣在下標為 (也就是最新的時刻)時只具有觀測意義,不存在狀態轉移。因為在定義時觀測矩陣 的意義是將最新時刻 目標的狀態轉變為 時刻的觀測量(可以看二、中舉的例子),當 時便只有觀測意義。于是我們不需要重新定義觀測矩陣,當前的式子符合我們的要求。
總結
最小二乘法求解最小目標函數的過程與卡爾曼濾波中求解協方差矩陣跡的最小值的過程非常相似,只不過最小二乘法是使用所有數據來進行優化,而卡爾曼濾波通過對跡求導來獲得最優卡爾曼增益。我們可以通過構造特殊擬合函數的方式來讓最小二乘法來遞推運作,從而只傳遞狀態噪聲。然后定義狀態轉移過程,并加入過程噪聲來描述狀態轉移誤差。
相比使用貝葉斯公式與正態分布假設來推導卡爾曼濾波,最小二乘法推導的條件更為寬松。使用貝葉斯公式來推導時需要假設所有的噪聲服從正態分布,而最小二乘法推導僅需要滿足高斯-馬爾可夫定理(噪聲零均值、同方差、不相關)即可。當然推導卡爾曼濾波的方法并不只這兩種,但了解的越多理解越深刻,對學習也更有幫助。
從遞推最小二乘法推導出卡爾曼濾波的過程并不嚴謹,直接使用先驗估計來替換掉遞推最小二乘法中的一些項。如果以后有更加嚴謹的方式我會補上證明。
參考文獻
[1] https://zhuanlan.zhihu.com/p/67250500
[2] https://zhuanlan.zhihu.com/p/339118204
[3] https://www.zhihu.com/question/37031188/answer/411760828
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的从最小二乘法到卡尔曼滤波的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大同晋瑞是不是国资盘
- 下一篇: 北京/上海内推 | 字节跳动AI Lab