테마
7회 · 극한의 언어 · 노트
6 계산으로 — Monte Carlo (1946 → 1949)
역사 1946년 수학자 Stanisław Ulam은 병상에서 카드 놀이(Canfield 솔리테어)가 이길 확률을 계산하다가, 조합론으로 풀기보다 백 번 해 보고 세는 편이 빠르다는 것을 깨달았다. 그는 이 생각을 Los Alamos의 John von Neumann에게 말했고, 둘은 핵분열 장치 안의 중성자 확산을 난수로 흉내 내는 계획을 세웠다. 1948년 ENIAC이 그 계산을 했다. 동료 Nicholas Metropolis가 Ulam의 삼촌이 드나들던 도박장의 이름을 따 이 방법을 Monte Carlo라 불렀고, Metropolis와 Ulam(1949)이 JASA에 같은 이름의 논문을 냈다. 방법 자체는 Buffon의 바늘(1절)과 Student의 카드(6회)부터 있었다. 새로운 것은 컴퓨터, 그리고 결과의 오차를 함께 말하는 습관이었다.
6.1 오차를 아는 시뮬레이션
정리 6.1 (Monte Carlo 추정) 를 구하려고 의 분포에서 iid 표본 을 만들어 로 둔다.
- (a)
이면 이고 .
- (b)
이고 이 들의 표본분산이면, 의 포함확률은 로 간다.
정리는 Monte Carlo의 두 가지 성질을 말한다. 오차는 으로 차원과 상관없고, 오차의 크기를 같은 표본으로 어림할 수 있다. 정확도를 한 자리 높이려면 을 100배 해야 하므로, 실제의 기술은 를 줄이는 데 있다(6.3절).
예제 6.2 (Chebyshev 대신 중심극한정리) 2회 예제 6.4에서 을 균등 난수로 구할 때, 오차가 이상일 확률을 1% 이하로 하려면 Chebyshev로 이면 충분했다(). 중심극한정리로는 에서
15분의 1이다. Chebyshev는 모든 분포에 맞는 보장이라 보수적이고, 중심극한정리는 이 분포에 맞는 근사다. 6회의 카드 실험에서 섞기 400번의 비율이 표준편차 로 흩어진 것도 이 정리의 예다.
6.2 원하는 분포에서 뽑기 — 기각 표집
의 평균을 구하려면 의 분포에서 뽑을 수 있어야 한다. 분포함수의 역함수를 알면 역함수 표집(2회 정리 4.7)을 쓰고, 정규처럼 역함수가 닫힌 꼴이 아니면 Box–Muller(3회 정리 5.4) 같은 변환을 찾는다. 밀도만 알 때 쓰는 일반적인 방법이 von Neumann(1951)의 기각 표집이다.
알고리즘 6.3 (기각 표집) 목표 밀도 , 뽑기 쉬운 제안 밀도 , 상수 이 모든 에서 를 만족한다.
- 1.
와 을 독립으로 뽑는다.
- 2.
이면 를 받아들여 내놓고, 아니면 1로 돌아간다.
정리 6.4 (기각 표집의 정당성) 알고리즘 6.3이 내놓는 값의 밀도는 이다. 한 번 시도에서 받아들일 확률은 이고, 시도 횟수는 평균 인 기하분포를 따른다.
증명 전략 한 번의 시도에서 “받아들이고 ”인 확률을 이중적분으로 계산하면 이 된다. 시도들이 독립이므로 내놓는 값의 분포는 받아들인 시도의 조건부분포이고, 시도 횟수는 기하분포다.
한 번의 시도에서 의 결합밀도는 ()이다.독립, 3회 정리 3.2
받아들이는 사건을 라 하면
로 보내면 이다.1회 정리 4.7
번째 시도에서 처음 받아들이고 그 값이 이하일 확률은 이다.시도들의 독립, 2 3
에 대해 더하면 내놓는 값이 이하일 확률은 이다.가산가법성, 기하급수 [T5]
4에서 를 로 바꾸면 처음 받아들일 때까지의 시도 횟수가 성공 확률 의 기하분포이고 평균이 임을 얻는다.4회 1절
조건 확인 인 곳에서는 이므로 비 를 정의하지 않아도 그 는 적분에 기여하지 않는다. 2의 반복적분은 음이 아닌 함수의 적분이므로 Tonelli로 순서를 정할 수 있다 [T6]. 인 것은 에서 나온다.
예제 6.5 (지수 난수로 정규 난수 만들기) 반정규 밀도 ()를 로 덮는다. 은 에서 최대이므로 이고, 받아들일 확률은 이다. 받아들인 값에 무작위 부호를 붙이면 이다. 지수 난수는 로 만든다(2회 정리 4.7). 받아들이는 조건은 로 간단해진다(연습 6.2).

