情報フィルタ

情報フィルタとは

カルマンフィルタでは状態ベクトルの期待値と分散共分散行列を推定しているが、情報フィルタでは分散共分散行列の逆数を推定している(期待値の部分も少し違った形のものを推定している)。推定情報量としては本質的にはカルマンフィルタと同じであるが、計算量や誤差の表現などで一部対比的に扱われる部分があるので、互いに「双対」だと呼ばれることもある。

カルマンフィルタ 振り返り

線形カルマンフィルタで述べたが、カルマンフィルタの伝搬、観測ステップを再度列挙する。

伝搬ステップ

\begin{eqnarray}
\vec{x}_{t}^{odom} &=& F_{t}\vec{x}_{t-1}^{est}+B_{t}\vec{v}_{t} \\
V(\vec{x}_{t}^{odom}) &=& F_{t}V(\vec{x}_{t-1}^{est}) F_{t}^\mathsf{T} + V(\vec{w}) 
\end{eqnarray}

わかりやすいように表記を改めると

\begin{eqnarray}
\vec{\overline{x}}_{t} &=& A_{t} \vec{x}_{t-1} + B_{t}\vec{v}_{t} \\
\overline{\Sigma}_{t} &=& A_{t} \Sigma_{t-1} A_{t}^\mathsf{T} + R_{t}
\end{eqnarray}

観測ステップ

\begin{eqnarray}
\vec{x}_{t}^{est} &=& \vec{x}_{t}^{odom} + V(\vec{x}_{t}^{odom}) H_{t}^\mathsf{T} \left[ H_{t} V(\vec{x}_{t}^{odom})H_{t}^\mathsf{T} +V(\vec{v}) \right]^{-1} \\
V(\vec{x}_{t}^{est}) &=& \left[ H_{t}^\mathsf{T} V(\vec{v})^{-1}H_{t} + V(\vec{x}_{t}^{odom}) \right]^{-1}
\end{eqnarray}

わかりやすいように表記を改めると

\begin{eqnarray}
\vec{x}_{t} &=& \vec{\overline{x}}_{t} + \overline{\Sigma}_{t}H_{t} \left[ H_{t}\overline{\Sigma}_{t}H_{t}^\mathsf{T} +Q_{t} \right]^{-1} \\
\Sigma_{t} &=& \left[ H_{t}^\mathsf{T}Q_{t}^{-1}H_{t} + \overline{\Sigma}_{t}^{-1} \right]^{-1}
\end{eqnarray}

情報フィルタアルゴリズム

カルマンフィルタでは \Sigma_{t} \vec{\mu}_{t}を推定していたが、情報フィルタでは

\begin{eqnarray}
\Omega_{t} &\equiv& \Sigma_{t}^{-1} \\
\xi_{t} &\equiv& \Sigma_{t}^{-1}\vec{\mu}_{t}
\end{eqnarray}

の2つを推定する。伝搬ステップでは

\begin{eqnarray}
\overline{\Omega}_{t} &=& \overline{\Sigma_{t}}^{-1} \\
&=& \left[ A_{t} \Sigma_{t-1}A_{t}^\mathsf{T} \right]^{-1} \\
&=& \left[ A_{t} \Omega_{t-1}^{-1} A_{t}^\mathsf{T} \right]^{-1} \\
\overline{\xi}_{t} &=& \overline{\Sigma}_{t}^{-1} \overline{\mu}_{t} \\
&=& \left[ A_{t} \Omega_{t-1}^{-1} A_{t}^\mathsf{T} \right]^{-1} \left[ A_{t} \vec{x}_{t-1} + B_{t} v_{t} \right] \\
&=& \left[ A_{t} \Omega_{t-1}^{-1} A_{t}^\mathsf{T} \right]^{-1} \left[ A_{t} \Omega_{t}^{-1}\xi_{t-1} + B_{t} v_{t} \right]
\end{eqnarray}

となり、観測ステップでは、線形カルマンフィルタの「最適なカルマンゲインの導出(Likelihoodを使った求め方)」と同様にLikelihoodを考える。Likelihoodは情報フィルタのパラメータを使うと

\begin{eqnarray}
L(t) &=& -\frac{1}{2}(\vec{x}_{t} - \vec{\mu}_{t})^\mathsf{T} \Sigma_{t}^{-1} (\vec{x}_{t} - \vec{\mu}_{t}) \\
&=&  -\frac{1}{2}(\vec{x}_{t} - \Omega_{t}^{-1} \vec{\xi}_{t})^\mathsf{T} \Omega_{t} (\vec{x}_{t} - \Omega_{t}^{-1}\vec{\xi}_{t}) \\
&=& -\frac{1}{2}\vec{x}_{t}^\mathsf{T} \Omega_{t} \vec{x}_{t} + \vec{x}_{t}^\mathsf{T} \vec{\xi}_{t} + const.
\end{eqnarray}

と表される。観測更新後のLikelihoodは

\begin{eqnarray}
L(t) &=& -\frac{1}{2}(\vec{z}_{t} - C_{t}\vec{x}_{t})^\mathsf{T} Q_{t}^{-1} (\vec{z}_{t} - C_{t}\vec{x}_{t}) - \frac{1}{2} (\vec{x}_{t}-\vec{\overline{x}}_{t})^\mathsf{T} \overline{\Sigma}_{t}^{-1} (\vec{x}_{t}-\vec{\overline{x}}_{t}) \\
&=& -\frac{1}{2} \vec{x}_{t}^\mathsf{T} \left[ C_{t}^\mathsf{T} Q_{t}^{-1} C_{t} + \overline{\Sigma}_{t}^{-1} \right] \vec{x}_{t} + \vec{x}_{t}^\mathsf{T} \left[ C_{t}^\mathsf{T} Q_{t}^{-1}\vec{z}_{t} + \overline{\Sigma}_{t}^{-1} \vec{\overline{x}}_{t} \right] \\
&=& -\frac{1}{2} \vec{x}_{t}^\mathsf{T} \left[ C_{t}^\mathsf{T} Q_{t}^{-1} C_{t} + \overline{\Omega}_{t} \right] \vec{x}_{t} + \vec{x}_{t}^\mathsf{T} \left[ C_{t}^\mathsf{T} Q_{t}^{-1}\vec{z}_{t} + \vec{\overline{\xi}}_{t} \right] + const. \\
\end{eqnarray}

したがって、最終的な推定値は

\begin{eqnarray}
\Omega_{t} &=& C_{t}^\mathsf{T} Q_{t}^{-1} C_{t} + \overline{\Omega}_{t} \\
\vec{\xi}_{t} &=& C_{t}^\mathsf{T} Q_{t}^{-1}\vec{z}_{t} + \vec{\overline{\xi}}
\end{eqnarray}

拡張情報フィルタ

上記議論を拡張カルマンフィルタに適用したものである。

カルマンフィルタとの比較

  • 情報フィルタでは、 \overline{\Omega}_{t} の更新のために逆行列を2回計算する必要がある(カルマンフィルタでは伝搬ステップで逆行列を計算する必要がなかった。
  • 情報フィルタでは、分散共分散行列の観測更新の時に逆行列を計算する必要がない(カルマンフィルタでは2回逆行列を計算する必要があった)。また、更新は行列を加算しているだけなので、行列の一部を部分的に更新することが可能。これはGraphSLAMにおいて有用。