ノイズ除去に利用される代表的なフィルタ(カルマンフィルタ・拡張カルマンフィルタ・Unscentedカルマンフィルタ・モンテカルロUnscentedカルマンフィルタ・粒子フィルタ)
フィルタ(Filter)
フィルタとは,測定された時系列データから信号成分だけを通し,ノイズ成分を除去する仕組みである.
モデル
フィルタリングでは,時間ステップ$t$,初期値$x_0$,観測値$z_t$,制御入力$u_{t-1}$が与えられたときの,潜在状態$x_t$を推定する.推定値$x$はプロセスモデル$f$によって,観測値$z$は観測モデル$h$によって与えられる.
$$ x_t = f(x_{t-1},u_{t-1},q_{t-1}) \tag{1} $$ $$ z_t=h(x_t,r_t) \tag{2} $$ ここで,$q$は,プロセスノイズ,$r$は観測ノイズである.
$$ q\sim N(0,Q) $$ $$ r\sim N(0,R) $$
カルマンフィルタ(Kalman Filter)
目的
時刻$t$が観測されたとき,その状態を観測データ$z(t)$と時系列の状態空間モデルを用いて推定する.
方法
状態空間モデルの係数は既知であり,時間によらず一定であると仮定する(LTI:Linear Time-Invariant,線形時不変).
Step1において,対象とする時系列をガウスノイズにより駆動された線形システムの出力とみなし,その線形システムの状態空間モデルを構築する.
Step2においてStep1で得られた状態空間モデルの状態$x(t)$を時系列データ$y(t)$から推定する. $x$は,xの平均$\mu$と共分散$\Sigma$によって表される.また,プロセスノイズを$Q$,観測ノイズを$R$とする.
$$ x \sim (\mu,\Sigma) $$
Step1 予測ステップ
事前状態推定値
$$ \hat{\mu}=A\mu_{t-1}+B\mu_t \tag{3} $$
事前誤差共分散行列
$$ \hat{\Sigma}=A\Sigma_{t-1}A^T+Q_{t-1} \tag{4} $$
Step2 状態推定
カルマンゲイン
$$ K_t=\hat{\Sigma_t}H^T(\hat{\Sigma_tH^T+R_t})^{-1} \tag{5} $$ 状態推定値
$$ \mu_t=\hat{\mu_t}+K_t(z_t-H\hat{\mu_t}) \tag{6} $$ 事後誤差共分散行列
$$ \Sigma_t = (I_n-K_tH)\hat{\Sigma_t} \tag{7} $$
拡張カルマンフィルタ(Extended Kalman Filter)
目的
カルマンフィルターを非線形システムに拡張する.
方法
事後確率密度関数をガウス分布と仮定して,非線形関数を最新の推定値の近傍で線形化する.まず,式1,2の非線形システム$f$および$h$を推定値近傍でテーラー展開し,高次項を無視して局所線形化システムを得る.
テーラー展開(推定値を$\hat{x}_k$とする)
$$ f(x_t)= f(\hat{x}_k)+[\frac{\delta f(\hat{x}_k)}{\delta \hat{x}_k}] (x_t-\hat{x}_k)+\dots \tag{8} $$
$$ h(x_t)= h(\hat{x}_k)+[\frac{\delta h(\hat{x}_k)}{\delta \hat{x}_k}] (x_t-\hat{x}_k)+\dots \tag{9} $$
以下,カルマンフィルタと同様
Unscented カルマンフィルタ(Unscented Kalman Filter, UKF)
目的
前述のEKFは,非線形性が弱いシステムでは優れた性能を示すが,非線形性が強いシステムの推定においては平均に関する不確実性
を考慮に入れていないため,フィルタ性能が十分ではないことが知られている.UKFではこの問題に対応する.
方法
UKFは,シグマ点とよばれる代表点を平均値の回りで用いて,推定値の共分散を計算する.これにより真の平均と共分散により近い値を獲得する.
シグマ点
$$ \chi^0=\mu \tag{13} $$
$$ \chi^i=\mu \pm(\sqrt{(n+\lambda)\Sigma})_i \tag{14} $$
重みの計算
$$ w^0=\frac{\lambda}{\lambda+n} \tag{15} $$
$$ w^i=\frac{0.5}{\lambda+n} \tag{16} $$
重み付き平均で、観測値とその共分散を推定
$$ \hat{X} = f(X_{t-1}, u_t) \tag{17} $$
$$ \hat{\mu_t}=\sum_iw^i\hat{\chi}_t^i \tag{18} $$
$$ \hat{\Sigma}_t=\sum_iw^i(\hat{\chi}-\hat{\mu_t}) (\hat{\chi}-\hat{\mu_t}) ^T+Q_t \tag{19} $$
モンテカルロ Unscented カルマンフィルタ(Monte Carlo Unscented Kalman Filter, MCUKF)
目的
UKFは,できるだけ少ないシグマ点で状態を表現することが望ましい. しかし,状態が高次元である場合,正しいスケーリングパラメータ$\lambda$を見つけることは困難である.MCUKFではその問題に対応する.
方法
平均値と共分散を計算するためにUnscented transformを用いるのではなく,モンテカルロ法を用いる.実際には,式13-16のシグマ点とその重みを,一様に重み付けされたサンプルで置き換えることとなる.UKFアルゴリズムの残りの部分は変わらないが,分布を正確に表現するためには,より多くのサンプルが必要となる.
粒子フィルタ(Particle Filter, PF)
目的
非線形非ガウス状態空間モデルにおいては,共役事前分布の性質は一般には成り立たず,事後確率分泌はもはや,パラメトリックな確率分布では表せない場合もあり得る.したがって,確率分布のパラメータを用いた厳密なフィルタの導出も一般には不可能である. PFでは,この問題に対応する.
方法
PFでは,状態の確率分布に従う多数の粒子により,非ガウス分布である状態の確率分布を近似表現する.粒子の初期値$\chi$は重み$\pi$で初期化される.各ステップで.1ステップ前の粒子にプロセスモデルを適用し,プロセスノイズを加えることで新しい粒子を生成する. 観測値$z_t$が与えられたとき,各粒子の重み$\chi^i_t$は尤度$p(z_t|\chi_t^i)$によってアップデートする.
$$ \chi:\pi_t^i=\pi_{t-1}^ip(z_t|\chi_t^i) \tag{20} $$