Processing math: 100%

AI/Deep Learning

Variational Auto-Encoder (VAE)

이성훈 Ethan 2024. 2. 28. 14:45

Variational Auto-Encoder (VAE)

: Input image x 를 잘 표현하는 latent vector z 로 바꾸고, 이 z 를 다시 image x 와 유사하지만 다른 데이터 x 을 생성하는 Generative Model

 

➡︎ Auto-Encoder 라는 단어가 들어가기 때문에 관련이 있어보이지만, 구조적으로만 비슷해보일뿐, 사용 목적은 다름

 

 

Encoder

 

Input x 가 주어졌을 때 latent z 의 분포를 approximate 하는 것이 목표

 

즉, 평균 μ 와 표준편차 σ 를 구하고 noise ϵ 을 추가하여 latent z 를 구성

 

 

Decoder

 

Latent z 가 주어졌을 때 x 의 분포를 approximate 하는 것이 목표

 

Latent z 를 output x 으로 바꾸는 과정인데, AE 처럼 in/out 을 똑같이 사용한다면 계속 같은 이미지만 생성

 

따라서 N(0,I) 에서 샘플링한 noise ϵ 을 추가하여 다양한 이미지를 생성할 수 있게함

 

I 는 단위 행렬을 뜻함

 

 

Reparameterization Trick

 

Latent z 를 구하는 부분에서 생기는 의문은 왜 바로 z 를 Normal distribution 에서 sampling 하지 않고 위와 같은 방식으로 하는가?

 

이유는 N 에서 바로 sampling 하여 z 를 구하는 경우엔 Backpropagation 이 불가능하여, 위와 같은 방식으로 우회

 

 

Loss Function

 

Reconstruction loss: Output 생성을 잘 할 수 있도록 하되, Decoding 된 output 이 Bernoulli 분포를 따르기 때문에 CE loss 의 형태로 구성

(Bernoulli 대신 Gaussian 으로 decoder 를 구성 가능)

 

Regularization: Encoding 된 값이 Normal distribution 을 따라야하기 때문에, KL divergence 로 구성

 

KL(qϕ(zx)p(z))

 

 

Evidence of Lower BOund (ELBO)

 

 

 

 

x 의 likelihood pθ(x) 를 최대화해야 기존 input x 와 비슷한 distribution 의 data 를 생성할 수 있음

 

pθ(x)=pθ(x,z)dz=pθ(z)pθ(xz)dz=pθ(x)pθ(zx)dz

 

pθ(z) 는 Gaussian 을 따른다고 가정하고 pθ(xz) 는 Decoder 에 해당하는 부분으로 Neural Net 으로 구성 가능하지만 적분이 어려워서 문제가 됨

 

그럼 식을 Bayes Rule 을 적용하여 pθ(zx)=pθ(xz)pθ(z)/pθ(x) 과 같이 구성하면?

 

마찬가지로 pθ(xz) 는 Decoder 에 해당하는 부분, pθ(z) 는 Gaussian 을 따른다고 가정하더라도 pθ(x) 를 구할 수 없음

 

따라서 pθ(xz) 라는 Decoder 를 가장 잘 approximate 할 수 있는 qϕ(zx) 라는 Encoder 를 만들었음

 

기존 likelihood 식 양변에 로그를 취하면 

 

logpθ(x)=pθ(zx)logpθ(x)dz

 

이때 위에서 말한 것처럼 Encoder 를 통하여 Approximation pθ(zx)qϕ(zx) 을 적용

 

logpθ(x)=qϕ(zx)logpθ(x)dz=qϕ(zx)logpθ(xz)p(z)pθ(zx)dz=qϕ(zx)logpθ(xz)p(z)pθ(zx)qϕ(zx)qϕ(zx)dz=qϕ(zx)logpθ(xz)dzKL(qϕ(zx)p(z))+KL(qϕ(zx)pθ(zx))qϕ(zx)logpθ(xz)dzKL(qϕ(zx)p(z))

 

 

마지막 줄을 ELBO 라고 부르며, qϕ(zx)logpθ(xz)dz 는 Reconstruction loss, KL(qϕ(zx)p(z)) 는 Regularization loss 로 보면 됨

'AI > Deep Learning' 카테고리의 다른 글

Self Attention, Cross Attention  (0) 2024.03.11
Autoregressive Model  (0) 2024.03.08
Generative Adversarial Nets (GAN) 수식으로 이해  (0) 2023.09.13
Penultimate Layer  (0) 2023.03.17
Transfer learning  (0) 2022.02.15