VAE
VAE란 input x를 잘 설명하는 feature를 추출하여 latent vector z에 담고 x와 유사하지만 완전히 새로운 데이터를 생성하는 모델이다.
일반적으로 feature는 Gaussian distribution을 따르고 input x를 잘 설명하는 feature를 찾기 위해서 latent z는 평균과 분산값을 가진다.
$$ z \longrightarrow x $$
$$ p_{\theta}(z) \longrightarrow p_{\theta}(x \mid z^{(i)}) $$
- p(z): latent vector z의 확률밀도함수(Gaussian)
- p(x|z): 주어진 z에서 특정 x가 나올 조건부 확률에 대한 확률밀도함수
- θ: 모델의 파라미터
구조
input x를 Encoder에 통과시켜 latent vecter z를 구한다. (z는 Gaussian을 따르고 파라미터 평균과 분산을 통해 샘플링됨)
latent vector z를 Decoder에 넣어 input x와 비슷한 이미지를 생성한다.
학습이 완료된 Encoder의 경우 input의 다양한 특징들이 확률 변수가 되어 각각의 평균과 분산을 가지게 되며 위와 같이 Gaussian 분포로 시각화할 수 있다. 이 분포를 통해 샘플링된 z가 입력 데이터의 분포를 잘 근사하는 모델을 생성하게 된다.
Encoder
Encoder는 input x를 latent space로 변환하는 역할을 한다.
input x가 주어졌을 때 latent vector z의 분포를 x와 근사하게 만드는 역할을 하며 \( q(z \mid x) \)를 가장 잘 나타내는 정규분포의 평균과 표준편차를 찾는 것이 목적이다.
posterior은 latent vector z의 분포를 뜻함(다른 자료 이해를 위해 넣음)
Decoder
latent space를 input으로 변환하는 역할을 하며 input의 true distribution을 approximate 하는 것이 목표이다. 이 말은 latent vector z가 주어졌을 때 \( p(z \mid x) \)를 approximate하는 것이 목표라는 뜻이며 generative model의 역할을 하게 된다.
ELBO
https://pasongsong.tistory.com/482
ELBO는 \( p(z \mid x) \) 가 다루기 힘든 분포를 이루고 있을 때 이를 다루기 쉬운 분포인 \( q(x) \)로 표현하는 과정에서 두 분포의 차이(KL Divergence)를 최소화하기 위해 사용된다.
KL을 최소화하지 못하기 때문에(미분 안됨) ELBO의 값을 최대화하는 파이를 찾아야 한다.
우리는 ELBO의 최대화하는 파이와 likelihood를 최대화하는 세타를 찾아야 하는 것을 고려하면 최종 식이 나오고 이는 ELBO 식을 최대화한 것과 같다.
$$ argmax_{ \theta , \phi } \sum_i -E_{q,\phi(z \mid x_{i})}[log(p(x_{i} \mid g_{\theta(z)}))]+KL(q_{\phi}(z \mid x_{i}) \mid \mid p(z)) $$
AE VS VAE
AE는 Encoder 학습을 위해 Decoder를 사용했다면 VAE는 Decoder학습을 위해 Encoder를 추가하였다.
VAE는 단순히 잠재 코드를 하나의 값으로 재구성하는 AE에서 발전한 구조로 Gaussian 확률 분포에 기반한 확률값으로 나타낸다.
AE의 잠재 공간은 군집이 비교적 넓게 퍼져있고 중심으로 잘 뭉쳐있지 않지만 VAE가 만든 잠재공간은 중심으로 더 잘 뭉쳐있는 것을 확인할 수 있다. 따라서 원본 데이터를 재생하는 데에 VAE가 더 좋은 성능을 보이고 이를 통해 데이터의 특징을 파악하는 게 더 유리하다.
https://www.youtube.com/watch?v=rNh2CrTFpm4
'Generative model' 카테고리의 다른 글
[GAN] GAN의 평가 지표 (0) | 2023.01.03 |
---|---|
[GAN] Simple 1010 pattern (0) | 2022.12.30 |
[GAN] GAN 학습 (1) | 2022.12.29 |
[GAN] 생성 모델 GAN의 이해 (0) | 2022.12.29 |
[GAN] GANs Generative Adversarial Networks (0) | 2022.12.26 |