問題設定:フィルタリング問題

古典的なフィルタリング問題においては、測定された時系列データから得られた信号成分のみを観測することで、ノイズ成分を除去するアルゴリズムを探索することが目指されていた。ただしこうしたノイズフィルタリングは、その時刻までの時系列データを用いた、その時刻での信号処理に限定されていた。

近年のフィルタリング問題は状態推定問題として再設定されている。状態推定問題としてのフィルタリング問題は、現在の時刻までに測定可能な量である時系列データと、場合によっては入力データも用いて、動的状態を規定する状態変数の値を推定することとして記述された。

時系列データの予測問題、フィルタリング問題、スムーシング問題の枠組み

問題解決策:カルマンフィルタ

古典的なフィルタリング問題のアルゴリズムとして知られているのは、サイバネティクスの創始者ノーバート・ウィナーが設計した「ウィナーフィルタ(Wiener Filter)」である。制御理論的に言えば、ウィナーフィルタは伝達関数(transfer function)を用いた定式化に過ぎない。だがこのフィルタは、信号とノイズの確率過程を取り扱った最初のアルゴリズムとして知られている。

ウィナーフィルタが定常的な時系列データを前提としているのに対して、「カルマンフィルタ(Kalman Filter)」は、非定常的な時系列データにも対応できる。このフィルタは「状態空間表現(state-space representation)」によって定式化されている。この定式化がフィルタリング問題を状態推定問題として再設定する契機を生み出した。

逐次合理性

カルマンフィルタで想定されるのは、各時刻で状態推定値が正規分布を形成していることである。このフィルタにおける状態推定値は、正規分布の平均値となる。状態推定値の確実性は、分散または分散共分散行列によって測定される。初期は分散が大きい分布を形成するが、データが入力されるたびに、分散は小さくなる。

分散または分散共分散行列が逐次的に計算されるアルゴリズムは、特に実際に実装するシステムにおいて、観測対象の真値がわからない場合に機能する。当該真値と推定値の分散または分散共分散行列が計算されることによって、推定値の精度を定量的に計測することが可能になる。この逐次的な計算には、ベイズ主義で言うところの「逐次合理性(Sequential Rationality)」が働く。このために、得られた推定値をどの程度信頼できるのかを判断できるようになる。

ここで注意しておかなければならないのは、事前確率はいつでも設定できる訳ではないということである。単なる数学の問題集でベイズの定理を前提とした問題が出題されているのならば、恐らく事前確率を設定するための手掛かりが問題文の中に記載されているはずだ。しかし、現実の不確実な状況下では、必ずしもそうした手掛かりが得られるとは限らない。無論現実の実践家からすれば、問題が厳密に明確化されていないからといって、その解決を放棄する訳にはいかないだろう。

そこでベイジアンは、経験や常識によって、この問題の不確実性に対処している。つまり、事前確率を設定し得る上で手掛かりとなる情報が全く無い場合には、全ての事前確率を等確率として仮定することで、ベイズの定理による計算を可能にしているのである。この事前確率を等確率として計算を出発させる発想を特に「理由不十分の原則(Principle of insufficient reason)」と呼ぶ。

尤も、事前確率を設定し得る情報が無いのが本当に計算の開始時のみであることは、強調しておくべきことである。と言うのも、一度ベイズの定理によって事後確率を求めれば、それを次の計算時に事前確率として活用することができるからだ。つまり、一度でも結果となる事象のデータが得られれば、それを手掛かりとすることで、二度目以降の計算における事前確率を求められるのである。こうして結果となる事象のデータが得られる度に、ベイズの定理によって、原因の確率も変異していく。

原因の確率をデータベースに蓄積しているベイジアンなシステムが作動しているのならば、そのシステムは、結果となる事象を観察することによって、原因の確率に関して学習しているとも言えるだろう。このシステムが推定する原因の確率は、新しい結果を知る度に、補備修正されていく。そしてその修正された確率は次なる計算時の事前確率として活用できるように、データベース化している訳だ。この原因の確率に関する学びをベイジアンの理論では特に「ベイズ更新(Bayesian Updating)と呼ばれている。また、このベイズ更新を援用した推定法を「ベイズ推定(Bayesian estimation)」と呼ぶ。

