[分かったこと]
■アルゴリズムの流れ
1. 不定分布が分かっているものから、マルコフ性を仮定して遷移確率を推定する。
2. 適当な初期条件を選んで、1.の推移確率を用いて推移させる。
3. 十分な回数ループしたら終了。そうでなければ、2.へ戻る。
1. では、ある特定の不定分布におちつく遷移確率行列は複数あることに注意。推移確率の選定には「詳細釣り合い」の条件(状態遷移図を書いたときに、確率のフローのようなものが釣り合っていると考える)が一般的に使われる。詳細釣り合いだけでは、自由度が残り値がfixしないため以下いずれかの方法で値を決める。
- メトロポリス法
- ギブスサンプラー
- メトロポリスヘイスティング(M-Hアルゴリズム)
2. では、いろいろな初期解に対するある時刻における各事象の発生確率(パターン数を無限にする)と、ある初期解について無限回推移させた場合の各事象の発生確率が等しくなる(エルゴード性)という特性が活かされている。
■用途
- 任意の分布に従うデータをサンプルできる
- モンテカルロ積分
1. は、最初よく分からなかったが、良く考えると任意の確率分布にしたがう乱数をつくるのは結構むずかしい([参考文献3] 参照)。普段よく利用するのは一様分布にしたがう乱数だが、正規分布N(0, 1)にしたがう乱数とか、もっとわけの分からない適当なp(x)にしたがう乱数発生器を作れて言われると難しい。MCMCを用いると、簡単に任意の乱数発生器を作成できる。
2.は、1.の応用のように思える。例えば、事象xが起こる確率をp(x)としてf(x)の期待値を求めよ。という問題を考える。∫ f(x) p(x) d(x)を計算することになるが、xの次元が大きいと計算が困難なためMCMCを利用したモンテカルロ積分がしばしば利用される。
[考えたこと]
MCMCはマルコフ性のある事象に対するシミュレーション手法だと勘違いしていたが、どちらかというと任意の確率分布にしたがうサンプリングデータを生成できるということに利用価値がありそうだ。
MCMCでマルコフ性のある事象をシミュレーションする場合は、確率遷移行列の選び方がとても重要だと思う。パラメータの取り方に自由度があるメトロポリスヘイスティングが一番使えそうだが、提案密度の選び方にはどうしても主観が入ってしまいそう。MCMCはベイズ識別にも応用されているらしいので、そのあたりを詳しく調べる必要がありそうだ。(というかそこがそもそも知りたかったところなので。)
[参考文献]
0 件のコメント:
コメントを投稿