볼 때마다 새로운 VAE... 내 언어로 제대로 정리해보자.
VAE의 목적은 데이터 분포 p(x)를 만드는 것이고 x는 latent z의 조합으로 생성할 수 있다는 가정이 있다. x를 생성하는 순서는 먼저 1) p(z)에서 z를 sampling하고 2) z를 p(x|z)로 decoding한다.

문제는 p(z)를 Gaussian이라 가정한다 하더라도 모든 경우에 대해서 위 적분을 계산할 수 없다. Bayes rule를 이용해 p(z|x)를 계산해볼 수도 있겠지만 이 역시 intractable하다. VAE에서 사용한 방법은 true posterior p(z|x)를 구할 수 없기 때문에 이를 approximation하는 q(z|x)를 (이는 encoder가 된다) 학습하는 것이다.

그러나 여전히 true posterior는 알 수 없기 때문에 q(z|x)와의 KL divergence는 구할 수가 없다. 위 식에서 RHS의 첫 번째 term 이야기다. RHS의 두 번째 term은 logp(x)의 lower bound가 되고 식을 잘 전개해보면 lower bound는 아래와 같게 된다.

위 likelihood를 maximize하면 logp(x)에 가까워진다. 계산의 편의를 위해 q(z|x) ~ N(z; mu, variance), p(z) ~ N(z; 0, 1)로 가정한다. 요새 VAE 관련 논문만 보니 재밌긴 한데 머리가 아프다.
References
[1] D. P. Kingma et al., Auto-Encoding Variational Bayes, ICLR, 2014