ベイズ更新は、結果となる事象の情報を一つずつ処理していく。だがこう述べると、結果となる事象のデータを処理する順番によって学習の結果が変わってしまうのではないかと懸念する者もいるだろう。しかしベイズ統計学では、結果となる事象のデータが同一であるなら、どのような順番でそれらのデータを処理しても、その計算結果は変わらないことが保証されている。これをベイズ統計学では「逐次合理性(Sequential Rationality)」と呼ぶ。

「他責」志向の人間に統計学はできない

予測と観測の差異

カルマンフィルタの主導的差異は、「予測(prediction)」と「観測(observation)」の区別によって構成されている。カルマンフィルタのアルゴリズム構造は、ある対象の情報に関する予測値と観測値の内挿によって成り立っている。この予測と観測の対象となるのは、「状態(state)」である。例えばある時刻kにおけるロボットの位置推定において、その真値を$$x(k)$$と置く。

だがそのロボットに関する情報にはノイズや不確実性が伴っているために、観測者は十分にその位置を特定できていない。そこで、この不完全なロボットの状態に関する情報を仮に$$\widehat{x}(k|kー1)$$という確率変数で表現する。この確率変数は正規分布となる。その平均はμで、分散はσとなる。この時、ロボットの位置に関する新たな観測結果として、Xという新情報が得られたとする。すると観測者は、その観測結果と、もともと信頼していた状態の双方のどちらに重きを置くべきかという判断に迫られることになる。

この簡易的な定式からも、カルマンフィルタがベイズ的な問題設定を前提としていることが伺える。状態に関する事前分布と観測を通じて事後分布を予測するのである。上記の例の場合、ロボットの位置に関する情報が状態と観測という二つの情報源から得られている。

「感染者問題」の「陽性」と「罹患率」に潜む非合理性、「ベイズの定理」からの違反

不確実性の比較の観点

予測する際には、この二つの情報を突き合わせて判断した方が良いであろう。もし観測結果が尤もらしいのならば、事前の信念たる状態推定値の方に誤差が生じているということになるために、この値を学習という名目で修正しなければならない。だが一方で、観測にはノイズが伴う。観測結果を徒に信じる訳にもいかない。

そこでカルマンフィルタでは、状態に関する確率変数と観測で得られた情報の分散または分散共分散行列の比較の観点が導入される。分散または分散共分散行列を比較することで、状態推定値と観測値の不確実性を定量的に比較するという訳だ。そしてこの定量化によって、カルマンフィルタは状態推定値と観測値の双方を加味した値で状態推定値の修正を可能にする。

注意しなければならないのは、この状態推定値の修正が学習という名目で実行されるということだ。カルマンフィルタは、分散または分散共分散行列の比較の観点を導入することで、より分散を小さくするように、状態推定値を修正させるように設計される。

状態推定誤差

最小二乗推定法やベイズ統計の場合と同様に、カルマンフィルタにおいても、フィルタリングした結果得られた推定値$$\widehat{x}(k)$$の精度を計測しなければならない。この精度は、推定値と真値$$x(k)$$との差異に当たる状態推定誤差$$\tilde{x}(k) = x(k) ー \widehat{x}(k)$$によって計測される。この推定誤差は、主に平均二乗誤差による損失関数で計算される。

$$L(k) = E[\tilde{x}^2(k)]$$

ここでいうEは期待値を表わす。したがって状態推定値はこの損失関数を最小化する最適化問題として解かれることになる。

$$\newcommand {\argmin} \widehat{x}(k) = {argmin}_{x(k)} L(k)$$

問題再設定:カルマンフィルタリング問題

