VAE 이론 정리

실제로 작동하는 생성 모델을 만들기 위한 핵심 아이디어들

by 송동훈 Hoon Song

딥러닝을 공부하면서 VAE(Variational Autoencoder)를 처음 접했을 때, '왜 이렇게 복잡하게 만들었을까?'라는 생각이 들었다. 일반 Autoencoder도 충분히 복잡한데, 왜 굳이 확률분포를 끌어들이고 KL Divergence 같은 것까지 더해야 하는 걸까?


하지만 이론을 차근차근 뜯어보니, VAE의 각 구성 요소들이 모두 '실제로 의미 있는 새로운 데이터를 생성하기 위한' 명확한 목적을 가지고 있다는 것을 깨달았다. 그 핵심 아이디어들을 정리해보려 한다.


1. 왜 확률분포를 사용하는가?

Screenshot 2025-05-27 at 11.45.23 AM.png

일반 Autoencoder는 입력 데이터를 하나의 고정된 latent vector로 압축한다. 하지만 이렇게 되면 새로운 데이터를 생성하기 어렵다. latent space에서 임의의 점을 선택해도 의미 있는 결과가 나올 보장이 없기 때문이다.

Screenshot 2025-05-27 at 11.52.46 AM.png

VAE는 이 문제를 해결하기 위해 각 입력 데이터를 '하나의 점'이 아닌 '확률분포'로 표현한다. 구체적으로는 평균(μ)과 표준편차(σ)를 출력해서 가우시안 분포를 만든다. 이렇게 하면 같은 입력이라도 여러 가지 변형된 결과를 만들어낼 수 있다.


2. Reparameterization Trick: 학습을 가능하게 하는 핵심 기법

Screenshot 2025-05-27 at 11.58.13 AM.png

VAE에서 가장 영리한 부분이 바로 이것이다. 원래라면 가우시안 분포에서 직접 랜덤 샘플링을 해야 하는데, 이렇게 하면 gradient가 흘러가지 않아서 backpropagation이 불가능하다.

Screenshot 2025-05-27 at 12.00.01 PM.png

Reparameterization trick은 이를 우회한다:

표준정규분포 N(0,1)에서 ε를 샘플링

z = μ + σ × ε로 계산


이렇게 하면 랜덤성은 ε에만 있고, μ와 σ에 대해서는 gradient를 계산할 수 있다. 같은 결과를 얻으면서도 학습이 가능해지는 것이다.


3. KL Divergence: latent space를 정리하는 역할

Screenshot 2025-05-27 at 11.58.13 AM.png

VAE의 loss function은 두 부분으로 구성된다:

Reconstruction Loss: 원본과 복원된 이미지가 얼마나 비슷한가

KL Divergence Loss: 학습된 분포가 표준정규분포와 얼마나 비슷한가


KL Divergence term이 하는 일은 각 데이터의 latent 분포를 표준정규분포에 가깝게 만드는 것이다. 이는 두 가지 효과를 가져온다:

평균을 0 근처로 이동시켜 분포들이 서로 겹치게 함

표준편차를 1 근처로 만들어 분포가 너무 좁지 않게 함


4. Regularity: 좋은 생성 모델의 핵심 조건

Screenshot 2025-05-27 at 12.19.31 PM.png

VAE가 잘 작동하려면 latent space가 'regular'해야 한다. 이는 두 가지 조건으로 나뉜다:


1) Continuity (연속성)

latent space에서 가까운 두 점을 decoder에 넣었을 때, 비슷한 결과가 나와야 한다. 만약 아주 가까운 두 점이 완전히 다른 이미지를 만든다면, 이는 좋은 생성 모델이 아니다.


2) Completeness (완전성)

latent space의 어떤 점을 선택하더라도 decoder가 의미 있는 결과를 만들어야 한다. 중간에 빈 공간이 있어서 이상한 결과가 나오면 안 된다.


5. 일반 Autoencoder vs VAE: 왜 VAE가 생성에 더 적합한가

Screenshot 2025-05-27 at 12.20.14 PM.png

일반 Autoencoder로 만든 latent space는 보통 '구멍이 뚫린 치즈' 같다. 각 클래스의 데이터들이 작은 덩어리로 뭉쳐있고, 사이사이에 빈 공간이 많다. 이런 공간에서 샘플링하면 decoder가 학습해본 적 없는 영역이라 이상한 결과가 나온다.


반면 VAE는 regularization을 통해 latent space를 '부드럽게' 만든다. 분포들이 서로 겹치고, 중간 지역도 의미 있는 값들로 채워진다. 그래서 어디서 샘플링해도 reasonable한 결과가 나온다.


6. 실무적 관점에서의 교훈


VAE를 공부하면서 느낀 것은, 복잡해 보이는 이론도 결국 '실제 문제를 해결하기 위한' 구체적인 아이디어들의 조합이라는 점이다.


각 구성 요소가 해결하는 문제:

확률분포 → 다양성 확보

Reparameterization → 학습 가능성

KL Divergence → 공간 정리

Regularity → 안정적 생성


이런 식으로 문제를 쪼개고, 각각에 대한 해결책을 찾아가는 과정이 좋은 모델을 만드는 핵심인 것 같다. 그리고 이런 사고방식은 다른 영역에서도 충분히 응용할 수 있을 것이라 생각한다.


앞으로도 복잡한 이론을 마주할 때마다 '이게 실제로 어떤 문제를 해결하려는 건지'부터 생각해보려 한다. 그러면 겉보기에 어려운 내용도 조금 더 이해하기 쉬워질 것 같다.

keyword
일요일 연재
이전 05화VAE, 불확실성을 받아들이는 법