크크루쿠쿠

Generative Models 본문

DeepLearning/부스트캠프 AI Tech

Generative Models

JH_KIM 2021. 8. 13. 11:24

Generative Models Part 1

 

Introduction

What I cannot create I do not understand.

generative model을 알게 된다면 단순 이미지 생성이 아닌 다양한 일이 가능해진다.

 

What does it mean to learn a generative model?

GAN 뿐만이 아닌 다양한 분야

 

ex) 강아지의 이미지가 주어진다.

-> 강아지를 sampling 하는 model.

Generation: train data에 있는것이 아닌 다른것 생성.

Density estimation: 어떤 image가 주어졌을때 그 image가 dog 같은지 구분. (anomaly detection) classification과 비슷.

 - explicit models 이라 부르기도 함.

Unsupervised representation learning: 강아지의 특징들을 학습 (feature learning) -> Generative model에 포함되나? 애매함.

그렇다면 p(x) 값을 어떻게 represent 하나?

 

- Discrete Distribution

1. Bernoulli distribution: coin flip

2. Categorical distribution: m-sided dice

 

Example

Modeling an RGB joint distribution

-> 하나의 rgb pixel 을 fully describe 하기 위함 parameter의 수가 매우 많음.

 

binary로 다른 예시.

 

parameter의 수가 엄청나게 필요해진다.

-> 기계학습에서 parameter의 수가 많아질 수록 성능이 안좋아짐.

 

어떻게 쉽게할까?

 

Structure Through Independence

independece 하다면 n개의 변수만 필요하다! 각각의 pixel에대해 1개만 필요

하지만 이 가정은 현실성 X ->  그 중간을 찾아야함

 

Condition Independence

Three Important rules

1. Chain rule:

parameter 수 -> 2^n  - 1 

2. Bayes' rule:

3. Conditional independence (가정) : z가 주어졌을 때 x와 y가 independent하다 라는 가정.

-> chain rule 에서 뒷단에 붙는 것들을 날려줌.

Markov assumption을 해보자 -> 전에것만 dependent함.

chain rule에 conditional independence를 적용시키면 식이 이렇게 나옴

-> parameter 수는 2n-1로 줄어짐 --> exponential reduction

 

이러한 방법을 Auto-regressive Model

 

Auto-regressive Model

예시로 MNIST를 살짝 변형.

pixel에 0과 1로만

autoregressive model 은 어떤 정보가 이전 정보에 dependent 한것들을 말함

-> markov model은 그 중에 하나.

image 는 2차원인데 순서는 1차원으로 매기기 때문에 이 방법에 따라 성능,방법론이 달라짐.

이전 N 개를 고려하는 model -> AR-N model

 

NADE (Naive Autoregressive Density Estimator)

 

i 번째 pixel 을 만들 때는 i-1 개의 pixel을 만들어야함.

-> weight의 차원이 바뀜.

 

NADE는 explicit model임 -> input이 주어지면 확률계산 가능

어떻게?

이렇게 입력에 대한 확률을 구할 수 있음.

Density Estimator 이름이 들어가면 explicit model

continuous output일 경우에는 가우시안 믹스쳐 모델 사용

 

Pixel RNN

RNN 을 통해 generate를 하겠다!

n x n rgb model

 

ordering에 따라 알고리즘이 조금 다름.

위 정보만 확인할 것이냐 아님 순서대로 전부 확인할 것인가.

Generative Model Part 2

 

Latent Variable Models

D.Kingma 의 박사학위 논문 추천.

 

Is an autoencoder a generative model?

-> 아니다. 그렇담 왜??

 

Variational Auto-encoder

- Variation inference (VI)

posterior distribution 을 찾는것임 -> 나의 observation이 주어졌을 때 내가 관심있어하는 random variable을 보는 확률 분포

 

liklihood가 뒤집힌것 하지만 값을 구할 수 없음. z 는 latent vector

이를 근사한 분포를 Variational distribution이라 함.

 

VI 의 목표는 variational distribution을 찾는 과정.

KL divergence 라는 metric 활용.

 

encoder 부분이 variational distribution을 찾아줌.

 

But how?

target을 모르는데 어떻게 loss를 줄이지?

-> VI 의 ELBO trick임

Evidence lower bound 라는 것을 계산해서 이를 maximize 함으로써 반대 부분을 낮춰줌.

 

ELBO 를 분해해보면

reconstruction loss 와 prior fitting term 으로 나뉜다.

Reconstruction Term: encoder 를 통해 다시 decoder로 돌아는 loss를 줄이는것

Prior fitting term : latent space에 올려놓은 점들의 분포가 가정하는 사전 분포와 동시에 만족하는것과 같은가.

 

-> autoregressive model이 된다.

 

Key

1. intractable model -> explicit model아님.

2. Prior fitting term 이 미분가능해야함. 그래서 대부분 가우시안을 사용.(isotropic Gaussian)

 

Adaversarial Auto-encoder

큰 단점으로 encoder 에서  Prior fitting term 에서 KL을 사용하는 것

-> 많은 경우에 gaussian 사용 하기 싫음.

그 경우에 사용하는것.

 

Generative Adversial Network

 

GAN

generate 한 것을  경찰은 분별하고 분별한 것을 기반 학습 -> 경찰은 나오는 data로 또 학습.

generator 를 원함.

GAN 은 generator가 Real을 만들게끔 한다.

 

1. 2 player 의 minimax game

2. discriminator

3. generator

 

discriminator가 optimal 한다 생각하면 jsd가 나옴 -> 현실적으로는 맞나..?

 

DCGAN

MLP 대신 image domain 으로 바꿈.

Conv, DConv 활용

 

Info-GAN

단순 이미지 생성이 아닌 c 라는 class를 random하게 넣어줌.

 

Text2Image

 

 

Puzzle-GAN

sub fetch를 통해 이미지를 복원해줌.

 

CycleGAN

domain만 바꿔줌.

-> GAN 구조가 두개 들어감

 

Star-GAN

image를 단순히 다른 domain 으로 바꾸는게 아니라 control 할 수 있게 해줌

 

 

Comments