이 세 가지는 처음 접하면 굉장히 추상적으로 느껴지는데, 사실은 다음 한 문장으로 요약할 수 있습니다.
"깁스 샘플링은 원하는 확률분포를 직접 뽑기 어려울 때, 변수들을 하나씩 번갈아 업데이트하는 마르코프 체인을 만들고, 그 체인을 오래 돌리면 결국 우리가 원하는 결합분포를 따르게 되는 방법이다."
아래 순서대로 이해해 보겠습니다.
1. 마르코프 체인이란 무엇인가?
가장 직관적인 예는 방을 이동하는 사람입니다. 방이 3개 있다고 하겠습니다.
- A방
- B방
- C방
사람은 매 분마다 방을 옮깁니다. 규칙은 다음과 같습니다.
현재 A방이면
- 70% 확률로 A
- 30% 확률로 B
현재 B방이면
- 50% 확률로 A
- 50% 확률로 C
현재 C방이면
- 100% 확률로 B
여기서 중요한 점은
다음 위치를 결정할 때 현재 위치만 사용한다.
는 것입니다. 예를 들어
A → B → C → B
까지 왔다고 합시다. 다음 위치를 결정할 때는
현재 B에 있다
만 중요합니다. 그 전에
A에 있었는지
C에 있었는지
는 중요하지 않습니다. 이것이 바로 마르코프 성질입니다. 즉
미래는 현재만 알면 결정된다.
수식으로는
P(다음 상태 | 현재 상태, 과거 상태들)
=
P(다음 상태 | 현재 상태)
입니다.
상태(state)란?
위 예에서는
A방
B방
C방
이 상태입니다.
깁스 샘플링에서는 상태가 훨씬 큽니다. 예를 들어 변수 두 개
X
Y
가 있으면 현재 상태는
(X,Y)
라는 점 하나입니다.
예:
(3,7)
또는
(10,2)
같은 것이 상태입니다.
2. 왜 깁스 샘플링이 마르코프 체인인가?
이제 우리가 얻고 싶은 분포가
P(X,Y)
라고 하겠습니다. 그런데 직접 샘플링하기가 어렵습니다. 대신 다음 규칙을 만듭니다.
Step 1
현재 상태가
(X=3,Y=7)
이라고 합시다. 먼저 Y는 고정합니다.
Y=7
그리고
P(X|Y=7)
에서 새로운 X를 뽑습니다. 예를 들어
X=5
가 나왔습니다. 상태는
(5,7)
이 됩니다.
Step 2
이번에는 X를 고정합니다.
X=5
그리고
P(Y|X=5)
에서 새로운 Y를 뽑습니다. 예를 들어
Y=2
가 나왔습니다. 상태는
(5,2)
가 됩니다. 그러면
(3,7)
→
(5,7)
→
(5,2)
→
(8,2)
→
(8,9)
→
...
같이 이동하게 됩니다. 여기서 다음 상태를 결정하는 데 필요한 정보는 오직
현재 상태 (X,Y)
뿐입니다. 예를 들어
(5,2)
에 있다면 다음에 어디로 갈지는
(3,7)
에서 왔는지
(100,200)
에서 왔는지 전혀 중요하지 않습니다. 현재 상태만 중요합니다. 즉
P(다음 상태 | 현재 상태, 과거)
=
P(다음 상태 | 현재 상태)
입니다. 따라서 깁스 샘플링은
상태=(X,Y)인 마르코프 체인
입니다.
3. 왜 불변 분포가 원하는 결합분포인가?
여기가 가장 중요한 부분입니다. 먼저 불변 분포(stationary distribution)란 체인을 한 번 더 움직여도 분포가 변하지 않는 분포입니다.
예를 들어 현재 상태들이
π
라는 분포를 따르고 있다고 합시다. 한 번 이동한 뒤에도
π
가 그대로라면
π
는 불변 분포입니다.
직관적인 비유
큰 쇼핑몰 안을 사람들이 돌아다닌다고 생각해 봅시다. 어떤 이동 규칙을 정해 놓았습니다. 처음에는 사람들이 한쪽에 몰려 있을 수 있습니다. 하지만 충분히 오래 지나면 사람들의 밀집도가 안정됩니다.
식당가 40%
영화관 30%
서점 30%
처럼요. 그 상태에 도달하면 사람들이 계속 움직여도 전체 비율은 유지됩니다. 이것이 불변 분포입니다.
깁스 샘플링에서는?
우리는
P(X,Y)
를 목표로 하고 있습니다. 깁스 샘플링은 일부러
P(X|Y)
와
P(Y|X)
를 사용해서 체인을 만듭니다.
가정:
현재 상태들이 이미
P(X,Y)
를 따른다고 해봅시다.
첫 번째 업데이트:
X ~ P(X|Y)
로 다시 뽑습니다. Y는 그대로 둡니다. 그러면 새로운 분포는 어떻게 될까요? 고정된 Y에 대해 X를 정확히
P(X|Y)
에서 뽑았으므로 전체 분포는 여전히
P(X,Y)
입니다. 왜냐하면 결합분포 자체가
P(X,Y)
=
P(X|Y)P(Y)
이기 때문입니다. 다음 단계도 마찬가지입니다.
Y ~ P(Y|X)
로 업데이트하면 분포는 다시
P(X,Y)
로 유지됩니다. 즉
P(X,Y)
상태에서 시작하면 한 번 업데이트 후에도
P(X,Y)
두 번 업데이트 후에도
P(X,Y)
입니다.
따라서
P(X,Y)는 깁스 체인의 불변 분포이다.
한 문장으로 직관적으로 이해하기
깁스 샘플링은
- 현재 상태에서 변수 하나만 바꾼다.
- 그 변수는 정확한 조건부 분포에서 뽑는다.
- 그래서 목표 결합분포를 절대로 깨뜨리지 않는다.
- 따라서 목표 결합분포가 체인의 불변 분포가 된다.
- 체인을 충분히 오래 돌리면 상태들이 그 불변 분포를 따르게 된다.
즉,
"결합분포를 직접 샘플링할 수 없으니, 조건부 분포들만 이용해 상태를 조금씩 움직이는 마르코프 체인을 만들고, 그 체인이 결국 원하는 결합분포에 머물도록 설계한 것이 깁스 샘플링이다."
라고 이해하면 됩니다.
그리고 이것을 한 단계 더 발전시키면 자연스럽게 Metropolis-Hastings → MCMC → Gibbs Sampling → DPMM의 collapsed Gibbs Sampling으로 이어집니다. DPMM에서 왜 군집 할당을 하나씩 다시 뽑아도 전체 사후분포를 따르게 되는지까지 같은 논리로 연결됩니다.