<- Back to projects and build log

VAE

설명 잘 해놓은 블로그 Background [[Auto Encoder]] [[Maximum Likelihood]] 주목할 점 1. 왜 VAE는 Auto Encoder와 비슷한 구조가 되었을까? (탄생 과정은 관련이 없지만) 2. 과연 [[Variational Inference]]라는 것은 뭘까? 그리고 VAE와 어떤 관련이 있을까? 기존 생성 모델의 문제점 Generator $g \theta...

vae / variational-inference / auto-encoder / elbo
VAE 글 대표 일러스트
Jeffrey Kim의 SecondBrain 빌드 로그 아티클 커버

Quick context

First, this page captures one concrete build-log step, research note, or project lesson from Jeffrey Kim.

Next, use the tags, related reading, and home archive to move from this note to deeper material in the same topic cluster.

Finally, follow the RSS feed if you want the next experiment, retrospective, or paper review as soon as it ships.

설명 잘 해놓은 블로그

Background

주목할 점

  1. 왜 VAE는 Auto Encoder와 비슷한 구조가 되었을까? (탄생 과정은 관련이 없지만)
  2. 과연 [[Variational Inference]]라는 것은 뭘까? 그리고 VAE와 어떤 관련이 있을까?

기존 생성 모델의 문제점

Pasted%20image%2020250317135734 Generator gθ(.)g_\theta(.)는 어떠한 랜덤 변수 zz에 대해서, 어떠한 표본 xx(train data)와 유사하게 생성하도록 학습을 한 것이다. likelihood p(xgθ(z))p(x|g_\theta(z))를 최대화하기 위하여 학습이 될 것이다.

문제 -> 이렇게 하니깐 원래 샘플도 잘 생성을 못함…

가우시안 분포에서 샘플링한다고 생각하면, Maximum Likelihood 문제를 MSE (Mean Squared Error)의 관점으로 바꿀 수 있음. Pasted%20image%2020250317140205

해결법 => 단순한 가우시안 분포에서 샘플링하지 말고, 이상적인 샘플링 함수(posterior)에서 샘플링해서 최소 원래 표본 xx랑 비슷하도록 생성하게 하자!!

VAE란?

VAE는 [[Variational Inference]]에서 true posterior을 구하기 위한 접근 방식 중 하나다. (다른 접근 방식? 어쩌면 [[Twist SMC]])

Pasted%20image%2020250317141004

인코더를 사용해서 p(zx)p(z|x)를 근사하는 가우시안 분포를 찾아주고, 거기서 샘플링해서 표본 xx와 유사하도록 생성하는 decoder를 학습한다.

Encoder에서 적어도 x에 대한 성능이 보장이 되는 최적의 샘플링 함수를 만들기 위해 와 를 추정하여 가우시안 함수를 구성합니다. 이 이미지 x에 대한 최소한의 성능은 보장하면서, 이미지를 잘 컨트롤하여 여러 이미지를 생성하기 위해 z를 샘플링합니다. 이제 이 z를 Decoder에 입력하여 다시 x 이미지를 생성합니다.

ELBO (Evidence Lower Bound)

Pasted%20image%2020250317141240

여기서 p(x)p(x)는 인풋 xx를 넣었을 때, 그것과 유사한 것을 잘 생성해내는 함수이다. 이러한 함수와 가장 유사한 함수를 만드려고 하는데, 그 loss를 계산해보면 위와 같다.

중요한 점은, ELBO를 ML([[Maximum Likelihood]])에 가깝게 최대화 하면 KL Divergence가 자연스럽게 0으로 수렴하고, 이는 qϕ(zx)q_\phi(z|x) (VAE의 인코더)가 true posterior인 p(zx)p(z|x)에 가까워 진다는 것이다!

이 ELBO를 최적화하는 관점으로 식을 정리하면 이렇게 나온다.

Li(ϕ,θ,xi)=Eqϕ(zxi)[log(xigθ(z))]+KL(qϕ(zxi)p(z))L_i(\phi, \theta, x_i) = -\mathbb{E}_{q_\phi}(z|x_i)[log(x_i|g_\theta(z))] + KL(q_\phi(z|x_i)||p(z))

앞항은 Reconstruction Error이고, 뒷항은 Regularization Error이다.

[[Reparameterization Trick]]

결론

Pasted%20image%2020250317142704

나는 latent 보고 뭔가 잘 생성하는 생성 모델을 만들고 싶어. 근데 그냥 아무무 가우시안에서 생성하니 자기 자신도 생성을 잘 못하네. 그래서 아무무 가우시안이 아니라 자기 자신을 참고한 확률 분포 p(zx)p(z|x)에서 샘플링한 다음에 생성하고 싶어. 그런데 p(zx)p(z|x)는 그냥 못구해. 그래서 이것을 구하기 위해서 딥러닝 모델을 쓸거야. 그래서 인코더가 가우시안 분포를 사용해서 p(zx)p(z|x)를 근사하고, 해당 근사된 분포에서 샘플링해서 디코더를 통과하면 원래 넣어준 인풋과 유사하게 생성하도록 훈련할거야. 이렇게 하니깐 오토인코더랑 어느정도 비슷하게 되었네??

훈련을 위해서는 Reconstruction Error, 즉 원래 인풋과 비슷하게 생성이 되었는가? Regularization Error, 인코더에서 나온 것들이 잘 정규화 되었는가? 이 두가지를 쓸거고, 학습을 위해 [[Reparameterization Trick]]을 사용할거다!

Related reading

같이 읽으면 좋은 프로젝트 로그와 연구 노트를 이어서 탐색해보세요.

  • Reparameterization Trick [[VAE]]에서 이어지는 내용.. VAE의 Regularization Error는 학습 중에 Backpropagation이 불가능하다. (왜냐하면 $z$는 랜덤변수라 $p(z)$는 Backpropagation이 불...
  • Diffusion Model (DDPM) 참고 블로그 : 링크 배경지식 : [[VAE]] 원본 논문 : 논문 논문의 의의 논문은 매우 복잡하지만 내가 파악한 의의는 기존의 DM에서의 Log likelihood 형태의 Loss를 MSE 기반의 Loss 형태로...
  • Variational Inference [[VAE]]에서 이어짐... 여기서 True Posterior 은 이상적인 샘플링 함수 이다. 어떻게 이상적이냐면, 표본 $x$를 이미 보여준 샘플링 함수인 것이다. 즉, true posterior은 $p(z|x)...
  • Latent Diffusion Model (LDM) 논문 [[Diffusion Model (DDPM)]]을 먼저 습득하세요! Latent에 Diffusion을 적용한다 (원래는 픽셀에 직접 적용했었다) 논문의 의의 (Contributions) 1. pixel leve...