これを前提とすれば、カルマンフィルタによる状態推定問題としてのフィルタリング問題は、時系列データ$$\{y(i), i = 1, 2, 3, …, k\}$$に基づいて状態x(k)の最小平均二乗誤差推定値(Minimum Mean Square Error: MMSE)を求める問題として再設定できる。とりわけ時系列に対する逐次合理性を前提としたカルマンフィルタでは、現在時刻kにおける事後推定値(a posteriori estimate)となる$$\widehat{x}(k|k)$$を、前回の時刻kー1までの利用可能なデータに基づいた事前推定値(a priori estimate)$$\widehat{x}^ー(k|kー1)$$と観測結果y(k)を用いたベイズ更新的な学習を通じて誤差を最小化することが要求される。

問題解決策:カルマンゲイン

上述した事前推定値と事後推定値のベイズ的な区別を前提とした上で、次のような線形予測器を仮定する。

$$\widehat{x}(k) = G(k)\widehat{x}^ー(k) + \overline{G}(k)y(k)$$

ここで、$$G(k)$$はn × nの行列で、$$\overline{G}(k)$$はn次元ベクトルである。x(k)とy(k)はそれぞれ次のように定式化する。

$$x(k) = Ax(kー1) + bv(kー1)$$

$$y(k) = c^Tx(k) + w(k)$$

x(k)は状態のn次元ベクトルである。Aはn × nの行列で、bはn次元ベクトルとなる。v(k)は時刻kにおける平均値0、分散$$\sigma_v^2$$の正規分布に従うノイズである。

一方y(k)は観測値で、cはn次元ベクトルである。w(k)は時刻kにおける平均値0、分散$$\sigma _w^2$$の正規分布に従うノイズである。カルマンフィルタにおいては、v(k)とw(k)は相互に独立であると仮定される。

カルマンフィルタでは、最終的に事後推定値 $$\widehat{x}(k)$$ の分散が低まるように$$G(k)$$と$$\overline{G}(k)$$を調節していく。$$G(k)$$は$$\widehat{x}^ー(k)$$の分散にどの程度の重点を置くのかを定量化している一方で、$$\overline{G}(k)$$は$$y(k)$$の分散にどの程度の重点を置くのかを定量化している。言い換えれば、不確実性に曝されている中で、状態と観測結果のそれぞれをどの程度信頼するのかを比較可能にすることが、$$G(k)$$と$$\overline{G}(k)$$の機能となる。

これを前提とすれば、$$G(k)$$は次のような比で表現することができる。

$$G(k) = \frac{{\sigma_{x}(k)}^2}{{\sigma_{x}(k)}^2 + {\sigma_{y}(k)}^2}$$

こうした不確実性の比較可能性を実現するGを特に「カルマンゲイン(Kalman gain)」と呼ぶ。

カルマンフィルタの機能は、事後推定値の推定誤差を最小化していくために、分散を低めていくことにある。推定誤差は真値と推定値の差分、すなわち$$x(k) ー \widehat{x}(k)$$として求めることができる。

$$\widehat{x}(k) ー x(k) = (1 ー G(k))\overline{x}(k) + G(k) y(k) ー x(k)$$

$$\widehat{x}(k) ー x(k) = (1 ー G(k))\overline{x}(k) + G(k)(x(k) + w_y) ー x(k)$$

$$\widehat{x}(k) ー x(k) = (1 ー G(k))\overline{x}(k) + G(k)(x(k) + w_y) – x(k)$$

$$\widehat{x}(k) ー x(k) = (1 ー G(k))(\overline{x}(k) – x(k)) + G(k)w_y$$

確率変数として、 $$\overline{x}(k)$$ と $$w_y$$ は相互に独立である。よって、

$$\sigma^{\widehat{x}(k) ー x(k)} = {(1 ー G(k))}^2 \sigma^{\overline{x}(k) ー x(k)} + G(k)^2 \sigma^{w_y}$$

