5장. 해부: 변분 오토인코더

논문 읽기 · 2부. 논문 한 쪽 해부

고급 · 약 15분 · 연습문제 5

요약

VAE의 ELBO를 한 줄씩: 잠재 변수 모형, 다룰 수 없는 가능도, 근사 사후분포, 옌센 부등식으로 하한 만들기, 재구성 항과 KL 항, 정규분포 KL의 닫힌 꼴, 재매개변수화 기법

변분 오토인코더(VAE)는 2013년 논문 “Auto-Encoding Variational Bayes”(Kingma, Welling)에서 나왔고, 여기서 정리된 ELBO(evidence lower bound)는 확산 모델, 잠재 확산 모델, 세계 모델, 베이즈 딥러닝의 공통 언어가 되었습니다. 이 장에서는 ELBO를 처음부터 유도하고, 논문에 나오는 정규분포 KL의 닫힌 꼴과 재매개변수화 기법을 해부합니다. 필요한 것은 베이즈 정리(확률과 통계 10장), KL 발산(11장), 옌센 부등식입니다.

5.1 잠재 변수 모형

관측 x\mathbf x(그림)가 보이지 않는 잠재 변수(latent variable) z\mathbf z(그림의 “요인”: 모양, 색, 각도)에서 만들어진다고 봅니다.

pθ(x)=∫pθ(x∣z) p(z) dz,p(z)=N(0,I).p_\theta(\mathbf x) = \int p_\theta(\mathbf x \mid \mathbf z)\,p(\mathbf z)\,d\mathbf z, \qquad p(\mathbf z) = \mathcal N(\mathbf 0, I).
  • p(z)p(\mathbf z): 사전분포(prior).
  • pθ(x∣z)p_\theta(\mathbf x \mid \mathbf z): 디코더(decoder), 신경망.

문제. 최대우도(확률과 통계 7장)로 θ\theta를 학습하려면 ln⁡pθ(x)\ln p_\theta(\mathbf x)가 필요한데, 고차원 z\mathbf z에 대한 적분이라 계산할 수 없습니다. 사후분포 pθ(z∣x)=pθ(x∣z)p(z)pθ(x)p_\theta(\mathbf z \mid \mathbf x) = \frac{p_\theta(\mathbf x \mid \mathbf z)p(\mathbf z)}{p_\theta(\mathbf x)}도 분모 때문에 계산할 수 없습니다(10장에서 말한 “증거 적분”의 어려움).

5.2 근사 사후분포

정의 5.1. 다룰 수 있는 분포족으로 사후분포를 흉내 내는 qϕ(z∣x)=N(μϕ(x),diag(σϕ2(x)))q_\phi(\mathbf z \mid \mathbf x) = \mathcal N(\boldsymbol\mu_\phi(\mathbf x), \mathrm{diag}(\boldsymbol\sigma^2_\phi(\mathbf x)))를 근사 사후분포라 하고, 이를 내는 신경망을 인코더(encoder)라 합니다.

이렇게 적분을 최적화로 바꾸는 방법을 변분 추론(variational inference)이라 합니다. 이름의 “변분”이 여기서 왔습니다.

5.3 ELBO 유도

정리 5.2. 모든 qq에 대해

ln⁡pθ(x)≥Eqϕ(z∣x)[ln⁡pθ(x∣z)]−DKL ⁣(qϕ(z∣x) ∥ p(z))⏟ELBO(θ,ϕ; x).\ln p_\theta(\mathbf x) \ge \underbrace{\mathbb E_{q_\phi(\mathbf z \mid \mathbf x)}\left[\ln p_\theta(\mathbf x \mid \mathbf z)\right] - D_{\mathrm{KL}}\!\left(q_\phi(\mathbf z \mid \mathbf x)\,\Vert\,p(\mathbf z)\right)}_{\mathrm{ELBO}(\theta, \phi;\ \mathbf x)}.

증명. 적분 안에 q/qq/q를 곱하면

ln⁡pθ(x)=ln⁡Eq ⁣[pθ(x∣z)p(z)q(z∣x)]≥Eq ⁣[ln⁡pθ(x∣z)p(z)q(z∣x)].\ln p_\theta(\mathbf x) = \ln\mathbb E_q\!\left[\frac{p_\theta(\mathbf x \mid \mathbf z)p(\mathbf z)}{q(\mathbf z \mid \mathbf x)}\right] \ge \mathbb E_q\!\left[\ln\frac{p_\theta(\mathbf x \mid \mathbf z)p(\mathbf z)}{q(\mathbf z \mid \mathbf x)}\right].

