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ϕ(z∣x)‖p(z))
Evidence of Lower BOund (ELBO)

x 의 likelihood pθ(x) 를 최대화해야 기존 input x 와 비슷한 distribution 의 data 를 생성할 수 있음
pθ(x)=∫pθ(x,z)dz=∫pθ(z)pθ(x∣z)dz=∫pθ(x)pθ(z∣x)dz
pθ(z) 는 Gaussian 을 따른다고 가정하고 pθ(x∣z) 는 Decoder 에 해당하는 부분으로 Neural Net 으로 구성 가능하지만 적분이 어려워서 문제가 됨
그럼 식을 Bayes Rule 을 적용하여 pθ(z∣x)=pθ(x∣z)pθ(z)/pθ(x) 과 같이 구성하면?
마찬가지로 pθ(x∣z) 는 Decoder 에 해당하는 부분, pθ(z) 는 Gaussian 을 따른다고 가정하더라도 pθ(x) 를 구할 수 없음
따라서 pθ(x∣z) 라는 Decoder 를 가장 잘 approximate 할 수 있는 qϕ(z∣x) 라는 Encoder 를 만들었음
기존 likelihood 식 양변에 로그를 취하면
logpθ(x)=∫pθ(z∣x)logpθ(x)dz
이때 위에서 말한 것처럼 Encoder 를 통하여 Approximation pθ(z∣x)≈qϕ(z∣x) 을 적용
logpθ(x)=∫qϕ(z∣x)logpθ(x)dz=∫qϕ(z∣x)logpθ(x∣z)p(z)pθ(z∣x)dz=∫qϕ(z∣x)logpθ(x∣z)p(z)pθ(z∣x)qϕ(z∣x)qϕ(z∣x)dz=∫qϕ(z∣x)logpθ(x∣z)dz−KL(qϕ(z∣x)‖p(z))+KL(qϕ(z∣x)‖pθ(z∣x))≥∫qϕ(z∣x)logpθ(x∣z)dz−KL(qϕ(z∣x)‖p(z))
마지막 줄을 ELBO 라고 부르며, qϕ(z∣x)logpθ(x∣z)dz 는 Reconstruction loss, KL(qϕ(z∣x)‖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 |