AI / ML

[GM] 두 가우스 분포간의 KL Divergence 유도 본문

Fundamental/Probability Theory

[GM] 두 가우스 분포간의 KL Divergence 유도

Yunjey Choi 2017. 5. 22. 21:53


1. Motivation


Variational Auto-Encoder(VAE)에서 KL Divergence가 Loss term에 있는데, 

이것을 이해하기 위해 공부를 시작했습니다. 

본 포스팅에서는 1차원의 가우스 분포(univariate Gaussian distribution)를 다룹니다.



2. Definition


$$시작하기 \,앞서 \, P는\, \, 평균\, { \mu  }_{ 1 }\, 과\, 분산\sigma _{ 1 }를 \,갖고 \,Q는 \,평균\, { \mu  }_{ 2 }과 \,분산\sigma _{ 2 } 를 \,갖는 \,정규분포라고 \,가정을 \,합니다.$$


$$P=N({ \mu  }_{ 1 },{ \sigma  }_{ 1 })\\ Q=N({ \mu  }_{ 2 },{ \sigma  }_{ 2 })$$

$$그러면 \,아래와 \,같이 \,P와 \,Q에 \,대한 \,density \,function을 \,나타낼 \,수 \,있습니다.$$

$$p(x) = \frac { 1 }{ \sqrt { 2\pi  } { \sigma  }_{ 1 } } { e }^{ \cfrac { -{ (x-{ \mu  }_{ 1 }) }^{ 2 } }{ 2{ { \sigma  }_{ 1 } }^{ 2 } }  }\\ \quad \quad q(x) = \frac { 1 }{ \sqrt { 2\pi  } { \sigma  }_{ 2 } } { e }^{ \cfrac { -{ (x-{ \mu  }_{ 2 }) }^{ 2 } }{ 2{ { \sigma  }_{ 2 } }^{ 2 } }  }$$


3. KL Divergence between two univariate Gaussian

$$ 이제 \,두 \,정규분포 \,P와 \,Q사이의 \,KL \,Divergence \,식을 \,아래와 \,같이 \,구할 \,수 \,있습니다. \,$$


$$\begin{align*} KL(P||Q) &=\int  p(x)\log  \cfrac { p(x) }{ q(x) } \, dx \\ &=\int  p(x)(\log  p(x)-\log  q(x))\, dx\\ &=\int  p(x)(-\log { \sqrt { 2\pi  } { \sigma  }_{ 1 } } -\cfrac { (x-{ \mu  }_{ 1 })^{ 2 } }{ 2{ { \sigma  }_{ 1 } }^{ 2 } } +\log { \sqrt { 2\pi  } { \sigma  }_{ 2 } } +\cfrac { (x-{ \mu  }_{ 2 })^{ 2 } }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } )\, dx\\ &=\int  p(x)(\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { (x-{ \mu  }_{ 1 })^{ 2 } }{ 2{ { \sigma  }_{ 1 } }^{ 2 } } +\cfrac { (x-{ \mu  }_{ 2 })^{ 2 } }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } )\, dx\\ &= { E }_{ x\sim p(x) }[\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { (x-{ \mu  }_{ 1 })^{ 2 } }{ 2{ { \sigma  }_{ 1 } }^{ 2 } } +\cfrac { (x-{ \mu  }_{ 2 })^{ 2 } }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } ]\\ &=\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { 1 }{ 2{ { \sigma  }_{ 1 } }^{ 2 } } { E }_{ x\sim p(x) }[(x-{ \mu  }_{ 1 })^{ 2 }]+\cfrac { 1 }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } { E }_{ x\sim p(x) }[(x-{ \mu  }_{ 2 })^{ 2 }]\\ &=\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { 1 }{ 2{ { \sigma  }_{ 1 } }^{ 2 } } { { \sigma  }_{ 1 } }^{ 2 }+\cfrac { 1 }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } { E }_{ x\sim p(x) }[(x-{ \mu  }_{ 1 }+{ \mu  }_{ 1 }-{ \mu  }_{ 2 })^{ 2 }]\\ &=\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { 1 }{ 2 } +\cfrac { 1 }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } { E }_{ x\sim p(x) }[(x-{ \mu  }_{ 1 })^{ 2 }+2({ \mu  }_{ 1 }-{ \mu  }_{ 2 })(x-{ \mu  }_{ 1 })+({ \mu  }_{ 1 }-{ \mu  }_{ 2 })^{ 2 }]\\ &=\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { 1 }{ 2 } +\cfrac { 1 }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } ({ { \sigma  }_{ 1 } }^{ 2 }+0+({ \mu  }_{ 1 }-{ \mu  }_{ 2 })^{ 2 })\\ &=\log { \cfrac { { \sigma  }_{ 2 } }{ { \sigma  }_{ 1 } }  } -\cfrac { 1 }{ 2 } +\cfrac { { { \sigma  }_{ 1 } }^{ 2 }+({ \mu  }_{ 1 }-{ \mu  }_{ 2 })^{ 2 } }{ 2{ { \sigma  }_{ 2 } }^{ 2 } } \end{align*}$$



4. KL Divergence in VAE


VAE에서는 latent vector z와 표준정규분포 간의 KL Divergence를 계산해야 합니다. 
 Q의 평균으로 0을, 분산으로 1을 대입하면 아래와 같은 결과를 얻을 수 있습니다.

$$ \begin{align*}KL(P||Q) &=\log { \cfrac { { \sigma }_{ 2 } }{ { \sigma }_{ 1 } } } - \cfrac { 1 }{ 2 } + \cfrac { { { \sigma }_{ 1 } }^2 + ({\mu}_{1} - {\mu}_{2})^{2}}{2 { {\sigma}_{2}^{2}}}\\ &=\log{ \cfrac {1}{ {\sigma}_{1} }} - \cfrac { 1 }{ 2 } + \cfrac { {{ \sigma }_{ 1 }}^2 + { {\mu}_{1} }^2 } {2} \\ &= \cfrac{ 1 }{ 2 } ({{\mu}_{1}}^2  +{{\sigma}_{1}}^2-\log{ {{\sigma}_{1}}^2}  -1 ) \end{align*} $$









Comments