PRMLのカルマン・フィルターの理論を理解する

ランニングできず 英語できず

(1) PRMLのカルマン・フィルターの理論を理解する

   「PRML §13.3 Linear Dynamic System」

 Openposeの多関節の動画は多次元の時系列のため、多次元時系列が解析できる次の開発済みのモデルで性能比較を行うことにしました。

  ・隠れマルコフ

  ・カルマンフィルター

  ・LSTM

  ・SCW(Soft Confidense Weight)

f:id:mabonki0725:20170926195839p:plain

 ここで既存のカルマン・フィルターを古い有本先生のモデルからPRMLのLDSモデルに変更することにしました。ここでPRMLの記述に従ってカルマン・ゲインを使った導出まで行います。

 PRMLの最も重大な公式は次の正規分布の周辺分布と事後分布であることはPRMLで随所に参照される公式なので明らかです。

    p(x)=\mathcal{N}(x|\mu,\Lambda^{-1})   事前分布(2.113)

    p(y|x) = \mathcal{N}(y | Ax + b,L^{-1})  尤度分布(2.114)

               \Downarrow

    p(y) = \int p(y|x) p(x) dx = \mathcal{N}(y |A\mu + b, L^{-1} + A \Lambda^{-1}A^T)  周辺分布(2.115)

       p(x|y) = \mathcal{N}(x | \Sigma (A^TL(y-b)+\Lambda\mu),\Sigma)  事後分布(2.116)

      但し  \Sigma=(A + A^TLA)^{-1}

 

     ここで各変数の変遷過程は下図となります。

 カルマン・フィルターは観測データx_nから観測前のデータz_nを求めるベイズモデルであることが分ります。

f:id:mabonki0725:20170926203958p:plain

  p(z_n) = \mathcal{N}(z_n|\mu_n,V_n)

        p(x) = \int p(x_n | z_n) \left(\int p(z_n|z_{n-1}) p(z_{n-1})dz_{n-1} \right) dz_n

        ここで

   p(x_n|z_n) は観測器による変換

            p(z_n|z_{n-1})は変換器による変遷

   

    これを正規分布に置き換えると

  p(x_n|z_n) = \mathcal{N}(x_n|Cz_n,\Sigma) \cdot \int \mathcal{N}(z_n | Az_{n-1},\Gamma) \mathcal{N}(z_{n-1}|\mu_{n-1},V_{n-1}) dz_{n-1}

     ここで右辺の積分式に(2.115)の周辺分布の公式を使うと

     \int \mathcal{N}(z_n | Az_{n-1},\Gamma) \mathcal{N}(z_{n-1}|\mu_{n-1},V_{n-1}) dz_{n-1} = \mathcal{N}(z_n | A\mu_{n-1},P_{n-1})    A式

       但し  P_{n-1} = AV_{n-1}A^T + \Gamma

 

    これより観測データx_nから実態データz_nを事後分布の公式で計算します。

        p(z_n) = \mathcal{N}(z_n | A\mu_{n-1},P_{n-1})     事前分布    A 式より

  p(x_n|z_n) = \mathcal{N}(x_n|Cz_n,\Sigma)   尤度分布

 上式に(2.117)の事後分布の公式を使うと

        p(z_n|x_n) = \mathcal{N}(x_n|M(C^T\Sigma^{-1}x_n + P_{n-1}^{-1}A\mu_{n-1}),M) ①式

        但し M=(P_{n-1} + C^T\Sigma C)^{-1} ②式

     ここでPRMLの巻末にある重要な逆行列式の公式(C.7)を使います

    \left( A+BD^{-1}C\right)^{-1} = A^{-1} - A ^{-1}B(D+CA^{-1}B)^{-1}CA^{-1}   (C.7)

       M=(P_{n-1} + C^T\Sigma C)^{-1} = P_{n-1} - P_{n-1} C^T \left(\Sigma + CP_{n-1}C^T \right)^{-1}CP_{n-1} 

 

   ところでMは次のカルマンゲインK_nを使うと③式の様になります。

   K_n = P_{n-1}C^T \left( CP_{n-1}C^T + \Sigma \right)^{-1}

        M = P_{n-1} - P_{n-1} C^T \left(\Sigma + CP_{n-1}C^T \right)^{-1}CP_{n-1} 

        M=\left(I - P_{n-1}C^T(\Sigma + CP_{n-1}C^T )^{-1}C \right) P_{n-1}

        M= \left(I - K_nC \right) P_{n-1}     ③式

 

  また②式より  

  MC^T\Sigma^{-1} = (P_{n-1} + C^T\Sigma C)^{-1} \cdot C^T \Sigma^{-1}

        MC^T\Sigma^{-1} = P_{n-1}C^T(CP_{n-1}C^T + \Sigma)^{-1} = K_n ④式

     また事後分布①式の平均は③式と④式を入れると

        M(C^T\Sigma^{-1}x_n + P_{n-1}^{-1}A\mu_{n-1})=MC^T\Sigma^{-1}x_n + (I-K_nC)A\mu_{n-1}

        = K_nx_n + A\mu_{n-1} - K_nCA\mu_{n-1}

       = A\mu_{n-1} + K_n(x_n - CA\mu_{n-1})    ⑤式

 

   最終的に観測値x_nとカルマン・ゲインK_nを使って実態z_nはの平均\mu_nと分散V_nは次式で求められた。

      p(z_n|x_n) = \mathcal{N}(\mu_n,V_n)

     \mu_n = A\mu_{n-1} + K_n(x_n - CA\mu_{n-1}) ⑤式より

    V_n = M = \left(I - K_nC \right) P_{n-1}  ③式より