ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [VAE: Auto Encoding Variational Bayes] 2014 ICLR
    Paper Review(논문이야기) 2023. 7. 31. 12:27

    AutoEncoder와 차이

    기본 VAE 아키텍쳐 모양

    VAE와 AE는 그 구조가 비슷할 뿐이지, 목적은 정 반대라고 생각하면 된다. 

    AE는 차원 축소에 그 목적이 있고, VAE는 Generative model에 더 가깝다고 생각하자. 

      목적 구조
    Auto Encoder Dimension Reduction
    (Encoder학습에 집중)
    Encoder, latent vector(z), Decoder로 구성되어있음
    Variational Auto Encoder Generatvie Model
    (Decoder에 목적이 있음)
    Auto Encoder와 동일하지만 Encoder에 모수추정 부분이 존재

     

     

    Generative model

    https://github.com/ndb796/Deep-Learning-Paper-Review-and-Practice/blob/master/lecture_notes/GAN.pdf )

    VAE의 목적이라고 했던 Generative model의 원리를 간단히 설명하면 아래와 같다.

    Generative model은 데이터가 들어오면 해당 데이터에서 뽑아낸 주요한 특징들이 각각의 확률 변수가 되는 확률 분포를 생성한다. 위의 예시그림에서는 인간의 얼굴 데이터가 들어오고 hidden layer에서 dimension을 2라고 설정되어있는 상황이라고 하자.

    해당 경우에는 코, 눈과 같은 두개의 특징에 대한 값들을 확률변수로 하게 설정되고(이는 사람이 통제할 수 없는 부분이다, 즉, laeten vector는 우리가 정할 수 없다), 그 두가지 특징들에 대한 확률 분포를 결합확률분포 형태로 나타나게 된다. 이후 해당하는 확률 분포에서 샘플링이 잘 이루어진다면 우리는 우리가 제공한 데이터와 유사한 데이터들을 생성할 수 있을 것이다. 

     

    VAE(Variational Autoencoders)

    목적

    p는 확률, x는 dataset이며, θ는 확률분포의 모수, z는latent vector 혹은 variable 이다, 위 식은 marginal likellihood 식을 변형한 것이다

    앞서 말한 것과 같이 VAE는 주어진 데이터와 비슷한 데이터들을 생성하는 것을 목적으로 한다. 

    이는 Maximum likelihood 관점에서 보면 Training 데이터(x)가 나올 liklihood를 maximize하는 확률분포를 찾는 것이 목적이라고도 할 수 있다.

     

    문제는 우리가 목적으로하는 p(x)는 위의 그림과 같이 p(z)p(x|z)를 z에 관해 적분한 값과 같은데(marginal distribution 부분 식을 보자) 이를 계산할 수 없는 것이 문제이다. 

    p(z)는 encoder의 확률분포라고 가정하고, p(x|z)는 decoer의 neural network이다. 문제는, 모든 z에 관해 적분하는 것이 intractable하다(z를 어떻게 구할 것인가?)

     

    Solution

    이를 해결하기 위해 decoer network modeling을 위해 encoder network q(z|x)를 추가하자. 이 q(z|x)는 true x's distribution p(z|x)를 근사한 것이다. 

     

    정리하면 아래의 과정을 거치는 것이다.

    1) Encoder에서 확률분포의 모수를 추정한 뒤 

    2) 해당하는 분포에서 z를 샘플링한다.

    3) 이후 smapling한 z를 이용하여 decoder를 통과해 ouput을 만들어낸다. 

     

    Loss function of VAE

    p(x)의 likelihood를 maximize한다 == log likelihood를 최대화 시킨다

    논문의 2.2 varational bound 부분의 (1)이 유도되는 과정이다. 

    결과적으로 우리는 p(x)의 likelihood를 최대화시키고 싶기 때문에 이의 log likelihood를 최대화 시키는 문제와 동일하다. 

    이는 각각의 주어진 individual datapoint x에 관한 시그마(합)으로 표현 가능하고, 동시에 평균으로도 표현 가능하다. 

    그러면 이를 Bayes's Rule을 이용해 변형하고, 우리는 Encoder에 관한 식도 추가해야하기에 q(z|x)에 관한 식도 추가한 뒤, 이를 log의 성질에 따라 변형하고  뒷부분의 기댓값을 적분식으로 변형하면 ~~ 

     

    KL divergence에 관한 식으로 뒷부분이 변경된다!

    KL divergence 
    의미: 두 호가률 분포의 차이를 사용하는데 사용하는 함수로 이상적인분포(엔트로피)와 그 분포를 근사하는 다른 분포와의 엔트로피 차이를 계산(corss entropy와 entropy의 차이 == H(p,q) - H(q) )
    수식:
    https://hyunw.kim/blog/2017/10/27/KL_divergence.html

    즉, 변형된 최종식은 아래와 같다.

     

    앞부분은 z에서 x가 나올 확률을 최대화하는 부분 / 중간 부분은 KL term으로 encoer를 통과한 분포와 z의 distribution과 비슷하게 해주는 부분 

    마지막 부분은 p(x|z)를 알 수 없음으로 intractable하다. 하지만 항상 0보다 크다(KL divergence이기에, 증명은 위의 KL divergence 수식이미지의 블로그 링크 참고)

     

    이제 우리가 다룰 수 있는 부분을 L(x, θ, Φ)로 표현하고, 이를 variational lower bound "ELBO" 라고 한다. 

     

    즉 우리가 maximize하고 싶은 식은 항상 ELBO 값보다 크거나 같다. 

    우리는 이제 ELBO를 maximize 하는 θ, Φ, Encoder와 Decoder의 파라미터를 최적화하자. 

     

    최종식은 아래와 같다. 

    Reconstrucion Error: Input(x)과 output(g(q(x)))의 차이를 최소화하는 식이다. Decoder에 해당하는 값이 어떤 분포를 따르는지에 따라 loss function 값이 다르다. 

    Regularization part: sampling된 z가 어떤 분포를 따르는가(Encoder 부분)에 해당하는 부분. KL divergence을 사용한다. 

    우리가 가정한 분포가 실제 분포와 유사한가? 라는 부분

     

    Regularzation Part 계산 

    1) Gaussian을 따른다고 가정할 경우 

    Diagonal Covariance를 따른다:  대각선 공분산을 따르는 분포는 분포의 변수가 서로 상관관계가 없으며 각 변수의 분산이 공분산 행렬의 주대각선을 따라 독립적으로 표현됨을 의미한다. 즉, 분포의 변수는 서로 선형 관계가 없으며 변수 간의 상관 관계는 사실상 0으로 한다. 
    대각선 공분산이 있는 분포의 일반적인 예는 위의 다변량 가우시안 분포이다. 대각선 공분산이 있는 다변량 가우시안 분포에서 각 변수는 평균과 분산이 있는 일변량 가우스 분포를 따르며 변수 간에 상관관계가 없다. 알고리즘 상  해당 가정은 계산을 단순화하고 알고리즘을 보다 효율적으로 만들 수 있다. 

    해당 가정에 따라 우리는 KL divergence에 해당하는 식을 u와 시그마에 관한 식으로 변형 가능하다. 

    Reconstruction Error 계산 

    모든 z에 관해 적분을 하는 것은 쉽지 않기 때문에  monte-carloo technique(샘플링을 하는 방법 -> 매우 큰수의 sampling 한 값은 E(x)와 거의 동일할 것이다)를 사용하여 적분을 근사처리가 가능하다. 

    문제는 이 방법 또한 z를 매우 많이 샘플링해야하기에 cost가 많이 든다. 

    따라서 L을 1로 하여 이를 단순화한다(sampling을 1번만 하자)

     

    Reparametrization trick

    또 생기는 문제는 z에 관한 식이 미분가능하지 않았기에(샘플링한 값이기에)  Back propagation이 불가능

    따라서 표준정규분포에서 샘플링을 한 후에 이 값을 이용해 z를 변경함으로서 back propagetion이 가능하게 하였다. 

    Reparametrizatin Trick

    Encoder

    좌측은 베르누이분포라고 가정, 우측은 가우시안이라고 가정

    p(x)를 베르누이분포를 따른다라고 가정하면 Cross entropy에 관한 식으로 최종 식이 변경되고, 가우스 분포를 따른다고 하면 SE에 관한 식으로 변형된다. 

    Experiment

     

     

     

    ✨참고한 영상(기반이 된 영상)

    아래 2영상이 없었더라면... VAE를 이해를 못했을 것이다..! 정말 설명이 잘 되어 있다!

    https://www.youtube.com/watch?v=rNh2CrTFpm4&t=2784s 

    https://www.youtube.com/watch?v=GbCAwVVKaHY 

Designed by Tistory.