부등호는 ln⁡\ln이 오목함수라서 성립하는 옌센 부등식(Jensen's inequality) ln⁡E[Y]≥E[ln⁡Y]\ln\mathbb E[Y] \ge \mathbb E[\ln Y]입니다. 오른쪽의 로그를 나누면 Eq[ln⁡pθ(x∣z)]+Eq[ln⁡p(z)q]\mathbb E_q[\ln p_\theta(\mathbf x \mid \mathbf z)] + \mathbb E_q[\ln\frac{p(\mathbf z)}{q}]이고, 둘째 항이 −DKL(q∥p)-D_{\mathrm{KL}}(q\Vert p)입니다. □

정리 5.3 (간격). ln⁡pθ(x)−ELBO=DKL ⁣(qϕ(z∣x) ∥ pθ(z∣x))≥0\ln p_\theta(\mathbf x) - \mathrm{ELBO} = D_{\mathrm{KL}}\!\left(q_\phi(\mathbf z \mid \mathbf x)\,\Vert\,p_\theta(\mathbf z \mid \mathbf x)\right) \ge 0.

이 하한을 증거 하한(evidence lower bound, ELBO)이라 합니다. 그러므로 ELBO를 ϕ\phi에 대해 키우는 것은 근사 사후분포를 진짜 사후분포에 가깝게 하는 것이고, θ\theta에 대해 키우는 것은 가능도의 하한을 키우는 것입니다. 둘을 함께 경사상승법으로 학습합니다.

5.4 두 항의 뜻

  • 재구성 항 Eq[ln⁡pθ(x∣z)]\mathbb E_q[\ln p_\theta(\mathbf x \mid \mathbf z)]: 인코딩한 z\mathbf z로 원래 x\mathbf x를 얼마나 잘 되살리는가. 디코더가 정규분포이면 음의 제곱오차(확률과 통계 7장), 베르누이이면 음의 이진 교차 엔트로피.
  • KL 항 DKL(q∥p)D_{\mathrm{KL}}(q\Vert p): 인코딩한 분포가 사전분포 N(0,I)\mathcal N(\mathbf 0, I)에서 얼마나 벗어났는가. 잠재 공간을 정돈해 두어, 나중에 z∼N(0,I)\mathbf z \sim \mathcal N(\mathbf 0, I)를 뽑아 디코더에 넣으면 그럴듯한 그림이 나오게 합니다.

질문 3 (극단값). KL 항이 없으면 보통의 오토인코더처럼 잠재 공간이 엉망이 되고, KL 항만 있으면 q=pq = p가 되어 z\mathbf z에 정보가 없습니다(사후분포 붕괴, posterior collapse). β-VAE는 KL 항에 β\beta를 곱해 이 균형을 조절합니다.

5.5 정규분포 KL의 닫힌 꼴

논문 부록의 식을 1차원에서 유도합니다.

정리 5.4. DKL ⁣(N(μ,σ2) ∥ N(0,1))=12(μ2+σ2−ln⁡σ2−1)D_{\mathrm{KL}}\!\left(\mathcal N(\mu, \sigma^2)\,\Vert\,\mathcal N(0, 1)\right) = \frac12\left(\mu^2 + \sigma^2 - \ln\sigma^2 - 1\right).

증명. ln⁡qp=−ln⁡σ−(z−μ)22σ2+z22\ln\frac{q}{p} = -\ln\sigma - \frac{(z - \mu)^2}{2\sigma^2} + \frac{z^2}{2}. qq에 대한 기댓값을 취하면 E[(z−μ)2]=σ2\mathbb E[(z - \mu)^2] = \sigma^2, E[z2]=μ2+σ2\mathbb E[z^2] = \mu^2 + \sigma^2이므로 −ln⁡σ−12+μ2+σ22-\ln\sigma - \frac12 + \frac{\mu^2 + \sigma^2}{2}. □

잠재 변수가 dd차원이고 성분이 독립이면 성분별 KL을 더합니다. 질문 4 (특수한 경우). μ=0\mu = 0, σ=1\sigma = 1이면 00: 같은 분포끼리의 KL은 0입니다.

5.6 재매개변수화 기법

ELBO의 기댓값은 qϕq_\phi에서 뽑은 표본으로 어림하는데, “뽑는다”는 연산은 ϕ\phi로 미분할 수 없습니다. 그래서 무작위성을 밖으로 빼냅니다.

z=μϕ(x)+σϕ(x)⊙ϵ,ϵ∼N(0,I).\mathbf z = \boldsymbol\mu_\phi(\mathbf x) + \boldsymbol\sigma_\phi(\mathbf x) \odot \boldsymbol\epsilon, \qquad \boldsymbol\epsilon \sim \mathcal N(\mathbf 0, I).

이제 z\mathbf z는 ϕ\phi의 미분가능한 함수이고, 무작위성은 ϕ\phi와 무관한 ϵ\boldsymbol\epsilon에만 있습니다. 그래디언트가 연쇄법칙(다변수 미적분 3장)으로 인코더까지 흐릅니다. 이를 재매개변수화 기법(reparameterization trick)이라 하며, 4장의 xt=αˉtx0+1−αˉtϵ\mathbf x_t = \sqrt{\bar\alpha_t}\mathbf x_0 + \sqrt{1 - \bar\alpha_t}\boldsymbol\epsilon도 같은 꼴입니다.

5.7 이 장의 요약

  • 잠재 변수 모형의 가능도는 적분이라 계산 불가 → 근사 사후분포 qϕq_\phi.
  • 옌센 부등식으로 ELBO =Eq[ln⁡p(x∣z)]−DKL(q∥p)≤ln⁡p(x)= \mathbb E_q[\ln p(\mathbf x \mid \mathbf z)] - D_{\mathrm{KL}}(q\Vert p) \le \ln p(\mathbf x). 간격은 진짜 사후분포와의 KL.
  • 정규분포 KL: 12(μ2+σ2−ln⁡σ2−1)\frac12(\mu^2 + \sigma^2 - \ln\sigma^2 - 1).
  • 재매개변수화: z=μ+σ⊙ϵ\mathbf z = \boldsymbol\mu + \boldsymbol\sigma \odot \boldsymbol\epsilon로 미분 가능하게.

쓰이는 곳. 잠재 확산 모델(Stable Diffusion은 VAE의 잠재 공간에서 확산), 확산 모델의 학습 목표 유도(4장의 손실은 ELBO를 정리한 것), 세계 모델과 강화학습, 베이즈 신경망, 음성·분자 생성, 표현 학습의 분리(disentanglement) 연구가 이 장의 식을 씁니다.

문제

5.1 [계산] · 확인 문제

DKL(N(1,1) ∥ N(0,1))D_{\mathrm{KL}}(\mathcal N(1, 1)\,\Vert\,\mathcal N(0, 1))은?

정답
0.5
풀이

12(1+1−0−1)=12\frac12(1 + 1 - 0 - 1) = \frac12입니다.

5.2 [계산] · 확인 문제

DKL(N(0,4) ∥ N(0,1))D_{\mathrm{KL}}(\mathcal N(0, 4)\,\Vert\,\mathcal N(0, 1))은? (소수 넷째 자리까지)

정답
0.8069
풀이

12(0+4−ln⁡4−1)=12(3−1.3863)≈0.8069\frac12(0 + 4 - \ln4 - 1) = \frac12(3 - 1.3863) \approx 0.8069입니다.

5.3 [계산] · 확인 문제

재매개변수화로 μ=2\mu = 2, σ=0.5\sigma = 0.5, 뽑힌 ϵ=−1.2\epsilon = -1.2이면 zz는?

정답
1.4
풀이

z=2+0.5⋅(−1.2)=1.4z = 2 + 0.5\cdot(-1.2) = 1.4입니다.

5.4 [계산] · 확인 문제

잠재 변수가 3차원이고 인코더가 μ=(1,0,−1)\boldsymbol\mu = (1, 0, -1), σ=(1,1,1)\boldsymbol\sigma = (1, 1, 1)을 낼 때 KL 항은?

정답
1
풀이

성분별 12μi2\frac12\mu_i^2을 더하면 12(1+0+1)=1\frac12(1 + 0 + 1) = 1입니다.

5.5 [증명]

정리 5.3, 곧 ln⁡p(x)−ELBO=DKL(q(z∣x)∥p(z∣x))\ln p(\mathbf x) - \mathrm{ELBO} = D_{\mathrm{KL}}(q(\mathbf z \mid \mathbf x)\Vert p(\mathbf z \mid \mathbf x))를 보입니다.

풀이

p(x∣z)p(z)=p(z∣x)p(x)p(\mathbf x \mid \mathbf z)p(\mathbf z) = p(\mathbf z \mid \mathbf x)p(\mathbf x)이므로 ELBO=Eq[ln⁡p(z∣x)p(x)q]=ln⁡p(x)+Eq[ln⁡p(z∣x)q]=ln⁡p(x)−DKL(q∥p(⋅∣x))\mathrm{ELBO} = \mathbb E_q[\ln\frac{p(\mathbf z \mid \mathbf x)p(\mathbf x)}{q}] = \ln p(\mathbf x) + \mathbb E_q[\ln\frac{p(\mathbf z \mid \mathbf x)}{q}] = \ln p(\mathbf x) - D_{\mathrm{KL}}(q\Vert p(\cdot \mid \mathbf x))입니다(ln⁡p(x)\ln p(\mathbf x)는 z\mathbf z와 무관해 기댓값 밖으로 나옴).