본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Computer Vision

[2025-1] 전연주 - VAE: Auto-Encoding Variational Bayes

by YeonJuJeon 2025. 5. 17.

논문 링크: 1312.6114

코드 링크: 2025-OUTTA-Gen-AI/Reviews/Diffusion/Auto-Encoding Variational Bayes.ipynb at 1b4ef8a85c6d5b0d0cacea47ed0ef1a39f843be7 · youngunghan/2025-OUTTA-Gen-AI


1. Introduction 

연속적인 latent variable 또는 parameter를 포함한 directed probabilistic model(방향성을 갖는 확률 그래프 모델로 latent variable z와 observed data x 사이의 관계를 정의 → generative process를 모델링하는 방식)에서는, 특정 관측값에 대한 posterior 분포 $p(z \mid x)$를 계산하는 것이 매우 어렵거나 불가능한 경우가 많다. 이와 동시에, 실제 문제에서는 데이터가 수십만~수백만 개에 이르는 대규모 데이터셋으로 구성되는 경우가 대부분이기 때문에, 효율적인 학습 알고리즘이 요구된다.

기존의 Variational Bayesian (VB) 방법은 계산 불가능한 posterior 분포를 tractable한 분포 $q(z \mid x)$로 근사하고, 그 근사 분포를 학습하는 방식이다. 그 중 대표적인 방식인 mean-field approach는 각 latent variable 간 독립을 가정하고 $q(z) = \prod_i q(z_i)$ 형태로 분해하여 근사한다. 그러나 이 방법은 보통 ELBO(Evidence Lower Bound)인 $\mathcal{L}(q) = \mathbb{E}_{q(z)}[\log p(x, z) - \log q(z)]$를 최대화하는 방향으로 학습을 수행해야 하며, 이 과정에서 기대값 계산이나 복잡한 적분이 필요하다. 특히 nonlinear한 likelihood 딥러닝 기반 모델에서는 이러한 기대값을 해석적으로 계산하는 것이 불가능하다.

이러한 문제를 해결하기 위해 본 논문은 SGVB (Stochastic Gradient Variational Bayes) 추정기를 제안한다. SGVB는 다음의 장점을 갖는 variational lower bound 추정기이다:

  • 일반적인 stochastic gradient ascent 방식으로 간단하게 최적화 가능
  • 미분 가능한 함수 형태로 재구성되어 backpropagation을 통해 학습 가능
  • unbiased estimator로서 Monte Carlo 기반 추정 시 성능 안정성 보장
  • 대부분의 continuous latent variable 모델에 적용 가능

특히 이 방법은 i.i.d. (independent and identically distributed) 데이터셋에서, 각 데이터포인트가 자기만의 연속적인 latent variable을 가진다는 설정 아래 강력한 효율성을 보인다. 이를 기반으로 본 논문은 AEVB (Auto-Encoding Variational Bayes) 알고리즘을 제안한다.

