ELBO (Evidence Lower Bound)
이제 VAE를 어떻게 학습시키는지 살펴보기 위해 목표 함수를 변형해보자. 로그 가능도는 다음과 같다. 이 값을 최대화하는 것이 목표이다. 이 식 자체는 추적 불가능하므로 변형이 필요하다.
logpθ(x(i))
이 로그 가능도를 ( qϕ(z∣x) )로부터 샘플링한 잠재 변수 ( z )에 대한 기댓값으로 바꿀 수 있다. ( pθ(x(i)) )가 ( z )에 종속되지 않기 때문이다.
logpθ(x(i))=E∗z∼q∗ϕ(z∣x(i))[logpθ(x(i))](3)
여기서 베이즈 정리를 적용해보자.
pθ(z∣x(i))=pθ(x(i))pθ(x(i)∣z)pθ(z)
pθ(x(i))=pθ(z∣x(i))pθ(x(i)∣z)pθ(z)(4)
식 (3)에 식 (4)를 넣어서 다시 쓰면 다음과 같다.
logpθ(x(i))=E∗z∼q∗ϕ(z∣x(i))[logpθ(z∣x(i))pθ(x(i)∣z)pθ(z)](5)
그 다음에 기댓값 안의 항에 같은 값을 곱하고 나눈다.
logpθ(x(i))=E∗z∼q∗ϕ(z∣x(i))[logpθ(z∣x(i))pθ(x(i)∣z)pθ(z)qϕ(z∣x(i))qϕ(z∣x(i))](6)
이때, ( pθ(z) )와 ( qϕ(z∣x(i)) )를 하나로 묶고 (pθ(z∣x(i)) )와 ( qϕ(z∣x(i)) )를 하나로 묶어서 별도의
기댓값으로 나눠준다.
logpθ(x(i))=E∗z[logp∗θ(x(i)∣z)]−E∗z[logpθ(z)q∗ϕ(z∣x(i))]+E∗z[logpθ(z∣x(i))q∗ϕ(z∣x(i))](7)
식 (7)의 우변을 살펴보자. 우변의 두 번째 항과 세 번째 항은 KL-Divergence의 형태인 것을 알 수 있다. 따라서 KL의 형태로 바꿔쓰면 다음과 같다.
logpθ(x(i))=E∗z[logp∗θ(x(i)∣z)]−DKL(qϕ(z∣x(i))∥pθ(z))+DKL(qϕ(z∣x(i))∥pθ(z∣x(i)))
이 식의 의미를 살펴보면 다음과 같다. 우변의 첫 번째 항은 재구성을 의미한다. ( qϕ(z∣x(i)) )로부터 샘플링한 ( z )가 있으며 그 ( z )를 가지고 ( pθ(x(i)∣z) )가 ( x(i) )를 생성할 로그 가능도이다. 우변의 두 번째 항은 사전 분포(prior)인 ( z )와 근사된 사후 분포(posterior)인 ( qϕ(z∣x(i)) ) 사이의 KL-divergence이다.
즉, 근사된 사후 분포의 분포가 얼마나 정규 분포와 가까운지에 대한 척도이다(사전을 정규 분포로 가정했을 때). 마지막 항은 원래의 사후 분포와 근사된 사후 분포의 차이로, 근사 오차라고 볼 수 있다. 하지만 앞에서 살펴봤듯이 ( pθ(z∣x(i)) )는 추적 불가능하여 세 번째 항을 계산하기 어렵다. 그러나 KL의 성질상 이 세 번째 항은 무조건 0보다 크거나 같다.
따라서 첫 번째 항과 두 번째 항을 하나로 묶어주면 원래의 목표 함수에 대한 추적 가능한 하한을 정의할 수 있다. MLE 문제를 풀기 위해 목표 함수를 미분해서 gradient ascent를 한다. 하한이 정의되면 이 하한을 최대화하는 문제로 바꿀 수 있으며 결국 하한의 gradient를 구하게 된다. 하한의 두 항은 모두 미분 가능하기 때문에 이제 최적화를 할 수 있다.
하한을 다시 정의하자면 다음과 같다.
L(x(i),θ,ϕ)=E∗z[logp∗θ(x(i)∣z)]−DKL(qϕ(z∣x(i))∥pθ(z))
이 하한 식은 evidence의 로그 값인 ( p_{\theta}(x^{(i)}) )의 하한이기 때문에 Evidence Lower Bound, ELBO라고 부른다.
log(pθ(x(i)))≥L(x(i),θ,ϕ)
따라서 원래 ( p_{\theta}(x) )를 최대화하는 문제는 다음과 같이 바뀐다.
θ∗,ϕ∗=argθ,ϕmaxi=1∑NL(x(i),θ,ϕ)
여기까지의 식을 한 번에 보면 다음과 같다:
logpθ(x(i))=E∗z[logp∗θ(x(i)∣z)]−DKL(qϕ(z∣x(i))∥pθ(z))+DKL(qϕ(z∣x(i))∥pθ(z∣x(i))
이 ELBO를 구하는 과정은 다음 그림을 통해 이해할 수 있다. ( x )를 인코더의 입력으로 집어넣으면 인코더는 잠재 공간에서의 평균과 분산을 내보낸다(이때, 평균과 분산은 잠재 벡터의 차원마다 하나씩이다). 그러면 이 평균과 분산이 사후 분포를 나타내게 되고 사전과의 KL-divergence를 구할 수 있다. 그 이후에 (z )로부터 디코더는 데이터 공간에서의 평균과 분산을 내보낸다(만약 디코더의 출력을 가우시안 분포로 가정했다면. 베르누이 분포로 가정했다면 다른 형태). 그러면 ELBO의 첫 번째 항 값을 구할 수 있고 ELBO가 구해진다. 구한 값에 역전파를 통해 업데이트하면 VAE의 학습 과정이 완성된다.