VAE - (1) Auto-Encoding Variational Bayes

어쩌다 보니 인턴을 시작한 지 한 달이 지났다. 그동안 VAE, WAE 등의 Auto Encoder 모델을 공부하였는데, 이번 글에서는 내가 주로 맡은 VAE에 대해 적어보고자 한다.

Auto Encoder는 주어진 이미지를 낮은 차원의 latent vector로 mapping 하는 Encoder와, 이 latent vector를 다시 주어진 이미지와 비슷한 이미지로 mapping 하는 Decoder로 이루어진 Neural Network이다. 모델을 잘 학습시킨다면 낮은 차원의 vector만을 가지고도 본래의 고용량 이미지를 만들 수도 있고, 임의의 vector를 가지고 새로운 이미지를 생성할 수도 있다. 전자와 후자를 각각 reconstructiongeneration라고 한다.

Schema of Auto Encoder (출처: wikipedia)

예를 들자면, AI에서 자주 등장하는 28X28 MNIST 데이터를 학습시킨다고 가정해보자. 첫째로, 주어진 784차원의 이미지를 8차원의 vector로 mapping 할 수 있으며(encoding), 이 vector만을 가지고 본래의 이미지와 비슷한 이미지를 만들어낼 수 있다(decoding). 둘째로는, 임의의 8차원 vector로 새로운 손글씨 숫자 이미지를 생성할 수 있는 것이다.

이러한 Auto Encoder의 종류는 대개 loss function을 어떻게 정의하냐에 따라 나뉜다. VAE의 경우에는 decoder에서 해당 데이터가 나올 확률의 log 값의 lower bound와, encoder에서의 posterior 분포와 실제 posterior 분포의 KL-Divergence 값의 차로 정의된다. 이렇게 정의하게 된 배경과 이론에 대해서는 VAE 마지막 글에서 다뤄보도록 하겠다.

다음 글에서는 VAE에 사용되는 Architecture에 대하여 알아보자.

Next Article: VAE - (2) Architecture

Share