分散を $$\sigma^{\widehat{x}(k) ー x(k)} = {\sigma_x^2(k)}^\prime$$ と表記すると、$${\sigma_x^2(k)}^\prime = (1 ー G(k))^2 \sigma_{x(k)}^2 + {G(k)}^2 {\sigma_{y(k)}}^2$$

$$G(k) = \frac{{\sigma_{x}(k)}^2}{{\sigma_{x}(k)}^2 + {\sigma_{y}(k)}^2}$$

変数Xの期待値を$$\mathbb E[X]$$と表現する名なら、カルマンゲインによる事後推定値は次のようになる。

$$\mathbb E[\overline{x}^\prime(k)] = \frac{ \sigma_y^2(k) \mathbb E[\overline{x}(k)] + \sigma_x^2(k) y(k)}{\sigma_x^2(k) + \sigma_y^2(k)}= \frac{ \sigma_y^2(k) \mu_x(k)+ \sigma_x^2(k) y(k)}{\sigma_x^2(k) + \sigma_y^2(k)}$$

この値から、$$\sigma^{\overline{x}(k)}$$と$$\sigma^{y(k)}$$の内挿の分散が低減されていることが確認できる。

$${\sigma_x^2(k)}^\prime = \frac{\sigma_x^2(k)\sigma_y^2(k)}{\sigma_x^2(k) + \sigma_y^2(k)} \leq \sigma_x^2(k)$$

問題解決策:逐次学習アルゴリズム

カルマンフィルタは逐次学習によって推定値を更新していく。この学習はベイズ更新同様に逐次合理性を前提としている。ベイズ推定が事前分布(Prior distribution)と事後分布(posterior distribution)の区別を導入するなら、カルマンフィルタでは事前推定値(a priori estimate)と事後推定値(a posteriori estimate)の区別が導入される。

この事後推定値は時間更新される。更新処理は特に「予測ステップ(Prediction step)」と「フィルタリングステップ(filtering step)」に区別される。予測ステップとは、逐次学習のおいて、時刻k-1からkまでの事前推定値を求める計算処理過程を意味する。一方フィルタリングステップは、予測ステップの計算結果に基づいて事後推定値を求める過程を意味する。この学習過程を前提とすれば、カルマンフィルタのアルゴリズムは次のようになる。

初期値

状態推定値の初期値 $$\overline{x}(0)$$ は正規分布に従う確率変数 $$\overline{x}(k)$$ に従うベクトルとする。この段階で、状態におけるノイズの分散 $$\sigma_v^2$$ と観測におけるノイズの分散 $$\sigma_w^2$$ をハイパーパラメタとして設定する。

予測ステップ

現在時刻をnとする。$$\{1 <= k <= nー1\}$$ に対して、事前状態推定値とその分散を求める。

フィルタリングステップ

$$\{1 <= k <= n\}$$ に対して、カルマンゲイン、状態推定値、そしてその分散を求める。

参考文献

  • Ait-El-Fquih, B., & Desbouvries, F. (2008). On Bayesian fixed-interval smoothing algorithms. IEEE Transactions on Automatic Control, 53(10), 2437-2442.
  • Carlin, B. P., Polson, N. G., & Stoffer, D. S. (1992). A Monte Carlo approach to nonnormal and nonlinear state-space modeling. Journal of the American Statistical Association, 87(418), 493-500.
  • Doucet, A., & Johansen, A. M. (2009). A tutorial on particle filtering and smoothing: Fifteen years later. Handbook of nonlinear filtering, 12(656-704), 3.
  • Grewal, M. S. (2011). Kalman filtering. In International Encyclopedia of Statistical Science (pp. 705-708). Springer Berlin Heidelberg.
  • Kalman, R. E. (1960). A new approach to linear filtering and prediction problems. Journal of basic Engineering, 82(1), 35-45.
  • Särkkä, S. (2013). Bayesian filtering and smoothing (Vol. 3). Cambridge University Press.
  • 足立修一、丸田一郎 (2012) 『カルマンフィルタの基礎』東京電機大学出版局。