Paper review/CV

VAE: Auto-Encoding Variational Bayes

오서영 2025. 5. 9. 14:22

논문 원본: https://arxiv.org/abs/1312.6114

논문 요약: 입력 데이터를 확률적 잠재 변수로 인코딩하여 재구성하면서, 샘플링 가능한 연속적인 잠재 공간을 학습하는 생성 모델인 Variational Autoencoder(VAE)를 제안한 논문


1. VAE는 무엇이고 왜 중요한가?

VAE(Variational Autoencoder)는 데이터에서 잠재 공간(latent space)을 확률적으로 학습하고, 이 잠재 공간을 통해 새로운 데이터를 생성할 수 있는 모델이다. 단순히 데이터를 압축하고 복원하는 오토인코더에서 한 걸음 더 나아가, 학습된 공간에서 다양한 샘플을 생성할 수 있다는 점에서 매우 중요하다.

기존 오토인코더는 학습 데이터를 그대로 복원하는 데는 유용하지만, 학습된 벡터 공간에서 의미 있는 생성이 불가능했다. 예를 들어 MNIST 숫자를 학습한 오토인코더의 인코더는 각 숫자 이미지를 특정 고정된 벡터로 매핑한다. 하지만 이 벡터들 사이를 보간하거나 랜덤 벡터를 넣으면 쓸모없는 결과가 나오기 쉽다.

VAE는 이 문제를 해결한다. 각 데이터 포인트를 단일 벡터가 아니라 확률분포(보통 정규분포)로 표현하고, 그 분포에서 샘플링한 벡터로 복원을 시도한다. 이렇게 하면 잠재 공간의 연속성과 다양성이 확보되고, 새로운 데이터를 생성하거나 스타일 전이, 노이즈 제거 등의 작업에도 활용할 수 있게 된다.

 2. Autoencoder의 한계와 확장

2.1 Autoencoder란?

Autoencoder는 입력 데이터를 압축했다가 다시 복원하는 신경망이다. 인코더는 고차원 입력 데이터를 저차원 잠재 공간으로 압축하고, 디코더는 이를 다시 원래 데이터로 복원한다.

출처: https://lcyking.tistory.com/entry/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-VAEVariational-Auto-Encoder

 

하지만 문제는, Autoencoder의 잠재 변수 z고정된 벡터로 작동한다는 것이다. 즉, 샘플을 생성할 때 쓸 수 없고, 분포 개념이 없어서 '이 벡터 근처는 어떤 데이터일까?'라는 질문에 대답할 수 없다.

 3. VAE의 핵심 아이디어: “확률적인 잠재 공간”

VAE는 이런 고정된 잠재 벡터를 확률분포로 바꾼다. 즉, 인코더는 입력을 보고 단일 벡터가 아니라, **평균 μ\mu와 표준편차 σ\sigma**를 출력한다. 이 둘을 이용해 **정규분포 N(μ,σ2)N(\mu, \sigma^2)**를 만들고, 이 분포에서 샘플링한 zz를 디코더에 전달한다.

이 구조는 다음과 같은 장점을 갖는다:

  • 새로운 샘플 생성 가능: zz를 랜덤하게 샘플링해서 유의미한 결과를 생성할 수 있다.
  • 잠재 공간이 연속적이다: 벡터 간 보간(interpolation)이 가능하다.
  • 모든 입력을 공통된 분포로 정규화: 인코더가 출력하는 분포들을 정규분포에 가깝게 만들어, 전체 구조가 일반화된다.

출처: https://lcyking.tistory.com/entry/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-VAEVariational-Auto-Encoder

 

4. 수식으로 이해하는 VAE

4.1 우리가 최적화하려는 목표

VAE의 궁극적 목표는 다음과 같다:

“입력 x가 주어졌을 때, 그 x를 가장 잘 설명할 수 있는 생성 분포 p(x)를 학습하고자 한다.”

이 수식은 아래처럼 표현된다:

이 식은, 잠재변수 z를 사전 분포 p(z)로부터 샘플링하고, 해당 z에서 x가 생성될 확률을 모두 모아 적분하는 것이다.

하지만 문제는, 이 적분이 너무 복잡하다는 것이다. 그래서 VAE는 이를 변형해서 근사적으로 계산 가능한 식(ELBO)로 바꾼다.

4.2 Evidence Lower Bound (ELBO)

  • 첫 항은 ‘재구성 오차’로, 생성된 x′x'가 실제 xx와 얼마나 비슷한가를 의미한다.
  • 두 번째 항은 잠재 공간이 얼마나 표준 정규분포에 가까운지를 나타내는 KL divergence 항이다.

ELBO는 결국 “입력 데이터를 잘 복원하면서, 잠재 공간을 정규화된 분포로 유지하자”는 목적을 갖는다.

4.3 Reparameterization Trick

여기서 중요한 수학적 기법이 등장한다. 바로 Reparameterization Trick이다.

문제는, 인코더가 출력하는 z∼q(z∣x)가 확률적이라는 점이다. 이걸 직접 샘플링하면 미분이 불가능해진다.

해결책은 다음과 같다:

 

즉, 표준 정규분포에서 ϵ을 샘플링하고, 여기에 μ, σ를 적용해 원하는 분포를 샘플링 대신 연산으로 재구성한다.

이렇게 하면 backpropagation이 가능해져, 딥러닝 학습이 가능해진다.

출처: https://velog.io/@lee9843/VAE-Auto-Encoding-Variational-Bayes-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

5. VAE의 손실 함수 구성

VAE의 최종 손실 함수는 다음과 같다:

  • 첫 번째 항: 입력 x와 디코더가 복원한 xx'의 차이를 최소화한다.
  • 두 번째 항: 인코더가 만든 분포 q(z|x)가 정규분포 p(z)와 비슷해지도록 만든다.

이 두 항의 균형이 잘 잡혀야, 잘 복원되면서도 생성 가능한 모델이 완성된다.

출처: https://velog.io/@lee9843/VAE-Auto-Encoding-Variational-Bayes-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

 

6. 정리: 전체 구조 흐름

이 흐름 덕분에 VAE는 모든 과정이 학습 가능한 형태로 정리되고, 확률적 생성이 가능해진다.

7. 실험 결과 요약

  • MNISTFrey Face 등에서 실험한 결과, VAE는 ELBO 기준으로 좋은 결과를 보였다.
  • 잠재 공간이 정규분포로 정돈되었기 때문에, 랜덤 샘플링으로도 안정적인 이미지 생성이 가능했다.
  • 아래는 잠재 공간에 따라 생성된 이미지 예시다.

8. 요약 정리

  • VAE는 확률적 오토인코더로, 데이터를 생성 가능한 구조로 바꾼다.
  • 핵심 수식은 ELBO, 학습은 이를 최대화하는 방식으로 진행된다.
  • 샘플링이 미분 불가능하다는 문제는 Reparameterization Trick으로 해결된다.
  • 이미지 생성, 데이터 보완, 잠재 공간 분석 등 다양한 활용 가능성이 있다.
  • 이후 등장하는 GAN, Diffusion, BERT 등의 기반 개념이기도 하다.

레퍼런스

https://velog.io/@lee9843/VAE-Auto-Encoding-Variational-Bayes-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

https://lcyking.tistory.com/entry/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-VAEVariational-Auto-Encoder