Previous Article: VAE - (2) Architecture
총 두가지 데이터셋에 대하여 학습을 진행하였다. 동일하게 100 epoch만큼 훈련시켰으며, 사용한 Adam Optimizer의 parameter는 beta1이 0.9, beta2가 0.999이다. batch 크기는 100, learning rate은 0.001로 설정하였다.
MNIST
MNIST데이터에 대한 설명은 앞선 글에서 했으니 바로 결과를 분석해보자.
위쪽 4X8의 이미지들은 input image이며, 이를 encoder와 decoder, 그리고 sigmoid를 적용했을 때의 reconstructed image는 아래쪽 4X8 이미지에 해당한다. 비록 MNIST가 간단한 데이터지만 굉장히 정교하게 reconstruct함을 알 수 있다.
위 그림의 8X8 이미지들은 각각 gaussian분포에서 랜덤하게 뽑은 8차원 벡터를 decoder 및 sigmoid를 적용시킨 이미지이다. 비록 숫자와는 거리가 먼 그림들도 생성되었지만, 8~90%가 손글씨 이미지처럼 보임을 알 수 있다. MNIST데이터는 28X28의 단일채널 이미지이므로 784차원에 해당하는데 이 VAE모델을 이용한다면 단 8차원만으로 다양한 MNIST데이터를 생성할 수 있다는 것을 의미한다.
YaleB Face
YaleB Face데이터는 총 28명의 사람들의 광원의 각도, 표정에 따른 얼굴이 제공되는 데이터이다. 마찬가지로 reconstruction과 generation결과를 살펴보면 아래와 같다.
마찬가지로 위쪽은 input image, 아래쪽은 reconstructed image에 해당한다. 한눈에 알 수 있듯이 얼굴 데이터는 상당히 복잡하며 차원 역시 64X64로 높은 데이터임에도 본래 이미지를 잘 reconstruct함을 알 수 있다. 한 사람의 얼굴만 있는 것이 아니라 28명의 얼굴이 있음에도 모든 사람의 얼굴을 잘 reconstruct한다는 것은 학습된 모델이 주어진 28명의 얼굴형태나 특징을 잘 함축하여 가지고 있다고 볼 수 있다.
반면에 generated image는 그리 정교하지 못하다. 추측이지만, MNIST에 비해 훨씬 복잡한 데이터임에도 decoder의 architecture나 epoch수가 그대로인 것이 주된 원인으로 보인다. 추후에 conditional model도 다뤄볼 예정인데, generation 결과가 해당 모델에 대해서는 어떻게 개선되는지 살펴보자.
Summary
요약하자면, VAE의 성능은 준수한 것으로 보인다. DCGAN보다 안정적으로 수렴했으며, batch-normalization layer없이도 잘 학습되었다. 특히 reconstruction의 성능은 데이터의 크기와 관계없이 상당히 좋았다. 다만, 조금 복잡한 데이터의 경우에 generation이 정교하게 되지 못한다는 점이 이 모델의 유일한 단점으로 보이는데, 더 좋은 architecture나 충분한 수의 epoch가 제공된다면 해결되어질 것으로 예상된다.