일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 오블완
- WBP
- multimodal
- ue5.4
- WinAPI
- userwidget
- 디퓨전모델
- Diffusion
- cv
- Unreal Engine
- motion matching
- UE5
- Font Generation
- 생성모델
- dl
- CNN
- BERT
- 모션매칭
- ddpm
- animation retargeting
- 언리얼엔진
- deep learning
- Generative Model
- NLP
- Stat110
- 폰트생성
- RNN
- 딥러닝
- GAN
- Few-shot generation
Archives
- Today
- Total
Deeper Learning
Monte Carlo Method 본문
Monte Carlo Method
난수를 이용하여 함수의 값을 확률적으로 계산하는 알고리즘 이다.
확률분포를 모를 때 주어진 데이터를 사용하여 기대값을 계산하기 위해 몬테카를로 샘플링 방법이 사용된다.
독립추출이 보장된다면 대수의 법칙에 의하여 모평균으로의 수렴이 보장된다.
Examples
정사각형에 내부의 사분면에서 Monte Carlo 방법을 사용해서 pi의 값을 추정할 수 있다.
정사각형 위에 x, y 좌표가 각각 0~1 범위의 균일분포를 따르도록 점을 찍는다.
사분면 내부의 점의 개수를 세어 전체 점 개수와 비교하여 비율을 계산하여 4를 곱하여 pi의 근사치를 계산할 수 있다.
위와 같은 수식의 값도 Monte Carlo 방법을 사용하여 추정할 수 있다.
구간의 길이가 -1 ~ 1로 2가 되기 때문에 위의 수식의 1/2를 곱한 값을 구하는 방식으로 계산이 가능하다.
위의 식의 우변은 균등분포에서 추출한 x(i)를 함수에 넣어 y축의 값들이 생성되고 이를 평균내어 y=a 형태의 함수를 생성한다.
새로 만들어진 함수의 적분값은 x축 구간의 길이인 2 * a로 이는 실제 적분값과 유사하다.
import numpy as np
def monte_carlo(f, x_min, x_max, sample_size=100, repeat=20):
x_len = x_max - x_min
stat = []
for _ in range(repeat):
x = np.random.uniform(low=x_min, high=x_max, size=sample_size)
y = f(x)
area = x_len * np.mean(y)
stat.append(area)
return np.mean(stat), np.std(stat)
def f(x):
return np.exp(-x**2)
print(monte_carlo(f,-1,1,100,20))
# 1.4938... , 0.0039...
실제 값과 큰 차이를 보이지 않는것을 볼 수 있다. (오차범위 이내)
균일하게 샘플링 된 정도, 샘플링 한 size가 클 수록 오차는 줄어든다.
'Statistics & Math' 카테고리의 다른 글
Eigenvector & Eigenvalue (0) | 2021.07.20 |
---|---|
Community Detection (0) | 2021.02.25 |
PageRank (0) | 2021.02.24 |
Graph (0) | 2021.02.23 |
Bayes' theorem Introduction (0) | 2021.02.01 |
Comments