본문 바로가기
카테고리 없음

ELBO (Evidence of Lower BOund)에 대하여

by 3분 19초전 2023. 10. 29.

 

 

ELBO (Evidence of Lower BOund)에 대해 알아보겠습니다. ELBO를 이용해서 loss를 만들고 최적화하곤 하지요. ELBO는 자주 쓰이지만 ELBO가 어떻게 나왔는지는 자주 까먹곤 합니다. 나중에 ELBO에 대해 까먹으면 다시 찾아오기 위하여 이 글을 작성합니다.

ELBO (Evidence of Lower BOund)에 대해 알아보자

어떤 space $X$가 있다고 합시다. 여기서 $x\in X$를 꺼내 봅시다. 이제 이 $x$를 변형시켜서 어느 공간 $Z$으로 숨길려고 합니다. 잘 숨겼다면 나중에 다시 불러 올수도 있겠죠.

Encoder와 Latent Space

앞서 말씀 드렸듯 $x \in X$를 어떤 공간 $Z$로 보낼려고 합시다. 여기서 $Z$는 확률밀도함수 $p(z)$를 따르는 공간으로 가정하고 latent space라고 부릅니다. $x \in X$를 $Z$라는 latent space공간에 보내기 위해서는 여러방법이 있습니다. 그런데 $x$를 옮기는 것도 있지만 $X$를 $p(z)$를 확률밀도함수로 갖는 $Z$공간으로 변형시키기 위해서 어떤 transition probability density function $q(z|x)$를 이용합니다. 이 $q(z|x)$를 encoder라고 부릅니다.

Decoder는?

$z \in Z$를 뽑았다고 합시다. 이 $z \in Z$는 어떤 $x \in X$로 부터 왔다고 볼 수 있습니다. 어떻게 하면 $z$의 본 모습인(?) $x$로 변형시킬 수 있을까요? 어떤 transition probability density function $p(x|z)$을 이용해서 $z$를 본모습인 $x$로 변형시킬 수 있다고 믿을 수 있는데요. 이러한 $p(x|z)$를 decoder라고 부릅니다. 이때 $p(x|z)$를 모르는 경우가 대부분입니다. 그래서 $p(x|z)$를 근사하기 위한 $p_\theta (x |z)$를 도입합니다. 여러 후보군이 있겠지만 일단은 $p_\theta(z) = p(z)$이 되도록 선택합니다. 여기서 $p_\theta(x|z)$에 대해서는 어떤 규칙으로 돌아가는지는 알지만 $p_\theta (x|z)$가 $p(x|z)$와 얼마나 가까운지 보장을 못합니다. 즉 얼마나 적합한 근사인지는 모른다는 얘기이죠. 어떻게 해야 $p_\theta(x|z)$가 적합한지 알 수 있을 까요?

log likelihood 를 이용한 추정

간단히 생각해보면 loglikelihood $\log p_\theta (x)$가 커야 할것 같습니다. $p_\theta(x|z)$는 $z\in Z$를 $x \in X$로 보내는데요. 잘 보냈다면 $\log p_\theta(x|z)$가 크겠고 이것의 평균이 $\log p_\theta (x)$또한 크겠죠. 그런데 $\log p_\theta (x)$를 알기 어려우니까 아래와 같은 과정을 거쳐서 수식을 유도합니다.

$$ \log p_\theta (x) = \int q(z|x) \log p_\theta(x) dz  = \int q(z|x) \log \frac{p_\theta(x|z)}{p_\theta (z|x)} \frac{q(z|x)}{q(z|x)} p_\theta (z) dz$$

간단한 수식이니까 한번 해보시고요. 여기서 $p_\theta(z) = p(z)$이므로 아래와 같이 수식이 변형됩니다.

$$ \log p_\theta (x) =\int q(z|x) \log p_\theta (x|z) dz + \int q(z|x) \log \frac{p(z)}{q(z|x)} dz + \int q(z|x) \log \frac{q(z|x)}{p(z|x)}$$

KL divergence의 정의등을 쓰면 아래와 같은 모양이 나옵니다.

$$ \log p_\theta (x) =\int q(z|x) \log p_\theta (x|z) dz - KL\left[q(Z|x) || p(Z)\right] + KL \left[ q(Z|x) || p_\theta (Z|x)\right]$$

여기서 마지막 term $ KL \left[ q(Z|x) || p_\theta (Z|x)\right]$에서 $p_\theta (Z|x)$는 알수없지만 $KL \left[ q(Z|x) || p_\theta (Z|x)\right]$ 자체가 0보다 큰것은 알고 있으므로 아래와 같은 식이 성립니다.

$$ \log p_\theta (x) \geq \int q(z|x) \log p_\theta (x|z) dz - KL\left[q(Z|x) || p(Z)\right] $$

ELBO

위에서 유도한 식에서 부등호의 오른쪽에 있는 term을 ELBO (Evidence of Lower BOund)라고 부릅니다. $\log p_\theta (x)$의 lower bound이고 ELBO가 클수록 $\log p_\theta (x)$가 크니까 선택한 $p_\theta (z|x) $가 그럴듯하다는 얘기입니다.

$$ ELBO = \int q(z|x) \log p_\theta (x|z) dz - KL \left[q(Z|x) || p(Z) \right]$$

 

 

ELBO를 이용한 학습

위에서 구한 ELBO를 최대화 시키면 $\log p_\theta (x)$가 최대화됩니다. 이점을 이용해서 $p_\theta (x|z)$를 학습할 수 있습니다. loss를 아래와 같이 ELBO에 -1 을 곱한 형태로 잡습니다.

$$Loss = - ELBO = -\int q(z|x) \log p_\theta (x|z) dz +KL \left[q(Z|x) || p(Z) \right]$$

여기서 Loss의 첫번째 term은 reconstruction loss 라고 부릅니다. 그리고 두번째 term을 regularization loss 라고 부릅니다. 왜 reconstruction loss냐고 부를까요? $\log p_\theta (x|z) = \log p_\theta (z|x) +\log p_\theta (x) - \log p(z)$이므로 첫번째 term을 최적화한다는 것은 $q(z|x),p_\theta (z|x)$간의 cross entropy 를 줄인다라는 뜻입니다. 그렇게 되면 $q(z|x) \approx p_\theta (z|x)$이므로 $x$를 잘 reconstruction 한다는 의미에서 쓴것 같습니다.