Variational Autoencoder의 여정 Chap.2 MLE 와 KLD [목적지는:VAE의 구현]

2019. 1. 17. 14:45AI/Vision

VAE를 이해하기 위해 우선 알아야할것이 maximum likelihood estimation의 개념과 kld(kullback leibler divergence) 입니다.


들어가기전 우도(likelihood)에 대해서 알아보겠습니다.


데이터사이언스스쿨의 자료를 인용하면 '확률 변수 X에 대한 확률 모형은 확률 밀도 함수fX에 의해 정의된다. 

     확률 밀도 함수는 일반적으로fX(x;θ) 와 같은 형태를 가진다.

     여기에서 x는 확률 변수가 가질 수 있는 실수값이고 θ는 확률 밀도 함수 즉, 확률 모형의 모수(parameter) 집합을 대표하는 기호'이다.

     예를 들어 가우시안 확률 변수 X의 확률 밀도 함수는 다음과 같은 형태를 가진다. 

이 식에서θ=(μ,σ2),  fX(x,θ)이다  

fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)

fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)

fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)


fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)


fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)

fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)

fX(x;θ)=fX(x;μ,σ2)=12πσ2exp((xμ)22σ2)

함수의 관점에서 일반적으로θ 고정된 값, 즉 상수 계수이고 x를 변수(variable)로 가정한다. 즉, 이미 확률 변수 모형은 고정되어 있고 주어진 실수 입력값에 대해 그 실수값이 나올 상대적 가능성을 출력하는 것이 x를 변수로 가지는 확률 밀도 함수이다.


그러나 반대로 추정 문제에서는 x즉, 이미 실현된 샘플값은 알고 있지만 모수θ를 모르고 있다. 이 경우에는 확률 밀도 함수라는 수식에서 x를 이미 결정되어 버린 상수 계수로 놓고 θ를 찾아내야 할 변수로 생각할 수 있다. 물론 fX(x,θ)의 의미 자체는 변함없이 주어진 x가 나올 수 있는 상대적 가능성의 값이다. 이를 우도(likelihood)라고 한다. 우도를 표기할 때는 θ의 함수임을 명확하게 하기 위해 다음과 같이 기호의 순서를 바꾼다.

L(θ;x)=fX(x|θ) 입니다.

L(

하나하나 차근차근 살펴보자면, 어떤일이 발생할 확률(X)에 대한 것을 함수로 하였을때, 이것을 fX라고 정의해봅니다. 일반적인 표기법에따라 f(x,θ)라고 표시하겠습니다. 그러나  θ는 확률 밀도함수 즉, 모수의 집합을 나타내는 대표기호라고 합니다.

여기서 이  θ가 가지는 의미를 조금더 정확히 보겠습니다. 대표적으로 가장많이 쓰이는 가우시안 분포에서는 θ=(mean,std^2)으로 나타냅니다.(std^2는 분산)

그러면 θ는 뿌려진 확률 분포에 대한 평균과 표준편차니까 고정된 상수가 됩니다. 이에 따라 변수는 X가되고 X가 될수있는 변수들을 나열하여 함수에 넣은것이

가우시안분포입니다.


반대로 추정문제에서는 이미 실현된 X에 대해 어떤 θ에서 이값이 나왔는가를 찿아야합니다. 이를 우도(likelihood)라고 합니다.

표기자체는 

f(x,θ)로 변함 없지만,  θ의 함수임을 구분하기위해서 


L(θ;x)=fX(x|θ)

L(θ;x)=fX(x|θ) 로 표기합니다.

































MLE(maximun likelihood estimation)최대 우도 추정이란 주어진 X들에 대해서 X값이 우도가 최대값이 되게하는 θ를 찿는 것입니다.

θ^MLE=argmaxθL(θ;{xi})


x=1이고, x=1인 값중 최대가 되는 우도를 찿는 그래프입니다.(데이터 사이언스 스쿨 펌)

mu_1,mu_2,mu_3중에서 x=1에서 최대가 되는 우도는 mu_3입니다.

간단히 정리하자면 우도란 특정 일이 일어날수있는 환경을 예기하는 것입니다. 

장마가 온다 라는 명제를 보았을때,

장마는 겨울에 올 확률 여름에 올 확률 나눌수있는데

여기서 장마가 내린다는 것은 X이고 여름과 겨울은 우도 즉  θ라고 볼수있고,

 장마 내릴 확률이 가장 높은 계절인 여름을 찿는 것이 최대우도 추정이라고 보시면 되겠습니다.



KLD(kullback leibler divergence) 

쿨백-라이블러 발산은 두 확률분포의 차이를 계산하는 데 사용되는 함수입니다.

어떤 이상적인 분포에 대해 그 분포를 근사하는 다른 분포를 샘플링하여 발생하는 정보 엔트로피 차이를 계산하는 것입니다.



예제(icim펌)

확률공간 Ω와 이산확률변수 X=x1,,xN 그리고 확률 PQ가 주어졌다고 하겠습니다.

1<i<=N

p:=(pi),pi:=P(X=xi)


P와 Q의 분포는 사진과 같습니다.

이 두 분포에 대한 다른정도를 측량하는 KLD의 정의는 다음과 같습니다.

식의 형태가 저희가 딥러닝에서 손실을 계산하는 그 크로스 엔트로피와 형태가 비슷하지요?

결국 두개의 분포에서 정보 엔트로피를 구한다는 것은 크로스엔트로피를 취한다는 것과 비슷한 의미가 되겠습니다!

다만! 이 kld를 사용할 때는 한가지 주의 점이 있는데

1. KL(p|q)≠KL(q|p) (non-symmetric)

2. KL(p|q)=0 only if p=q.

3. KL(p|q)≥0.



1. 교환이 성립하지않는다.

(두개의 정보엔트로피 차이값을 계산하기는 했지만, 거리함수가 아니기때문입니다.)

2. p=q랑 같다면 0이됩니다. 

(kld의 값이 적으면 적을수록 근사한 값에 가깝다는 뜻이겠지요? 이것도 딥러닝의 손실함수와 비슷하군요!)

3.최소값은 0인것입니다.(convex한 성질을 가지고있음을 확인할 수 있습니다.)


그러면 다음의 조건에

i=1Npi=1pi0 이고 l(convex)


 을 가지고 있기 때문에, Jensen's inequality에 의해


0=log(i=1Npiqipi)i=1Npilog(qipi)=KL(p|q)


을 만족합니다.

함수자체가 딥러닝의 loss로 사용하기에 매우 좋은 구조를 가지고있어서

보통 vae를 만들때 손실함수로써 사용합니다.

다음엔 본격적으로 VAE를 구축해보는 시간을 가져보겠습니다.



VAE의 loss는 BCE(binary_Crossentropy)+KLD(kullback-leibler divergence)로 구성됩니다.이는 인코더와 디코더 사이에 얻은 피쳐들을 근사하는 층이 있기때문에 kld를 사용한 것인데요오늘은 그 기초가 되는 kld와 mle를 살펴보았습니다.


'AI > Vision' 카테고리의 다른 글

Autoencoder의 여정 Chap.1 [목적지는:VAE의 구현]  (0) 2019.01.17