(自分用メモ) サンプリングのモチベーション
メトロポリス・ヘイスティングス法のようなサンプリングでやりたいことの自分なりの理解。正しさは保証しません。
問題設定
- データ・確率モデルは固定
- データxが与えられたとき、あるパラメータθの確率(密度) P(θ|x) の値を求めることはできる
- θの定義域のありとあらゆる範囲でP(θ|x)を求めるのは計算コスト的に無理
- θが実数なら無限の計算が必要
- 解析的に積分をするのはたぶん無理
やりたいこと
例
θを3次元の多項分布(θ1,θ2,θ3) とする。
0≦θ1≦1
0≦θ2≦1
0≦θ3≦1
θ1+θ2+θ3=1
このとき、 0.1≦θ1≦0.3, 0.3≦θ2≦0.5 となる確率を求めたいとする(θ3は自動で決まる)。
サンプリングを行い、十分に多くのサンプル点をとったとすると、θがその範囲に入る確率は
(その範囲に入ったサンプル点の数) / (全部のサンプル点の数)
で近似できる。
方法
- 適当なパラメータの初期値θcurrentを決める
- A. θcurrentからランダムに少し動かしたパラメータθnewをとる
- B. P(θcurrent|x)とP(θnew|x)の値を比べて、θcurrentを更新するかどうか決める。更新しない場合Aに戻る。
- P(θnew|x)の方が大きければθcurrentを更新
- P(θnew|x)の方が小さければ、適当な確率でθcurrentを更新。
- C. θcurrentを更新: θcurrent←θnew
- D. θcurrentをサンプル点として追加
- E. Aに戻る
- A~Eを繰り返すことで、θの本当の確率分布に近いサンプル点リストがいい感じに得られる