Reference :

딥러닝 Ch3.3 VAE

요약

image.png

Regularization Term에서 Prior의 분포를 따르게 제약했는데, Prior의 분포가 정규분포이기 때문.

encoder를 거쳐 나온 latent viriable z가 정규 분포를 따르게 하는 이유는 decoder가 샘플링할 때 분포를 가우시안 분포에서 하는 게 가장 편하고, 미분 가능하게 할 수 있으므로.

Decoder에서 p(x|z)가 가우시안 또는 베르누이 분포를 따른다고 가정해야함. 그런 후에 Reconstruction Loss를 계산.


우리는 데이터의 likelihood 즉, 확률 분포 p(x)를 최대화 하고 싶다. p(x)는 아래와 같이 모델링할 수 있다. (likelihood : 내가 훈련시킨 데이터가 가장 잘 나오는 확률분포)

$$ p_{\theta}(x) = \sum\limits_{z}p_{\theta}(x,z) =  \sum\limits_{z}p(z)p_{\theta}(x|z) = \sum\limits_{k=1}^K p(z=k)N(x;\mu_k, \sigma_k) $$

위의 식에서 z에 대해 일일히 계산하기는 힘들다.

그래서 대안으로 p(x|z)에서 x를 생성해내고 싶은건데, 베이즈 정리에 의해 P(z|x) = P(x|z)P(z) / P(x) 이다. p(x|z)는 decoder network로 학습이 가능하고, p(z)는 정규분포로 가정을 할 수 있다. 하지만 p(x)를 우리는 모르며, p(x)는 데이터에 대한 분포로 계산이 어렵다. → 베이즈 정리로도 실패

따라서 VAE에서는 True Posterior P와 비슷한 분포를 가지는 Approximation Posterior q(z|x)를 encoder를 통해 p(z)에서 벗어나지 않게 학습한다. decoder에서는 p(x|z)를 학습한다.

그러면 최종적으로 우리는 decoder 즉, P(x|z) 새로운 데이터를 생성해낼 수 있다.

Encoder Network 과정