VAE를 공부하기 전에 AE에 대해서 간단하게 이해하고 넘어가면 좋다.
encoder, decoder, latent space는 어떤 정보를 담고 있는지 알 수 있다.
GAN, diffusion model 과 같이 generative model의 한 종류이다.
생성 모델의 목적은 data와 같은 분포를 가지는 smaple 분포에서 sample을 뽑아 새로운 것을 생성해 내는 것이 목표다.
(1) 주어진 training data가 p_data(x)(확률밀도함수)가 어떤 분포를 가지고 있다면, sample 모델 p_model(x) 역시 같은 분포를 가지면서, (sampling 부분)
(2) 그 모델을 통해 나온 inference 값이 새로운 x라는 데이터이길 바란다. (Generation 부분)
VAE, GAN, Diffusion 모델을 위 생성 모델의 목적과 관하여 간단히 비교해 보면 다음과 같다.
GAN의 경우 생성된 데이터의 품질은 우수하지만, 학습 과정의 특징 상 sample 공간을 모두 커버하면서 학습되기 어렵다.
VAE의 경우 데이터 공간의 전체 영역에서 샘플링이 가능하지만, 이미지를 넘어서 영상과 같은 고차원 데이터를 생성할 경우 한계가 존재한다.
Diffusion 모델은 위 두 조건에 부합하는 생성 모델로, GAN, VAE와 함께 쓰이고 있다.
- 인코더는 입력 데이터 x에 대해 latent space z값 분포의 평균과 분산을 아웃풋으로 낸다.
- VAE에서는 데이터의 각 특징(latent variable)들의 분포는 정규분포를 따른다고 가정한다.
샘플링 과정에서 우리는 z가 N(𝜇_𝑖, 𝜎_𝑖)를 따른다고 볼 수 있다.
하지만 위와 같이 식을 작성하면 backpropagation과정에서 문제가 생긴다.
이를 해결하기 위해 reparmetrization trick를 사용하여 오른쪽 z로 샘플링한다.
왼쪽과 오른쪽의 z가 같은 정규분포를 따르는 것을 확인할 수 있다.
디코더에서는 z를 인풋으로 받아 deconv를 이용해 원래 이미지 사이즈로 변환한다.
모델의 인코더 네트워크를 q, 디코더 네트워크를 p라고 할 수 있다. 각각의 역할은 위에서 설명되어 있다.
마지막 줄의 각 항이 무엇을 의미하는지 생각해보면
첫 번째 항 : 디코더 네트워크가 z로부터 얼마나 좋은 x를 뽑아내고 있는지
두 번째 항 : 인코더가 x로부터 예상한 z와 기존에 가정한 가우시안 p(z) 가 얼마나 비슷한지
마지막 항 : 마지막 항은 intractable 하다. 계산할 수 없지만, KL dievergence값은 항상 0 이상이다.
즉 앞 두 항의 합이 lower bound 가 된다. 이 앞 두 항을 ELBO : Evidence LowerBOund 라고 한다.
-> 좌변을 maximize하고 싶다면, 이 lower bound 값을 maximize하면 된다.
VAE에서는 아래 두 가지 가정을 적용했을 때
Loss function을 아래와 같이 구할 수 있다.
Auto-Encoding Variational Bayes
Naver D2 이활석 - 오토인코더의 모든 것 - 발표슬라이드
Naver D2 이활석 -오토인코더의 모든 것 - 2/3 - 발표영상
댓글 영역