부스트캠프 AI Tech 4기

[DL Basic] 6. Genrative Model

StoneSeller 2022. 10. 6. 15:13

Generative Model이란?

강아지 이미지들이 주어지고 Generative Model로 $p(x)$을 학습했다고 가정하자

  • Generation : 새로운 강아지의 모습을 sampling 할 수 있어야 한다.
  • Density estimation : 어떤 사진이 주어졌을 때 이 사진이 강아지 같은지 아닌지 구분하는 것 (explicit model)

 

$p(x)$를 어떻게 학습할까?

여기 mnist 흑백 이미지가 있다.

픽셀의 숫자는 28x28(784)개라고 가정하자.

 

이 binary 이미지가 가질 수 있는 경우의 수는 $2^{784}$개이다.

그리고 이러한 binary 이미지를 표현하는 파라미터 수는 $2^{784} -1 $개 이다.

 

+ 왜 $2^{n} -1 $ 개 일까?

Categorical distribution을 생각해보면 된다.

6개의 면을 갖는 주사위를 생각해봤을 때 5개 면이 각각 나올 확률을 정의한다면 나머지 한개의 면은 저절로 확률이 구해지게 된다.

확률의 총 합은 1이 되어야 하기 때문이다.

 

이 binary 이미지를 표현하는 파라미터의 수가 너무 많다.

모든 binary 이미지의 경우의 수를 고려한 확률분포를 모델링하는 것은 현실적으로  불가능하다.

일반적으로 데이터의 숫자가 학습하고자하는 파라미터의 수보다 적으면 학습이 잘 안되기 때문이다.

MNIST같은 간단한 이미지를 모델링하기 위해서도 전체 경우의 수를 고려한다면 엄청난 양의 데이터가 필요할 것이다.

 

Structure Through Independence

그렇다면 이 784개의 픽셀들이 독립적이라고 가정하자.$$P(X_{1}, ... , X_{n}) = P(X_{1})P(X_{2}) ... P(X_{n}) $$그렇다면 필요한 파리미터의 개수는 784(n)개 일 것이다.

 

binary 이미지가 가질 수 있는 경우의 수는 여전히 $2^{784}$개로 동일하지만 확률분포를 표현하는 파라미터의 수는 엄청나게 줄어듬을 알 수 있다.

이러한 Independent assumption은 우리가 표현할 수 있는 표현력을 굉장히 줄여버린다.

이런 Independent assumption을 가지고 binary 이미지를 모델링한다면 각각의 픽셀이 독립적이기 때문에 의미있는 이미지를 얻어낼 수 없을 것이다.

 

그래서 우리는 그 중간 어딘가를 원한다.

원하는 것을 얻기 위해서는 Conditional independence를 활용한다.

 

  • Conditional independence
    if $x  \perp y | z$, then $p(x|y,z) = p(x|z)$ 
    $z$라는 random variable이 주어졌을 때, $x$랑 $y$가 independent하다면,
    $y$랑 $z$가 모두 주어졌을 때에 대한 conditional distribution이 $y$를 빼고 생각할 수 있다. (independent하니까)

chain rule을 살펴보자.

chain rule은 n개의 joint distribution을 n개의 condition distribution으로 바꾸는 것으로, independent이든, dependent이든 상관없이 항상 만족한다.

$$ P(X_{1}, ... , X_{n}) = P(X_{1})P(X_{2}|X_{1})P(X_{3}|X_{1},X_{2}) ... P(X_{n}|X_{1}, ... , X_{n-1}) $$

 

몇 개의 파라미터가 필요할까?

$ P(X_{1}) $ : 1개

$P(X_{2}|X_{1})$ : 2개 ( $P(X_{2}|X_{1}=0)$ 과 $P(X_{2}|X_{1}=1)$ )

$ P(X_{3}|X_{1},X_{2}) $ : 4개

즉, $ 1 + 2  + 2^{2} + ... + 2^{n-1} = 2^{n} - 1$개가 필요하다.

 

