Processing math: 100%

5-3. MCMCEstimationofPosteriorMarkovChainMonteCarlo - 메트로폴리스-헤스팅스 알고리즘MetropolisHastingsAlgorithm

2021. 7. 19. 16:09Bayesian

이번 글에서는 사후 분포를 계산할 수 없는 경우 이를 계산할 수 있는 방법인 MCMCMarkovChainMonteCarlo 방법 중 깁스 샘플러보다 더 일반적인 경우 사용되는 메트로폴리스-헤스팅스 알고리즘MetropolisHastingsAlgorithm에 대해 알아보겠습니다.

[관련 글] [Stochastic Process] 1. 확률 과정StochasticProcess,[Stochastic Process] 2. 마르코프 체인MarkovChain


메트로폴리스-헤스팅스 알고리즘MatropolisHastingsAlgorithm

난수를 발생하고자 하는 목표 확률분포가 f(y)π(y) 혹은 f(y)=cπ(y)와 같이 주어지고, 이때 정규화 상수 c(=1π(y)dy)를 모르는 경우, f(y)로부터 난수를 발생시키는 방법을 메트로폴리스-헤스팅스 알고리즘이라고 합니다. 메트로폴리스-헤스팅스 알고리즘을 구현하기 위해선 샘플링의 후보를 생성하는 확률 밀도 함수 candidategeneratingdensityfunction  q(y|x)를 가정해야 합니다. 알고리즘은 다음과 같습니다.

 

1. 관심 있는 확률분포$Y$의 초깃값 Y0을 정합니다.

2. 앞서 가정한 후보 생성 확률 밀도 함수를 이용하여 후보Y0=q(y|Y0)를 생성합니다.

3. 이동 확률 α를 다음 식에 의해 계산합니다.

α=min[π(Y0)/q(Y0|Y0)π(Y0)/q(Y0|Y0), 1]

4. uniform(0, 1)로부터 난수 u를 생성합니다.

5. 만약 uα이면 Y1=Y과 같이 정하고, uα이면 Y1=Y0과 같이 정합니다.

6. 2.로 돌아가 과정을 반복합니다.


위의 과정을 반복하여 생성된 표본들은 그 전 샘플에서만 영향을 받기 때문에, Y0,Y1,f(y)를 극한 분포로 가지는 마르코프 연쇄가 됩니다.

또한 메트로폴리스-헤스팅스 알고리즘은 관심 있는 확률 밀도 함수 f(y)의 정규화 상수 c를 반드시 알아야 할 필요가 없기 때문에 아무리 f(y)가 복잡할지라도 적당한 후보 생성 확률 밀도 함수를 선택하면 f(y)를 따르는 난수를 샘플링할 수 있습니다.


메트로폴리스-헤스팅스 알고리즘에서 중요한 점은 후보 생성 확률 밀도 함수 q(y|x) 를 가정하는 일입니다.

q(y|x)에 대한 가장 일반적인 선택은 q(y|x)=q1(|yx|)로 주어지는 확률 보행randomwalk입니다. 이때 후보 난수 yy=x+z의 형태=+로 생성됩니다.

예를 들어서 zϵN(0, 1)인 경우, 후보 생성 함수는 현재 상태의 값 x를 중심으로 분산 ϵ2을 가지는 정규분포에서 후보 난수를 발생시키게 됩니다.