코딩하는 해맑은 거북이

딥러닝 기초 다지기 (5) - 끝 본문

AI

딥러닝 기초 다지기 (5) - 끝

#CJE 2023. 3. 21.
본 게시물의 내용은 '딥러닝 기초 다지기(부스트코스)' 강의를 듣고 작성하였다.
해당 글은 5. Generative Model 2가지 파트를 다룬다.
1. Generative Models 1
2. Generative Models 2

1. Generative Models 1

Introduction

- Learning a Generative Model

  • Suppose that we are given images of dogs. 
  • We want to learn a probability distribution p(x) such that
    • Generation: If we sample \(\tilde{x}\) ~ p(x), should look like a dog.
    • Density estimation: p(x) should be high if looks like a dog, and low otherwise.
      • This is also known as explicit models

 

- Basic Discrete Distributions

1) Bernoulli distribution: (biased) coin flip (경우의 수가 2개인 경우 ex. 동전)

  • D = {Heads, Tails}
  • Specify P(X = Heads) = p. then P(X = Tails) = 1 − p
  • Write : X ∼ Ber(p)

 

2) Categorical distribution: (biased) m-sided dice (나올 수 있는 경우의 수가 m개인 경우 ex. 주사위)

  • D = {1, ⋯, m}
  • Specify P(Y = i) = \(p_i\) such that \(\sum^m_{i=1}(p_i) = 1\)
  • Write : Y ∼ Cat(\(p_1\), ⋯, \(p_m\))

 

- Example

RGB 이미지에서 하나의 픽셀만을 생각할 때, (r, g, b) ~ p(R, G, B)

* Number of cases? 1개의 픽셀이 가질 수 있는 경우의 수

≫ 256 x 256 x 256
* How many parameters do we need to specify? 

≫ 256 x 256 x 256 - 1

 

 

Independence

- Example

하나의 픽셀은 0과 1을 가지는 binary 이미지(흑백)을 다루자. 총 픽셀의 수는 n개라고 가정한다.

* Number of cases? 1개의 픽셀이 가질 수 있는 경우의 수

≫ 2 x 2 x ⋯ x 2 = \(2^n\)
* How many parameters do we need to specify? 

 \(2^n\) - 1  → 너무 많다!

 

 

- Structure Through Independence

그럼 n개의 픽셀들이 서로 독립적(independent)이라면?

≫ 2 x 2 x ⋯ x 2 = \(2^n\)
* How many parameters do we need to specify?

n  → 엄청나게 줄어들었다

 

*결론: independent assumption 한다는 것은 우리가 표현할 수 있는 것을 굉장히 줄여버린다.

어떤 현상을 모델링할때와 파라미터 숫자를 줄일 때 효과는 있지만, 유의미한 분포를 모델링할때는 좋지않다.

 

 

- Conditional Independence

* 3가지 중요한 규칙

  1) Chain rule


  2) Bayes' rule


  3) Conditional independence

   : z가 주어졌을 때, x와 y가 independent 하다.

 

 

ex) Chain rule

앞서 binay 이미지에서 n개의 픽셀이 있을 때, chain rule로 쪼갠다면?

* How many parameters?

P(\(X_1\)) : 1 parameter

P(\(X_2|X_1\)) : 2 parameters (one per P(\(X_2|X_1 = 0\) and P(\(X_2|X_1 = 1\)))

P(\(X_3|X_1, X_2\)) : 4 parameters

≫ 1 + \(2\) + \(2^2\) + + \(2^{n-1}\) = \(2^n\) - 1

 

 

- Conditional Independence를 가한다면?

구체적으로는 Markov assumption을 가한다!

* Markov assumption이란?

x3은 x1, x2에 dependent 했는데, x3은 직전에 있는 x2에만 dependent로 생각하는 것이다.

* How many parameters?  

1 + 2 + 2 + ⋯ + 2(n번) 하므로 2n - 1 가 된다.

 

*결론 : 앞서 파라미터의 갯수가 \(2^n\) - 1에서 2n - 1로 줄었다. 

이런 것을 잘 활용하는 모델이 Autoregressive Models이다.

 

 

Autoregressive Models

* 28x28 binary pixel을 갖는 예제를 생각해보자.

목표 : 확률분포 P(X)를 모델링 하는 것

P(X) = P(\(X_1, ..., X_784\)) over X ∈ \(\{0, 1\}^{784}\)

chain rule을 활용해서 784개의 랜덤변수를 갖는 joint distribution를 conditional distribution으로 쪼갠다.

이렇게 순차적으로 진행하는 모델을 Autoregressive Model 이라 한다.

제약조건으로 ordering (e.g. raster scan order)이 필요하게 된다.

 

- NADE: Neural Autoregressive Density Estimator

Autoregressive Model을 딥러닝에 가장 먼저 활용했던 논문.

* i번째 픽셀의 확률분포는?

NADE는 단순히 무언가를 생성할 수 있을 뿐만 아니라 어떤 새로운 입력이 주어졌을 때, 그 입력이 얼마나 모델링하는 것에 비슷한지의 density를 구할 수 있다는 explicit model이다

 

* 어떻게 density를 구할 수 있는가?
앞선 예제에서 joint probability를 conditional distribution의 곱으로 나타낼 수 있다. 각각의 항을 다 구해서 곱하는 방식으로 joint distribution을 구할 수 있게 된다.

해당 방법론의 장점 중 하나는 discrete 뿐만 아니라 continuous random variables도 고려할 수 있다는 점이다.

< 장점 >

1) sampling이 쉽다.

