ELBO

송용호·2024년 7월 10일

Diffusion

목록 보기
2/2

ELBO (Evidence Lower Bound)

이제 VAE를 어떻게 학습시키는지 살펴보기 위해 목표 함수를 변형해보자. 로그 가능도는 다음과 같다. 이 값을 최대화하는 것이 목표이다. 이 식 자체는 추적 불가능하므로 변형이 필요하다.

logpθ(x(i))\log p_{\theta}(x^{(i)})

이 로그 가능도를 ( qϕ(zx)q_{\phi}(z|x) )로부터 샘플링한 잠재 변수 ( zz )에 대한 기댓값으로 바꿀 수 있다. ( pθ(x(i))p_{\theta}(x^{(i)}) )가 ( zz )에 종속되지 않기 때문이다.

logpθ(x(i))=Ezqϕ(zx(i))[logpθ(x(i))](3)\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z\sim q*{\phi}(z|x^{(i)})}[\log p_{\theta}(x^{(i)})] \tag{3}

여기서 베이즈 정리를 적용해보자.

pθ(zx(i))=pθ(x(i)z)pθ(z)pθ(x(i))p_{\theta}(z|x^{(i)}) = \frac{p_{\theta}(x^{(i)}|z)p_{\theta}(z)}{p_{\theta}(x^{(i)})}
pθ(x(i))=pθ(x(i)z)pθ(z)pθ(zx(i))(4)p_{\theta}(x^{(i)}) = \frac{p_{\theta}(x^{(i)}|z)p_{\theta}(z)}{p_{\theta}(z|x^{(i)})} \tag{4}

식 (3)에 식 (4)를 넣어서 다시 쓰면 다음과 같다.

logpθ(x(i))=Ezqϕ(zx(i))[logpθ(x(i)z)pθ(z)pθ(zx(i))](5)\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z\sim q*{\phi}(z|x^{(i)})}[\log \frac{p_{\theta}(x^{(i)}|z)p_{\theta}(z)}{p_{\theta}(z|x^{(i)})}] \tag{5}

그 다음에 기댓값 안의 항에 같은 값을 곱하고 나눈다.

logpθ(x(i))=Ezqϕ(zx(i))[logpθ(x(i)z)pθ(z)pθ(zx(i))qϕ(zx(i))qϕ(zx(i))](6)\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z\sim q*{\phi}(z|x^{(i)})}[\log \frac{p_{\theta}(x^{(i)}|z)p_{\theta}(z)}{p_{\theta}(z|x^{(i)})}\frac{q_{\phi}(z|x^{(i)})}{q_{\phi}(z|x^{(i)})}] \tag{6}

이때, ( pθ(z)p_{\theta}(z) )와 ( qϕ(zx(i))q_{\phi}(z|x^{(i)}) )를 하나로 묶고 (pθ(zx(i))p_{\theta}(z|x^{(i)}) )와 ( qϕ(zx(i))q_{\phi}(z|x^{(i)}) )를 하나로 묶어서 별도의

기댓값으로 나눠준다.

logpθ(x(i))=Ez[logpθ(x(i)z)]Ez[logqϕ(zx(i))pθ(z)]+Ez[logqϕ(zx(i))pθ(zx(i))](7)\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z}[\log p*{\theta}(x^{(i)}|z)] - \mathbb{E}*{z}[\log \frac{q*{\phi}(z|x^{(i)})}{p_{\theta}(z)}] + \mathbb{E}*{z}[\log \frac{q*{\phi}(z|x^{(i)})}{p_{\theta}(z|x^{(i)})}] \tag{7}

식 (7)의 우변을 살펴보자. 우변의 두 번째 항과 세 번째 항은 KL-Divergence의 형태인 것을 알 수 있다. 따라서 KL의 형태로 바꿔쓰면 다음과 같다.

logpθ(x(i))=Ez[logpθ(x(i)z)]DKL(qϕ(zx(i))pθ(z))+DKL(qϕ(zx(i))pθ(zx(i)))\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z}[\log p*{\theta}(x^{(i)}|z)] - D_{KL}(q_{\phi}(z|x^{(i)}) \parallel p_{\theta}(z)) + D_{KL}(q_{\phi}(z|x^{(i)}) \parallel p_{\theta}(z|x^{(i)}))

