본문 바로가기
Generative Models

Introduction to Generative Models

by 아르카눔 2024. 2. 26.

이 포스트에서는 여러가지 생성모델의 발전 흐름과 간략한 분류를 정리하고자 한다.

우선 생성 모델, Generative Models의 정의를 알아야 한다.

생성 모델의 정의

영문 위키의 generative model 문서를 보면 다음과 같이 정의한다.

 

a generative model is a model of the conditional probability of the observable X, given a target y
a discriminative model is a model of the conditional probability of the target Y, given an observation x

 

또는 A generative model is a statistical model of the joint probability distribution P(X,Y) on given observable variable X and target variable Y 이렇게 정의하기도 한다.

 

여기서의 핵심은 바로, 생성 모델은 데이터의 분포를 학습한다는 데에 있다.

이를 좀 더 풀어서 설명하기 위해 동물의 이미지를 생성하는 생성 모델을 가정해보자.

여기서 우리는 타겟 값인 Y를 개로 지정하고, 데이터 X는 개의 이미지가 된다.

즉, 개라는 타겟값이 주어졌을 때 그럴듯한 개의 이미지를 생성하는 모델을 만드는 것이 우리의 목표다.

이를 수학적으로 치환하면, 그럴듯한 개의 이미지를 생성하는 어떤 분포를 알아내야 한다는 이야기다.

 

이 때문에 우리는 여러가지 통계적 기법들과 그 내용들; MLE (Maximum Likelihood), 그리고 Prior Probability나 Joint Probability를 구하기 위해 Bayesian Statistics를 알아야 하며, 정확한 분포의 추론이 어려운 상황을 대비해서 Variation Inference 등도 익혀야만 한다. 또한 MLE 식을 변형하여 나오는 개념인 KLD (Kuller-Leibler Divergence)나 ELBO (Evidence Lower BOund) 역시 익혀야만 하는 상황에 놓이게 된다.

 

이를 염두에 둔 다음 생성 모델들의 발전사를 아래에서 간략하게 본다.

 

 

확률 분포 추정과 근사를 활용한 고전 모델들은 다음과 같다.

1981

GMM (Gaussian Mixture Model)

 

1985

RBM (Restricted Boltzmann Machine)

 

2006

DBN (Deep Belief Network)

 

2011

NADE (Autoregressive Distribution Estimator)

딥러닝 구조를 도입한 현대적 모델들은 다음과 같다.

요즘 많이 쓰이는 생성모델은 크게 Autoencoder (AE) 계열과 GAN 계열, Diffusion Models로 나눌 수 있다.

여기서는 레퍼런스를 통해서 위 세 가지 계열의 모델들을 시간의 흐름에 따라 정리하였다.

 

2014

VAE (Variational Autoencoder)

GAN (Generative Adversarial Nets)

cGAN

 

2015

DCGAN (Deep Convolutional GAN)

Diffusion Model

 

2016

AAE (Adversarial Autoencoder)

LVAE (Ladder VAE)

InfoGAN

f-GAN

LSGAN (Least Squares GAN)

WGAN (Wasserstein GAN)

EBGAN (Energy-Based GAN)

 

2017

WAE (Wasserstein Autoencoder)

Beta-VAE

VQ-VAE (Vector-Quantatized VAE)

PGGANs (Progressive Growing of GANs)

CycleGAN

BEGAN (Boundary Equilibrium GAN)

 

2018

BigGAN

 

2019

VQ-VAE-2

NAVE

StyleGAN

BigGAN

 

2020

DDPM (Denoising Diffusion Probabilistic Model)

NVAE

 

2021

DatasetGAN

Guided DPM

DDIM (Denoising Diffusion Implicit Model)

 

2022

LDM = Stable Diffusion (Latent DPM)

 

2023

StyleGAN-T

GiGaGAN

ControlNet

DreamBooth

Face0

 

 

생성 모델의 종류 구분

Figue 1: Types of Generative Models NIPS Tutorial
Figue 2: Types of Generative Models GAN SOTA 강의

 

 

Figure 1은 NIPS 2016에서 Ian Goodfelow가 쓴 튜토리얼에서 가져온 그림이다. 앞서 설명했듯이 분포를 파악하기 위해 모수를 추정해야 하고 이를 위해 MLE를 쓰기 때문에, density가 explicit인지 implicit인지 구분하기 전에 큰 줄기가 MLE가 적혀있다. 

 

Explicit Density를 가정할 때는 데이터, 보통 이미지, 가 직접 input으로 들어가 이를 계산한다는 뜻이며, Implicit의 경우 데이터를 직접 학습하지 않고 어떤 noise 혹은 latent vector를 input으로 넣어서 생성한다는 뜻이다. 이렇게 간접적으로 얻은 분포에서 데이터를 sample해서 얻는다는 뜻이다. GAN이 바로 이 implicit density에 속하는 방법이다. 보다 자세한 설명은 이 링크 https://jaejunyoo.blogspot.com/2017/04/auto-encoding-variational-bayes-vae-1.html 를 참조하면 된다.

 

Approximate density는 분포를 직접 알 수 없으니 다른 분포를 통해 근사적으로 데이터의 분포를 찾는 방법이다. Variational Inference라는 테크닉을 통해 이를 달성하며 VAE가 이에 속한다. 

 

 

 

References:
[업스테이지] - AI 심화학습 Computer Vision

패스트 캠퍼스 - 실무 사례로 배우는 컴퓨터 비전 논문 구현과 알고리즘 성능 최적화 With SOTA 모델 강의
NIPS 2016 - Tutorial - Generative Adversarial Networks (Ian Goodfelow)

https://en.wikipedia.org/wiki/Generative_model