信号処理におけるフィルタリング手法の基礎

フィルタリングとは

フィルタリングとは、観測された時系列データに含まれるノイズ成分を取り除き、本来の信号成分を抽出するための技術です。

状態空間モデル

フィルタリングでは、直接観測できない内部状態 $x_t$ を、観測値 $z_t$ から推定します。このとき、システムの振る舞いを以下の2つのモデルで表現します。

  • プロセスモデル(システムモデル): 状態 $x_t$ が時間と共にどう変化するかを記述します。 $$ x_t = f(x_{t-1}, u_{t-1}) + q_{t-1} \tag{1} $$
  • 観測モデル: 状態 $x_t$ から観測値 $z_t$ がどのように生成されるかを記述します。 $$ z_t = h(x_t) + r_t \tag{2} $$

ここで、$u_t$ は制御入力、$q_t$ と $r_t$ はそれぞれプロセスノイズと観測ノイズであり、一般的に平均0の正規分布(ガウス分布)に従うと仮定されます。 $$ q \sim N(0, Q) $$ $$ r \sim N(0, R) $$ $Q$ と $R$ はノイズの共分散行列です。


カルマンフィルタ (Kalman Filter, KF)

概要

KFは、線形のシステムかつ、ノイズがガウス分布に従うという仮定のもとで、状態の平均と共分散を正確に推定する最適なフィルタです。 「予測」と「更新(フィルタリング)」の2つのステップを繰り返すことで、状態を逐次的に推定します。

アルゴリズム

状態 $x$ の確率分布を、平均 $\mu$ と共分散 $\Sigma$ で表現します。

1. 予測ステップ: 1ステップ前の状態推定値から、現在の状態を予測します。

  • 事前状態推定値: 1ステップ前の状態 $\mu_{t-1}$ から現在の状態 $\hat{\mu}t$ を予測。 $$ \hat{\mu}t = A\mu{t-1} + Bu{t-1} \tag{3} $$
  • 事前誤差共分散行列: 予測の不確かさ $\hat{\Sigma}_t$ を計算。 $$ \hat{\Sigma}t = A\Sigma{t-1}A^T + Q \tag{4} $$

2. 更新ステップ: 予測結果を観測値 $z_t$ で補正し、より確からしい現在の状態を推定します。

  • カルマンゲイン: 予測と観測のどちらをどの程度重視するかを決定する係数。 $$ K_t = \hat{\Sigma}_t H^T (H\hat{\Sigma}_t H^T + R)^{-1} \tag{5} $$
  • 事後状態推定値: 予測値 $\hat{\mu}_t$ を観測値 $z_t$ で補正。 $$ \mu_t = \hat{\mu}_t + K_t(z_t - H\hat{\mu}_t) \tag{6} $$
  • 事後誤差共分散行列: 更新後の不確かさ $\Sigma_t$ を計算。 $$ \Sigma_t = (I - K_tH)\hat{\Sigma}_t \tag{7} $$

拡張カルマンフィルタ (Extended Kalman Filter, EKF)

概要

KFを非線形システムに拡張した手法です。非線形な関数を、現在の状態推定値の周りで**線形近似(テーラー展開の1次項まで利用)**することで、KFの枠組みを適用します。

方法

プロセスモデル $f$ と観測モデル $h$ を、ヤコビ行列(偏微分)を用いて線形化します。 $$ F_t = \frac{\partial f}{\partial x} \bigg|{x=\mu{t-1}} $$ $$ H_t = \frac{\partial h}{\partial x} \bigg|_{x=\hat{\mu}_t} $$ この $F_t$ と $H_t$ を、線形カルマンフィルタの $A$ と $H$ の代わりに用いて計算を行いますが、予測ステップの式は非線形のまま計算します。

  • 課題: 非線形性が強いシステムでは、線形化による近似誤差が大きくなり、推定精度が劣化したり、発散したりすることがあります。

Unscentedカルマンフィルタ (Unscented Kalman Filter, UKF)

概要

EKFと同様に非線形システムを扱いますが、関数を直接線形化するのではなく、Unscented変換という手法で状態の確率分布を扱います。

方法

現在の状態分布を表現する少数の代表点(シグマ点)をサンプリングし、それぞれの点を非線形関数に通します。変換後の点の分布から、重み付き平均と共分散を再計算することで、EKFよりも高精度な推定を実現します。

  • 利点: ヤコビ行列の計算が不要で、EKFよりも非線形性の強いシステムに対して頑健です。

粒子フィルタ (Particle Filter, PF)

概要

非線形・非ガウスの状態空間モデルを対象とした、より汎用的なフィルタリング手法です。モンテカルロ法に基づいています。

方法

状態の確率分布を、パーティクルと呼ばれる多数のサンプル点の集合で近似します。各パーティクルが状態の「仮説」を表しており、それぞれの尤度に基づいて重みが付けられます。

PFは主に「予測」「更新」「リサンプリング」のステップで構成されます。

  1. 予測: 全てのパーティクルをプロセスモデルに従って時間発展させます。
  2. 更新: 観測値が得られると、各パーティクルの尤度(観測値らしさ)を計算し、重みを更新します。
  3. リサンプリング: 重みに応じてパーティクルを再サンプリングします。これにより、尤度の低い(ありえない)パーティクルは消滅し、尤度の高いパーティクルが複製され、推定が効率的に行われます。
  • 利点: ガウス分布以外の複雑な確率分布も表現できるため、非常に汎用性が高いです。
  • 課題: 状態の次元が大きくなると、分布を適切に表現するために必要なパーティクル数が指数関数的に増大する「次元の呪い」という問題があります。