Variational Autoencoder

Variational Autoencoder(VAE)는 autoencoder 를 확률 모델로 확장한 generative model 이다. 일반 autoencoder 가 입력을 하나의 latent vector 로 압축하고 복원한다면, VAE 는 입력마다 latent distribution 을 추정하고 그 분포에서 sampling 한 로 데이터를 복원한다.

이 차이 때문에 VAE 는 단순한 reconstruction 모델이 아니라, 새로운 sample 을 생성할 수 있는 모델로 볼 수 있다.

B) 동작 흐름

x
 -> encoder
 -> mean μ, variance σ²
 -> z = μ + σ ⊙ ε
 -> decoder
 -> reconstructed x

Encoder 는 입력 를 latent distribution 의 parameter 인 , 로 바꾼다. 그 다음 를 뽑고, reparametrization trick 으로 를 만든다. Decoder 는 이 로부터 원래 입력과 비슷한 데이터를 복원한다.

C) Objective

VAE 의 학습 목표는 보통 reconstruction term 과 KL term 으로 구성된다.

첫 번째 항은 decoder 가 입력을 잘 복원하도록 만들고, 두 번째 항은 encoder 가 만든 latent distribution 이 prior , 보통 표준 정규분포와 너무 멀어지지 않게 한다. 이 목적 함수는 ELBO 로 해석할 수 있다.

D) 왜 Reparameterization Trick 이 필요한가

Sampling 은 그 자체로는 gradient 를 통과시키기 어렵다. VAE 는 randomness 를 쪽으로 분리하고, 는 미분 가능한 연산 안에 두어서 encoder 를 gradient descent 로 학습할 수 있게 만든다.

E) 실무적 감각

VAE 의 latent space 는 부드럽고 interpolation 이 잘 되는 편이다. 하지만 pixel-level reconstruction 을 평균적으로 맞추는 경향 때문에 image generation 에서는 결과가 흐릿해질 수 있다.

추천 시스템에서는 user/item interaction 을 확률적으로 복원하는 방식으로 응용된다. 예를 들어 Variational Autoencoders for Collaborative Filtering 같은 흐름은 VAE 를 collaborative filtering 에 맞게 해석한다.