이 식의 의미를 살펴보면 다음과 같다. 우변의 첫 번째 항은 재구성을 의미한다. ( qϕ(zx(i))q_{\phi}(z|x^{(i)}) )로부터 샘플링한 ( zz )가 있으며 그 ( zz )를 가지고 ( pθ(x(i)z)p_{\theta}(x^{(i)}|z) )가 ( x(i)x^{(i)} )를 생성할 로그 가능도이다. 우변의 두 번째 항은 사전 분포(prior)인 ( zz )와 근사된 사후 분포(posterior)인 ( qϕ(zx(i))q_{\phi}(z|x^{(i)}) ) 사이의 KL-divergence이다.

즉, 근사된 사후 분포의 분포가 얼마나 정규 분포와 가까운지에 대한 척도이다(사전을 정규 분포로 가정했을 때). 마지막 항은 원래의 사후 분포와 근사된 사후 분포의 차이로, 근사 오차라고 볼 수 있다. 하지만 앞에서 살펴봤듯이 ( pθ(zx(i))p_{\theta}(z|x^{(i)}) )는 추적 불가능하여 세 번째 항을 계산하기 어렵다. 그러나 KL의 성질상 이 세 번째 항은 무조건 0보다 크거나 같다.

따라서 첫 번째 항과 두 번째 항을 하나로 묶어주면 원래의 목표 함수에 대한 추적 가능한 하한을 정의할 수 있다. MLE 문제를 풀기 위해 목표 함수를 미분해서 gradient ascent를 한다. 하한이 정의되면 이 하한을 최대화하는 문제로 바꿀 수 있으며 결국 하한의 gradient를 구하게 된다. 하한의 두 항은 모두 미분 가능하기 때문에 이제 최적화를 할 수 있다.

하한을 다시 정의하자면 다음과 같다.

L(x(i),θ,ϕ)=Ez[logpθ(x(i)z)]DKL(qϕ(zx(i))pθ(z))\mathcal{L}(x^{(i)}, \theta, \phi) = \mathbb{E}*{z}[\log p*{\theta}(x^{(i)}|z)] - D_{KL}(q_{\phi}(z|x^{(i)}) \parallel p_{\theta}(z))

이 하한 식은 evidence의 로그 값인 ( p_{\theta}(x^{(i)}) )의 하한이기 때문에 Evidence Lower Bound, ELBO라고 부른다.

log(pθ(x(i)))L(x(i),θ,ϕ)\log(p_{\theta}(x^{(i)})) \geq \mathcal{L}(x^{(i)}, \theta, \phi)

따라서 원래 ( p_{\theta}(x) )를 최대화하는 문제는 다음과 같이 바뀐다.

θ,ϕ=argmaxθ,ϕi=1NL(x(i),θ,ϕ)\theta^*, \phi^* = \arg\max_{\theta, \phi} \sum_{i=1}^N \mathcal{L}(x^{(i)}, \theta, \phi)

여기까지의 식을 한 번에 보면 다음과 같다:

logpθ(x(i))=Ez[logpθ(x(i)z)]DKL(qϕ(zx(i))pθ(z))+DKL(qϕ(zx(i))pθ(zx(i))\log p_{\theta}(x^{(i)}) = \mathbb{E}*{z}[\log p*{\theta}(x^{(i)}|z)] - D_{KL}(q_{\phi}(z|x^{(i)}) \parallel p_{\theta}(z)) + D_{KL}(q_{\phi}(z|x^{(i)}) \parallel p_{\theta}(z|x^{(i)})

이 ELBO를 구하는 과정은 다음 그림을 통해 이해할 수 있다. ( xx )를 인코더의 입력으로 집어넣으면 인코더는 잠재 공간에서의 평균과 분산을 내보낸다(이때, 평균과 분산은 잠재 벡터의 차원마다 하나씩이다). 그러면 이 평균과 분산이 사후 분포를 나타내게 되고 사전과의 KL-divergence를 구할 수 있다. 그 이후에 (zz )로부터 디코더는 데이터 공간에서의 평균과 분산을 내보낸다(만약 디코더의 출력을 가우시안 분포로 가정했다면. 베르누이 분포로 가정했다면 다른 형태). 그러면 ELBO의 첫 번째 항 값을 구할 수 있고 ELBO가 구해진다. 구한 값에 역전파를 통해 업데이트하면 VAE의 학습 과정이 완성된다.

profile
Weather Forecasting, Computer Vision, Dacon AI Competition

0개의 댓글