Part2는 VAE에 관한 내용이다. Part1에서 생성모델의 개념과 ELBO에 대해서 살펴보았다. 여기서 본 ELBO를 가지고 VAE, Variational Autoencoders를 수행할 수 있다. 여기서는 이 VAE에 대해서 자세히 다룬다. 반드시 Part1을 이해하고 이 포스팅을 참고하는 것이 도움이 될 것이다.
Understanding Diffusion Models: A Unified Perspective (Part 1: 생성 모델의 개념과 ELBO)
해당 글은 Calvin Luo가 2022년 arXiv에 게재한Understanding diffusion models라는 논문이다. Diffusion 모델이 초기에는 서로 다른 notation으로 정리되어 있어 개별 논문마다 이해가 조금 어려운데, 이 논문은 그
ai-onespoon.tistory.com
2.2. Variational Autoencoders
Variational Autoencoder(VAE)는 기본적으로 직접 ELBO를 최대화한다. 이러한 접근은 posterior 중 최적점을 찾아내는 것이므로 variational이라고 표현한다. 아래 그림은 autoencoder인데, 입력 값을 인코더를 통해 z로 변환한 후, 이를 다시 디코더로 복원하여 원래 입력 값과 유사하게 만드는 과정을 보여준다. VAE는 이 autoencoder와 유사하게 입력 데이터를 latent variable로 변환한 후 다시 복원하는 구조를 가진다.

