Monte Carlo method


1. Monte Carlo method

Monte Carlo method는 복잡한 함수를 난수를 이용해 함숫값을 확률적으로 근사화하는 방법을 의미합니다. Monte Carlo method는 반복적인 단순한 계산을 많은 횟수를 해야 하기 때문에 컴퓨터를 이용한 계산에 적합한 방식입니다.

monte-carlo-01.png

위와 같이 아주 복잡한 형태를 가진 도형의 넓이를 구하는 문제를 생각해 보겠습니다.

  • 이 도형은 아주 복잡해서 함수를 이용해서 계산하기 쉽지 않습니다.
  • 반면 외부 도형인 사각형의 넓이는 쉽게 구할 수 있습니다.

이럴 경우 Monte Carlo method를 이용하면 정확하지는 않지만 근사화된 값을 구할 수 있습니다.

monte-carlo-02.png

위 그림과 같이 사각형 안에 난수를 이용하여 많은 점들을 찍어보고 '전체 점의 개수'와 '도형에 포함된 점의 개수'를 세어보는 것입니다. 그리고 아래 수식을 통해 도형의 넓이를 구할 수 있습니다.

$$ \begin{equation} \begin{split} {\text{도형의 넓이} \over \text{사각형의 넓이}} &\approx {\text{도형에 포함된 점의 개수} \over \text{전체 점의 개수}} \\ \text{도형의 넓이} &\approx {\text{도형에 포함된 점의 개수} \over \text{전체 점의 개수}}\text{사각형의 넓이} \end{split} \end{equation} $$


2. Monte Carlo method 예

아래와 같이 반지름의 길이가 1인 1/4원의 넓이를 구하는 문제를 가정해 보겠습니다.

monte-carlo-03.png

위 1/4원의 넓이는 다음과 같습니다.

$${1 \over 4}\pi r^2 \simeq 0.7853981633974483$$

수식을 통해서 간단하게 1/4원의 넓이를 구할 수 있지만 Monte Carlo method를 통해서 근삿값을 구해 보겠습니다.

monte-carlo-04.png

첫 번째 경우는 10개의 점을 랜덤 샘플링 한 경우입니다. 10개 중 7개가 원 안에 포함되어 있습니다. 1/4원의 넓이의 근삿값은 0.7입니다.

$${7 \over 10} = 0.7$$

monte-carlo-05.png

두 번째 경우는 100개의 점을 랜덤 샘플링 한 경우입니다. 100개 중 80개가 원 안에 포함되어 있습니다. 1/4원의 넓이의 근삿값은 0.8입니다.

$${80 \over 100} = 0.8$$

monte-carlo-06.png

세 번째 경우는 1,000개의 점을 랜덤 샘플링 한 경우입니다. 1,000개 중 782개가 원 안에 포함되어 있습니다. 1/4원의 넓이의 근삿값은 0.782 입니다.

$${782 \over 1000} = 0.782$$

monte-carlo-06.png

세 번째 경우는 1,000개의 점을 랜덤 샘플링 한 경우입니다. 1,000개 중 782개가 원 안에 포함되어 있습니다. 1/4원의 넓이의 근삿값은 0.782 입니다.

$${782 \over 1000} = 0.782$$

monte-carlo-07.png

네 번째 경우는 5,000개의 점을 랜덤 샘플링 한 경우입니다. 5,000개 중 3,937개가 원 안에 포함되어 있습니다. 1/4원의 넓이의 근삿값은 0.7874 입니다.

$${3937 \over 5000} = 0.7874$$


위 결과와 같이 Monte Carlo method는 좋은 품질의 샘플 수가 많아질수록 좋은 근삿값을 구할 확률이 커집니다.