VAE

seung·2024년 8월 23일

Generative Model

목록 보기
2/7

Maximum Likelihood Learning

likelihood란?

likelihood의 의미는 우도라는 뜻으로 파라미터가 주어졌을 때 이 데이터가 얼마나 그럴싸한지 대한 것이다.
이를 높이는 방향으로 파라미터를 학습하는 것을 Maximum Likelihood Learning이라고 한다.

best approximating density & model family

예를 들어 강아지 사진들이 있을 때 generative model은 강아지들의 이미지를 생성해내는 우리가 모르는 어떤 분포가 존재한다고 가정하고 우리가 모델링하고 학습할 수 있는 어떤 probability density가 있을 때
underlying generative model과 내가 학습할 수 있는 density 사이의 거리를 최소화하는 방향으로 density를 최적화 시키는 것을 best-approximating density라고 한다.
우리가 학습할 수 있는 분포들의 경우의 수를 model family라고 한다.

자 우리가 이렇게 정의 했을 때 가장 먼저 정의해야될 것은 어떤 기준으로 좋은 것을 표현할 것인가 이다. 어떤 기준으로 근사(분포 사이의 거리가 가까워졌는지)가 잘 되었는지 정의하는 것이 되게 중요하다.

KL-divergence

우리가 확률 사이의 분포를 말을 할 때, divergence라는 말을 한다.
구체적으로 KL-divergence,kld라고 표현한다.

이 분포는 근사적으로 어떤 두 확률분포 사이의 거리를 만든다.
정확히 말하면 거리는 아니지만 근사적으로 사용된다.

PdataP_{data}는 우리가 뭔지는 모르지만 데이터를 생성해내는 분포이다.
PθP_{\theta}는 일반적으로 우리가 학습하는 데이터로 파라미터화 되는 모델을 의미하게 된다.(여러가지로 모델링 하게 될 것이다.)

마지막 수식을 보게 되면 중요한 것은
우리가 theta를 최적하해서 PdataP_{data}와 맞추고 싶은 것이다.
첫번째 텀은 우리 theta와 상관없기 때문에 무시할 수 있고
두번째 항을 최대화 하는게 KL divergence를 최소화하는 것과 동일한 효과가 난다.

즉 내가 KL-divergence를 최소화 한다는 것은 내가 찾고자 하는 PdataP_{data}에서 나온 그 x(입력)들이 내가 찾을려고 하고 최적화하려는 PthetaP_{theta}에 집어넣었을 때 그 likelihood가 최대화하는 방법으로 theta를 최적화하는 것이랑 동일하다.

그래서 우리는 likelihood를 최대화하는 방법으로 생성모델을 학습시키겠다라고 해서 이 전체를 Maximum Likelihood Learning이라고 하게 된것이다.

여기서 주의할 것은 generative model이 Maximum Likelihood Learning인 것은 절대 아니다.
Maximum Likelihood Learning은 생성모델을 풀수 있는 쉬운 방법중에 하나일 뿐이다.

way of measuring the similarity

similarity를 측정하는 방법이 KL divergence만 있는 것이 아니다.

방법론들은 각각의 모델들을 배울때 알아보자

Emperical Risk Minimization(ERM)

전체 기댓값을 취하려면 PdataP_{data}에 접근이 가능해야 한다.
즉, 원래라면 모든 가능한 x에 대해서 PdataP_{data}를 다 계산한 다음에 log-likelihood를 최대화하는 방향으로 θ\theta를 최적화 시켜야 되지만 그렇게 할 수 없기 때문에
D개의 데이터 셋을 만들어 놓고 이 dataset이 PdataP_{data}에서 나왔다고 가정하고 했을 때, 그 데이터들만 보고 PθP_{\theta}를 추정하는 것이다.
즉 전체를 보는게 아니라 모아진 데이터만 가지고 학습할려는 과정을 empirical machine learning이라고 한다.(몬테카를로 이용)

그 결과 maximum likelihood learning은 이렇게 바뀌게 된다.

하지만 이런식으로 몬테카를로를 이용했을 때 데이터의 숫자가 충분하지 않으면 정확하지 않을 수 있다.

이렇게 MLL을 할때 empirical을 이용하는 것을 Emperical Risk Minimization이라고 한다.
하지만 ERM을 하면 overfitting이 일어난다. 예를 들어서 가장 극단적인 예시는 학습데이터를 다 외워버리는 것이다. 이러면 사실 우리가 모델을 학습시킬 이유가 없다.
overfittin을 줄이고 일반화를 높이기 위해서 model space를 줄이게 된다. 모든 분포공간에서 문제를 푸는게 아니라 생성모델을 모델링할 수 있는 공간을 줄이게 된다. 성능자체에 한계를 두는것이라 성능이 떨어질 수 있다.
그래서 underfitting에 취약하게 된다.(우리가 모든 공간분포를 사용할 수 있으면 좋겠지만 그럴수 없기에..) 일반적으로 우리가 최적화 하기 위해 경사하강법을 쓰고 미분 가능한 log-likelihood를 사용하기 위해 제일 만만한게 가우시안 분포를 사용하기 때문에 사실은 유의미한 분포로 모델링할 수가 없었다.(이미지와 같은 고차원 공간의 이미지를 그럴싸하게 생성해 내지 못했따.)(지금은 좋은 제안이 나왔다.)

