z Variational Auto Encoder를 이해해보자! (3)
본문 바로가기

Generative Model

Variational Auto Encoder를 이해해보자! (3)

728x90

이 포스트는 http://paulrubenstein.co.uk/variational-autoencoders-are-not-autoencoders/ 블로그를 보고 이해한 바 대로 작성한 글 입니다.

개인적인 생각으로 이 포스트에서 수식적으로 풀어나가는 방법을 통해 견해를 더 넓힐 수 있다고 생각이 들었습니다.

 

 

VAE의 학습 불안정성

간혹 우리는 매우 강력한 decoder로 훈련을 하게 됩니다. 이때 매우 강력한 decoder로 훈련을 하게 된다면 model이 주어진 latent variable에 대한 정보를 무시하는 경우가 발생합니다. 이를 Failure mode라고 합니다. 하지만 이 경우 ELBO에 관한 Score 자체는 좋게 나옵니다.

 

이 상황을 통해 알 수 있는 점이 하나 존재합니다. 저희의 본질적인 목적이 무조건 적으로 ELBO를 최대화 하는 것과는 다를 수 있다는 것 입니다.

 

우리는 VAE에서 \(q_\phi (z|x)\) Approximator를 True posterior \(p_\theta (z|x)\)에 근사시키고자 사용하는 것인데, VAE에서의 문제점을 해결하기 위해 ELBO를 찾아나가다 보면 Approximator \(q_\phi (z|x)\)를 \(p(z)\)와 근사시키는 것으로 귀결됩니다.

하지만 딱 봐도 알겠지만 이 두 경우는 확연히 다릅니다. 이 때 후자의 경우처럼 \(q_\phi (z|x)\)를 \(p(z)\)와 완전히 Fitting하게 된다면 위에서 언급한 Failure mode 상황이 됩니다.

 

이전 포스트에서 계속 봐왔던 ELBO 식은 아래와 같습니다.

우리의 실질적인 목표는 ELBO의 최대화가 아닌 \(\log p_\theta (x)\)의 최대화 입니다.

 

근데 잠깐, 도대체 왜 우리는 \(\log p_\theta (x)\)를 최대화 하려고 하는 것일까요?

실제 data distribution을 \(p_{data}\), 어떤 모델 \(p_\theta \)가 있다고 생각해봅시다.

우리는 결국 data들을 매우 잘 이해하는 model \(p_\theta \)를 구하고 싶은 것입니다. 그럴려면 \(p_{data}\)와 매우 가깝게 만들면 되겠죠?

이를 KL Divergence에 대해 식으로 표현해봅시다.

$$ KL[p_{data} (x)||p_\theta (x)] = E_{x \sim p_{data}}[ p_{data} (x)] -E_{x \sim p_{data}}[\log p_\theta (x)]$$

 

근데 우항의 첫번째 Term은 \(\theta \)와 독립적이라서 결국 주어진 KL을 최소화 하기 위해서는 우항의 두번째 term인 \(E_{x \sim p_{data}}[\log p_\theta (x)]\)을 최대화 하는 것으로 귀결 됩니다.

 

그렇기 때문에 \(\log p_\theta (x)\)를 최대화 해야합니다.

 

\(KL(p_{data}||p_\theta) = 0\) 일 때 \(p_{data} = p_\theta \)이고 \(p_{data} = p_\theta \)가 존재한다는 가정 하에 이는 global optimum 입니다.

 

그리고 추가로 ELBO에서 \(q_\phi \) 는 trick을 위한 도구 그 이상의 의미는 갖지 않다는 것을 기억해둡시다.

 

Powerful Decoder

Decoder \(p_\theta(x|z)\)가 powerful 하다는 것은 모든 z에 대해여 \(p_\theta^{*}(x|z) = p_{data}(x)\)를 만족하는 \(\theta^{*}\)가 존재한다는 것 입니다.

즉 이는 latent에 대한 정보 없이 data distribution을 표현해버리는 경우를 의미합니다.

단, 여기에서 powerful decoder는 복잡한 모델 구조와는 별개의 의미입니다.

 

Ignoring the latent variables proof

이제 위처럼 latent를 무시하는 상황에 대해 수식적으로 따라가봅시다.

 

Assume (제한된 상황)

  1. 모든 x에 대해 \(p_{\theta^{*}}(x|z) = p_{data}(x)\)인 \(\theta^{*}\)가 존재한다.
  2. 모든 z에 대해 \(q_\phi^{*}(z|x) = p(z)\)인 \(\phi^{*}\)가 존재한다.

Proof

$$ p_\theta^{*} (z|x) = {p_\theta^{*}(x|z)p(z)  \above 1pt p_\theta^{*}(x)} $$ 에서

$$ p_\theta^{*}(x|z) = p_{data}(x) $$ 이면,

$$ p_\theta^{*} (z|x) = p(z) $$

위의 식들이 만족된다면,

$$ KL[p_\theta^{*} (z|x)||q_\phi^{*} (z|x)]  = 0 $$

$$ \log p_\theta (x) = ELBO $$

로 귀결된다. 결국 이는 ELBO를 최소화 하는 입장에서는 global optimum이 된다. parameter \((\phi^{*}, \theta^{*})\)

 

근데 이건 latent variable을 완전히 무시할때가 되는 경우죠??

그렇다면 무시하지 않는 경우에 대해서는 어떻게 될까요?

 

\(p_\theta (x) = p_{data}(x)\) 인 경우. (x와 z는 independent 하지 않다.)

 

 

$$ \theta^{+} ~such ~that~ p_\theta^{+} = p_{data}(x) $$

$$ L(\theta^{*}, \phi^{*}, x) = \log p_{data}(x) $$ $$ = \log p_\theta(x) = L(\theta^{+}, \phi, x) + KL[q_\phi(z|x) || p_\theta^{+}(z)] $$

$$ \geq L(\theta^{+}, \phi, x) $$

 

단 여기에서 \(q_\phi(z|x)\)는 간단한 distribution이고 \(p_\theta^{+}\)는 z에 의존적이기 때문에 비교적 complex 합니다.

그렇기 때문에 KL Term은 0보다 클 것이고, 결국 \(p_\theta^{+}\)에 대한 L (ELBO) Term은 등호를 포함하지 않는 부등호 (>) 로 변합니다.

 

$$ L(\theta^{*}, \phi^{*}, x) > L(\theta^{+}, \phi, x)$$

 

위 식에서 좌항은 EBLO의 의도에 해당되고, VAE의 본질적인 목적은 우항에 해당됩니다.

결국 ELBO에 대해 최적화 하다보면 \(p_\theta^{*}\)가 더 선호되게 됩니다.

 

ELBO를 최대화 하는 과정에서 계속 update하게 된다면 \(\theta^{+}\)를 지나 \(\theta^{*}\)가 됩니다.

 

결론은 latent code를 무시하는 optimal solution \((\theta^{*}, \phi^{*})\)는 unique optmal solution일 수 있고, 더 선호될 수 있다는 것입니다.

 

728x90