반응형

Gibbs Sampling은 여러 변수가 얽힌 분포에서 한 번에 모든 변수를 뽑기 어려울 때, 한 변수씩 조건부분포에서 번갈아 샘플링하는 방법입니다.

이 글은 uniform random sampling보다 복잡한 분포에서 샘플을 생성해야 할 때 Gibbs Sampling이 어떤 아이디어로 쓰이는지 정리합니다.

 

핵심 정리

단순한 몬테카를로 샘플링은 균일하게 점을 찍는 방식으로 이해하기 쉽지만, 실제 확률 모델에서는 여러 변수가 서로 영향을 주는 복잡한 분포를 다루는 경우가 많습니다. 이때 전체 분포에서 한 번에 샘플을 뽑기 어렵다면, 나머지 변수들을 현재 값으로 고정하고 한 변수만 조건부분포에서 다시 뽑는 과정을 반복할 수 있습니다. 이렇게 각 차원을 번갈아 갱신하면서 전체 분포를 따르는 샘플에 가까워지게 만드는 방식이 Gibbs Sampling의 기본 아이디어입니다.

  • Gibbs Sampling은 MCMC 계열의 샘플링 방법입니다.
  • 한 번에 모든 차원을 뽑기 어려울 때 한 차원씩 갱신합니다.
  • 각 단계에서는 나머지 변수 값을 고정하고 현재 변수의 조건부분포에서 샘플을 뽑습니다.
  • 이 과정을 반복하면 샘플들이 목표 분포를 따르도록 가까워지는 것을 기대합니다.
  • 변수 간 의존성이 강하거나 조건부분포 계산이 쉬울 때 특히 유용합니다.
  • 초기 샘플의 영향이 남는 구간은 버리고 이후 샘플을 사용하는 식의 주의가 필요합니다.

원문은 Gibbs Sampling을 이해해 가는 중이라는 메모로 끝났습니다. 이번 보강은 확정적인 세부 증명 대신, 왜 한 차원씩 샘플링하는 방식이 필요한지와 어떤 상황에서 쓰는지까지 보강했습니다.

여기, 여기 참조함

MLE의 경우를 생각해보면 우리는 샘플들을 보고 그 샘플들을 가장 잘 설명하는 모델을 찾아나가게 된다.

MLE가 아니라 전반적인 ML이란 것 자체가 샘플(학습인풋)들을 보고 그 샘플을 가장 잘 설명하는 모델(딥러닝 웨이트 등)을 찾는 과정이라는 점에서 동일함을 알 수 있다.

근데 이 샘플을 주어진 샘플을 사용하는게 아니라 generation해야 한다고 생각해보면 어떻게 될까?

예를 들어 $\pi$를 구하는 몬테카를로의 경우 사각영역안에서 uniform random으로 좌표를 찍어서 샘플링을 하게된다.

이런 uniform random sampling의 경우는 간단한데..

uniform하지 않고 특정 확률분포를 따르는 경우는 복잡해지기 시작한다.

그리고 샘플이 보통 1차원이 아니라 n차원이 되는데(딥러닝 인풋이 n개면 n차원으로 볼 수 있다)

이런경우에 각각의 차원이 별도의 확률분포를 가지는 경우 샘플링이 상당히 힘들어지게 된다.

깁스 샘플링은 이러한 경우에 한번에 하나의 차원씩 샘플링하면서 만들어 나가는 방법론인걸로 일단 파악중이다.

(자세한건 전혀 모름)

반응형

+ Recent posts