1. Introduction
해당 논문은 연속 잠재 변수 또는 파라미터가 있는 생성모델에서 사후 분포가 intractable(다루기 어려울 때), 큰 데이터에서도 효율적으로 근사 추론+학습을 어떻게 하냐?는 물음에서 시작한다.
추론(inference)은 입력값 x로 z를 추정하는 과정으로, p(z)로 p_θ(x|z)인 x를 만든다. 학습을 위해서는 z를 알아내야하는데, 이를 사후분포라 한다.
논문의 2.1 에서도 언급하지만, 사후분포는 p_θ(z|x)로 나타낼 수 있으며, 이는 베이즈 정리로 p_θ(z|x) = p_θ(x|z)p(z)/ p_θ(x)로 나타낼 수 있다. 이를 구하기 위해선, 분모의 p_θ(x) 값이 필요한데, p_θ(x) = ∫p_θ(x|z)p(z)dz라 적분을 사용해야해 매우 비싼 연산이다. 따라서 interactable(다루기 어렵다)고 한다.
기존에 쓰였던 VB(Variational Bayesian)는 사후분포를 근사분포로 대체해 최적화하는 접근법인데, 흔히 사용되는 mean-field는 보통 근사 사후 분포의 기댓값의 해석적 해를 필요로 한다. 이는 마차낙지로 일반적 모델에선 또 intractable이라 범용적으로 사용하기 어렵다.
그리해 본 논문에서는 ELBO(변분 하한)를 reparameterization해, 간단하고 편향 없는 추정치를 만들어 최적화할 수 있게 한다. 이 추정치를 SGVB estimator라고 부른다.
각 데이터 포인트에 대한 연속 잠재 변수를 갖는 i.i.d. 데이터셋인 경우에는, 매 샘플마다 MCMC와 같은 무거운 추론을 돌리기보다 효율적인 방법을 사용하고자 한다. x를 넣으면 바로 근사 사후 추론을 수행할 수 있게해, ancestral sampling(그냥 샘플 한 번 뽑는 수준)으로 빠르게 학습까지 이어가게 한다. 이 단계를 AEVB 알고리즘이라 부른다. recognition model을 신경망으로 사용하면 우리가 흔히 말하는 VAE가 된다.
i.i.d. 데이터셋 + 각 데이터포인트마다 연속 잠재변수는, 각 샘플 x(i)가 서로 독립이고 같은 생성 규칙을 따르며, 각 샘플을 설명하는 실수 벡터 원인인 z(i)가 하나씩 있다는 가정이다.
2. Method
2.1 Problem scenario
앞서 논문에서는 데이터셋 X=\{x^{(i)}\}_{i=1}^N은 어떤 변수 x의 i.i.d. 샘플(서로 독립, 같은 분포)이라고 둔다. x는 연속/이산 둘 다 가능하다고 말한다.
각 데이터 x^{(i)}는 관측되지 않는 연속 잠재변수 z^{(i)} 를 거치는 랜덤 과정으로 생성된다고 가정한다. 생성 과정은 2단계로 나타낸다:

