Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタ(ローカルレベルモデル)
大橋耕也
October 13, 2018
カルマンフィルタ(ローカルレベルモデル)
今回の記事は以下の本
の第 2 章を参考にしています.宜しければそちらを参照してください.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの背景知識
カルマンフィルタにできること
カルマンフィルタとは,ノイズのある観測値からシステムの内部状態を推定する技術です.内部状態とは直接観測ができないシステムの状態だと考えて下さい.例えば,ロケットのエンジン内部の温度推定があります 1.センサーはエンジン内部の温度に耐えられず壊れてしまうので側面に設置するしかありません.側面センサー値がノイズのある観測値,エンジンの内部温度が推定したい内部状態に対応します.
1参考動画:https://www.youtube.com/watch?v=mwn8xhgNpFY
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの背景知識
カルマンフィルタにできること
他の応用例として自動運転車があります.自動車にとっては今自分がどこを走っているのか?(自己位置の把握)が重要です.その為に GPS やオドメータといったセンサーが搭載されていますが,どうしても電波の強弱やタイヤと地面の摩擦等によるノイズが加わってしまいます.自動車に搭載されている各センサーの値がノイズのある観測値,自動車の座標が推定したい内部状態に対応します.以下の図は赤い線が自動車が真に走っている経路,緑点が各時刻でのノイズのある観測値,青い線がカルマンフィルタにより推定された走行経路を表します.Youtube にとても分かりやすい動画があるので是非ご覧になってみてください 2.
2https://www.youtube.com/watch?v=7Lxlnb39wtU
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの背景知識
状態空間モデル
カルマンフィルタは状態空間モデルへの計算アルゴリズムです.状態空間モデルとは,
yt ∼ ht(yt | αt) 観測方程式
αt+1 ∼ qt(αt+1 | αt) 状態遷移方程式
の 2 つのモデルを合わせたものです.ここでそれぞれ ht , qt は条件付き確率分布,yt は観測値,αt は内部状態,添え字 t は時刻をそれぞれ表します.
Figure: 出典:https://qiita.com/TomokIshii/items/8956d864424386501b60
注意すべき点は,上記のモデルは神様が創られた無限に複雑なこの世界を我々人間が恐れ多くもモデル化しているだけなので ht , qt , αt はそれぞれ真の確率分布,真の内部状態を表すわけではないことです.定式化の方法からわかるように,状態空間モデルは強力な時系列解析手法です.時系列解析方法として有名なものに ARIMA モデルがありますが,実は ARIMA モデルは状態空間モデルにより記述できるので,状態空間モデルの方がより広いクラスになります.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの背景知識
線形ガウス状態空間モデル
観測方程式と状態遷移方程式の定義により様々なモデルが構築できますが,”カルマンフィルタ”といった場合は大概
yt = Aαt + εt 観測方程式
αt+1 = Bαt + Cut + ηt 状態遷移方程式
なる線形ガウス状態空間モデルを仮定します.ここで A,B,C は行列,ut は制御ベクトル,εt , ηt は正規ホワイトノイズをそれぞれ表します.制御ベクトルとは,システムに対する何かしらのアクションを表し状態遷移に影響するためそう呼んでいます.観測・状態遷移がそれぞれ線形変換およびガウスノイズで表現されているため,線形ガウス状態空間モデルとここでは呼んでいます.これでは,観測・状態遷移ノイズを多峰型でモデル化したい場合や観測・状態遷移が非線形であるような場合には適しません.しかし上記のモデルでは,計算アルゴリズムであるカルマンフィルタを解析的に構築できるため重宝されます.観測・状態遷移を非線形変換に拡張した拡張カルマンフィルタ(Extended Kalman Filter)なる手法等も提案されていますが,これらも非線形変換を線形近似して解析的に扱いやすくしています(つまり,線形ガウス状態空間モデルに対するカルマンフィルタを基にしている).以上で状態空間モデルを朧げながらにも理解できました.ではこれに対する計算アルゴリズムであるカルマンフィルタとは何でしょうか.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの背景知識
カルマンフィルタとは
状態空間モデルにより,観測できない内部状態を持つ時系列データのモデル化が可能となりました.では,真の内部状態を sin 波,観測値はそれらにガウシアンノイズを加えた時系列データを状態遷移方程式 αt+1 = αt + εt でモデル化してみましょう.
もちろん観測値を全く反映しておらず,今回は単なるランダムウォークなので真の内部状態は推定できていません.カルマンフィルタとは,状態空間モデルに観測値を反映・修正し推定精度の向上を可能とする計算アルゴリズムです.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの定式化
ローカルレベルモデル
今回の記事では,ローカルレベルモデルとよばれる最も単純な状態空間モデルに対するカルマンフィルタの導出を通してカルマンフィルタを紹介します.
Definition (ローカルレベルモデル)
yt = αt + εt , εt ∼ N(0, σ2ε), t = 1, . . . , n
αt+1 = αt + ηt , ηt ∼ N(0, σ2η), t = 1, . . . , n − 1
α1 ∼ N(a1,P1)
ノイズは正規ホワイトノイズであり,初期状態 α1 と独立であると仮定しています.このモデルは状態遷移方程式がランダムウォークであるから,ランダムウォーク・プラス・ノイズモデルともよばれます.前頁で紹介したように,このモデルに従って内部状態を推定しても明後日の方向に進み続け上手くいきません.カルマンフィルタでは次頁で導入する2 つの統計量を各時刻で求めていきます.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの定式化
1 期先予測とフィルタ化推定量
カルマンフィルタでは次の 2 つの統計量を逐次計算します.
1期先予測: (at ,Pt) = (E[αt | Yt−1],V[αt | Yt−1])
フィルタ化推定量: (at|t ,Pt|t) = (E[αt | Yt ],V[αt | Yt ])
1 期先予測とは状態遷移方程式に基づいた次時刻の状態の推定,フィルタ化推定量は実際の観測値を得た後に修正された状態の推定量です.この 2 つを逐次計算し,フィルタ化推定量の列が内部状態の推定となります.また,これらに加えて次の 2 つを定義します.
1期先予測誤差: vt = Yt − E[Yt | Yt−1]
1期先予測誤差分散: Ft = V[vt | Yt−1]
それでは,Yt−1 = {y1, . . . , yt−1} が観測された下で 1 期先予測およびフィルタ化推定量を求めましょう.vt について
E[vt | Yt−1] = E [Yt − E[Yt | Yt−1] | Yt−1]
= E [αt + εt − at | Yt−1]
= at + 0− at = 0
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの定式化
1 期先予測とフィルタ化推定量
Ft = V[vt | Yt−1]
= V[αt + εt − at | Yt−1]
= V[αt | Yt−1] + V[εt | Yt−1]
= Pt + σ2ε
Cov [αt , vt | Yt−1] = Cov [αt ,Yt − E[Yt | Yt−1] | Yt−1]
= Cov [αt , αt + εt − at | Yt−1]
= V[αt | Yt−1] + Cov [αt , εt | Yt−1]
= Pt (∵ αt ⊥⊥ εt)
ここで次の補題を認めます.
Lemma
確率変数 Y1,Y2 が正規分布に従うとき
E[Y1 | Y2] = E[Y1] + Cov [Y1,Y2]V[Y2]−1(Y2 − E[Y2])
V[Y1 | Y2] = V[Y1]− Cov [Y1,Y2]V[Y2]−1Cov [Y1,Y2]
⊤
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの定式化
1 期先予測とフィルタ化推定量
Yt−1 が与えられたとき,at = E[αt | Yt−1] は定数となります.したがって,Yt とvt = Yt − E[Yt | Yt−1] = Yt − at は 1 対 1 対応となり,E[· | Yn] = E[· | vt ,Yt−1] が成り立ちます.以上からまずフィルタ化推定量は
at|t = E[αt | vt ,Yt−1]
= E[αt | Yt−1] + Cov [αt , vt | Yt−1]V[vt | Yt−1]−1(vt − E[vt | Yt−1])
= at + PtF−1t vt
≡ at + Ktvt
Pt|t = V[αt | vt ,Yt−1]
= V[αt | Yt−1]− Cov [αt , vt | Yt−1]2V[vt | Yt−1]
−1
= Pt − P2t F
−1t
= Pt(1− Kt) ≡ PtLt
ここで,Kt = PtF−1t , Lt = 1− Kt とおきました.Kt はカルマンゲインとよばれ,1 期
先予測 at を 1期先予測誤差 vt で補正するときの重みになります.このときフィルタ化推定量から 1 期先予測は
at+1 = E[αt+1 | Yt ] = E[αt + ηt | Yt ] = at|t
Pt+1 = V[αt+1 | Yt ] = V[αt + ηt | Yt ] = Pt|t + σ2η
と求まります.
カルマンフィルタ(ローカルレベルモデル)
カルマンフィルタの定式化
1 期先予測とフィルタ化推定量
以上をまとめるとローカルレベルモデルに対するカルマンフィルタは次の逐次計算アルゴリズムとなります.
カルマンフィルタ
t = 1, . . . , n に対して
観測 vt = Yt − at , Ft = Pt + σ2ε
補正 at|t = at + Ktvt , Pt|t = PtLt
1 期先予測 at+1 = at|t , Pt+1 = Pt|t + σ2η
カルマンフィルタ(ローカルレベルモデル)
数値実験
カルマンゲインの考察
最後にカルマンゲインの考察を行います.カルマンゲインは
Kt =Pt
Ft=
1 期先予測分散
1 期先予測誤差分散=
Pt−1|t−1 + σ2η
Pt + σ2ε
です.観測ノイズ σ2ε が大きい場合,それはつまり観測値を得るとき真の内部状態から平
均的に大きくずれているので観測値は信用できません.つまり観測値を基に状態推定を補正するはノイズに大きく左右されてしまいます.したがって,カルマンゲインは小さくなります.一方で状態遷移ノイズ σ2
η が大きい場合,それはつまり次時刻の遷移状態が定まらないので 1 期先予測はアテになりません.したがって,私たちは観測値を信じるしかなくカルマンゲインが大きくなります(予測と観測値の誤差による補正が大きくかかる).次頁である人の体重データをローカルレベルモデルでモデル化しカルマンフィルタにより状態の推定を行いました.体重は前日の食べ過ぎや,衣服によりノイズが乗っているのでデータから真の体重を推定しようという問題です.考察の通り,観測ノイズが大きい場合は観測値に影響されていません(己の道を信じて突き進んでいる)が,状態遷移ノイズが大きい場合は観測値の大きく寄っていることがわかります(自分の予想に全く自信がない).
カルマンフィルタ(ローカルレベルモデル)
数値実験
カルマンゲインの考察