こんにちは。kzです。

僕はポケットに物を入れたくない派なんです。たまたま凄くいい物を見つけました。CROSSBODY PHONE CASEです。超かっこよくないですか?欲しいですけど高いので自作しようと思います。

g-h Filter

本日のテーマはg-hフィルタです。本当はカルマンフィルターについて書きたかったんですけど、やはりステップバイステップでやっていこうと思いましてまずはg-hフィルタです。
An alpha beta filter (also called alpha-beta filter, f-g filter or g-h filter[1]) is a simplified form of observer for estimation, data smoothing and control applications. It is closely related to Kalman filters and to linear state observers used in control theory. Its principal advantage is that it does not require a detailed system model.

https://en.wikipedia.org/wiki/Alpha_beta_filter
簡単にいうとg-hフィルタとは、ノイズの乗った時系列データを推定するためのアルゴリズムです。 ちなみにgとhは共にハイパーパラメータになります。ghフィルタでは用語がややこしいのでまずはそれについて説明します、下の図をみてください。(記事の最後に導出します)
これはアルゴリズムを理解するにあたってベースとなる式です。(詳しくはGistsを見てください)まず注意して欲しいのがGainがMeasurementとPredictionに対する重みになっているということです。

  • Estimation: PredictionとMeasurementを使った新しいPrediction的な
  • Prediction: 予測値
  • Measurement: 実測値つまりデータ
  • Kalman Gain: 更新されているパラメータ的な
  • Residual: (Measurement – Prediction)の値、予測誤差的な
という感じです。上の図を改良したものがghフィルタです。大まかな流れを確認しましょう。
このように初期値を与えて、UpdateとPredictionの2ステップを繰り返しxを予測します。(まるでEMアルゴリズムではないか)では、もう少し具体的なバージョンを見てみましょう。
みての通り非常にシンプルなアルゴリズムです。しかしこれが強力なんです。
これを見て何がすごいですか?まずは初期値です。このようにでたらめな初期値に対してもghフィルタは効きます。

ハイパラの変化と挙動

先ほど、ghは共にハイパーパラメータと言いました。ハイパーパラメータについてはこちらへ。まずはgの挙動をみましょう。
つまり、gが大きいほどMeasurementに引っ張られることがわかります。
つまり、hが大きいほどMeasurementへの反応速度が大きいとわかります。では最後に初めの画像の数式導出とコードを貼って終わります。
カルマンフィルターはもう少しで終わりそうです。粒子フィルタが楽しみでたまりません。でわ