予測と観測を最適に混ぜる——カルマンゲインという一本の式
GPSから宇宙探査機まで、あらゆる推定の裏にいる「カルマンゲイン」という重みを解剖する。
何かの状態を推定したいとき、たいてい2つの情報がある。モデルからの予測と、センサからの観測だ。どちらも不確かで、どちらも完全には信頼できない。
じゃあどう混ぜるか——これがカルマンフィルタの問いだ。
シンプルな場合から
最もシンプルな場合から始めよう。1次元の位置推定だ。
- モデルが予測した位置を 、その予測の不確かさ(分散)を
- センサが出す観測値を 、センサノイズの分散を
最適な更新式は
ここで が カルマンゲインで、
これだけだ。 なら観測を無視してモデルを信じる。 なら予測を捨ててセンサを信じる。 が大きい(モデルの確信が低い)ほど は1に近づき、観測を重く取る。 が大きい(センサがノイズまみれ)ほど は0に近づき、モデルを頼る。
数字で追う
具体的な例で考えてみる。
- モデルの予測: 位置 、分散
- センサの観測: 、ノイズ分散
センサをかなり信頼して 8.4m と推定した。更新後の分散は
推定の確信度が上がった(分散が 4 から 0.8 に下がっている)。
予測と更新のループ
実際のカルマンフィルタは、このステップを「予測 → 更新」のループとして繰り返す。
予測ステップでは、状態方程式(物理モデル)を使って次の時刻の と を伝播させる。たとえば等速運動なら 、分散には過程ノイズ が加わって となる。
更新ステップでは、新しい観測 を取り込んで推定を修正する——これが今見てきた式だ。
このループは1960年にルドルフ・カルマンが論文に書いた形そのものに近く、以来、アポロ計画の誘導コンピュータから現代の GPS 受信機まで、形を変えながら使われ続けている。
なぜ「最適」か
なぜこのゲインが最適なのか。前提はガウスノイズだ。
不確かさがガウス分布に従う場合、予測(事前分布)と観測(尤度)をベイズ的に掛け合わせた事後分布の平均を計算すると、まさにこのカルマンゲインが出てくる。「分散に反比例した加重平均」はガウス分布の掛け算が自然に要求する形で、最小二乗誤差を最小化する推定量と一致する。
ガウス分布でない場合は最適性の保証が崩れるけれど、それでも実用上はかなりうまく動くことが多い——という理由で、非ガウスな問題にも使われていることを付け加えておく。
カルマンゲインの別の読み方
を書き換えると になる。
つまりカルマンゲインは「センサの不確かさ ÷ モデルの不確かさ」の比に反比例する。どちらの声が大きいかを、分散の比が決める——という直感的な読み方ができる気がする。
更新後の分散 も面白い。 のとき で、センサを信頼すればするほど推定は確かになる(ただしそれはセンサが本当に良いときだけ意味がある)。 のとき で、センサがひどすぎると情報は何も増えない。
非線形に向けて
現実の問題は非線形なことが多い。GPS の測位方程式(衛星と受信機の距離は非線形)も、ジャイロで角度を積分する問題も、直線の状態方程式では書けない。
これへの対応として、拡張カルマンフィルタ(EKF) は非線形関数をヤコビアンで線形化してカルマンの枠に当てはめ、アンセンテッドカルマンフィルタ(UKF) はシグマ点と呼ばれるサンプルを使って分布を非線形に伝播させる。どちらも核心は同じで、「予測と観測の最適な混ぜ方」という問いへの答えが基底にある。
GPSの測位にも、ロケットの誘導にも、屋内のBluetooth測位にも、心拍検出にも——カルマンフィルタは似た構造で埋まっている。2つの不確かな情報を、不確かさの比で混ぜる。その操作の普遍性が、これだけ広く使われる理由だと思う。
— ランキン
コメント
まだコメントはないよ。最初のひとことをどうぞ。