[개념부터 수식까지 생성모델] 3. VAE (Variational Autoencoder)

kiteday·2024년 1월 2일

baseline

목록 보기
3/7

이전 포스팅에선 Variational inference와 ELBO를 다뤘다. 사실 이건 모두 Variational Autoencoder(VAE)를 위해 다뤘다고 해도 과언이 아니다. 오늘 드디어 그 VAE에 대해서 알아보자.

VAE

VAE는 variational 하다와 AE라는 두 가지 특징의 조화이다.

  • VAE에서 우리는 ELBO를 직접적으로 최적화하길 원한다. 이 접근은 variational하다. variational하다는 말은 best qϕ(zx)q_\phi (z|x)를 위하여 optimization하는 것을 의미한다.
  • traditional AE는 input data가 주어졌을 때, 예측하기 위해 스스로 data를 학습하고 intermediate bottlenecking representation step을 겪는다. data를 주고 학습을 통해 representation하는 점이 traditional autoencoder와 유사하기 때문에 autoencoder라고 불린다.

이런 특징을 생각하며 지난 번 ELBO에서 lower bound 수식으로 이용된 Eqϕ(zx)[logp(x,z)qϕ(zx)]\mathbb E_{q_\phi (z|x)}[\log { p(x,z) \over q_\phi (z|x)}]부터 다시 시작한다. ELBO는 다음처럼 수식이 쓰일 수 있다.

