본문 바로가기
Programming/Python

Generative Models(생성 모델), GAN

출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정

https://deepgenerativemodels.github.io/ 

 

Stanford University CS236: Deep Generative Models

Course Description Generative models are widely used in many subfields of AI and Machine Learning. Recent advances in parameterizing these models using deep neural networks, combined with progress in stochastic optimization methods, have enabled scalable m

deepgenerativemodels.github.io

 

 

 

 

 

 

 

 

 

 

Generative Model:

만약 각종 강아지 이미지를 구글에서 얻었다고 했을 때,

Generative model이 할 수 있는 것들이자 목적

 

p(x)표현을 위해서는 베르누이 혹인 카테고리 분포(discrete) 필요

 

 

 

Ex1) RGB joint distribution of a single pixel 모델링

 

 

 

Ex2) binary pixels(or a binary image)

 

근데 이런 fully dependent하려니 너무 많은 파라미터 필요함

n개를 좀 더 쉽게 표현하려면? -> n개의 pixel이 independent하다는 가정해보기

 

파라미터 줄이는 건 좋은데 이것이 표현할 수 있는 것이 한정적임.

즉, independent assumption이 너무 과하게 비현실적임.

 

 

약간의 편의성도 찾으면서 현실적인 것도 고려하려면? 

 

 

Conditional Independence: z가 주어졌을때, x와 y가 independent이면  y와 상관없이 x라는 random variable을 z로 표현할 수 있다.

ㅗ: independent 기호

 

Chain Rule과 Conditional Independence를 잘 섞어보자

 

 

remind) Markov assumption: 바로 직전의 것에만 영향을 받는다는 개념

파라미터 숫자가 2^n에서 2n-1로 기하급수적으로 줄었다!

 

이러한 conditional independency를 잘 쓰는 것이 Auto-regressive models이다.

 

 

 

 

Auto-regressive Model

하나의 정보는 바로 그 이전의 정보(들)에 dependent한 모형이다.

이전 1개만 고려: AR1 model

이전 n개만 고려: ARn model

 

 

 

 

 

 

NADE(Neural Autoregressive Density Estimator)

 

NADE is an explicit model that can compute the density of the given inputs.

즉, 단순 genrative model이 아니라 임의의 input들에 대해서 확률을 계산할 수 있다.

 

* 보통 density 추정(estimate)이 가능한 경우 an explicit model에 해당된다

* 단순 generation만 가능한 경우 an implicit model이라고 칭한다.

 

 

지금까진 binary 예제여서 sigmoid를 사용했지만 연속형 r.v인 경우, a mixture of Gaussian을 사용할 수 있다.

 

 

 

 

 

 

 

Pixel RNN: auto-regressive model을 정의할 때 RNN을 사용한 것. 이미지가 있는 pixel genration

 

예제) n x n RGB image에 대해서 앞의 것은 FCN으로 만들었지만 RNN 사용.

 

그리고 ordering 사용법에서 다른 점 有: Row LSTM, Diagonal BiLSTM

 

 

 

 

 

 

 

 


Latent Variable Models

D. Kingma, "Variational Inference and Deep Learning: A New Synthesis," PhD. Thesis

Kingma가 Adam 만든 사람. 이 논문 읽어보길 추천함

 

 

 

 

VAE

 

 

ELBO: Evidence Lower Bound

 

준수하게 결과 잘 나옴

 

Gaussian아니면 활용하기 어려운 단점이 있다.

꼭 Gaussian 쓰지 않으려면? -> Adversarial Auto-encoder 사용

Generation quality도 VAE보다 좋은 경우가 많음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Generative Adversarial Network(GAN): 서로 다른 두 개의 네트워크를 적대적(adversarial) 학습시켜서 실제 데이터와 비슷한 데이터를 생성. implicit model이다.

 

I.Goodfellow et al., "Generative Adversarial Networks", NIPS, 2014

 

도둑이 위조지폐 generation하고싶어하고 -> 경찰은 위조지폐를 분별하고싶어하려하고 -> 도둑은 그 genration 성능 높이려하고 -> 경찰은 또 그 분별을 더 잘하려하고.. (끝없음)

 

즉, two player's minimax game between generator and discriminator

 

VAE vs GAN
Discriminator의 object
Generator의 object

 

기존 GAN은 Multi layer perception(Dense layer)로 만듦

 

 

그외 GAN 발전 방향(논문)들::

 

 

 

 

DCGAN: image domain을 활용. 

DCGAN

Info-GAN: 랜덤한 클래스(vector) c를 계속 집어넣어서 GAN이 특정모드(conditional vector)에 집중하도록 유도

Info-GAN

Text2Image: 문장 -> 이미지로 만들기

Text2Image

 

Puzzle-GAN: 원래 이미지 GAN으로 복원하기

Puzzle-GAN

CycleGAN

CycleGAN

 

Cycle-consistency loss: 두 도메인 각각에 정보 없이 외부에 임의 정보가 있으면 알아서 변환시킴

 

 

Star-GAN: 이미지를 약간씩 변형, control할 수 있도록 함

STAR-GAN

 

Progressive-GAN: 저차원부터 고해상도 이미지로 점진적으로 늘려나가는..

Progressive-GAN

 

GAN에 대한 논문은 기하급수적으로 늘고 빠르게 변화하고 있다.

 

 

 

 

 

GAN말고 Transformer쓰는게 차라리 마음편할수도..?

728x90
반응형