2) explicit model이 많다.

3) joint distribution을 구할 때, 각각의 dimension 별로 쪼개서 구할 때 병렬화할 수 있기 때문에 계산하는 건 빠르다.

4) continuous variable도 고려할 수 있다.

< 단점 >

1) sequence하게 진행되서 생성이 느리다.

 

 

2. Generative Models 2

Maximum Likelihood Learning

Likelihood(우도) : 파라미터가 주어졌을 때, 이 데이터가 얼마나 그럴듯한지를 나타내는 것.

이를 높이는 방향으로 파라미터를 학습하는 모델을 의미한다.

 

강아지들의 이미지가 주어졌을 때, GM은 강아지들의 이미지를 생성해내는 분포가 존재한다고 가정하면, 모델링하고 학습할 수 있는 approximate density 가 있을 때, underline general model과 학습할 수 있는 density와의 거리를 최소화 하는 방향으로 density 를 최적화 시킨다. → best-approximating density

 

학습할 수 있는 분포들의 경우의 수를 model family 라고 한다.

 

Q. 어떤 기준으로 근사의 좋음을 표현하는가?

how can we evaluate the goodness of the approximation?

  • KL-divergence
    • 근사적인 두 모델의 거리를 의미함

→ \(logP_θ(x)\)를 최대화하는 것은 KL-divergence를 최소화 하는 것과 동일하다는 것을 알 수 있다.

그래서 Likelihood를 최대화 하는 방법으로 GM을 학습시키겠다고 하여 Maximum Likelihood Learning이라 한다.

이는 GM을 푸는 쉬운 방법 중 하나일 뿐이다.

 

\(P_{data}\)를 모르기 때문에, empirical log-likelihood로 근사를 한다.

D개의 데이터셋을 만들어 놓고, 이 데이터셋 D가 \(P_{data}\)에서 나왔다고 가정했을 때,  \(P_θ(x)\)를 학습하겠다고 보는 것.

empirical l og-likelihood로 근사

Maximum likelihood learning은 아래와 같이 D개의 데이터셋에 대해서만 \(P_θ(x)\)를 높아지도록 하는 것이다.

Maximum likelihood learning

아래의 수식은 단점으로 데이터수가 많지 않을때는 정확하지 않다는 것을 보여준다.

보통 maximum likelihood learning은 underfitting에 더 취약하게 된다.

모든 가능한 확률분포를 사용할 수 없기 때문이다.

일반적으로 최적화하기 위해 gradient descent를 사용하게 되고, 미분 가능한 log를 사용해야 하기때문에 spherical Gaussians 을 사용한다. 그래서 유의미한 분포를 사용할 수 없다. 

 

- similarity를 위한 다른 방법

  • KL-divergence leads to maximum likelihood learning or Variational Autoencoder (VAE). 
  • Jensen-Shannon divergence leads to Generative Adversarial Network (GAN). 
  • Wasserstein distance leads to Wasserstein Autoencoder (WAE) or Adversarial Autoencoder (AAE). 

 

- Empirical Risk Minimization (ERM)

 maximum likelihood learning을 할 때, empirical을 이용하는 것을 ERM이라 한다.

그러나 ERM은 한정된 데이터에서만 학습하기 때문에 overfitting이 발생할 수 있다.

   * 극단적인 경우 : 학습 데이터를 모두 외워버리는 경우

그래서 overfitting을 막기 위해서 일반적으로 hypothesis space를 줄이게 된다.

하지만, 모델 자체 성능을 한계를 짓는것이기 때문에 전체적인 성능이 떨어질 수 있다.

 

 

 

Latent Variable Models

autoencoder : 입력에 encoder를 거쳐서 Latent vector를 만들고, decoder를 거쳐서 다시 원래 입력으로 복원하는 것.

 

Q. autoencoder은 generative model일까? NO!

autoencoder은 그냥 모델이다.

 

- Variational Autoencoder

Variational Autoencoder은 generative model이다.

 

objective는 아래 식과 같이 매우 간단하다!

x라는 입력이 모르지만 \(P_θ(x)\)에서 나왔다고 가정한다면, x들에 대해서 \(P_θ(x)\)를 높이는 maximum likelihood learning을 한다.