AEVB는 다음과 같은 특징을 갖는다:

  • SGVB Estimator를 활용하여 recognition model(인코더, $q_\phi(z \mid x)$의 파라미터를 학습
  • Ancestral sampling 방식 $(z \sim p(z),\ x \sim p(x \mid z)$을 사용하여 빠른 posterior 추론이 가능
  • 복잡한 추론 알고리즘(MCMC 등) 없이도 approximate inference 및 모델 학습 수행
  • 학습된 encoder는 recognition, denoising, representation, visualization 등의 다양한 작업에 활용 가능
  • encoder와 decoder 구조를 딥러닝 모델로 구성하면, 우리가 흔히 사용하는 VAE (Variational Autoencoder) 구조가 된다

2. Method

이 절에서 제시하는 전략은, 연속적인 latent variable을 포함하는 다양한 directed graphical model에 대해 variational lower bound estimator (stochastic objective function)를 도출하는 데 사용될 수 있다.

본 절에서는 다음과 같은 전형적인 상황을 다룬다:

  • latent variable에 대해 variational inference를 적용 → variational distribution q(z|x)를 만들어 ELBO 최대화하여 근사

이 설정은 global parameter에 대해서도 variational inference를 수행하는 경우로 확장할 수 있으며, 해당 알고리즘은 부록에 제시되어 있다. 본문에서는 고정된 데이터셋을 가정하지만, 이 방법은 온라인 혹은 비정상적 데이터 흐름(streaming data) 환경에도 적용 가능하다.

→ 주식 거래 가격, 거래량이 실시간으로 들어오며 매시간 수백만 개씩 쌓일 때 고정된 데이터셋이 아닌, 지금 들어온 데이터에 반응하는 추론이  필요하므로 이전 parameter의 posterior를 기반으로 새로운 데이터 반영

2.1 Problem scenario

우리는 다음과 같은 상황을 가정한다:

  • 데이터셋 $X = \{x^{(i)}\}_{i=1}^N$는 각각 독립적이고 같은 분포(i.i.d.)를 따르는 샘플들로 구성되어 있음
  • 각 데이터 $x^{(i)}$는 보이지 않는 잠재 변수(latent variable) $z^{(i)}$에서 유래함
  • 이 생성 과정은 다음 두 단계로 되어 있음:
    1. 잠재 변수 샘플링: $z^{(i)} \sim p(z)$
    2. 관측값 생성: $x^{(i)} \sim p(x \mid z^{(i)})$

여기서:

  • $p(z)$: prior 분포 (잠재 변수의 기본 분포)
  • $p(x \mid z)$: likelihood (잠재 변수에서 관측값이 나올 확률)
  • 이들 분포는 모두 파라미터 $\theta$에 의해 조정됨
  • 모델은 수식적으로 미분 가능하지만, 관측된 데이터만 가지고는 전체 과정을 직접 계산하거나 추론하기 어렵다

논문에서 다루는 두 가지 어려운 문제

1. Intractability(비가용성)

  • 우리가 알고 싶은 것은 주어진 $x$에 대해 숨겨진 $z$가 어떤지, 즉 posterior $p(z \mid x)$
  • 그런데 이걸 계산하려면 다음과 같은 적분이 필요함:$$p(x) = \int p(z) p(x \mid z)\,dz$$
  • 이 적분은 고차원이거나 복잡한 비선형 함수(p(x|z)) 때문에 직접 계산이 불가능
  • 따라서 posterior도 다음 식 때문에 계산 불가:$$p(z \mid x) = \frac{p(x \mid z)\, p(z)}{p(x)}$$ numerator는 계산 가능해도, denominator인 $p(x)$가 적분이 안 돼서 전체가 계산 안됨

2. 대규모 데이터셋

  • 데이터가 너무 많으면 모든 데이터를 한 번에 사용하는 full-batch 최적화는 느리고 비효율적
  • Monte Carlo EM 같은 방법은 각 데이터마다 반복 계산을 해야 해서 실용적이지 않음

해결하고자 하는 세 가지 문제

  1. $\theta$에 대한 효율적인 ML/MAP 추정
    • ML (Maximum Likelihood): 데이터를 가장 잘 설명하는 파라미터를 찾는 방식
       → $\theta^* = \arg\max_\theta \sum \log p(x^{(i)} \mid \theta)$
    • MAP (Maximum A Posteriori): 위에 더해, $\theta$에 대한 prior 정보까지 반영해서 최적의 파라미터를 찾는 방식
       → $\theta^* = \arg\max_\theta \log p(X \mid \theta) + \log p(\theta)$
    즉,
    → 우리가 학습하고 싶은 확률 모델의 파라미터 $\theta$를 가능도나 사전정보를 고려해 가장 적절하게 추정하는 것이 첫 번째 목표
  2. 관측값 $x$에 대해 $z$의 posterior $p(z \mid x)$를 근사적으로 추론
    • 입력 데이터 $x$가 주어졌을 때, 이걸 만들어낸 잠재 변수 $z$가 어떤 분포를 따를지 알아야 함
    • 즉, $p(z \mid x)$를 근사하는 것이 필요
    • 이 작업은 representation learning, 즉 데이터를 더 잘 표현하거나 압축하는 데 매우 유용함
       → 데이터 압축, 특징 추출, 인코딩
  3. $x$의 전체 확률, 즉 marginal likelihood 추정
    • $p(x) = \int p(x \mid z)\, p(z)\, dz$
      → 모델이 전체 데이터를 얼마나 잘 설명하는지를 나타내는 지표
    • 이 확률을 잘 추정하면, denoising, inpainting, super-resolution 같은 이미지 생성/복원 문제에 응용할 수 있음

우리는 위의 문제들을 해결하기 위해, 관측된 $x$를 보고 그에 맞는 $z$를 추정해주는 근사 posterior 모델, 즉 recognition model $q(z \mid x)$를 도입한다.

  • 실제 posterior $p(z \mid x)$는 계산이 불가능하므로,
  • 이를 대신할 수 있는 $q(z \mid x)$를 설계해 학습시키는 것

 $q(z \mid x)$는 다음과 같은 특성을 가진다:

  • 기존 mean-field variational inference처럼 $z$의 모든 차원이 서로 독립이라는 가정을 꼭 하지 않아도 됨
  • 복잡한 기대값을 해석적으로 계산하지 않아도 되고, 샘플링과 backprop으로 학습 가능
     → 즉, analytic 계산 대신 자동 미분 기반 학습 가능

따라서:

  • 이 recognition model의 파라미터 $\phi$와
  • 모델 전체를 정의하는 generative model의 파라미터 $\theta$는
     → 같이(joint) 학습된다

Probabilistic Encoder & Decoder 관점

  • $z$는 데이터를 요약해 표현하는 잠재 변수 latent representation(or code)
  • recognition model $q(z \mid x)$: 주어진 $x$에 대해 가능한 $z$ 분포를 내는 probabilistic encoder
  • generative model $p(x \mid z)$: 주어진 $z$로부터 가능한 $x$를 생성하는 probabilistic decoder

2.2 The variational bound

우리는 관측 데이터 $x$의 확률 $p(x)$, 즉 marginal likelihood를 최대화하려고 한다. 하지만 이 확률은 아래처럼 숨겨진 변수 $z$를 적분해야 해서 계산이 어렵다:

$$p(x) = \int p(z)\, p(x \mid z)\, dz$$

이 때문에 직접 계산할 수는 없고, 대신 variational inference를 사용해서 우회적으로 접근한다.

(1) log-likelihood를 쪼개는 방법

관측값 $x^{(i)}$ 하나에 대해, 다음과 같은 identity가 있다:

$$\log p(x^{(i)}) = D_{KL}(q(z \mid x^{(i)}) \parallel p(z \mid x^{(i)})) + \mathcal{L}(\theta; x^{(i)}) \tag{1}$$

  • 첫 번째 항은 우리가 만든 approximate posterior $q(z \mid x)$와 실제 posterior $p(z \mid x)$ 사이의 차이 (KL divergence)
  • 이 값은 항상 0 이상이므로,
  • 두 번째 항 $\mathcal{L}$은 $\log p(x)$ 하한선 (lower bound) 역할을 한다
    → 그래서 이걸 ELBO (Evidence Lower Bound)라고 부른다

(2) ELBO의 구체적인 정의

ELBO는 아래와 같이 쓸 수 있다:

$$\mathcal{L}(\theta; x^{(i)}) = \mathbb{E}_{q(z \mid x)}[\log p(x \mid z)] - D_{KL}(q(z \mid x) \parallel p(z)) \tag{2}$$

구성:

  • 첫 번째 항: 우리가 샘플링한 $z$로부터 $x$를 얼마나 잘 복원할 수 있는지 (재구성 가능성)
  • 두 번째 항: $z$가 정해진 prior $p(z)$를 얼마나 잘 따르는지를 측정
     regularization 역할

이 결과, 우리는 다음 부등식을 얻게 된다:

$$\log p(x^{(i)}) \geq \mathcal{L}(\theta; x^{(i)}) \tag{3}$$

즉, 우리가 구할 수 없는 $\log p(x)$ 대신, ELBO를 최대화하면 동일한 효과를 얻을 수 있다.

Gradient 추정의 어려움

ELBO에는 기대값 $\mathbb{E}_{q(z \mid x)}[\log p(x \mid z)]$이 포함되는데, 이 기대값의 gradient를 계산해야 학습이 가능하다.
이때 쓸 수 있는 기본적인 방법이 바로 score function estimator (REINFORCE trick)이다:

$$\nabla_{\phi} \mathbb{E}_{q(z)}[f(z)] = \mathbb{E}_{q(z)} \left[f(z) \nabla_{\phi} \log q(z)\right]$$

이걸 Monte Carlo 방식으로 샘플 $z^{(l)} \sim q(z)$로 근사하면:

$$\frac{1}{L} \sum_{l=1}^{L} f(z^{(l)}) \nabla_{\phi} \log q(z^{(l)})$$

하지만 이 방식은 큰 단점이 있다:

  • gradient가 $\log q(z)$를 통해 간접적으로 계산됨
  • 그래서 gradient의 분산이 매우 커진다
  • 결과적으로 학습이 불안정해지고 효율이 떨어진다

즉,

  • 우리가 궁극적으로 원하는 것은 $p(x)$를 최대화하는 것
  • 하지만 직접 계산은 안 되니까, ELBO를 대신 최적화하는 전략을 씀
  • 그런데 ELBO도 gradient 추정이 어려워서, 이를 해결하기 위한 방법이 필요하다

→ 그래서 2.3에서 이 문제를 해결하는 Reparameterization Trick SGVB Estimator가 등장하게 된다.


2.3 The SGVB estimator and AEVB algorithm

앞서 봤듯이, 우리는 ELBO를 최대화해서 VAE를 학습해야 한다. 그런데 이 ELBO 안에는 기댓값 계산이 들어가 있어서, gradient 계산이 어렵다. 이를 해결하기 위해 Reparameterization Trick이라는 기법을 사용한다.

(1) Reparameterization 기반 샘플링

일반적으로 우리는 잠재 변수를 $z \sim q(z \mid x)$과 같이 샘플링한다. 하지만 이렇게 샘플링하면, 그 과정 자체는 미분할 수 없다. 그래서 아래처럼 noise 변수 $\epsilon$를 도입해 $z$를 미분 가능한 함수 형태로 바꿔버린다:

$$z = g_\phi(\epsilon, x) \quad \text{where } \epsilon \sim p(\epsilon) \tag{4}$$

여기서:
$q(z \mid x) = \mathcal{N}(\mu, \sigma^2)$이라면:
 $z = \mu + \sigma \cdot \epsilon$, $\epsilon \sim \mathcal{N}(0, 1)$

이렇게 바꾸면 $z$는 이제 샘플이 아니라, $x$, $\phi$, $\epsilon$에 의해 결정되므로 backprop이 가능해진다.

 

이제 기대값 $\mathbb{E}_{q(z \mid x)}[f(z)]$은 다음과 같이 Monte Carlo 추정할 수 있다:

$$\mathbb{E}_{q(z \mid x^{(i)})}[f(z)] = \mathbb{E}_{p(\epsilon)}[f(g_\phi(\epsilon, x^{(i)}))] \approx \frac{1}{L} \sum_{l=1}^L f(g_\phi(\epsilon^{(l)}, x^{(i)})) \tag{5}$$

즉, 이제는 분포에서 직접 $z$를 샘플링할 필요 없이, $\epsilon$을 샘플링해서 $z$를 계산하면 된다.

(2) SGVB Estimator 정의

Reparameterization을 이용해서 ELBO를 다음과 같이 추정할 수 있다:

$$\mathcal{L}_A(\theta, \phi; x^{(i)}) = \frac{1}{L} \sum_{l=1}^{L} \left[ \log p_\theta(x^{(i)} \mid z^{(i,l)}) - \log q_\phi(z^{(i,l)} \mid x^{(i)}) \right] \quad \text{where } z^{(i,l)} = g_\phi(\epsilon^{(l)}, x^{(i)}) \tag{6}$$

  • 이 식은 Reconstruction term Entropy term을 직접 계산하는 형태이다
  • $z^{(i,l)} = g_\phi(\epsilon^{(l)}, x^{(i)})$

하지만 보통은 KL divergence 항은 analytical하게 계산할 수 있으므로, 아래처럼 더 간단하게 표현할 수 있다:

KL의 closed form 계산:

$$\mathcal{L}_B(\theta, \phi; x^{(i)}) = - D_{KL}(q_\phi(z \mid x^{(i)}) \| p(z)) + \frac{1}{L} \sum_{l=1}^L \log p_\theta(x^{(i)} \mid z^{(i,l)}) \tag{7}$$

(3) Total Dataset에 대한 Estimator

전체 $N$개 데이터에 대해, 랜덤하게 뽑은 minibatch $\mathcal{X}_M$로 근사하면:

$$\mathcal{L}(\theta, \phi; X) \approx \mathcal{L}_M(\theta, \phi; \mathcal{X}_M) = \frac{N}{M} \sum_{i=1}^{M} \mathcal{L}(\theta, \phi; x^{(i)}) \tag{8}$$

이 추정값에 대해 gradient를 구해서 SGD나 Adagrad 같은 옵티마이저로 파라미터 $\theta$, $\phi$를 업데이트하면 된다.

(4) Algorithm 1: AEVB Algorithm (Minibatch 버전)

  1. 파라미터 $\theta, \phi$ 초기화
  2. 반복:
    • 랜덤 minibatch $\mathcal{X}_M$ 샘플링
    • $\epsilon^{(l)} \sim p(\epsilon)$ noise 샘플링
    • $z = g_\phi(\epsilon, x)$로 latent 생성
    • $\mathcal{L}_M$에 대한 gradient 계산
    • optimizer로 파라미터 업데이트
  3. 수렴 시 종료

실험에서는 $M = 100$, $L = 1$로도 좋은 성능을 보였다.

여기서 L은 Monte Carlo 기법로 평균을 낼  z 샘플 개수이며, z를 여러번 sampling해서 평균을 내면 추정값이 정확해진다. 하지만 여기선 하나의 $\epsilon$만으로도 기대값 근사가 충분히 안정적이었다.

(5) Autoencoder와의 연결

식 (7)을 보면 다음과 같은 autoencoder 구조와의 유사성이 드러난다:

  • 첫 항 (KL-divergence): 잠재공간의 분포가 prior $p(z)$에 가까워지도록 regularization 역할
  • 두 번째 항: $\log p(x \mid z)$는 reconstruction likelihood, 즉, 입력 데이터를 복원하는 역할

따라서 VAE는 probabilistic encoder $q_\phi(z \mid x)$와 decoder $p_\theta(x \mid z)$를 학습하는 확률적 autoencoder로 볼 수 있다.


2.4 The Reparameterization Trick

제안한 핵심 아이디어는 샘플링을 가능한 방식으로 reparameterize하여, gradient 계산이 가능하도록 만드는 것이다.

즉, $z \sim q(z \mid x)$를 다음처럼 표현:

$$z = g_\phi(\epsilon, x) \quad \text{where } \epsilon \sim p(\epsilon)$$

여기서:

  • $\epsilon$: 단순한 noise (예: 표준 정규분포 $\mathcal{N}(0, 1)$에서 샘플링)
  • $g_\phi$: 평균, 분산, 입력 $x$ 등을 이용해 $z$를 계산하는 함수

즉, $z$를 단순히 샘플링하는 대신, $\epsilon$이라는 noise를 넣어 계산하면 미분 가능한 $z$를 만들 수 있다.

이 표현을 통해 $\mathbb{E}_{q(z \mid x)}[f(z)]$의 Monte Carlo 추정기가 다음처럼 미분 가능해진다:

$$\mathbb{E}_{q(z \mid x)}[f(z)] = \mathbb{E}_{p(\epsilon)}[f(g_\phi(\epsilon, x))] \approx \frac{1}{L} \sum_{l=1}^{L} f(g_\phi(\epsilon^{(l)}, x))$$

 

  • 왼쪽: 원래는 $q(z \mid x)$에서 샘플링한 $z$로 기대값을 계산해야 했음
  • 오른쪽: 이제는 단순한 분포 $p(\epsilon)$에서 샘플링한 후, 계산식으로 $z$를 구하면 됨

정규 분포라고 가정하면,

$$q(z \mid x) = \mathcal{N}(\mu, \sigma^2) \Rightarrow z = \mu + \sigma \cdot \epsilon,\ \epsilon \sim \mathcal{N}(0, 1)$$ $$\mathbb{E}_{\mathcal{N}(\mu, \sigma^2)}[f(z)] = \mathbb{E}_{\mathcal{N}(0,1)}[f(\mu + \sigma \epsilon)] \approx \frac{1}{L} \sum_{l=1}^{L} f(\mu + \sigma \epsilon^{(l)})$$

즉,

  • 평균 $\mu$, 표준편차 $\sigma$를 인코더가 출력하고,
  • 샘플링은 그냥 $\epsilon \sim \mathcal{N}(0, 1)$
  • 최종 $z = \mu + \sigma \cdot \epsilon$

→ 이 방식은 수치적으로 안정하고, gradient 계산이 쉬움

어떤 분포에 적용 가능한가?

1. Inverse CDF가 존재하는 분포

  • 예: Exponential, Logistic, Rayleigh, Pareto, Gumbel 등
  • 방법: $\epsilon \sim U(0, 1)$ → $z = \text{Inverse CDF}(\epsilon)$
  • 예시: 정규분포에서 확률 0.5가 갖는 값 = 0 → $F^{-1}(0.5) = 0$

2. Location-scale family

  • 예: Gaussian, Laplace, Student-t, Uniform 등
  • 공통 특징: 평균 $\mu$와 스케일 $\sigma$로 조정 가능
  • 형태: $z = \mu + \sigma \cdot \epsilon$, $\epsilon \sim \text{기준 분포}$
  • 장점: 여전히 원래 분포 유지하면서 미분 가능

3. 합성 가능 분포 (Composition)

  • 예:
    • Log-Normal: $z = \exp(\epsilon)$, $\epsilon \sim \mathcal{N}(0, 1)$
    • Gamma: 여러 개의 지수분포를 합쳐서 생성
    • Dirichlet: Gamma 분포의 정규화
  • 특징: 직접 샘플링은 어려워도, 다른 분포 + 함수 조합으로 생성 가능

일부 복잡한 분포는 위 방식이 바로 적용되지 않아 안 통하는 경우에도, inverse CDF에 대한 근사 방법들이 존재하며, 이는 PDF 계산 비용과 유사한 수준의 연산으로 가능하다.

즉,

  • Reparameterization Trick은 VAE가 gradient-based 학습을 가능하게 만든 핵심 아이디어
  • 샘플링을 미분 가능한 함수로 바꿔서 backpropagation을 통과시킬 수 있게 해줌
  • 대부분의 실용적인 분포에 적용 가능하고, 실제 구현도 간단함

3. Example: Variational Auto-Encoder

이 절에서는 VAE 모델을 신경망으로 구현한 구조를 예시로 설명한다.

  • Encoder는 데이터를 받아 잠재 변수 $z$의 분포를 출력.
  • Decoder는 이 $z$를 기반으로 원래 데이터를 복원.
  • 이 두 네트워크는 함께 학습된다.

(1) Prior 분포 $p(z)$

잠재 변수 $z$는 학습 전에 다음과 같은 기본 정규분포를 따른다고 가정:

$p(z) = \mathcal{N}(0, I)$

  • Isotropic Gaussian: 각 차원이 서로 독립이고, 분산이 모두 1
  • 별도의 학습 파라미터는 없음

(2) Likelihood $p(x \mid z)$

이 분포는 decoder의 출력이다.
데이터 종류에 따라 두 가지 형태가 있다:

  • 실수값(예: 이미지 픽셀 값): $p(x \mid z) = \text{Gaussian}$
  • 이진값(예: MNIST 흑백 이미지): $p(x \mid z) = \text{Bernoulli}$

이 분포의 파라미터는 모두 decoder MLP를 통해 계산된다.

(3) Posterior $p(z \mid x)$ 와 Approximate posterior $q(z \mid x)$

진짜 posterior $p(z \mid x)$는 계산이 어렵기 때문에, 우리는 이를 다음과 같은 간단한 정규분포로 근사한다:

$$\log q(z \mid x^{(i)}) = \log \mathcal{N}(z; \mu^{(i)}, (\sigma^{(i)})^2 I) \tag{9}$$

  • $\mu^{(i)}, \sigma^{(i)}$는 encoder MLP의 출력값이며, 입력 $x^{(i)}$에 대한 비선형 함수
  • 공분산 행렬이 대각 행렬이라는 뜻은 각 latent 차원이 서로 독립적이라고 가정하는 것

(4) Sampling: Reparameterization Trick 적용

샘플링은 다음과 같은 방법으로 처리한다:

$$z = \mu(x) + \sigma(x) \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)$$

  • $\odot$: element-wise 곱
  • noise $\epsilon$을 이용해 $z$를 생성하면, 미분 가능

(5) Loss 함수 구성 (최종 Objective)

VAE의 손실 함수는 두 항으로 구성된된다:

  1. KL divergence 항:
    근사 posterior $q(z \mid x)$와 prior $p(z)$ 사이의 차이를 최소화
     정규분포 간 KL divergence는 아래와 같이 계산 가능: $$D_{KL} = -\frac{1}{2} \sum_{j=1}^{J} \left(1 + \log(\sigma_j^2) - \mu_j^2 - \sigma_j^2 \right)$$
  2. Reconstruction 항:
    $z$로부터 $x$를 얼마나 잘 복원하는지 측정
    → likelihood $p(x \mid z)$의 log를 사용

(6) 최종 손실 함수

한 데이터포인트 $x^{(i)}$에 대한 VAE objective는 다음과 같다:

$$\mathcal{L}(\theta, \phi; x^{(i)}) = - \frac{1}{2} \sum_{j=1}^{J} \left(1 + \log(\sigma_j^2) - \mu_j^2 - \sigma_j^2 \right) + \frac{1}{L} \sum_{l=1}^{L} \log p(x^{(i)} \mid z^{(i, l)}) \tag{10}$$

  • 첫 항: KL divergence (closed-form으로 계산 가능)
  • 두 번째 항: reconstruction likelihood (샘플링으로 추정)

참고로,

  • $z$의 분포를 단순한 정규분포로 근사하는 것은 구현의 단순화를 위한 선택일 뿐이며, 더 복잡한 구조도 가능하다.
  • 다만 $z$의 각 차원 사이에 상호 작용(correlation)이 필요한 경우, 대각선 공분산만 쓰는 방식은 제한이 있을 수 있다.

4. Related Work

(1) Wake-Sleep 알고리즘

  • VAE처럼 recognition model을 사용해 posterior를 근사하는 방식임.
  • 단점: 두 개의 서로 다른 loss를 동시에 최적화해야 해서 ELBO를 정확히 최적화하지 못함.
  • 장점: discrete latent variable도 다룰 수 있음.
  • 계산 복잡도는 AEVB와 비슷함.

(2) Stochastic Variational Inference (SVI)

  • 기본 SVI는 gradient의 분산이 너무 커서 비효율적임.
  • 해결법:
    • control variate 기법: 분산 줄이는 보완 방법
    • reparameterization trick: 샘플링을 deterministic하게 만들어 gradient 안정화

(3) Autoencoder와의 관계

  • AEVB(VAE)는 autoencoder 구조를 확률 모델 학습과 결합한 방식임.
  • PCA와도 유사한 점이 있음:
    • 특정 조건에서는 PCA와 동일한 구조를 가짐
  • 최근 연구는 autoencoder의 목표가 mutual information(입력 x와 latent z의 정보 공유량) 최대화와 관련 있다고 봄.
    • 이는 곧 reconstruction error 최소화와 연결됨

(4) VAE의 장점

  • 기존 autoencoder는 표현 학습에 한계가 있음 → denoising, sparse 등의 정규화를 따로 넣어야 했음
  • 하지만 SGVB(VAE)는 KL-divergence 항이 이미 내장되어 있어서 별도의 정규화 없이도 효과적

(5) 그 외 유사 모델들

  • PSD, Generative Stochastic Networks, Deep Boltzmann Machines 등도 encoder-decoder 구조를 사용하지만,
    • 대부분 unnormalized 모델이거나 적용 범위가 제한적
  • AEVB는 보다 일반적인 확률 모델에 적용 가능하다는 점이 차별점임

(6) 최근 관련 연구

  • DARN: binary latent variable을 위한 autoencoder 구조
  • RMW14: VAE와 유사한 방식의 reparameterization trick을 독립적으로 제안한 연구

5. Experiments

본 절에서는 MNIST Frey Face 데이터셋에 대해 generative model을 학습하고,
variational lower bound marginal likelihood 측면에서 AEVB와 기존 알고리즘을 비교하였다.

Setup

  • Encoder/Decoder 구조는 Section 3에서 설명한 VAE 구조 사용
  • Encoder와 Decoder는 같은 수의 hidden unit을 가짐
  • MNIST: binary 이미지 → Decoder의 출력 분포로 Bernoulli
  • Frey Face: 실수값 이미지 → Decoder 출력은 Gaussian, 단 출력 평균은 sigmoid를 통해 (0, 1)로 제한

Optimization

  • 목적함수: variational lower bound $\mathcal{L}(\theta; X)$
  • 파라미터는 stochastic gradient ascent로 최적화
  • Weight decay 추가: prior $p(\theta) = \mathcal{N}(0, I)$에 해당하는 항
  • 최적화는 approximate MAP estimation에 해당

비교 대상: Wake-Sleep 알고리즘

  • recognition model(encoder)은 AEVB와 동일한 구조 사용
  • 파라미터는 $\mathcal{N}(0, 0.01)$에서 랜덤 초기화
  • 학습률은 Adagrad [DHS10] 사용 (0.01, 0.02, 0.1 중 성능 좋은 값 선택)
  • Minibatch size: $M = 100$, 샘플 수 $L = 1$

5.1 Likelihood Lower Bound 비교

  • MNIST: hidden unit 500개
  • Frey Face: hidden unit 200개 (더 작은 데이터셋이므로 overfitting 방지 목적)
  • hidden unit 수는 기존 auto-encoder 문헌 기반으로 설정되었고, 성능에 큰 영향을 주지 않음

  • AEVB는 wake-sleep보다 빠르게 수렴하고 더 나은 lower bound에 도달
  • latent dimension이 커져도 overfitting 현상 없음
    → 이는 variational lower bound 자체가 regularizer 역할을 하기 때문
    • 세로축: 데이터포인트당 평균 lower bound (분산 < 1로 안정적)
    • 가로축: 학습 샘플 수 (log scale)
    • 학습 시간: 1백만 샘플당 약 20–40분 (Intel Xeon CPU, 40 GFLOPS 기준)

5.2 Marginal Likelihood 비교

  • latent space가 저차원일 경우, MCMC 기반 추정기(샘플링 기반으로 복잡한 함수 분포 근사 accept / reject)로 marginal likelihood를 직접 추정할 수 있음
  • 실험 설정:
    • Encoder/Decoder: hidden unit 100개
    • Latent variable 수: 3개
  • dimension이 커지면 MCMC 기반 추정은 불안정
  • 비교 대상: AEVB, Wake-Sleep, Monte Carlo EM (MCEM) with Hybrid Monte Carlo (HMC) sampler

  • AEVB는 Wake-Sleep 및 MCEM보다 더 빠르게 수렴
  • 특히 대규모 데이터셋 (N=50,000)에서는 MCEM이 비효율적
    → MCEM은 온라인 알고리즘이 아니기 때문에 full dataset에 적용 불가능(데이터가 하나씩 들어올 때 즉시 update 불가)

5.3 Latent Space 시각화

 

  • 위쪽 그림은 VAE가 학습한 latent space에서 연속적인 z 변화가 이미지의 부드러운 변화로 이어진다는 것을 보여줌.
  • 아래쪽 그림은 latent space의 차원이 커질수록 복원 이미지가 더 선명하고 다양하게 표현된다는 것을 나타냄.
  • 전체적으로, VAE가 의미 있는 latent 표현을 학습하며, 차원 수는 성능에 중요한 영향을 미침.
    • 하지만 차원이 너무 크면 overfitting이나 posterior collapse 같은 문제 발생 가능

6. Conclusion

이 논문에서는 연속적인 latent variable을 가지는 모델에서 approximate inference를 효율적으로 수행할 수 있는 새로운 방법인
Stochastic Gradient Variational Bayes (SGVB) 추정기를 제안함.

SGVB의 특징은 다음과 같음:

  • 미분 가능한 구조로 되어 있어 gradient를 통해 학습이 가능함
  • Stochastic gradient 방식으로 쉽게 최적화 가능
  • 다양한 확률 모델 구조에 적용 가능

이 추정기를 기반으로 한 Auto-Encoding Variational Bayes (AEVB) 알고리즘은 다음을 가능하게 함:

  • 복잡한 posterior 분포를 근사하는 inference model 학습
  • Generative model inference model을 동시에 joint 학습
  • 실험 결과를 통해 이론적 장점이 실제 성능 향상으로 이어짐을 확인함

7. Future Work

SGVB와 AEVB는 거의 모든 연속형 latent variable 문제에 적용 가능하므로, 다양한 확장이 가능함.
주요 확장 방향은 다음과 같음:

  1. 딥한 구조의 생성 모델 학습
    • 예: CNN 기반 encoder-decoder를 사용한 deep hierarchical model
  2. 시계열 데이터 모델링
    • 예: Dynamic Bayesian Networks 등
  3. Global parameter에도 SGVB 직접 적용
    • 현재는 appendix에서만 다뤘지만 향후 확장 가능
  4. Supervised learning 모델로 확장
    • label 정보와 latent variable을 함께 사용하는 방식으로 더 강력한 생성 및 분류 모델 설계 가능

+

  • VAE는 입력 데이터를 압축해서 latent 공간 z를 만든 다음,  z를 가지고 다시 데이터를 생성하는 구조임.
  • LDM (Latent Diffusion Model) 은 이 z 위에서 노이즈를 제거하는 방식으로 작동함. 즉, 이미지 자체에서가 아니라, 압축된 공간 z 안에서 diffusion 과정을 돌리는 것임.
  • 복원은 VAE의 decoder가 맡고, z의 노이즈 제거는 diffusion model이 맡음.
  • 이 방식은 계산량을 줄이기 유리해서 효율적임. z는 압축된 공간이라 원래 이미지보다 훨씬 작기 때문.
  • 단점: decoder가 너무 잘하면, z가 정보 없는 상태가 되어버리는 문제가 생김. 이걸 posterior collapse라고 부름.
    • 인코더가 아무 z나 뽑으면서 모든 입력 x에 대해 같은 z만 뽑음

더보기

APPENDIX B~F

Appendix B. Solution of $D_{KL}(q(z) \parallel p(z))$: Gaussian Case

Variational lower bound에는 KL 항이 포함되며, $p(z)$ $q(z \mid x)$가 Gaussian일 경우 analytic 계산이 가능하다.

  • prior $p(z) = \mathcal{N}(0, I)$
  • approximate posterior $q(z \mid x^{(i)}) = \mathcal{N}(\mu^{(i)}, \text{diag}((\sigma^{(i)})^2))$

이때 latent dimension을 $J$라 하면:

$$D_{KL}(q(z) \parallel p(z)) = \frac{1}{2} \sum_{j=1}^{J} \left( 1 + \log((\sigma_j^{(i)})^2) - (\mu_j^{(i)})^2 - (\sigma_j^{(i)})^2 \right)$$

→ VAE의 식 (10)에 들어가는 KL 항으로 사용된다.


Appendix C. MLPs as Probabilistic Encoders and Decoders

Variational auto-encoder에서는 neural network (MLP)를 encoder 및 decoder로 사용한다.

C.1 Bernoulli MLP Decoder

데이터가 binary일 경우, decoder $p(x \mid z)$는 multivariate Bernoulli 분포를 따른다.

$$\log p(x \mid z) = \sum_{i=1}^D x_i \log y_i + (1 - x_i) \log(1 - y_i) \tag{11}$$

여기서 $y = \sigma(W_2 \cdot \tanh(W_1 z + b_1) + b_2)$,
$\sigma$는 sigmoid 함수이며, 파라미터 $W_1, W_2, b_1, b_2$는 학습 대상이다.

C.2 Gaussian MLP Encoder/Decoder

데이터가 실수값일 경우, encoder 또는 decoder는 multivariate Gaussian을 사용한다. 구조는 다음과 같다:

  • Hidden layer: $h = \tanh(W_3 z + b_3)$
  • 평균: $\mu = W_4 h + b_4$
  • 로그 분산: $\log \sigma^2 = W_5 h + b_5$

$$\log p(x \mid z) = \log \mathcal{N}(x; \mu, \text{diag}(\sigma^2)) \tag{12}$$encoder로 사용할 경우 $x \rightarrow z$, decoder로 사용할 경우 $z \rightarrow x$ 방향.


Appendix D. Marginal Likelihood Estimator

latent space 차원이 낮을 때, marginal likelihood $p(x)$를 MCMC로 추정할 수 있다.

  1. $p(z \mid x) \propto p(z)p(x \mid z)$에서 HMC를 통해 샘플 $z^{(l)}$ 생성
  2. 이 샘플로부터 $q(z)$ 밀도 추정
  3. 다시 $L$개의 샘플을 뽑아 다음 추정식을 사용:

$$p(x^{(i)}) \approx \frac{1}{L} \sum_{l=1}^{L} \frac{p(z^{(l)}) p(x^{(i)} \mid z^{(l)})}{q(z^{(l)})}$$

→ importance sampling 방식의 estimator이며, sampling된 posterior로부터 직접 marginal likelihood를 계산할 수 있음.


Appendix E. Monte Carlo EM (MCEM)

MCEM은 encoder 없이 posterior의 gradient로 latent variable을 샘플링한다.

  • posterior gradient:$\nabla_z \log p(z \mid x) = \nabla_z \log p(z) + \nabla_z \log p(x \mid z)$
  • 10 HMC leapfrog step 후, 수용률 90%가 되도록 stepsize 조정
  • 샘플 수집 후 5번의 weight update 진행
  • 학습률은 Adagrad 사용, annealing schedule 포함

Likelihood estimation:

  • 학습/테스트셋에서 1000개 데이터 사용
  • posterior로부터 50개 샘플 생성
  • 결과는 Figure 3의 marginal likelihood 비교에 사용됨

Appendix F. Full Variational Bayes (FullVB)

기존 AEVB는 latent variable $z$에만 variational inference를 수행했지만, FullVB에서는 parameter $\theta$에 대해서도 variational 추론을 수행한다.

F.1 Objective Function

모델 파라미터 $\theta$에 대해 hyperprior $p(\theta)$를 정의했을 때,
전체 데이터 $X$에 대한 marginal likelihood는 다음과 같이 표현된다:

$$\log p(X) = D_{KL}(q(\theta) \parallel p(\theta \mid X)) + \mathcal{L}(\theta; X) \tag{13}$$

여기서:

  • 첫 항은 true posterior $p(\theta \mid X)$와 approximate posterior $q(\theta)$ 간의 KL divergence
  • 두 번째 항은 variational lower bound이며 다음과 같이 정의된다:

$$\mathcal{L}(\theta; X) = \int q(\theta) \left[ \log p(X) + \log p(\theta) - \log q(\theta) \right] d\theta \tag{14}$$

이 bound는 KL이 0이 될 때 (즉, posterior가 정확히 근사됐을 때) 정확한 marginal likelihood와 같아진다.

각 데이터포인트 $x^{(i)}$에 대해 marginal likelihood는 다음과 같이 쓸 수 있다:

$$\log p(x^{(i)}) = D_{KL}(q(z \mid x^{(i)}) \parallel p(z \mid x^{(i)})) + \mathcal{L}(\theta; x^{(i)}) \tag{15}$$ $$\mathcal{L}(\theta; x^{(i)}) = \int q(z \mid x^{(i)}) \left[ \log p(x^{(i)} \mid z) + \log p(z) - \log q(z \mid x^{(i)}) \right] dz \tag{16}$$

F.2 Reparameterization

각 기대값(14, 16)을 계산하기 위해 다음과 같이 reparameterization trick을 적용할 수 있다:

  • $z = g_\phi(\epsilon_z, x),\quad \epsilon_z \sim p(\epsilon)$
  • $\theta = h_\psi(\epsilon_\theta),\quad \epsilon_\theta \sim p(\epsilon)$

이 경우, 샘플 기반 Monte Carlo 추정기는 다음과 같다:

$$\mathcal{L}(\theta; X) \approx \frac{1}{L} \sum_{l=1}^{L} f(x^{(l)}, z^{(l)}, \theta^{(l)}) \tag{22}$$

f 함수의 정의

이때 내부 함수 $f(x, z, \theta)$는 다음과 같이 구성된다:

$$f(x, z, \theta) = \log p(x \mid z) + \log p(z) - \log q(z \mid x) + \log p(\theta) - \log q(\theta) \tag{21}$$

Algorithm 2: Gradient 계산용 Pseudocode

 

  • 초기화:$g \leftarrow 0$최종 gradient를 담을 변수 초기화
  • Monte Carlo 반복 (l = 1 to L):
    • $\mathbf{x}$: 데이터셋 $\mathbf{X}$에서 무작위로 하나의 datapoint 샘플
    • $\epsilon \sim p(\epsilon)$: latent space용 noise 샘플
    • $\zeta \sim p(\zeta)$: parameter space용 noise 샘플
    • $z = g_\phi(\epsilon, \mathbf{x})$: reparameterization을 통해 latent 샘플 생성
    • $\theta = h_\phi(\zeta)$: 파라미터 샘플 생성
    • $\nabla_\phi f_\phi(\mathbf{x}, z, \theta)$: 해당 샘플에 대해 loss의 gradient 계산
    • 이를 누적 평균 형태로 합산:$$g \leftarrow g + \frac{1}{L} \nabla_\phi f_\phi(\mathbf{x}, g_\phi(\epsilon, \mathbf{x}), h_\phi(\zeta))$$
  • 결과 반환: 최종 평균 gradient $g$를 반환

F.3 Gaussian Approximation

latent variable $z$와 parameter $\theta$ 모두에 대해 다음과 같이 Gaussian 구조를 가정할 수 있다:

$$q(\theta) = \mathcal{N}(\mu_\theta, \text{diag}(\sigma_\theta^2))$$ $$q(z \mid x) = \mathcal{N}(\mu_z(x), \text{diag}(\sigma_z^2(x))) \tag{23}$$

reparameterization:

  • $\theta = \mu_\theta + \sigma_\theta \odot \epsilon_\theta,\quad \epsilon_\theta \sim \mathcal{N}(0, I)$
  • $z = \mu_z(x) + \sigma_z(x) \odot \epsilon_z,\quad \epsilon_z \sim \mathcal{N}(0, I)$

→ $\odot$: element-wise product

F.4 최종 Estimator (Gaussian case)

Gaussian 구조를 통해 KL divergence를 analytic하게 계산할 수 있으며,
이로 인해 low-variance estimator를 구성할 수 있다.

$$\mathcal{L}(\theta; X) \approx \frac{1}{L} \sum_{l=1}^{L} \left[ - \frac{1}{2} \sum_{j=1}^{J} \left( 1 + \log(\sigma_{z,j}^{(l)2}) - \mu_{z,j}^{(l)2} - \sigma_{z,j}^{(l)2} \right) - \frac{1}{2} \sum_{j=1}^{J} \left( 1 + \log(\sigma_{\theta,j}^{(l)2}) - \mu_{\theta,j}^{(l)2} - \sigma_{\theta,j}^{(l)2} \right) + \log p(x^{(i)} \mid z^{(i)}) \right] \tag{24}$$

  • 첫 번째 항: latent variable $z$의 KL
  • 두 번째 항: parameter $\theta$의 KL
  • 세 번째 항: 데이터에 대한 reconstruction term