自己紹介 & お知らせ

   、、┯、、
   ミ (・)(・)ミ  本スライドはhttp://y-yammt.github.io/intro-bayes-kalman-filter で見られますぞ、と
  彡 д ミ
  彡  / ̄ ̄ ̄ ̄/
_彡ニつ/  Macc /__
   \/____/

今回の内容

  • 入門ベイズ統計 第7章「ベイズ更新とカルマン・フィルター」を見ていきます。
    • 7.1 リアル・タイム推定
    • 7.2 カルマン・フィルターのモデル
    • 7.3 カルマン・フィルターの漸化式
    • 7.4 シミュレーション例 ← 省略します

7.1 リアル・タイム推定

リアル・タイム推定とは?

時間的に観測される現象と並行しながら「その場(時間)」で推定を行うこと。
  • 簡単な例として平均値のリアル・タイム推定を次のスライドで紹介します。

平均値のリアル・タイム推定

$t-1$時点での平均値:
$$\mathbf{\mu}_{t-1} = \frac{1}{t-1}\sum_{i=1}^{t-1}\mathbf{x}_i$$

平均値のリアル・タイム推定

$$ \begin{split} \mathbf{\mu}_{t} &= \frac{1}{t}\sum_{i=1}^{t}\mathbf{x}_i \\ &= \frac{1}{t} \mathbf{x}_t + \frac{1}{t} \sum_{i=1}^{t-1} \mathbf{x}_i = \frac{1}{t} \mathbf{x}_t + \frac{t-1}{t} \mathbf{\mu}_{t-1} \\ &= \mu_{t-1} + \frac{1}{t} ( \mathbf{x}_t - \mathbf{\mu}_{t-1} ) \end{split} $$
過去のデータを再計算して平均値を求めなくてもよい。

カルマン・フィルタ

  • 時系列に対する逐次推定法の一種。
状態$\theta_1$$\theta_2$$\cdots$$\theta_{t-1}$$\theta_{t}$
観測値$y_1$$y_2$$\cdots$$y_{t-1}$$y_{t}$
  • 状態は観測できず、推定しなければならないことに注意。
  • 状態と観測値の例:
  • 状態:
    製品の真の不良率
    観測値:
    サンプリングによって得られた不良率

7.2 カルマン・フィルターのモデル

カルマン・フィルターの構成

カルマン・フィルターの構成
  • 二段構成
    • システム方程式に従い、1つ前の状態から今の状態を予測する。
    • 今の観測値から、今の状態を補正する。
「入門ベイズ統計」図7.5より

カルマン・フィルターの構成 - システム方程式

カルマン・フィルターの構成
  • システム方程式
  • $$\theta_t = G_t \theta_{t-1} + w_t$$
  • $G_t$: (科学的に)すでに知られた量 (例: 物理の運動方程式)。
  • $w_t$: 平均$0$、分散$\tau^2_t$の正規分布に従う。
「入門ベイズ統計」図7.5より

カルマン・フィルターの構成 - 観測方程式

カルマン・フィルターの構成
  • 観測方程式
  • $$y_t = F_t \theta_{t-1} + v_t$$
  • $F_t$: (科学的に)すでに知られた量 (例: 物理の運動方程式)。
  • $v_t$: 平均$0$、分散$\sigma^2_t$の正規分布に従う。
「入門ベイズ統計」図7.5より

7.3 カルマン・フィルターの漸化式

導出に入る前に・・・

  • 以下の公式は証明なしで使います (PRML 2.3を見てね)
