300x250

 

 

 

이번 포스팅에는 Pre-knowledges for Generative Models (1) 글에 이어 Monte Carlo Estimation에 대해 다뤄보려 한다.

 

Pre-knowledges for Generative Models (1) - KL-divergence, Maximum likelihood

목차 이번 포스팅에서는 딥러닝 기반의 generative model의 학습 과정을 배우기 위해 필요한 기초 지식들을 정리해보려 한다. 이제까지 p(x)를 어떻게 표현할지를 알아보았는데, 이번 장에서는 어

jjuke-brain.tistory.com

 

 

 

Learning Density Estimation

 

 

 

Monte Carlo Estimation

 

Monte Carlo estimation은 random sampling을 여러 번 하여 기댓값 계산을 근사하기 위해 사용한다. 딥러닝의 Stochastic Gradient Descent처럼 데이터를 여러 번 샘플링하는 개념으로 볼 수 있다.

 

먼저, 관심있는 quantity를 random variable의 기댓값으로 표현한다.

ExP[g(x)]=xg(x)P(x)

 

Distribution P에서 기댓값의 입력으로 들어갈 {x(1),,x(T)} T개를 샘플링한 후, 다음 식을 사용하여 샘플들로부터 기댓값을 추정한다.

g^(x(1),,x(T))1Tt=1Tg(xt)

여기서 sample들은 서로 독립적이며, P를 따른다.

 

큰 수의 법칙에 의해, T이면 g^EP[g(x)]에 수렴한다.

이렇게 근사하게 되면 두 가지 특징을 갖게 된다.

  • Unbiased : EP[g^]=EP[g(x)]
  • Variance reduction : VP[g^]=VP[1Tt=1Tg(x)]=VP[g(x)]T

 

 

 

 

Monte Carlo Estimation and Maximum Likelihood

 

Biased coin을 던지는 sinvle variable 예시를 들어보자. 가능한 결과는 heads(H)나 tails(T)이고 (x{H,T}, dataset은 예를 들어 D={H,H,T,H,T}로 나왔다고 하자. 이 과정은 probability distribution Pdata(x)을 따른다.

x에 대한 모든 probability distribution, 즉 가능한 model들의 집합을 M이라 할 때, D에서 코인을 100번 던졌을 때 60번 앞면(head)일 확률 Pθ(x) M으로부터 어떻게 고를 수 있을까?

 

우선 Pθ(x=H)=θ, Pθ(x=T)=1θ로 둔다. Example data D={H,H,T,H,T}이므로, 이 데이터에 대한 likelihood는 다음과 같이 나타낼 수 있다.

L(θ|D)=θ3(1θ)2

여기서 log를 취하면 log-likelihood를 다음과 같이 구할 수 있다.

logL(θ)=3log(θ)+2log(1θ)

 

Maximum likelihood estimation(MLE)의 목표는 logL(θ)를 최대로 하는 0과 1 사이의 최적의 θ를 찾는 것이다.

 

이를 autoregressive representation에 적용시켜보자.

Training data D={x(1),,x(m)}에 대해 다음과 같은 autoregressive model이 있다.

Pθ(x)=inPneural(xi|pa(xi);θi)

 

여기서 MLE를 적용하려면, 우선 likelihood function을 분해(decompose)해야 한다.

L(θ|D)=j=1mPθ(x(j))=j=1mi=1nPneural(xi(j)|pa(x1)(j);θi)

 

여기에 log를 취하면,

j=1mi=1nlogPneural(xi(j)|pa(x1)(j);θi)

 

이제 argmaxθlogL(θ|D)를 풀기위해 아래와 같이 optimize한다.

  • Initialization : θ(0)을 랜덤하게 initialize
  • Back propgation : θlogL(θ) 계산
  • Weight update : θ(t+1)=θt+αtθlogL(θ)

 

Weight update 과정을 수식으로 나타내면 다음과 같다.

θlogL(θ)=j=1mi=1nθlogPneural(xi(j)|pa(xi)(j);θi)

만약 m=|D|가 크다면,

θlogL(θ)=mj=1m1mi=1nθlogPneural(xi(j)|pa(xi)(j);θi)=mEx(j)D[i=1nθlogPneural(xi(j)|pa(xi)(j);θi)]

 

여기서 Monte Carlo estimation을 통해 다음과 같이 근사할 수 있다.

Sample x(j)D;θlogL(θ)=mi=1nθlogPneural(xi(j)|pa(xi)(j);θi)

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기