몬테카를로 베이지안 분석 기초개념

2019-01-30

그림, 실습코드 등 학습자료 출처 : https://datascienceschool.net

# 몬테카를로 베이지안 분석

  • 네트워크 추론방법 중 approximate 방법론에서 가장 유명한 것이 몬테카를로 베이지안 분석이다.

  • 쉽게 얘기하면 특정한 확률분포가 어떻게 나타날지 궁금할때 실제로 주사위를 던져보는 방법이다. 확률분포를 안다는 것은 주사위를 던질 수 있다는 말로 실제로 주사위를 던져보는 것이다. 실제로 주사위를 예를 들어 1만번을 던져서 히스토그램을 그려보는 것이다.

  • 따라서 원리상으로는 샘플링을 계속하는 간단한 원리다.

  • 몬테카를로 베이지안 분석을 알아보기전에 가장 기본이 되는 랜덤샘플링 원리를 이해해야 한다. 역사적으로 랜덤샘플링의 근간은 uniform 분포를 뽑아내는 랜덤 제네레이터이다. 현재는 마츠모토 마코토와 니시무라 타쿠지라는 사람이 만든 메르센 트위스터 알고리즘을 가장 많이 쓴다. 이 메르센 트위스터 알고리즘을 이용하면 특정한 구간 내에서 숫자를 랜덤으로 뽑아낼 수 있다.

  • 그렇다면 가우시안 노멀과 스튜던트 티분포 같은 비교적 수식이 간단한 분포들은 어떻게 샘플링할까?

  • 이들은 inverse transform 방법이라는 것을 이용한다. 원리는 가우시안 노멀분포의 CDF함수를 먼저 그린다. 그다음에 메르센 트위스터를 가동해서 이 CDF 함수 0 ~ 1 사이의 유니폼 분포를 뽑은다음에 이 CDF 함수의 역함수에 삽입한다. 그러면 가우시안 노멀 모양의 분포를 구현할 수 있다.

  • 우리가 원하는 확률분포가 있으면 그 CDF함수의 역함수를 이용해서 유니폼분포에서 뽑은값을 통과시키면 우리가 집어넣었던 CDF 확률분포에 따른 값들이 나온다. 이것을 역변환이라고 한다.

  • 그러면 우리는 CDF를 수식으로 알고 있고 그것의 역함수도 수식으로 풀 수 있다면 다시말해 CDF의 역함수가 수식으로 명확하게 나타나는 함수는 역변환을 쓸 수 있다.

  • 하지만 문제가 뭐냐면 특정 확률분포에 대한 샘플링을 한다는 것이 쉬운것이 아니다.존재하는 확률분포들 중에 수식을 작성하기도 어려운 확률분포가 많기 때문이다.

  • 우리가 가지고 있는 정보는 어떤 확률분포의 값은 알고 있는데 수식으로는 표현이 안된다고 치자. 이럴때 쓰는 가장 간단한 방법은 rejection sampling이라는 방법이다.

  • rejection sampling 방법에서는 목표 확률분포 p(x) 와 유사하지만 표본 생성이 쉬운 유사 확률분포 q(x)를 사용한다.

    • p(x) : 샘플링하고자 하는 목표 확률분포
    • q(x) : 샘플링 가능한 유사 확률분포
  • 방법은 다음과 같다. 일단 유사 확률분포 q(x)의 표본을 생성한 다음에 p(z)/kq(z) 의 확률로 이 표본을 채택할지 아니면 버릴지를 결정한다. 이 때 k 는 kq(x)≥p(x) 가 되도록 하는 스케일링 상수이다.

  • 이런식으로 확률분포의 표본을 생성하는 주요한 이유는 생성한 표본을 이용하여 그 확률분포의 기댓값을 추정할 수 있기 때문이다. 의사결정을 위해 결론적인 기댓값을 우리가 뽑아내기 위해서다.

  • 우리가 관심을 가지는 확률분포에 대해 기댓값을 구하고 싶을때, N개의 표본 데이터를 생성했다면 몬테카를로 적분 \(\ \text{E}[f(X)] \approx \dfrac{1}{N} \sum_{i=1}^N f(x_i)\)을 이용하여 기댓값을 추정할 수 있다. 이 값은 오차가 존재하지만 표본의 갯수 N 이 증가할수록 오차는 작아진다.

  • rejection sapmpling은 특정 확률분포의 분포를 알아보고자 했는데 만약 기댓값을 계산하고자 하는 것이 표본을 생성하는 유일한 목적이라면 표본 생성과 기댓값 계산을 위한 몬테카를로 적분을 하나로 합친 importance sampling을 사용할 수 있다.

  • MCMC(Markov Chain Monte Carlo) 방법은 rejection sampling이나 importance sampling과 달리 마코프 체인을 이용하는 표본 생성 방법이다. 마코프 체인의 수렴분포가 원하는 분포 p(x) 가 되도록 하는 마코프 체인을 만들고 이 마코프 체인을 t′ 시간 이상 가동하면 그 다음부터는 원하는 분포의 표본을 얻을 수 있다.

  • MCMC의 대표적인 방법은 아래와 같다.

1) 메트로폴리스 해이스팅스

2) Hamiltonian Monte Carlo - 되도록 버려지는 표본이 없도록 확률분포의 그레디언트 벡터 정보를 사용한 최적화를 도입

3) NUTS - Hamiltonian Monte Carlo를 개선한 현재 가장많이 쓰이는 방법