실제 학습에서는 파라미터 θ\*를 모른다고 가정하고, prior/likelihood를 parametric families인 pθ(z), pθ(x∣z)로 둔다. 또 이들의 PDF(확률밀도함수)가 θ와 에 대해 거의 모든 곳에서 미분 가능하다고 둔다(뒤에서 gradient 기반 학습을 위해).
θ\*가 데이터를 생성한 진짜 파라미터이며, 우리는 이를 모르니까 추측 가능한 규칙의 후보군을 만들고 그 중에서 데이터를 잘 설명하는 θ를 찾도록 학습한다. pθ(z)와 pθ(x∣z)는 분포를 하나로 고정하지 않고, 파라미터에 따라 모양이 바뀌는 분포 family로 두겠다는 것이다. 따라서, pθ(x∣z)에서 θ가 바뀌면 x를 만들어내는 방식도 바뀐다.
본 논문에서는 경사하강법으로 θ를 업데이트하기에, 손실/목표함수(ELBO)가 θ에 대해 미분가능해야한다. 그리해 θ와 에 대해 거의 모든 곳에서 미분 가능하다고 가정하는 것이다.
본 논문에서는 단순화를 하지 않고, 아래 상황에서도 효율적으로 작동하는 일반 알고리즘을 구하고자 한다.
(A) Intractability: 적분이 풀리지 않는 상황
주변 likelihood pθ(x)=∫pθ(z)pθ(x∣z)dz 가 계산/미분 불가능한 경우가 많다. 이 경우, pθ(z∣x)도 Intractable해 EM도 사용할 수 없고 mean-field VB에서 필요한 적분도 막힌다.
x가 z를 통해 생성되지만, 우리는 x만 볼 수 있고 z를 볼 수 없다. x가 나올 수 있는 경우는 z가 0.1일 경우도 나올 수 있고, z가 1.7인 경우에도 나올 수 있다. 따라서 가능한 모든 z에 대해 적분한다. 이렇게 z를 marginalize(주변화)해 얻은 모든 x의 우도를 marginal likelihood라고 부른다.
EM은 E-step에서 진짜 사후분포 pθ(z∣x)를 사용해 기대값을 계산하고, M-step에서 그 기대값을 최대화해 θ를 갱신하는 방법으로, VB와는 다르다.
(B) Large dataset: 데이터가 너무 커서 한번에 학습 못 한다
배치 최적화는 비싸기 때문에 미니배치/온라인 업데이트가 필요하고, EM 같은 샘플링 기반 방법은 데이터포인트마다 샘플링 루프가 들어가 이중 루프가 생기기에 너무 느리다.
그리해 논문에서 해결할 문제를 세 가지로 정리한다.
아래 세 가지를 동시에 만족하는 해법이 목표라고 말한다:
1. 의 효율적인 근사 추정(ML, MAP) 학습 — 파라미터를 제대로 추정해 생성도 하고 현상을 분석
ML = Maximum Likelihood (최대우도), MAP = Maximum A Posteriori (최대 사후)
2. 관측 x가 주어졌을 때 z의 효율적인 근사 사후추론 — 표현/코딩 관점에서 유용
어떤 이미지 x가 들어왔을 때, 이미지의 잠재표현인 z를 빠르게 뽑고자함. 즉 인코더를 빠르게하자
3. 자체에 대한 근사 주변추론 — denoising/inpainting/super-resolution 같은 비전 태스크에 필요.
관측 x가 완전하지 않거나 노이즈가 있을 경우, 모델이 그 빈칸/깨진 부분을 채우기/복원이 가능하도록
위 문제들을 해결하기 위해 qϕ(z∣x)라는 recognition model을 도입한다. 이는 와 θ를 같이 학습시키는 방법으로, qϕ(z∣x)는 주어진 x에 대해 가능한 의 분포를 만들어내는 확률적 인코더로, pθ(x∣z)주어진 z에 대해 x를 만들어내는 확률적 디코더로 정리한다.
2.2 The variational bound
일단 논문에서는, marginal likelihood를 각각의 data point마다 계산한다.
앞서 언급했듯이 marginal likelihood는 주변 모수들을 모두 고려한 likelihood를 계산한 것이다.

(1) 식에서, KL은 항상 0 이상이므로 (2) 식과 같이 유도할 수 있다. (2) 식에서 L(θ, ϕ; x^i)는 ELBO라고 한다.

KL-divergence 수식을 역으로 이용하여서 아래 사진처럼 전개를 하면, (2) 식과 같이 log(pθ(x))가 나온다.

첫 번째 항은 인코더가 샘플링한 z로, 디코더가 x를 얼마나 그럴듯하게 설명하는지를 측정하며, 이 값이 커질수록 데이터의 우도가 높아진다. 두 번째 항은 각 입력 에 대한 근사 가 사전분포 에서 과도하게 벗어나는 것을 벌점으로 억제하는 역할을 한다.
따라서 ELBO는 z가 x를 잘 설명하도록 만들되, z의 분포가 사전 분포와 크게 어긋나지 않도록 벌점을 주어 균형을 잡는 최적화라고 정리할 수 있따.

