【要約】マルコフ連鎖モンテカルロ法(MCMC)のメトロポリス法 ~ガウス分布を近似~ [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
統計モデリングを行うエンジニアが、解析が困難な高次元の確率分布からサンプルを得る必要がある場面がある。複雑な分布の形状が未知の場合、直接的なサンプリングは困難である。具体的には以下の課題が存在する。
- ・分布の解析的な積分や計算が困難である。
- ・高次元空間における効率的な探索手法が求められる。
// Approach
筆者は、現在の位置からランダムに移動し、確率的にその移動を採択するメトロポリス法を採用した。以下のステップでサンプリングを実行する。
- ・現在の位置 $x$ から一様乱数を用いて候補点 $x'$ を生成する。
- ・現在の密度と候補点の密度の比率を計算する。
- ・比率が1以上なら受理、1未満なら確率的に受理を決定する。
- ・受理された場合は移動し、棄却された場合は元の位置に留まる。
// Result
Pythonによる実装により、標準正規分布の近似に成功した。具体的な実行結果は以下の通りである。
- ・NITER=100000, STEP_SIZE=0.5の条件下で、accept_rate=0.90126を記録した。
- ・生成されたヒストグラムが、理論的なガウス分布の曲線と一致することを確認した。
Senior Engineer Insight
> 本記事はアルゴリズムの基礎理解には適している。しかし、実戦での大規模データ処理には不向きである。評価は以下の通りである。
- ・ステップサイズの設定が採択率に直結するため、チューニングが重要である。
- ・単純なメトロポリス法は、高次元では収束が遅い傾向にある。
- ・実務では、勾配情報を利用するHMC等の検討が必要である。