$\mathbf{x}$についての周辺正規分布と、$\mathbf{x}$が与えられた下での$\mathbf{y}$について条件付き正規分布が次の形式で与えられている。
$$p(\mathbf{x}) = \mathcal{N}(\mathbf{x} | \mu, \Lambda^{-1})$$ $$p(\mathbf{y} | \mathbf{x}) = \mathcal{N}(\mathbf{y} | \mathbf{A} \mathbf{x} + \mathbf{b}, \mathbf{L}^{-1})$$ $\mathbf{y}$についての周辺分布は以下のようになる。 $$p(\mathbf{y}) = \mathcal{N}(\mathbf{y} | \mathbf{A} \mathbf{\mu} + \mathbf{b}, \mathbf{L}^{-1} + \mathbf{A} \mathbf{\Lambda}^{-1} \mathbf{A}')$$

導出に入る前に・・・

  • 1変数の正規分布ですと次のようになります。
$x$についての周辺正規分布と、$x$が与えられた下での$y$について条件付き正規分布が次の形式で与えられている。
$$p(x) = \mathcal{N}(x | \mu, \sigma^2)$$ $$p(y | x) = \mathcal{N}(y | a x + b, \tau^2)$$ $y$についての周辺分布は以下のようになる。 $$p(y) = \mathcal{N}(y | a \mu + b, \tau^2 + a \sigma^2)$$

導出

カルマン・フィルターの構成
  • とりあえず以下の導出をします。
    • システム方程式からの過去の状態から現在の状態への予測
「入門ベイズ統計」図7.5より

導出 - 過去の状態から現在の状態

カルマン・フィルターの構成
  • $(t-1)$時点での状態$\theta_{t-1}$の推定値が$\hat{\theta}_{t-1}$であるとします。また、ベイズ的に$\theta_{t-1}$の真の値はこれを中心とした分散$\delta^2_{t-1}$の正規分布に従うとします。つまり、 $$\mathcal{N}(\theta_{t-1} | \hat{\theta}_{t-1}, \delta^2_{t-1})$$
                                    ... $p(\theta_{t-1})$
  • $\hat{\theta}_{t-1}$にしても$\delta^2_{t-1}$にしても初期値が決まれば、(後々の導出で)連鎖的に決めることができることがわかるので、特に気にせず進めていきます。
「入門ベイズ統計」図7.5より

導出 - 過去の状態から現在の状態

カルマン・フィルターの構成
  • システム方程式の定義に戻ると $\theta_t = G_t \theta_{t-1} + w_t$
  • $w_t$: 平均$0$、分散$\tau^2_t$の正規分布に従うので、別の書き方をすると、 $$\mathcal{N}(\theta_t | G_t \theta_{t-1}, \tau^2_t)$$
「入門ベイズ統計」図7.5より

導出 - 過去の状態から現在の状態

  • $(t-1)$時点での状態$\theta_{t-1}$は、 $$\mathcal{N}(\theta_{t-1} | \hat{\theta}_{t-1}, \delta^2_{t-1})$$
                                    ... $p(\theta_{t-1})$
  • $\theta_{t-1}$が与えられた場合の、$y_t$を観測する前の$\theta_t$は、 $$\mathcal{N}(\theta_t | G_t \theta_{t-1}, \tau^2_t)$$
                                    ... $p(\theta_t | \theta_{t-1})$
  • 以上より、以下の関係を得ます。 $$\mathcal{N}(\theta_t | G_t \hat{\theta}_{t-1}, G^2_t \delta^2_{t-1} + \tau^2_t)$$
  •                                 ... $p(\theta_t)$

導出 - 過去の状態から現在の状態

カルマン・フィルターの構成
  • システム方程式から得られる代表値(平均値)で一点先予測できるのでは?
    • $\tilde{\theta}_t \equiv G_t \hat{\theta}_{t-1}$ のように。
    • 推定はできるが、いまだ$(t-1)$時点であって、本格的な推定には$t$時点の観測値$y_t$を待たねばならない。
「入門ベイズ統計」図7.5より

導出 - 観測値からの現在の状態の補正

カルマン・フィルターの構成
  • $t$時点で観測値$y_t$が得られたとします。
  • この値は一つ前の状態からシステム方程式と観測方程式から得られる代表値(平均値):$$\tilde{y}_t \equiv F_t \tilde{\theta}_t = F_t G_t \tilde{\theta}_{t-1}$$とは異なります(が固定された推定値としては使っている)。
「入門ベイズ統計」図7.5より

導出 - 観測値からの現在の状態の補正

  • $y_t$と$\tilde{y}_t$の差は、$$e_t \equiv y_t - \tilde{y}_t = F_t \theta_t + v_t - F_t G_t \tilde{\theta}_{t-1} = F_t (\theta_t - G_t \tilde{\theta}_{t - 1}) + v_t$$
    • $\tilde{y}_t$を固定値と見なしていることに注意。
  • 上の式は以下のように書くこともできます。$$\mathcal{N}(e_t | F_t (\theta_t - G_t \hat{\theta}_{t-1}), \sigma^2_t)$$
                                    ... $p(e_t | \theta_{t})$
  • $e_t$の値はすでにわかっているので、知りたいのは $p(\theta_{t} | e_t)$ → 正規分布のベイズ更新則
「入門ベイズ統計」図7.5より

導出 - 観測値からの現在の状態の補正

  • $p(\theta_{t} | e_t) \propto p(e_t | \theta_t) p(\theta_t)$
  • → $w(\theta_{t} | e_t) \propto p(e_t | \theta_t) w(\theta_t)$
    • $p(\theta_t)$ のところを、 $y_t$を見る前の$\theta_t$の確率に置き換えました。
    • $w(\theta_{t} | e_t)$の求め方については第1章の(1.8.11)を参照してください。
  • [注意点]
    $p(e_t | \theta_t)= \mathcal{N}(e_t | F_t (\theta_t - G_t \hat{\theta}_{t-1}), \sigma^2_t)$ については、$\theta_t$ に係数 $F_t$ がついていますので、ベイズ更新を適用する場合は、変数変換 $e'_t = \frac{e_t}{F_t} + G_t \hat{\theta}_{t-1}$ を施してから計算する必要があります。
「入門ベイズ統計」図7.5より

導出 - 観測値からの現在の状態の補正の結果

結果は以下のとおり。

$$\hat{\theta}_t = G_t \hat{\theta}_{t-1} + \frac{\frac{F_t}{\sigma^2_t}}{ \frac{1}{G^2_t \delta^2_{t-1} + \tau^2_t} + \frac{F^2_t}{\sigma^2_t}} \cdot e_t$$
$$\delta^2_t = \frac{1}{ \frac{1}{G^2_t \delta^2_{t-1} + \tau^2_t} + \frac{F^2_t}{\sigma^2_t} }$$
  • もう少し簡単に書くこともできます(p.126)が省略します。

まとめ

  • 入門ベイズ統計 第7章「ベイズ更新とカルマン・フィルター」を見ました。
  • ちょっと導出が煩雑でしたね。
  • なお、平均値のリアルタイム推定はオンライン学習(パーセプトロンとか)の更新分の平均化にも使えますので押さえておくとよいかもしれません。