6.3 오차를 줄이기 — 중요도 표집과 반대 변량
정리 6.6 (중요도 표집) 인 곳에서 이면, 에 대해
는 의 불편추정량이고 분산은 이다. 이면 일 때 분산이 0이다.
증명 전략 가중치 가 로 뽑은 표본을 의 기댓값으로 되돌린다는 것을 적분 한 줄로 보이고, 분산은 iid 평균의 분산 공식으로 계산한다. 단계별 증명은 연습 6.6(유도형)에서 직접 쓴다. 완성된 증명은 그 연습의 풀이에 있다.
분산이 0인 는 를 알아야 만들 수 있으므로 실제로는 쓸 수 없다. 그러나 방향은 알려 준다. “가 큰 곳에서 많이 뽑고, 가중치로 바로잡아라.”
예제 6.7 (드문 사건) 를 보통의 Monte Carlo로 구하면 이고 상대 표준오차는 다. 이면 1.78, 곧 추정값이 대개 0이다. 상대오차를 10%로 하려면 이 필요하다. 제안분포를 로 옮기면 이고, 한 표본의 분산이 로 보통 Monte Carlo의 보다 약 7,000배 작다. 에서 상대오차가 2%다. 금융의 극단 손실, 통신의 오류율, 희귀 변이의 검정처럼 작은 확률을 다루는 계산이 모두 이 방법을 쓴다.
예제 6.8 (반대 변량) 와 는 같은 분포이고, 가 단조이면 와 는 음의 상관을 갖는다. 그래서 를 쓰면 같은 계산량에서 분산이 줄어든다. 이면 난수 2개의 평균의 분산 이 반대 변량에서는 으로 4.0배 작다(연습 6.5).
연습문제
연습 6.1 (원으로 잰 ★) 이면 의 평균은 이다. 분산을 구하고, 에서 표준오차가 0.016임을 보여라. Buffon의 바늘(에서 0.024)보다 나은가?
풀이
이므로 분산은 , 에서 표준오차 . Buffon()은 이므로 원이 낫다. 같은 난수 수로 비교하면(바늘 하나에 난수 2개) 차이는 더 크다.
연습 6.2 (받아들이는 조건 ★) 예제 6.5에서 임을 보여라.
풀이
.
연습 6.3 (베타 난수 ★★) 을 로 기각 표집할 때 가장 작은 은 밀도의 최댓값이다. 최빈값 에서 , 받아들일 확률 임을 확인하라. 4회 정리 4.2의 감마의 비를 쓰는 방법과 비교하면?
풀이
최빈값 에서 밀도는 이므로 , 수락 확률 . 평균 2.67번 시도에 난수 5.3개. 4회 정리 4.2로는 과 난수 둘로 를 만들면 기각이 없지만 감마 난수 자체가 기각 표집(Marsaglia–Tsang)을 쓴다. 모양 모수가 커지면 밀도가 뾰족해져 균등 제안의 이 커지므로 감마의 비가 유리하다.
연습 6.4 (두꺼운 꼬리가 필요하다 ★★) , 을 제안분포 로 중요도 표집하면 일 때 분산이 무한임을 보여라. 제안분포의 꼬리가 목표보다 얇으면 가중치 가 폭발한다.
풀이
이고 . 지수의 계수 가 음이어야 적분이 유한하므로 이 필요하다. 이면 무한대다.
연습 6.5 (반대 변량의 분산 ★★★) 임을 보이고, 가 증가함수이면 임을 보여라. (힌트: 독립인 에 대해 .)
풀이
(, , 같은 분포). 가 독립이고 가 증가하면 와 는 부호가 반대이므로 곱의 기댓값 이다. 전개하면 이므로 . 에서 분산은 에서 으로 줄었다.
연습 6.6 (중요도 표집 증명 ★ 유도형) 정리 6.6를 다음 순서로 증명하라.