본문 바로가기

[딥러닝 이론]Variational Autoendcoders(VAE) 본문

AI/딥러닝 이론

[딥러닝 이론]Variational Autoendcoders(VAE)

점핑노루 2021. 8. 24. 18:47

이번 포스트에서는 Variational Autoencoders(VAE)에 대하여 설명해보고자 한다. 해당 이론은 Stanford University의 cs231n 강의를 참조하여 작성하였다.

 

 

1. Autoencoders


VAE 설명에 들어가기에 앞서 autoencoder에 대한 설명을 먼저 할 것이다. VAE는 autocencoder을 응용시킨 모델이기 때문이다.

Autoencoder은 비지도학습 모델의 종류 중 하나이다. 라벨링이 되어 있지 않은 훈련 데이터로부터 lower-dimensional feature representation을 학습한다. 아래 이미지 같은 경우 input x를 통하여 z라는 feature을 encoder을 통하여 생성한다. 그리고 앞서 언급한 바에 따라 z는 x보다 차원이 축소된 형태로 나타난다. z는 x에서부터 가장 중요한 특징들만 뽑아오기를 원하기 때문이다.

 

Encoder의 종류로는 2000년대까지만 해도 linear layers + sigmoid을 주로 사용해왔지만, 기술의 발전에 따라 FC layers, CNN + ReLU 등 여러 방식으로 구성되어 왔다.

 

 

 

Autoencoder은 z가 다시 input x와 비슷한 reconstructed data ^x를 decoder을 통하여 생성하도록 한다. 이 ^x는 x와 같은 차원이지만 x와 최대한 유사한 형태로 이루어져 있다. Decoder은 encoder에서 사용하였던 종류의 것을 똑같이 사용하는 경향이 강하다. 

 

Autoencoder의 예시로 아래 이미지 우측 부분을 살펴보면 되는데, 기존의 input data에서 conv-layer encoder을 통과하여 lower dimension feature에서 나온 z가 다시 upconv-layer decoder을 통과하여 reconstructed data로 변환된 모습을 확인할 수 있다. 

 

또한 x와 ^x의 L2 loss function을 사용하여 모델을 학습시킨다. 이 때 autoencoder은 비지도학습으로 훈련이 되기 때문에 x, ^x 외 다른 변수는 사용하지 않는다. 

 

 

 

Training이 끝나면 decoder부분을 버리고 encoder을 가지고 supervised model을 생성한다. 기존의 lower dimensional feature z를 가지고 classifier을 생성하여 predicted label  ^y을 생성한 다음, 그것을 ground label y와 비교하여 loss function을 구해서 학습시킨다. 

 

 

2. Variational Autoencoders


"Autoencoder의 z로 새로운 이미지를 생성할 수는 없을까?"에 대한 생각으로 등장했던 것이 바로 Variational Autoencoder(VAE)다.

 

VAE들은 latent z라는 항으로 아래와 같은 intractable density function을 생성한다. 이 latent z는 x의 변형을 위한 값이라고 생각하면 된다. 예를 들어 사람의 얼굴을 변형시키는 VAE를 생성한다면 z는 눈썹의 모양 변형, 눈매 변형, 얼굴 부분의 위치 변경 등일 것이다. 또한 "intractable" density function이기 때문에 최적화를 곧바로 진행할 수 없다. 그렇기 때문에 lower bound를 사용하여 likelihood를 계산하는 방법으로 최적화를 진행한다.

 

 

 

VAE는 probabilistic spin on autoencoder이라고도 한다. Latent observation z를 활용하여 training data {x(i)}Ni=1가 conditional distribution으로 생성되었다고 치자. 이것을 하기 위하여 true parameter θ를 알아내고자 한다.  p(z)는 간단한 가우시안 분포를 띄고 있다. p(x|z)는 보다 복잡하다. 이는 NN으로 구현할 수 있다. 

 

 

VAE를 학습시키기 위해서(최적의 θ값을 구하기 위해서)는 앞서 본 적분식을 활용하면 된다. 그러나 적분식이 

계산이 되지 않는다는 치명적인 단점이 존재한다. 

 

 

 

Intractability를 조금 더 자세히 살펴보면, data likelihood 및 posterior density(베이즈 정리 활용)가 모두 intractable한 것을 확인할 수 있다. 이 때 p(z)는 simiple Gaussian prior이고 p(x|z)는 decoder neural network이다.

 

이것을 해결하기 위해서는 decoder network에다가 encoder netowrk q(z|x)를 만들어서 이를 p(z|x)와 근사시킨다. 

이 과정을 통하여 tractable한 적분식을 이끌어낼 수 있으며, 우리가 구하고자 하는 data likelihood의 lower bound를 구할 수 있다. 

 

 

 

 

VAE는 probabilistic generation of data이기 때문에 encoder(왼쪽) 및 decoder(왼쪽)이 모두 확률적이다. 그리고 encoder 및 decoder은 각각의 mean과 diagonal covariance 값을 뽑아낸다. 뽑아낸 값에서 distribution을 생성한다. 

 

Encoder이랑 decoder network는 각각 recognition/inference와 generation이라고 불리기도 한다. 

 

 

출처: https://www.youtube.com/watch?v=5WoItGTWV54&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk&index=13&t=2844s 

 

 

'AI > 딥러닝 이론' 카테고리의 다른 글

[딥러닝 이론]RNN과 LSTM이란  (0) 2021.07.29
Comments