VAE

어떤 입력이 들어왔을 때 encoder를 거쳐서 latent vector를 만들고 decoder를 거쳐서 다시 입력을 복원하는 network인 autoencoder는 과연 생성모델일까?
정답은 아니다 그냥 하나의 모델이다.
그럼 우리가 배우게 되는 variational autoencoder는 생성모델인가?
정답은 맞다!!
그 차이에 대해 배워보도록 하자

VAE의 목적

목적은 단순하다.
MLL을 통해 pθ(x)p_{\theta}(x)를 최대화 하는 것이 목적이다.

근데 우리가 이것을 직접적으로 할려면 앞에서 알려줬지만 pθ(x)p_{\theta}(x)를 많은 것을 사용할 수가 없었다.
오버피팅 때문에 표현력이 높지 않은 분포(가우시간,카테고리 분포)만을 사용했다.(그래서 under fitting문제가 있었다, 생성된 이미지가 blury하거나 퀄리티가 좋지 않았다.)

variational inference(VI)

표현력이 좋지 않은 분포로 인해서 생기는 underfitting을 해결하기 위해서 variational inference을 이용하게 된다.

VI는 일반적으로 VAE에서만 활용되지 않고 베이지안 머신러닝,베이지안 추론에 활용되는 방법론이다.

내가 찾고자 하는 분포가 있을 때 그 분포가 너무 복잡해 내가 모델링 할 수없어 내가 찾을 수 있는 간단한 분포로 근사하려고 하는 것이다.

  • posterior distribution(내가 찾고자 하는 분포, 많은 경우에 모델링 할 수 없다.)
  • variational distribution(상대적으로 간단하지만 최적화 할 수 있는 분포, posterior distribution과 비슷하게 만들고 싶은 것)

하지만 좀 뭔가 이상해 posterior distribution은 내가 계산할 수도 없고 모델링하기가 불가능한데, 내가 어떻게 근사할 수 있는 것인가?
이런 것을 쉽게 해주는 것이 variational inference야!!

VAE 학습과정

데이터 분포가 굉장이 복잡할 때 VAE는 인코더와 디코더를 학습함으로써 돌아가게 된다.
즉 latent distribution(prior distribution)에서 z를 샘플링 한 다음에 학습된 디코더를 통과해서 나온 x가 원래 dataset에 있는 것과 비슷하다는 것은 만족하는 인코더 디코더를 학습하는 것이다.

이때 인코더를 학습하는 것이 variational inference에서의 variational distribution을 학습하는 것이다.

우리가 variational gap을 줄여야 하는데 그 수치를 구할 수 없기 때문에 ELBO부분을 최대화하여 variational gap을 줄이는 것이다.(kl divergence라서 variational gap은 항상 0보다 크기 때문에 가능하다.)

Evidence Lower Bound(ELBO)

ELBO는 크게 두가지 부분으로 나눌 수 있다.

  • Reconstruction Term
    x(입력)이 주어지고 q(encoder)를 통해서 벡터 z가 나오고 latent vector z가 p(decoder)를 들어가면 새로운 입력이 나오는 과정을 의미한다.
    이 term을 높이는 것이 reconstruct를 잘하는 것이다.
  • Prior Fitting Term
    '-'가 붙어 있는 term이라서 이것을 낮추게 되는데 이것은
    내가 건드릴 수 있는 encoder(q)에서 나오는 z 분포와 내가 미리 정해놓은 prior distribution 거리를 나타내는 term이다.
    이 거리를 최소화하는 것이다.

reconstruction term 만 있으면 auto encoder와 동일한데, prior fitting term을 통해 latent space가 아무렇게 존재하는 것이 아니라 내가 미리 정해놓은 prior distribution(가우시안 분포)가 최대한 비슷하게 하기위해 추가적으로 넣어 준것이 VAE가 되는 것이다.

단점도 존재한다.

  1. MLE로 출발하기 했지만 근사를 통해 최적화하기 때문에 인코더 디코더를 확률분포로 보기 어렵다.

  2. prior fitting term이 미분가능해야한다. 하지만 KL divergence는 기본적으로 적분형태로 되어 있기 때문에 미분 할려면 적분을 풀어야 된다. 그래서 많은 경우에 prior는 가우시안으로 사용하고, encoder distribution(q)도 가우시안(각각의 가우시안이 독립적인)으로 가정했을 때만 미분 가능하다.

그래서 가우시간 말고 다른 분포를 이용해서 해보겠다 해서 나온 논문들이 AAE와 같은 것이다.

VAE 결과 예시


생성된 이미지 퀄리티를 본다면 추천하고 싶지 않다.
이후에 배울 GAN이나 Diffusion모델의 성능이 더 잘나오기 때문이다.

0개의 댓글