パーティクルフィルター

パーティクルフィルターとは

確率仮定に基づいてランダムサンプリングを実施することで推定結果を統計的に扱う手法である。カルマンフィルターなどのように確率分布がガウシアン分布しているという制約がなく、非線形な伝搬・観測モデルにも対応できるメリットがあるが、十分な数のサンプリングを実施しないと精度が出ない。

アルゴリズム

カルマンフィルターでは前の周期の推定結果として \vec{x}_{t}^{est} V(\vec{x}_{t-1}^{est})が入力されていたが、パーティクルフィルターではここがパーティクルになる。すなわちパーティクルのインデックスを mとすると \vec{x}_{t-1}^{m}が入力となる。測定結果 \vec{u}_{t} \vec{z}_{t}が入力される点は同じである。出力は、カルマンフィルターでは \vec{x}_{t}^{est} V(\vec{x}_{t}^{est})であったが、パーティクルフィルターの場合はパーティクル \vec{x}_{t}^{m}である。

  1. 予測ステップ
     mについて P( \vec{x} | \vec{\overline{x}}_{t-1}^{m}, \vec{u}_{t})に応じて予測後パーティクル \vec{\overline{x}}_{t}^{m}をランダムに選ぶ。
  2. 重みの計算
     mについて \vec{\overline{x}}_{t}^{m}の重み(ありえる度合い)を w^{m} \equiv P(\vec{z}_{t} | \vec{\overline{x}}_{t}^{m})として計算する。
  3. 確率分布の作成
    2で作成した (\vec{\overline{x}}_{t}^{m}, w^{m}) (m=1, 2, ... M)を元に確率分布を作成する。
  4. 新たなパーティクルの抽出(リサンプル)
    3で作成した確率分布からM個のパーティクル \vec{x}_{t}^{m}を抽出する。

特記事項

  • 十分な数のパーティクルがいないと分布を正確に表現できない。
  • リサンプルのステップで、パーティクルが選ばれなくなるために状態空間が狭くなることはあるが、逆に広くなることはありえない。したがって一般にリサンプルを行うことで状態が狭くなる。この影響を低減するため、状態が変わらない時はリサンプルを行わない、等間隔サンプル(積算確率が 1/M, 2/M, \cdots M/Mになるパーティクルを選ぶ)を実施するなどの工夫が必要になることがある。
  • 誘拐自己位置推定などに対応するために、( w^{m}の平均値が小さくなってきたときに)ランダムなパーティクルを加えるなどの対応方法がある。