線性濾波與預測問題的新方法
在雜訊中追蹤真相:把每一次預測,與下一個並不完美的測量,融合起來。
你的手機知道你在哪兒,靠的既不是全然相信地圖,也不是全然相信 GPS——它把「你應該在哪兒」的預測,與每一次「你看起來在哪兒」的帶雜訊讀數,融合在一起。
核心想法
假設你想知道某個一直在變的量——一架飛機在哪兒、一枚火箭爬升得多快——可你拿到的每一個測量,都被雜訊弄花了。你可以乾脆相信最新那個讀數,但它在抖;你也可以不理讀數、只信「事情應該如何」的預測,但預測會漂。卡爾曼濾波兩樣都不選,又兩樣都要:每一刻,它先做一個預測,再取一個測量,最後落在兩者的加權融合上。
巧妙的正是這個權重。感測器可靠,就多靠測量;測量很吵,就多靠預測——而該如何拿捏,濾波器會依據「自己當前有多不確定」自動算出來。然後它更新這份不確定,再向前滾動一步。就這麼一小段循環,反覆地跑,便把一串糟糕的測量,化作一個穩穩變好的估計。
它是如何誕生的
到 1950 年代,把雜訊從訊號裡濾掉的數學,其實已經有了:諾伯特·維納與安德雷·柯爾莫哥洛夫在戰時為高射炮瞄準而建起了它(wiener-1948)。但他們的方法,要求訊號的統計性質永不改變、要用上資料的全部歷史、還要解一道棘手的積分;它很美,卻對一架運動每秒都在變的飛行器幾乎無從下手。
魯道夫·卡爾曼,一位生於匈牙利、在巴爾的摩一家小研究所工作的工程師,把問題重新框定。他不再在「跨越全部時間的頻率」裡打轉,而是用系統的狀態——位置、速度,凡是要緊的量——來描述它,讓它一步步向前行進。濾波於是變成了一段計算機能即時跑起來的簡單遞推。控制論的主流起初將信將疑,論文幾乎被拒;然後,1960 年,卡爾曼把它講給了 NASA 艾姆斯的斯坦利·施密特聽,後者一眼就看出:它能把阿波羅導航到月球——這套方法的前途,就此定下。
它為何重要
它把「最優估計」變成了你真能算出來的東西——在當年並不強大的機器上,為那些會動、會變的系統而算。正因如此,它才從期刊裡掙脫出來,去到一切「即時決策要騎在雜訊資料上」的地方:太空船、飛機、輪船,乃至最終你口袋裡的 GPS 晶片與運動感測器。很少有方程,做過這麼多默默無聞的活兒。
一個可以想像的畫面
想像你在濃霧裡開車,速度表還不太靠譜。你心裡一直存著一個關於「我在哪兒、開多快」的持續感覺,並據此預測一秒後會到哪兒。每隔一會兒,一塊路牌從霧裡冒出來——那是一次帶雜訊的測量。你不全信路牌,也不全信自己的猜測;你取個折中,朝當前更信得過的那一邊靠一點,然後帶著更清晰的位置感繼續開。這個一邊走、一邊自我修正的融合,就是卡爾曼濾波。
它的位置
卡爾曼濾波,是維納戰時濾波(wiener-1948)的遞迴繼承者,也與貝葉斯(bayes-1763)同氣連枝——每一次測量都在更新一個信念——只是被改寫成了面向運動目標、面向即時計算機的樣子。往下游走,它是現代導航的引擎,也是今天機率時間序列模型與機器人感測器融合的一塊基石。當一輛自動駕駛汽車,把許多雜訊訊號融成對世界的一個估計時,它腳下踩著的,正是這條 1960 年的循環。