logo

モンテカルロ法 📂機械学習

モンテカルロ法

定義

簡単に言うと、モンテカルロ法Monte-Carlo methodは、ランダムにたくさん試すことだ。

説明

シンプルな方法だが、たくさん試すことほど簡単で確実な方法はあまりない。もちろん、簡単とはコンピュータを使う場合の話だ。モンテカルロは、モナコ北部のカジノやホテルで有名な地域の名前だ。「モンテカルロ法」という名前もモンテカルロのカジノから取ったものだ。モンテカルロ法の有名な例の一つは、ランダム抽出で円周率を求めることだ。

円周率の求め方

Setup.png

$1$の半径を持つ円と、その外接する一辺の長さが$2$の正方形を考えよう。正方形の面積は$2 \times 2 = 4$、円の面積は$\pi \cdot 1^{2} = \pi$であるから、

$$ \frac{\pi}{4} = \dfrac{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457480.9206.png}}{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457480.9073.png}} = \frac{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457480.9157.png}}{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457481.1163.png}} \implies \pi = 4 \frac{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457480.9157.png}}{\includegraphics[height=1.5em]{https://freshrimpsushi.com/community/data/editor/2304/2175452097_1682457481.1163.png}} $$

従って、$[0, 1] \times [0, 1]$の空間で一様分布からのランダム抽出を実施し、得られた全てのサンプルの中で単位円内にある点の比率に$4$を乗じると、$\pi$の近似値を求めることができる。当然、サンプルをたくさん引くほど、実際の$\pi$値に近くなるだろう。Juliaで実装し、実際に計算してみれば、

using Distributions

function MC(n)
    x = rand(Uniform(0,1),n)
    y = rand(Uniform(0,1),n)
    z = x.^2 + y.^2
    return 4*sum(z.<=1)/n
end

julia> MC(100)
3.32 

julia> MC(1000)
3.184

julia> MC(10000)
3.1504

julia> MC(100000)
3.1394

参照