モンテカルロ法
Monte Carlo Method ・ もんてかるろほう
乱数で大量に試して答えを近似する手法。解けない計算を実験に変える
✦ 30秒で試す — 航海誤差を10分の1にしたい。点を何倍打てばいい?点を10倍に増やすと、誤差の幅は?予想してみる概要
モンテカルロ法は、乱数を使って大量の「試行」を計算機上で繰り返し、その結果の平均や割合から答えを近似する手法の総称です。数式を解析的に解く代わりに、偶然にまかせた実験を何万回も行って答えを「測る」——計算を実験に置き換える発想の転換がこの手法の核心です。名前は、考案者の一人ウラムの叔父が通ったモナコのカジノ街モンテカルロに由来します。
威力を発揮するのは、厳密に解く方法が存在しない、あるいは計算量的に手に負えない問題です。複雑な形の領域の面積や高次元の積分、多数の偶然が絡むシステムの挙動、将来のシナリオが無数に分岐する金融商品の価格——こうした「式では解けないが、1回の試行をシミュレートすることはできる」問題なら、試行を積み重ねるだけで答えに迫れます。
答えを保証しているのは大数の法則です。試行結果の平均は、試行回数を増やすほど求めたい真の値(期待値)に近づきます。さらに中心極限定理が、その近づき方の速さと誤差の大きさまで教えてくれます。モンテカルロ法とは、確率論の極限定理を「収束を待つ側」から「収束を利用する側」へひっくり返した、確率論の実用化そのものです。
なぜ生まれたか
直接のきっかけは、1940年代の核兵器開発でした。原子炉や爆弾の設計には「中性子が物質の中をどう飛び、どれだけ連鎖反応を起こすか」の計算が必要ですが、中性子は衝突のたびに確率的に散乱・吸収・分裂し、その積み重ねを記述する方程式は解析的に解けませんでした。ロスアラモス研究所の数学者スタニスワフ・ウラムは1946年、病床でソリティアの成功確率を考えていたときに「式で解けないなら、何百回も配って数えればよい」と着想します。これをフォン・ノイマンが、完成したばかりの電子計算機 ENIAC での中性子計算に結びつけました。個々の中性子の運命を乱数でサイコロを振るように決め、何千個も追跡して集計する——メトロポリスが名付けた「モンテカルロ」という暗号名とともに、1949年にメトロポリスとウラムの論文で手法として公表されました。
同じ発想の萌芽はそれ以前にもあります。18世紀のビュフォンの針(床に針を落として π を測る)や、1930年代にフェルミが手計算で中性子の拡散をサンプリングしていた例です。それが「方法」として確立したのは、乱数を使った反復を苦にしない計算機と、擬似乱数という乱数の作り方が同時に揃ったからでした。以後、計算機の性能向上とともに適用範囲は物理から金融、統計、機械学習へと広がり、2000年に選ばれた「20世紀のアルゴリズム トップ10」にはモンテカルロ法の中核であるメトロポリス法が入っています。
詳細
定番の例 — 乱数で円周率を測る
仕組みを体感できる定番の例が円周率の推定です。1辺1の正方形の中に、角を中心とする半径1の4分の1円を描き、正方形の中に一様分布の乱数で点を打ちまくります。各点が円の内側に入るかは x² + y² ≤ 1 の判定だけで決まり、内側に入る確率は面積比 π/4 に等しい。したがって「内側に入った点の割合 × 4」が円周率の近似になります。
この例には手法の骨格がすべて詰まっています。求めたい量(面積)を「ランダムな試行の期待値」として言い換え、乱数で試行を大量に生成し、平均(割合)で期待値を推定する。この3段の枠組みは、対象が中性子でも株価でも同じです。
精度の理屈 — 収束は遅いが次元に負けない
推定の誤差はどれくらいか。1回の試行結果のばらつき(標準偏差)を σ とすると、n 回の平均の標準誤差は σ/√n です。円周率の例なら1回の試行は「内側なら4、外側なら0」なので σ ≈ 1.64、1万回打っても標準誤差は約0.016、±2標準誤差で ±0.033 の幅が残ります。精度を1桁上げる(誤差を10分の1にする)には試行を100倍にする必要があり、収束としてはかなり遅い部類です。下の部品で「回数を100倍に」を押すと、漏斗の幅が10分の1にしか細らないのが見えます。
「再生」を押すと、正方形に一様乱数で点が降ります。円の内側(金)に入った割合 × 4 が π の推定値です。右のグラフで、推定値がどう落ち着いていくかを見てください。
左: 1辺1の正方形と、半径1の4分の1円板(面積 π/4)。右: 推定値の推移と ±2SE の漏斗(横軸は対数)
それでもモンテカルロ法が使われ続ける最大の理由は、この 1/√n という縮み方が問題の次元に依存しないことです。積分を格子状に区切って数値計算する方法は、1軸あたり10点で区切っても d 次元では 10ᵈ 点が必要になり、次元が増えると計算量が爆発します(次元の呪い)。モンテカルロ法の誤差は、変数が2個でも200個でも「σ/√n」のまま。変数が数十・数百ある高次元の積分や期待値計算では、事実上唯一の選択肢になります。
もう1つの実務的な利点は、誤差を推定値自身から見積もれることです。試行結果の標準偏差から標準誤差を計算すれば、「推定値 ± これくらい」という信頼区間を答えに添えられます。答えだけでなく答えの信頼度まで同じ実験から出てくるのは、統計的手法ならではの強みです。
応用の広がり
応用は分野を横断しています。金融では、将来の資産価格のシナリオを何万通りも生成してデリバティブの価格やリスク指標(VaR)を見積もります。統計学では、複雑な事後分布から標本を得るマルコフ連鎖モンテカルロ法(MCMC)が、ベイズの定理に基づく推論を実用の道具にしました。検定や推定の場面でも、帰無仮説のもとでデータを並べ替えて検定統計量の分布を作る並べ替え検定(ノンパラメトリック検定の一種)や、標本から復元抽出を繰り返して推定量のばらつきを測るブートストラップ法が、どちらもモンテカルロ法として動いています。検出力の計算が式で難しい複雑な実験計画でも、「仮の効果を入れたデータを何千回も生成し、何割で有意になるか数える」シミュレーションが定番です。ほかにも囲碁AIのモンテカルロ木探索、映像のレンダリング(光の経路の確率的追跡)、工期・コストのリスク分析など、「不確実さの絡む計算」のあるところには大抵この手法がいます。
収束を速くする工夫 — 分散低減
誤差が σ/√n で決まるなら、n を増やす以外に σ を小さくする道もあります。これが分散低減法です。答えに大きく効く領域を重点的にサンプリングして重みで補正する重点サンプリング、答えの分かっている似た量との差だけを推定する制御変量法、u と 1−u のように逆向きの乱数を対にして揺れを打ち消す対称変量法などがあり、同じ計算時間で誤差が数分の1から数十分の1になることも珍しくありません。また、乱数の代わりに「隙間なく均等に散らばるよう設計した点列」を使う準モンテカルロ法は、次元がそれほど高くない問題で 1/√n より速い収束を得られます。
実務の勘所と落とし穴
第一の落とし穴は誤差を報告しないことです。シミュレーション結果の「0.0312」という数字は、モンテカルロ誤差が ±0.004 なのか ±0.0004 なのかで意味がまるで違います。推定値には必ず標準誤差か試行回数を添え、結論が誤差の範囲で揺らがないか確かめます。第二にまれな事象の確率。確率 p が 10⁻⁵ の事象を1万回の試行で推定しようとしても、ほとんどの場合1回も起きず「0」と出ます。相対誤差はおよそ 1/√(np) なので、np が数百になるだけの試行数か、重点サンプリングが要ります。第三に乱数の品質と再現性。質の悪い擬似乱数の規則性は推定を静かに歪めます。実績ある生成器を使い、シードを記録し、並列計算では独立なストリームを使うのが基本です。MCMC のように試行どうしが独立でない場合は、同じ n でも実質の情報量(有効サンプルサイズ)がずっと少ないことにも注意が要ります。
そして最大の落とし穴はモデル化の誤りです。モンテカルロ法は「仮定した確率分布のもとでの答え」を精密に出すだけで、仮定そのものは検証してくれません。裾の重さを過小評価した分布で何億回シミュレートしても、現実の暴落の確率は出てこない——試行回数をどれだけ増やしても仮定の正しさは1ミリも補強されない、という点を忘れないことが、この強力な手法と付き合う最重要の心得です。
試問
1辺1の正方形にランダムに点を打ち、4分の1円の内側に入った割合 × 4 で円周率 π を推定します(モンテカルロ法)。右のグラフの漏斗は、推定値がおよそ 95% の確率で収まる誤差の幅(±2SE。SE は標準誤差)です。点の数は、再生・一時停止と「×100」「×1000」(点を100個・1000個足す)で調整してください。
「再生」を押すと、正方形に一様乱数で点が降ります。円の内側(金)に入った割合 × 4 が π の推定値です。右のグラフで、推定値がどう落ち着いていくかを見てください。
左: 1辺1の正方形と、半径1の4分の1円板(面積 π/4)。右: 推定値の推移と ±2SE の漏斗(横軸は対数)