그런데, \(P_θ(x)\)를 많은 것을 사용할 수 없었다. 즉, 표현력이 높지 않은 분포만은 사용할 수 있었기 때문에 underfitting의 문제가 일어났었다. 이런 것을 해결하기 위해서 Variational inference (VI) 테크닉을 사용하게 된다.

 

 

* Variational inference (VI)

generative model을 학습하기 위해서만 등장하지는 않고, 일반적인 방법론이다.
만약, 내가 찾고자하는 분포가 있지만, 이 분포가 너무 복잡해서 내가 모델링할 수 없을 때
내가 찾을 수 있는 간단한 분포로 근사를 한다!

ex) 일반적으로 베이지안(Bayesian Inference)에서는 Posterior distribution를 찾고싶을 때(이는 너무 복잡해서 계산X)
상대적으로 간단한 Variational distribution를 도입해서 이 분포를 Posterior distribution로 비슷하게 만드는 것이다.
이를 쉽게 근사할 수 있게 해주는 것이 Variational inference 이다.

구체적으로, variational distribution 혹은 근사하는 분포가 우리의  true posterior가  KL divergence 관점에서 최소화하도록 최적화하는 것을 많이 활용한다!

 

Variational Autoencoder

Dataset이 살고 있는 분포는 복잡한 x-space (Narrow)에 있고, Prior distribution이 살고 있는 분포는 좀 더 복잡한 z-space (latent space) 가 있을 때, VA는 Encoder와 Decoder의 2가지 네트워크를 학습한다.

 

z를 샘플링했을 때, 학습된 decoder를 통과해서 나온 어떤 x가 원래 data에 있는 이미지들 혹은 새로운 data들과 비슷하다.

우리 목표는 Encoder를 학습하는 것이 variational distribution이다.

수식이 ELBO와 Variational Gab으로 나눠지게 된다.

우리의 목적은 ELBO를 최대화 시키는 것!

Variational Gab = Posterior 는 계산할 수 없다. 수식으로 풀어낼 수 없음. 이를 건드릴 수 없기 때문에 무시하고 ELBO를 최대화함으로써 Variational Gab을 최소화 시키는 것이다. 무시할 수 있는 이유는 KL divergence가 양수이기 때문에 가능하다. 

 

* ELBO = Evidence Lower Bound

ELBO를 뜯어보면 Reconstruction Term과 Prior Fitting Term으로 나뉘게 된다.

Reconstruction Term은 encoder와 decoder를 모두 통과한 것으로 볼 수 있고, 이를 높이는게 Reconstruction을 잘하게 되는 것과 같은 의미가 된다. (This term minimizes the reconstruction loss of an auto-encoder.)

Prior Fitting Term은 encoder에서 나오는 분포가 미리 정해놓은 prior 사이의 거리를 최소화 (This term enforces the latent distribution to be similar to the prior distribution. )

<단점>

1) intractable model : 근사를 통해 최적화하기 때문에 여기서 나온 encoder, decoder를 확률분포로 보기 어려움

2) Prior Fitting Term도 미분 가능해야 한다. 대부분 경우에 가우시안만 사용한다.

가우시안 적용

 

 

Generative Adversarial Networks

Discriminator(경찰)과 Generator(위조범) 라는 2개의 네트워크를 두게 되고, 

Discriminator(경찰)는 생성된 이미지가 real(들고있는데이터)인지 fake(generator가 생성한것)인지 구분하는 역할을 한다.

Generator(위조범)는 Discriminator(경찰)를 속이는 역할만 한다.
G와 D는 서로를 적대시할 것이다..! → 여기서 Adversarial 이 나옴!

 

* Discriminator objective

   - optimal discriminator : 뒷 수식(Ex~pg)을 최소화하는 D(x)식을 찾으면 이와 같음

* Generator objective

앞서 계산한 optimal discriminator를 합치면 Jenson-Shannon Divergence(JSD)가 나온다.

* Deep Convolutional GAN

이런 GAN도 나왔다. 정도만..

 

 

Diffusion Models

noise로 부터 progressively(조금씩 변형시켜가면서) 이미지를 만드는 것.

 

* Forward (diffusion) process

diffusion은 정확하게 말하면 이미지를 만드는 과정이 아니고, 반대 과정이다.

이미지에 노이즈를 집어넣어서 노이즈화 시킴.

 

* reverse process

역과정으로 학습하는 것.

노이즈를 집어넣은 이미지를 노이즈를 없애고 원래의 이미지로 복원하는 것.

 

→ 이것을 1000번의 step으로 노이즈를 천천히 집어넣는 것을 모델링 했다면,

1000번의 step을 걸쳐서 노이즈 벡터를 오리지널 벡터로 바꾸는 reverse process를 Denoising diffusion probabilistic models (DDPM) 이 학습하게 된다.

 

* DALL-E2

text로 부터 이미지를 만드는 것인데 diffusion model이 인기를 얻었던 이유이다.

diffusion model의 장점은 특정 영역에 대해서만 이미지를 바꿀 수 있는 image editing이 가능하다는 것!

Comments