Eqϕ(zx)[logp(x,z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)p(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]+Eqϕ(zx)[logp(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]+DKL(qϕ(zx)p(z))\begin{aligned} \mathbb E_{q_\phi (z|x)}[\log { p(x,z) \over q_\phi (z|x)}] &= \mathbb E_{q_\phi (z|x)}[\log { p_{\theta}(x|z) p(z) \over q_\phi (z|x)}] \\ &= \mathbb E_{q_\phi (z|x)}[\log { p_{\theta}(x|z)}] + \mathbb E_{q_\phi (z|x)}[\log { p(z) \over q_\phi (z|x)}] \\ &= \mathbb E_{q_\phi (z|x)}[\log { p_{\theta}(x|z)}] + D_{KL}(q_\phi (z|x) ||p(z)) \end{aligned}

(지금 우리는 생성모델 VAE를 다루고 있으므로, 이 경우엔 우리는 qϕ(zx)q_{\phi}(z|x)를 인코더로 pθ(xz)p_{\theta}(x|z)를 디코더로 본다.)
결국 ELBO를 최적화 하는 것은 최종 식의 첫 번째 항을 최대화하고, 두 번째 항을 최소화 한다는 말이다.

최종 식에서 나온 두 항은 각각 이런 의미를 갖는다.

  • Eqϕ(zx)[logpθ(xz)]\mathbb E_{q_\phi (z|x)}[\log { p_{\theta}(x|z)}] : reconstruction term
    - variational distribution으로부터 decoder의 reconstruction likelihood를 측정한 값을 의미한다.
  • DKL(qϕ(zx)p(z))D_{KL}(q_\phi (z|x) ||p(z)) : Prior matching term
    - prior belif인 latent variables (주어진 data에 대한 latent들은 "주어진" 것이기 때문에 사전 지식(혹은 belief라고도 표현함)으로 생각할 수 있다.)와 variational distribution을 얼마나 비슷하게 측정할 건지를 의미한다.

결국 VAE는 parameters ϕ\phiθ\theta로 조합된 ELBO를 어떻게 최적화할 것인가의 문제이다. 일반적으로 VAE의 encoder는 multivariative Gaussian (with diagonal convariance) model로, prior를 standard multivariate Gaussian으로 선택된다.

qϕ(zx)=N(z;µϕ(x),σϕ2(x)I)p(z)=N(z;0,I)q_{\phi}(z|x) = N (z; µ_{\phi}(x),σ^2_{\phi}(x)I) \\ p(z) = N (z; 0, I)

representation trick

representation에 대해 이야기 하기 전에, Monte carlo와 stochastic approximation에 대해 간단하게 알아보자

Stochastic approximation

E[X]1Ni=1NXi=SN1+1N(XNSN1)\begin{aligned} \mathbb{E}[X] &\approx {1 \over N} \sum_{i=1}^{N} X_i \\ &= S_{N-1} + {1 \over N} (X_N - S_{N-1}) \end{aligned}

NN는 데이터 개수, XX는 random variable, XNX_N은 관측된 값 (realization), SNS_N은 추정한 기댓값(estimation)을 의미한다. 이와 같은 관점으로 Monte Carlo도 표현할 수 있다. 살펴보자.

Monte-Carlo (MC) estimate

MC는 policy Π\mathrm{\Pi}애 대한 state value function이다. 식으로 표현하면

Vϕ(S)=E[GtSt=s]V_{\phi}(S) = \mathbb{E}[G_{t}| S_{t}=s]

이다. 자세한 MC에 대한 설명은 wiki 참고

앞서 나온 값 NN, XX, XNX_N, SNS_N을 MC 관점으로 보면 다음 표처럼 볼 수 있다.

stochastic approiximateMC설명
NN--
XXGt(S)G_{t}(S)-
XNX_{N}Gt(i)(S)G_{t}^{(i)}(S)i번째 episode에서 state가 SS일 때 값
SNS_{N}VN1(S)V_{N-1}(S)이전 state value function의 estiamtion

그래서 이 관점에서 MC도 바로 위의 식처럼 표현가능하다.

Vϕ(S)=E[GtSt=s]VN(S)=VN1(S)+1N(Gt(i)VN1(s))\begin{aligned} V_{\phi}(S) &= \mathbb{E}[G_{t}| S_{t}=s] \\ V_{N}(S) &= V_{N-1}(S) + {1 \over N}(G_{t}^{(i)}-V_{N-1}(s)) \end{aligned}

reconstruct term은 Monte Carlo(MC) estimation에 따라서 다음 처럼 다시 쓰일 수 있다.

arg maxϕ,θEqϕ(zx)[logpθ(xz)]DKL(qϕ(zx)p(x))arg maxϕ,θl=1Llogpθ(xz(l))DKL(qϕ(zx)p(x))\argmax_{\phi, \theta} \mathbb{E}_{q_{\phi}(z|x)}[\log p_{\theta}(x|z)] - D_{KL}(q_{\phi}(z|x) || p(x)) \approx \argmax_{\phi, \theta} \sum_{l=1}^{L} \log p_{\theta}(x|z^{(l)}) - D_{KL}(q_{\phi}(z|x) || p(x))

reparameterization trick

그러나 위 식은 모델로부터 parameterized된 distribution을 sampling하기 때문에 non-differentiable 하다! 미분 안됨! 미분이 안되면 gradient-based 방식을 사용할 수도 없기 때문에 stochastic sampling과 별개로 prediction을 예측하는 것이 필요하다.
(직관적으로 보자면, stochastic한 것 중 일부분을 deterministic하게 변경해서 backpropagation할 수 있게 하자는 것이다!)

그림출처 : [2]

그래서 reparameterization trick은 random variable을 noise variable의 determination function으로 재정의 하는 것이다. 이를 통해 gradient descent로 non-stochastic terms를 optimization할 수 있다.

기본적으로 sample은 normal distribution xN(x;μ,σ2)x \sim \mathcal{N}(x; \mu, \sigma^{2})을 arbitrairy(임의의) mean μ\mu와 variance σ2\sigma^{2}로 표현된다.

x=μ+σϵ(ϵN(ϵ;0,I))x = \mu + \sigma \epsilon \qquad (\epsilon \sim \mathcal{N}(\epsilon; 0, I))

arbitrary Gaussian distribution은 (ϵ\epsilon은 sample을 의미.) mean을 zero부터 μ\mu로, variance를 target variance σ2\sigma^2로 확장하여 standard Gaussians로 바꿀 수 있다.

VAE에서는 input xx와 noise variable ϵ\epsilon에 대한 deterministic function으로서 각 zz를 다음과 같이 계산한다.

z=μϕ(x)+σϕ(x)ϵ(ϵN(ϵ;0,I))z=\mu_{\phi}(x) + \sigma_{\phi}(x) \odot \epsilon \qquad (\epsilon \sim \mathcal{N}(\epsilon; 0, I))

(\odot은 element-wise product.)
reparametrized된 zzϕ\phi로 표현되고 μϕ\mu_{\phi}σϕ\sigma_{\phi}로 gradient가 계산된다.

❤ Reference

profile
공부

0개의 댓글