Gibbs Sampling

https://ratsgo.github.io/statistics/2017/05/31/gibbs/

https://twiecki.io/blog/2015/11/10/mcmc-sampling/

https://jellis18.github.io/post/2018-01-02-mcmc-part1/

http://www2.stat.duke.edu/~rcs46/lecturesModernBayes/601-module6-markov/markov-chain-monte-carlo.pdf

https://stephens999.github.io/fiveMinuteStats/MH-examples1.html

http://www2.stat.duke.edu/~rcs46/lecturesModernBayes/bayes.html

깁스 샘플링은 Markov Chain Monte Carlo 알고리즘의 한 예이다.

MCMC

Monte Carlo Method

계산이 어려우면 Monte Carlo Method를 이용해 값을 추정할 수 있다.

닫힌 형태가 아니라 적분이 어려운 경우, 어떤 점이 적분 범위 내에 있는지를 의미하는 간단한 조건을 만족하는지에 대해 판단하는 것은 비교적 쉽다.

이를 이산적으로 숫자를 세면서 근사한다.

이는 시행횟수가 증가하면서 실제 값에 근사한다.

Markov Chain

상태 천이의 확률은 오직 이전 상태에 대해서만 영향을 받는다.

MC는 특정한 조건 하에서 현재 상태의 확률과 직전 상태의 확률과 같아지게 수렴한다. 이러한 평형 상태를 정적분포(Stationary Distribution)라고 한다.

어떤 s에 대해 reversible하면 s는 stationary distribution임을 의미한다.

MCMC

일반적인 Markov Chain은 Transition Matrix를 통하여 Stationary Distribution을 생성한다.

그러나 MCMC는 반대다. Markov Chain 기반의 샘플링을 통해 Stationary Distribution을 얻고, 이를 만족하는 Transition Matrix를 근사하는 것이다.

기본적으로 Markov Chain기반의 샘플링은 샘플링을 통하여 latent한 Z를 assign하겠다는 것이다. 이는 EM알고리즘에서 E-step을 optimize로 처리하는 것이 아니라 sampling으로 처리하는 것이다.

MCMC는 목표 분포를 Stationary Distribution으로 정하고 역으로 이로부터 마코프 체인을 만들어낸다.

이 체인의 시뮬레이션은 초기값의 영향을 받는 burn-in period를 지나고 나면 목표 분포를 따르는 샘플을 만들어낸다.

이렇게 만들어진 transition matrix를 통해 sampling을 하는 것이다.

http://www.secmem.org/blog/2019/01/11/mcmc/


Gibbs Sampling

Monte Carlo는 모든 샘플이 독립이다.

MCMC는 현재 샘플이 다음 샘플에 영향을 준다.

Gibbs Sampling은 MCMC에서처럼 모든 latent variable을 한번에 업데이트하는 것이 아니라 한번에 latent variable의 변수 하나만 업데이트 하는 것이다.

한 변수만을 고려하고, 나머지 변수를 전부 조건부에 넣어버리기 때문에 계산하기 편하다.

무엇보다 이는 detailed balance를 만족시키게 되고, 자동적으로 acceptance probability를 1로 만들어준다. 더이상 신경 쓸 필요가 없어진다.

또한 Markov Blanket 을 이용해 단순화시키는 것도 가능하다.