Variational AutoEncoder
Variational AutoEncoder란?
-
AutoEncoderAE와 동일하게 입력 데이터를 재현(복원)한다.
-
하지만 AE는 입력 데이터를 Encoder를 통해 Latent vector로 만드는 압축 방식을 하였다면, Variational AutoEncoderVAE는 입력 데이터의 Encoder 결과로 평균과 분산을 얻어, 입력 데이터의 분포를 얻게 되는 차이점이 있다.
-
VAE는 Encoder를 통해 얻은 분포를 사용하여 latent vector z를 sampling하게 되는데, 이과정은 역전파가 불가능해 기울기 계산을 할 수 없다.
-
미분 가능하게 하기 위해 Reparameterization Trick을 사용해 미분 가능하게 하였다.
-
VAE는 Encoder를 위해 개발된 AE와 다르게 Decoder를 사용하기 위해 개발된 모델이다.
VAE 이론적 설명
VAE의 배경은 “latent variable 이하 z를 사용하여 이미지를 생성한다.” 에서 시작한다.
z의 확률 분포를 pθ(z)라고 할 때, 생성하려고 하는 이미지의 확률 분포 p(x)를 구하는 조건부 확률은 pθ(x|z)와 같다.
pθ(x)는 ∫pθ(x,z)dz로 표현 가능Marginalization하고, ∫pθ(z)pθ(x|z)dz와 같다.
두 확률분포 pθ(x,z)와 pθ(z)pθ(x|z)가 동일한 이유는 조건부 확률Conditional Probability로 식 변형이 가능하기 때문이다.
∫pθ(z)pθ(x|z)dz식에서 pθ는 정규분포Gaussian prior distribution임으로 우리가 가정할 수 있고, pθ(x|z) 또한 신경망을 통해 추론할 수 있다.
하지만 모든 z에 대해서 적분하는 것은 불가능한데, 확률 분포 pθ(z)를 알고 있다고 하더라도, 연속 확률 분포의 경우 무한한 가능한 값의 범위를 가지기 때문에 z에 값을 정확히 아는것은 불가능Intractible하다.
그렇다면 x로 부터 z를 얻을 수는 없을까 생각을 한다면, pθ(z|x)과 같은 식이 된다.
그리고 pθ(z|x)는 pθ(x|z)pθ(z)/pθ(x)와 같이 변형할 수 있다.Bayes Rule
하지만 궁극적으로 얻고싶은 확률분포 pθ(x)의 값을 알 수 없기 때문에, pθ(z|x) 또한 얻을 수 없다.Intractible
그렇다면 정규분포인 z의 값을 알 수 있다면 앞서 전개된 pθ(x)의 분포를 알 수 있을 것이다.
“어떻게 z의 값을 알 수 있을까?” 의 대답은 AutoEncoderAE의 Encoder를 생각한다면 해결할 수 있다.
AE Encoder의 경우 입력 데이터를 압축하여 잠재 변수latent variable z로 만들었다면, VAE는 입력 데이터를 정규분포인 잠재 변수latent variable z로 만들어주게 된다.
그렇다면 Encoder qϕ(.)는 x가 주어졌을 때 z를 sampling 하게되는데 qϕ(z|x)와 같이 표현할 수 있다.
qϕ(z|x)의 결과인 z는 정규분포를 따라야하기 때문에, 두 분포(z와 정규분포)간의 차이를 구할 수 있는 Kullback-LeiblerKL divergence의 결과를 최소하는 학습을 통해 z를 얻을 수 있다.
자세한 식은 아래 VAE Loss function을 통해 확인 할 수 있다.
VAE Loss function
가장 처음에 얻고자 pθ(x)의 기대값은 다음과 같이 전개할 수 있다.
log를 적용하여 다시 전개한다.log를 사용하는 이유
앞으로 가시성을 높이기 위해 Ez∼qϕ(z|x)는 Ez로 표기한다.
Ez[logpθ(x)]는 다음과 같이 Bayes Rule을 적용하여 전개할 수 있다.
분모와 분자에 qϕ(z|x)를 공통으로 곱해준다.
log함수를 활용하여 수식을 다음과 같이 전개한다.
그리고 기대값의 합연속 랜덤변수 함수 기대값을 다음식과 같이 적분한 값으로 정리할 수 있다.
따라서 처음 Ez[logqϕ(z|x)pθ(z)]과 Ez[logqϕ(z|x)pθ(z|x)]로 정리한 이유는 기대값의 합연속 랜덤변수 함수 기대값으로 표현하기 위해서였고, 위 식들은 다음 식과 같이 Kullback-Leibler divergence로 변환할 수 있다.
최종적인 식은 다음과 같고 우리는 Maximum Likelihood Estimation를 수행할 수 있다.
그리고 위 식을 다음과 같이 표할 수 있는데, 그 이유는 아래에서 설명한다.
우선 DKL(qϕ(z|x)||pθ(z|x)) 이 식에서 qϕ(z|x)는 계산 가능하지만, pθ(z|x)는 계산할 수 없다.
하지만 KL divergence의 값은 항상 0보다 크거나 같기 때문에 우리는 신경쓰지지 않고, 앞의 2개의 수식을 최대화 해주면 된다.
논문에서 자주나오는 식으로 다음과 같이 아래에 ≥0를 붙여 표현한다.
이제 앞의 두 데 Ez[logpθ(x|z)]−DKL(qϕ(z|x)||pθ(z))을 최대화 할 수 있는 L(x,θ,ϕ)의 값을 찾으면 된다.
우리가 최대화 해야하는 변수는 θ 와 ϕ임으로 다음과 같이 정리할 수 있다.
또한 심층망은 일반적으로 기울기를 사용하여 훈련함으로, 식을 minimization할 수 있도록 다음과 같이 변환한다.
이 식을 Evidence Lower BOundELBO라 한다.
ELBO에서 −Eqϕ(z|xi)[logp(xi|gθ(z))]는 Reconstruction Error라 하고, DKL(qϕ(z|xi)||p(z))는 Regularization Error라고 칭한다.
Reconstruction Error
위 식에서 진짜 데이터 x를 Encoder를 사용하여 생성된 latent variable z를 Decoder에 입력했을 때 x가 생성될 확률이다.
위 식을 다음과 같이 연속 랜덤변수 함수 기대값정리를 적용한다.
여기서 모든 z에 대해서 적분하기는 심층망의 연산량에 큰 부하를 가져올 수 있다.
따라서 z sampling을 Monte-carlo technique을 적용하지만 VAE에서는 sampling 개수를 1번으로 제한한다.
식은 다음과 같게된다.
log(pθ(xi|zi))값을 정규분포로 가정하였을 때, 우리는 Cross entropy loss에 적용하여 해결할 수 있다. 따라서 최종적인 식은 다음과 같다.
Regularization Error
이 식은 Encoder를 통해 생성되는 z가 정규분포와 같게 만들어 주기 위한 식이다.
우리는 위 식을 위해 다음과 같이 가정한다.
-
qϕ(z|xi)∼N(μi,δ2iI), 생성되는 z가 정규분포를 따른다.
-
p(z)∼N(0,I), z는 표준정규분포를 따른다.
Reparameterization Trick
Encoder를 통해 생성한 평균과 분산으로 정규분포를 만들경우 미분이 불가능해진다.
따라서 표준정규분포 ϵ∼N(0,I)에서 sampling 하여 다음과 같이 계산한다.
다음과 같이 할 경우 정규분포를 가지는 z를 얻을 수 있고, 미분이 가능한 식이 된다.
Appendix
Probability function에 log를 사용하는 이유
-
수치적 안정성(Numerical stability): 확률은 0과 1 사이의 값이며, 작은 확률 값들을 계산할 때 수치적으로 불안정할 수 있다. 로그 변환은 0과 1 사이의 값에 대해 안정적인 계산을 가능하게 한다. 로그를 사용하면 작은 확률 값들이 표현 가능한 범위로 압축되며, 수치 계산이 더 안정적으로 이뤄진다.
-
로그 변환과 곱셈의 덧셈 변환: 로그 변환은 곱셈 연산을 덧셈 연산으로 변환할 수 있게 해줍니다. 확률 분포의 독립 사건에 대한 확률을 계산할 때, 확률의 곱셈 연산이 수행되어야 한다. 로그를 취하면 곱셈이 덧셈으로 변환되어 계산이 간편해진다.
-
정보 이론 및 최대 가능도 추정(Maximum Likelihood Estimation): 로그는 정보 이론에서 중요한 역할을 한다. 로그 용량은 정보의 양을 측정하는 데 사용되며, 로그 용량을 최대화하는 것은 정보를 가장 효율적으로 전달하는 것을 의미한다. 최대 가능도 추정(MLE)에서 로그 용량을 최대화하는 것은 로그 가능도를 최대화하는 것과 동일한 의미를 가진다.
-
확률의 합 대신 로그 확률의 합: 다양한 확률 분포들이 독립적으로 발생하는 경우, 확률의 곱셈을 수행하여 결합 확률을 계산해야 한다. 이때 로그를 사용하면 곱셈이 덧셈으로 변환되어 계산이 용이해진다. 또한, 로그 확률의 합을 사용하여 계산하면 수치적인 안정성을 높일 수 있다.
위 식은 다음 식과 동일한 의미를 가진다.
모든 z에 대해서 적분을 하지 않고, 매우 많이 sampling한 z의 결과값의 평균은 기대값과 비슷해질 것이다.
Reference
1. [논문] VAE(Auto-Encoding Variational Bayes) 직관적 이해, 20. 12. 2018, taeu.github.io, https://taeu.github.io/paper/deeplearning-paper-vae/