우리는 ELBO를 분해해서 이것을 이해할 수 있다. 첫 번째 식은 part1 마지막에 정리된 ELBO의 식이다.
Eqϕ(z|x)[logp(x,z)qϕ(z|x)]=Eqϕ(z|x)[logpθ(x|z)p(z)qϕ(z|x)] (17)
=Eqϕ(z|x)[logpθ(x|z)]+Eqϕ(z|x)[logp(z)qϕ(z|x)] (18)
=Eqϕ(z|x)[logpθ(x|z)]⏟reconstruction term−DKL(qϕ(z|x)||p(z))⏟prior matching term (19)
(17) 의 좌변은 loglikelihood p(x)의 ELBO이다. 여기서 결합 확률 p(x,z)는 p(x|z)⋅p(z)로 나타낼 수 있다. (→ 조건부 확률의 정의에 의해서) 따라서 이 부분을 모델의 파라미터에 의존하는 pθ(x|z)p(z)로 바꿔 쓸 수 있다.
(18) 곱을 합으로 분해할 수 있는 로그함수의 성질을 이용하여 분리한다.
(19) 좌변의 logpθ(x|z)는 어떤 잠재 변수가 주어졌을 때 x가 나타날 확률이다. 그런데 여기에 들어가는 잠재 변수, 즉 z가 x에 의해서 생성되는 값이고, 이 값에 의해 다시 x가 나타날 확률의 기대값을 구하는 부분이므로 z의 전체 공간(Eqϕ(z|x))에서 x가 나타날 확률은 원래 input이 복원되는 확률이다. 따라서 이를 reconstruction term이라고 한다. 우변은 part1에서 정의한 KLD 공식에 의하면 KL(p||q)=∑ipilog(piqi) 이지만, 여기서 마이너스(-)를 곱하게 되면 다음과 같이 변경된다(로그의 성질에 의해). KL(p||q)=−∑iqilog(piqi). 따라서 KLD term으로 표현할 수 있고, 이 부분을 잘 살펴보면 x에서 잠재 변수가 나오는 분포를 p(z), 즉 encoder를 prior(p(z))에 유사하도록 맞춰주는 것이다.
결과적으로 이 부분에서 qϕ(z|x)는 encoder로 이해할 수 있다. 즉 qϕ(z|x)는 encoder p(z|x)를 근사하며 우리는 이것을 학습해야 한다. 동시에 pθ(x|z)를 학습해야 하는데, 이것은 잠재 변수에서 관측치로 변환해주는 decoder가 된다. (19) 의 식에 따라서 VAE에서 ELBO를 최대화 하는 것은, reconstruction term을 최대로 하고 prior matching term을 최소로 하는 것을 의미한다.
VAE의 특징은 (19)번 식에서 볼 수 있듯이 ϕ,θ를 모두 최적화 한다는 것이다. 여기서 ϕ는 encoder의 파라미터이고, θ는 decoder의 파라미터이다. 즉, encoder와 decoder를 함께 최적화한다. Encoder는 일반적으로 diagonal 공분산을 가진 다변량 가우시안 분포를 모델링하며, prior는 종종 표준 가우시안 분포로 선택된다.
qϕ(z|x)=N(z;μϕ(x),σ2ϕ(x)I) (20)
p(z)=N(z;0,I) (21)
KLD term은 analyrically 하게 계산 가능하고, reconstruction term은 몬테카를로 시뮬레이션으로 근사할 수 있다.
arg maxϕ,θEqϕ(x|z)[logpθ(x|z)−DKL(qϕ(z|x)||p(z))≈arg maxϕ,θL∑l=1logpθ(x|z(l))−DKL(qϕ(z|x)||p(z)) (22)
여기서 {z(l)}l=1L은 데이터셋의 모든 관찰값 x에 대해 qϕ(x|z)에서 샘플링된다. 그런데 여기서 loss가 미분 불가능한 확률적 샘플링으로 이루어지므로 backpropagation이 어렵다. 하지만 qϕ(x|z)가 다변량 가우시안을 모델링하므로 reparameterization trick을 통하여 해결할 수 있다. Reparameterization trick은 예를 들어 정규 분포를 가지는 샘플이라면 다음과 같이 표현할 수 있다.
x=μ+σϵwithϵ∼N(ϵ;0,I)
다시 말해, 임의의 가우시안 분포에서 샘플링하는 것을 표준 가우시안 분포에서 샘플링 하고, 표준 편차로 스케일링 한 후 평균으로 이동시키는 것이다.
결국 VAE에서는 z가 인풋 x와 노이즈 ϵ의 deterministic한 함수로 표현할 수 있다.
z=μϕ(x)+σϕ(x)⊙ϵ
이 함수의 그라디언트 계산을 통해 μϕ,σϕ를 최적화 할 수 있다.
2.3. Hierarchical Variational Autoencoders
Hierarchical Variational Autoencoder (HVAE)는 latent variables 위에 여러 계층으로 확장한 VAE의 일반적인 형태이다. 그래서 여기서는 latent variable 자체가 더 높은 수준의, 더 추상적인 latent variable에 의해서 생성되었음으로 해석한다. 일반적으로 T개의 계층을 가진 HVAE는 각각의 latent가 이전 latent를 조건부로 갖을 수 있지만, 여기서는 Markovian HVAE (MHVAE)에만 초점을 맞춘다. 따라서 이 markovian chain에 의해서 latent zt만이 오로지 latent zt+1의 condition이 된다.

수학적으로는 다음과 같이 표현할 수 있다. (markovian chain의 특성에 의해 모든 확률의 곱이 되므로 아래 식을 전개해보면 확인할 수 있음)
p(x,z1:T)=p(zT)pθ(x|z1)T∏t=2pθ(zt−1|zt) (23)
qϕ(z1:T|x)=qϕ(z1|x)T∏t=2qϕ(zt|zt−1) (24)
이 개념을 ELBO에 쉽게 적용해 볼 수 있다. Part1에서 식 (5) ~ (8)에서 했던 것과 동일하다.
logp(x)=log∫p(x,z1:T)dz1:T (25)
=log∫p(x,z1:T)qϕ(z1:T|x)qϕ(z1:T|x)dz1:T (26)
=logEqϕ(z1:T|x)[p(x,z1:T)qϕ(z1:T|x)] (27)
≥Eqϕ(z1:T|x)[logp(x,z1:T)qϕ(z1:T|x)] (28)
(25) (1)의 식과 동일하게 전체 z공간에 대해 적분하면 (25)와 같이 쓸 수 있다. (z → z1:T)
(26) 분자와 분모에 qϕ(z1:T|x)를 곱한다.
(27) 기대값의 정의에 따라 적분을 기대값 형태로 바꿔준다.
(28) Jensen’s Inequality에 의해서 성립한다. (log 함수는 오목 함수 이기 때문에, f(E[X])≥E[f(X)]
그런 다음 결합 분포 식 (23)과 posterior (24)를 식 (28)에 넣어서 아래 결과를 얻을 수 있다.
Eqϕ(z1:T|x)[logp(x,z1:T)qϕ(z1:T|x)]=Eqϕ(z1:T|x)[logp(zT)pθ(x|z1)∏Tt=2pθ(zt−1|zt)qϕ(z1|x)∏Tt=2qϕ(zt|zt−1)] (29)
Variational Diffusion Model들을 연구할 때, 이런 objective를 해석 가능한 component로 더 분리할 수 있다.
댓글