어쩌다 보니 인턴을 시작한 지 한 달이 지났다. 그동안 VAE, WAE 등의 Auto Encoder 모델을 공부하였는데, 이번 글에서는 내가 주로 맡은 VAE에 대해 적어보고자 한다.
Auto Encoder는 주어진 이미지를 낮은 차원의 latent vector로 mapping 하는 Encoder와, 이 latent vector를 다시 주어진 이미지와 비슷한 이미지로 mapping 하는 Decoder로 이루어진 Neural Network이다. 모델을 잘 학습시킨다면 낮은 차원의 vector만을 가지고도 본래의 고용량 이미지를 만들 수도 있고, 임의의 vector를 가지고 새로운 이미지를 생성할 수도 있다. 전자와 후자를 각각 reconstruction과 generation라고 한다.
예를 들자면, 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에 대하여 알아보자.