第10回 モンテカルロ法とランダムウォーク
Monte Carlo 法の基礎
2
モンテカルロ法
• 多すぎて計算することができないアンサンブルから適切な方法によってサンプルを抽出し,抽出されたサンプルの集合から対象のマクロな性質を明らかにしようとする手法.
• サンプルの抽出方法によって幾つかの方法に分類される.
3
サンプルの抽出方法
• ランダムサンプリング – 単純にランダムにサンプリング
• マルコフ連鎖モンテカルロ(Markov Chain Monte Carlo) – 直前のサンプルを部分的に更新したものを新しいサンプルとする
4
モンテカルロ法の手順
• 適切なサンプルの抽出 • サンプルの操作(平均化,分散の導出, etc.)
5
単純な例
• 面積積分の計算
• 以下の式のような積分を計算することを考える.
• 明らかに値はπ/4 である.
• 従ってこの積分値を4倍すると πになる.
6
θπ
ddrdxx ∫ ∫∫ ⎟⎠⎞⎜
⎝⎛=−4
0
1
0
1
0
21
7
計算
• この積分(の4倍)を計算するのに以下の方法を用いる.
• 和 を導入する. • 0 以上 1 未満の乱数 x と y を 発生させる. • のとき, • すなわち, の時は とし, を求める.
θπ
ddrdxx ∫ ∫∫ ⎟⎠⎞⎜
⎝⎛=−4
0
1
0
1
0
21
O 1
1
1
nS 00 =S
1+= nn SSnSn /4
21 xy −≤122 ≤+ yx
計算例
• 10000 点を発生させた場合の計算結果を 50 点ごとのアニメーションで表示.
• 徐々に 3.141 に近づいていく(はず).
8
ランダムウォーク
9
ランダムウォーク
• 格子点上に各時間ステップに1格子間隔だけ動く粒子がある(これをランダムウォーカーと呼ぶ).
• すべての方向について,ランダムウォーカーがその方向へ行く確率が与えられている.
• n 時間ステップ経過したときに,与えられた位置にランダムウォーカーいる確率はそれぞれいくらになるか.
10
ランダムウォークの例
• 1D(横軸は時間)
11
0 20 40 60 80 100
- 8
- 6
- 4
- 2
0
2
ランダムウォークの例(複数)
• 1D(横軸は時間)
12 0 200 400 600 800 1000- 100
- 50
0
50
100
ランダムウォークの例
• 2D
13
- 20 - 10 0 10 20- 20
- 10
0
10
20
1次元ランダムウォークの確率分布
• 水平線上に単位時間あたり1歩動くランダムウォーカーについて考える.右に行く確率を 左に行く確率を とすると, 歩動いたあとで,スタート地点から右に だけ離れた場所にいる確率 は,
14
1次元ランダムウォークの平均と分散
• 一歩移動するときの平均(期待値)と分散.
15
€
σ 2 = (+1)2 × p + (−1)2 × (1− p){ }− (2p −1)2
=1− (2p −1)2
1次元ランダムウォークの平均と分散
• n 歩移動するときの平均(期待値)と分散.
16
1次元ランダムウォークの平均と分散
• 一歩移動するときの平均(期待値)と分散.
17
€
σ 2 = (+1)2 × p + (−1)2 × (1− p){ }− (2p −1)2
=1− (2p −1)2
1次元ランダムウォークの平均と分散
• n 歩移動するときの平均(期待値)と分散.
18
分布の例(p が一定で歩数が変わる p=0.5)
• 右に行く確率と左に行く確率が同じなので y 軸について対称な分布になっている.
19
- 40 - 20 0 20 40
0.0
0.1
0.2
0.3
分布の例(p が一定で歩数が変わる p=0.6)
• 右に行く確率の方が高いので,歩数が大きくなると分布の中心が右にシフトしている.
• 分散も歩数が大きくなるほど大きくなっている.
20 - 20 - 10 0 10 20 30 40 50
0.0
0.1
0.2
0.3
分布の例(同じ歩数で異なる p)
• p を変えると分布がことなる.ピークの高さと分散の大きさも変化していることに注意.
21
- 40 - 20 0 20 40
0.00
0.05
0.10
0.15