PRMLのカルマンフィルターの変換行列の学習を理解する

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

(1) PRMLのカルマンフィルターの変換行列の学習を理解する

 「PRML 13§  13.3.2 Learing in LDS」

      カルマンフィルターの状態方程式はシステムモデルと観測モデルに分離して表現されます。

f:id:mabonki0725:20170926203958p:plain

       システム・モデル

    p(z_n|z_{n-1},A,\Gamma) = \mathcal{N}(A\mu_{n-1},P_{n-1})

                p(z_{n-1}) = \mathcal{N}(\mu_{n-1},V_{n-1})

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

    観測モデル

             p(x_n|z_n,C,\Sigma) = \mathcal{N}(Cz_n,\Sigma)

      先日記述した様にカルマン・ゲインを用いて解くと

   観測データx_nから観測前のデータz_nを得ることができます。 

mabonki0725.hatenablog.com

     次式がこの結論でした。

   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}  

   但しカルマン・ゲインは

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

       しかし解法式を見るとA,\Gamma,C,\Sigmaが所与として必要です。

 

  下図は上式でA,\Gamma,C,\Sigmaを適当に設定しカルマン・フィルターで予測した時系列です。

  推定された観測前のデータz_nで観測データの予測x_n,\dots,x_{n+t}をしているので予測精度が高いことが分ります。  

   f:id:mabonki0725:20170929231121p:plain

   この場合、対象時系列は1回前のトレンドを持つと考え、

   ARモデルでb_1 \sim b_4を計測し下式の様に変換行列Aを設定しています。

  ノイズ項である\Gamma\Sigmaは適当に設定しました。    

f:id:mabonki0725:20170929230347p:plain

    この様な変換行列Aをデータから推定できれば大変助かります。 

    PRMLのカルマン・フィルターの学習ではこれら未決定項A \ C \ \Gamma \ \Sigmaをデータから推定しています。

 

(1.1) 手法

     PRMLではEMモデルでこの未決定項を推定しています。

     系列データの確率は次式で与えられます。

   p(x_1,\dots,x_n,z_1,\dots,z_n) = p(z_1) \cdot \Pi_{k=2}^n p(z_k|z_{k-1}) \cdot \Pi_{k=1}^n p(x_k|z_k)

 この対数を取ると

    \log(X,Z|\theta) = \log p(z_1|\mu_0,P_0) + \sum_{k=2}^n \log p(z_k|z_{k-1},A,\Gamma)

                                     + \sum_{k=1}^n \log p(x_k | z_k,C,\Sigma)  ①の式

  1) Eステップでは

     Q(\theta,\theta^{old}) = \mathbb{E}_{z|old} \left(\log(X,Z|\theta) \right)   ②の式

     2)Mステップでは

    A,\Gamma,C,\Sigma\thetaとして微分して最大化を行います。

   ここでは最も重要な変換行列Aを算出してみます。

   Aについての微分なので①の式でA\Gamma以外は定数となるので

  期待値は

             Q(\theta,\theta^{old}) = -\frac{n}{2} - \mathbb{E}_{z|\theta^{old}} \left(\frac{1}{2} \sum _{k=1} ^ n (x_k - Az_k)^T \Gamma^{-1}(x_k - Az_k) \right) + const   ③の式

   これを微分して方程式を解くと

            \frac{\partial Q}{\partial A} = {\Gamma^{old}}^{-1} A \mathbb{E}(z_{k-1}z_{k-1}^T) +{\Gamma^{old}}^{-1} \mathbb{E}(z_k z_{k-1}^T)=0

   A^{new} = \left( \sum_{k=1}^n x_n \mathbb{E}(z_k^T) \right) \cdot \left( \sum_{k=1}^n x_n \mathbb{E}(z_kz_k^T) \right)^{-1}

 

         \Gamma^{new}も同様に微分して算出できます。

    \Gamma^{new} = \frac{1}{n-1} \sum_{k=1}^n (\mathbb{E}(z_k z_k^T) - A^{new}\mathbb{E}(z_{k-1}z_k^T)

                           - \mathbb{E} (z_k z_{k-1}) {A^{new}}^T + A^{new}\mathbb{E}(z_{k-1}z_{k-1}^T) {A^{new}}^T )

         この結果をEステップにいれてA\Gammaが収束するまで繰返します。