이 ELBO을 θ,ϕ 둘 다에 대해 미분하여 최적화하고 싶은데, ϕ에 대한 기울기를 그냥 샘플 몇 개 뽑아서 구하고 평균내는 방법(나이브 Monte Carlo)으로 하면 뽑히는 z가 조금만 달라도 기울기 값이 심하게 흔들려서(=분산 큼) 업데이트 방향이 들쭉날쭉해진다. 그리해 학습이 느리거나 불안정해서 실제로 쓰기 어렵다. 그래서 2.3에서 reparameterization(SGVB)로 넘어간다.
2.3 The SGVB estimator and AEVB algorithm
기존에는 인코더가 만든 분포에서 z를 바로 뽑는 방식으로 샘플링 자체가 ϕ에 의존했지만, 본 논문에서는 ε라는 ϕ와 무관한 간단한 노이즈 분포를 도입하여, 샘플링은 ε가 담당하도록 하고, z는 ϕ의 결정론적 함수가 되게 만들어 미분이 가능하게 재매개변수화한다. 결과적으로 샘플링 연산 때문에 미분이 끊기지 않고, backprop처럼 체인룰로

이제 qϕ 이 식은 평균 낸 값을
몬테카를로 추정치는 z를 몇 개 뽑아 평균을 내어, 샘플 평균으로 기대값을 근사하는 방법이다. 기대값도 정확한 계산이 어려워 몬테카를로 추정치를 사용한다고 한다.


이제 이를 ELBO(식 (2))에 적용하면, (6) 식과 같이 나타낼 수 있다.

그리고 SGVB(Stochastic Gradient Variational Bayes)에서 하한을 구하면 (7) 식과 같은 모습이 된다.



위 사진과 함께, (3) 식과 (7) 식을 비교해보면 차이점을 더 명확히 알 수 있다.
1. (3) 식은 z가 샘플링까지 하기 때문에 gradient 계산을 못한다. 즉 모델 자체가 stochasitc이다.
2. (7) 식은 transformation function인 g_φ(ε, x), where ε ~ p(ε)을 이용하기에 p(ε)이 stochasitc하고 z는 gradient하다.

전체 데이터 N개를 매번 다 쓰지 않고 미니배치 M개만 뽑아서 사용할 경우에는, M개만 뽑아 평균 낸 다음 스케일만 맞춰 사용한다.논문에선 경험적으로 M=100 정도로 충분히 크다면, 데이터 포인트 당 샘플 수 L은 1개만 써도 된다고 말한다.
5. Experiments
데이터는 MNIST와 Frey Face를 사용했으며, 모델은 섹션 3의 encoder/decoder를 사용했다(은닉유닛 수 동일). Frey Face는 연속값이라 Gaussian decoder를 쓰되 평균을 sigmoid로 (0,1) 범위로 제한하였다. 최적화는 Adagrad로 step size을 조정했으며, 미니배치로 M=100, 데이터포인트당 샘플 수 L=1로 사용했다.

비교 1. AEVB와 Wake-Sleep을 비교하여 Variational lower bound(ELBO)의 수렴 정도를 비교했을 때, AEVB(빨간선)가 더 빠르게 수렴하고 더 좋은(lower bound가 더 높은) 해에 도달함을 볼 수 있었다.
특히 잠재변수 차원인 Nz를 늘려도 과적합이 심해지지 않았다. 이유는 ELBO 자체의 정규화(KL) 성격으로 설명는데, 차원을 늘려도 p에 너무 멀어지면 안되니까 필요 없는 차원을 자체적으로 버려 과적합이 심해지지 않은 것이다.

비교 2. 학습셋의 크기에 따라 AEVB, Wake-Sleep, MCEM을 marginal likelihood(추정치)로 비교한 그래프이고, MCEM은 MCMC 샘플링이 비싸기 때문에 MNIST 전체처럼 큰 데이터에는 실용적으로 적용이 어렵다.
6. Conclusion
latent 잠재변수가 있는 모델에서 변분 하한(ELBO)을 효율적으로 최적화하기 위해, 논문은 SGVB(Stochastic Gradient Variational Bayes)라는 새로운 하한 estimator를 제안했다. 이 추정기는 미분이 바로 가능해서, SGD/Adagrad 같은 표준 확률적 경사하강법으로 학습할 수 있다. 또 데이터가 i.i.d.이고 각 데이터포인트마다 연속 잠재변수가 붙는 일반적인 상황에서, SGVB를 이용해 인코더(근사 추론모델)까지 함께 학습하는 효율적인 알고리즘 AEVB(Auto-Encoding Variational Bayes)를 소개했다. 그리고 이런 이론적 장점(학습 가능성/효율성)이 실험 결과로도 실제로 확인되었다.
[참고]
https://kyujinpy.tistory.com/88