여기에 Conditional Independence를 적용하게 되면(Markov assumption),

$$ p(x_{1}, ... , x_{n}) = p(x_{1})p(x_{2}|x_{1})p(x_{3}|x_{2}) ... p(x_{n}|x_{n-1}) $$

$x_{3}$은 직전에 있는 $x_{2}$에만 dependent한 것이다.

즉, 한 정보는 이전 정보에만 dependent하게 된다.

그리고 필요한 파라미터 수는 1 + 2 + 2 + ... 이므로 $2n - 1$개가 필요하다.

 

$2n -1$는 fully independent 했을 때($n$) 보다는 크고 independence 조건이 하나도 없을 때($2^{n}-1$)보다는 적기 때문에 좀 더 실용적이다.

 

이를 가장 잘 활용한 모델이 Autoregressive Model이다.

 

 

Autoregressive Model

28x28 binary pixel 이미지를 생각해보자.

우리의 목표는 이 분포를 학습하는 것이다.

 

chain rule과  condition independence를 이용해서 전체 784개가 같는 joint distribution을 condition distribution으로 쪼갠다.

$$P(X_{1:784}) = P(X_{1})P(X_{2}|X_{1})P(X_{3}|X_{2}) ...$$

이렇게 순차적으로 정의되는 모델을 autoregressive model이라고 한다.

또한 입력값을 ordering하게 해주는 작업이 필요하다.

 

장점

  • Easy to sample
    전체 이미지, 데이터를 한번에 모델링하기 위해서는 큰 네트워크가 필요한데 Autoregrssive model는 전체 input을 dimension별로 쪼개기 때문에 sampling이 쉽다.

 

단점

  • sampling은 784번의 Neural network를 Sequential하게 통과해야하기 때문에 생성이 느리다.
  • 모델이 생성은 할 수 있지만 새로운 이미지가 주어졌을 때 이 이미지에 대한 probabiltiy density를 구할 수 없는 경우가 많다. (implicit 모델)

 

 

 


 

 

확률분포 사이의 loss  정의에 따른 서로 다른 generative model 방법론이 있다. 

  • KL-divergence → maximum loglikelihood learning or Variational AutoEncoder (VAE)
  • Jensen-Shannon divergence → Generative Adversarial Network (GAN)
  • Wasserstein distance → Wasserstein Autoencoder (WAE) or Adversarial AutoEncoder (AAE)

 

 

Variational Autoencoder

autoencoder란 어떤 입력이 들어왔을 때 인코더를 거쳐서 latent 벡터를 만들고 디코더를 거쳐서 다시 원래대로 복원하는 네트워크이다.

autoencoder 자체는 generative model이 아니다.

 

그렇다면 Variational Autoencoder는 왜 generative model일까?

  • 내가 찾고싶은 posterior distribution을 제일 잘 근사할 수 있는 variational distribution ($q_{\phi}(z|x)$)을 찾는 이 일련의 과정을 VI라고 한다.
    다시말해, 일반적으로 posterior distribution은 계산이 불가능할 때가 많기 때문에 내가 학습할 수 있는, 최적화시킬 수 있는 어떤 것으로 근사하는 것이다. 그리고 그 근사하는 분포가 variational distribution이다.
  • Posterior distribution은 observation이 주어졌을 때, 내가 관심있는 random variable의 확률 분포이다.
     ($p_{\theta}(z|x)$)  $z$는 latent vector이다.

+ latent란 데이터가 가지고 있는 잠재적인 변수이다.

생성모델은 데이터의 분포를 학습하는데 구체적으로는 데이터가 가지고 있는 latent space를 학습한다고 할 수 있다.

Latent vector는 한 이미지가 가지고 있는 잠재적인 벡터 형태의 변수이고, 이런 latent vector가 모여서 latent space가 형성된다.

 

우리의 목적은 Posterior distribution을 variational distribution으로 찾는 것이다. 이는 Variational Autoencoder의 encoder에 해당한다.

 

Posterior distribution을 모르는데 이를 근사하는 variational distribution을 어떻게 찾을 수 있을까?

→ ELBO

 

우리의 목적은 likelihood(확률 분포를 표현하는 파라미터가 데이터를 얼마나 잘 설명하는지 나타내는 값)을 최대화하는게 목적이다.

위 식을 풀어보면 Evidence Lower Bound과 Variational Gap으로 나누어 볼 수 있다.

Variational Gap에 있는 $p_{\theta}(z|x)$ (Posterior)는 어딘가 존재한다고는 알고 있지만 계산할 수는 없는 값이다.

우리는  $q_{\phi}(z|x)$를 $p_{\theta}(z|x)$에 근사하고 싶기 때문에 KL-Divergence값을 최소화 하고 싶다. 

따라서 상대적으로 건드릴 수 있는 ELBO를 최대화함으로써 Varational Gap을 줄이고자 하는 것이다.

 

또한 위에서 말했듯이 좌변인 Likelihood를 최대화하는것이 목적인데 Variational Gap은 계산할 수도 없고 KL-Divergence는 언제나 양수값이기 때문에 이를 무시한다면 ELBO만을 최적화하면된다.

 

 

ELBO를 뜯어보면 두가지 term으로 나눌 수가 있다.

  • $q_{\phi}$ : 인코더
  • $p_{\theta}$ : 디코더

Reconstruction을 보면 인코더를 통해 latent $z$가 나오고 그 latent vector $z$가 들어갔을 때, 디코더를 통과하면 어떤 새로운 입력 $x$가 나온다. 이 값을 높이는게 Reconstruction을 잘하는 것이다.

후항은 인코더에서 나오는 $z$와 미리 정해높은 임의의 priority의 거리를 최소화하는 Prior Fitting Term이다.

Reconstruction을 잘하면서 후항에 있는 항 덕분에 내가 미리 정해놓은 prior와 최대한 비슷하게 만드는 추가적인 objective를 넣었기에 Variational Autoencoder가 되는 것이다. (Prior Fitting Term이 없다면 그냥 Autoencoder이다.)

 

 

한계점

  • 근사를 통해 최적화를 하기 때문에 encoder, decoder는 확률분포라고 하기 어렵다.
  • Prior fitting term도 gradient descent로 최적화를 해야하므로 미분이 가능해야한다. 그러나 KL-Divergence는 적분 term이 포함되어있기 때문에 적분이 용이하지 않으면 계산하기가 어렵다. 그래서 Gaussian이 몇 안 되는 KL divergence의 미분 가능한 form이기 때문에 Gaussian distribution을 사용해야하는 제약조건이 존재한다.

 

 

Generative Adversarial Networks

 

이미지를 생성하는 Generator와 이를 구별하는 Discriminator가 서로 적대적으로 학습하는 과정을 거쳐

Generator는 더욱 질이 좋은 이미지를 생산해내도록, Discriminator는 해당 이미지가 진짜인지 가짜인지 더 잘 구별하도록 학습을 하게 된다.

 

GAN Objective

Generator가 고정되었다고 생각하고 Discriminator만 우선 보자.

이를 최소화하는 optimal Discrminator는 아래와 같다.

 

이 optimal discriminator를 원래 식에 대입하면 아래와 같은 object 식이 나오고 정리하면 Jenson-Shannon Divergence가 등장한다.

 

즉, GAN의 Objective는 데이터를 실제로 만들었다고 생각하는 무엇인지 모르는 distribution과 최적화하려는 generator distribution 사이의 Jenson-Shannon Divergence를 최소화하는 것이다.

 

 

Diffusion Model

노이즈로부터  조금씩 변경시키며 이미지를 만드는 것

 

Diffusion 모델은 사실 이미지를 만드는 과정이 아니라 굉장히 오랜 step을 거쳐 이미지에 노이즈를 집어넣어서 노이즈화 시키는 과정이다.

이 모델이 학습하는 것은 Reverse process이다.

 

 

 

 

 

 

728x90