네이버 부스트캠프/LEVEL-1

[부스트캠프][WK02 / Day10] Generative Models

1. 강의 내용

Generative Models 1 (최성준 교수님)

1) Generative Models

Generative Model은 단순히 이미지 등을 생성하는 모델이 아니라 더 많은 부분을 차지하고 있습니다. 강아지 이미지가 주어졌을 때, 우리가 학습한 확률분포 $p(x)$를 통해 새로운 강아지 이미지를 생성하는 Generation, 강아지인지 아닌지 구분하는 이상탐지하는 Density estimation 등을 할 수 있습니다. 여기서 Density estimation은 explicit 모델로, 어떤 입력이 주어졌을 때, 그것에 대한 확률값을 얻어낼 수 있는 모델입니다. Generation만을 하는 모델은 implicit 모델이라고 하며 Generation 모델에는 explicit과 implicit 모델이 존재합니다. 이미지의 특성을 학습하는 Unsupervised representation learning(feature learning)도 생성모델을 통해 수행 가능합니다.

Basic Discrete Distributions

Discrete Distributions는 정해진 값들로 이루어진 분포입니다.

  • Bernoulli distribution: 이항분포로 표현하는 변수 p 하나가 필요합니다.
  • Categorical distribution: n개의 경우가 존재할 때, n-1개의 변수 필요

Categorical distribution에서 n의 숫자가 커질수록 그에 필요한 파라미터의 개수가 너무 커지게 됩니다. 만약 n개의 사건들이 모두 독립적이라는 가정을 하면, 가능한 경우의 수는 $2^n$으로 똑같습니다. 하지만 파라미터의 수는 각각의 사건에 대해 파라미터 1개만 있으면 되고 독립적이므로 전부 더하면 되어서 n개만 필요하게 됩니다. 그래서 그 중간의 지점을 찾기 위해 다음 3가지 방법을 사용합니다.

  • chain rule: n 개의 joint distribution을 n개의 conditional distribution으로 바꿔주는 방법으로 변수의 독립여부와 상관없이 항상 만족합니다.
    $$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})$$
  • Bayes' rule:

$$p(x|y)={p(x,y) \over p(y)}={p(y|x)p(x) \over p(y)}$$

  • Conditional independence: z가 주어졌을 때, x와 y가 독립이라면, 아래의 수식이 만족합니다.
    $$p(x|y,z)=p(x|z)$$

어떠한 가정도 없이 chain rule을 적용했을 때, fully dependent 모델과 비슷한 $2^n-1$개의 파라미터를 가집니다. Markov assumption(i+1번째의 사건은 i번째 사건에만 dependent)을 해보면, 앞에서의 chain rule로 얻었던 Conditional distribution의 곱이 다음과 같이 표현됩니다.

$$p(x_1,...,x_n)=p(x_1)p(x_2|x_1)p(x_3|x_2)...p(x_n|x_{n−1})$$

이렇게되면 $2n-1$개의 파라미터가 필요합니다. 이런식으로 Conditional independence assumption을 어떻게 주느냐에 따라 파라미터의 수를 바꿀 수 있습니다.

2) Auto-regressive Model

Auto-regressive model은 하나의 정보가 이전 정보들에 dependent한 것으로, Markcov assumption을 통해 $i$번째가 $i−1$에만 dependent인 것뿐만 아니라 $i$번째가 $1∼i−1$까지 dependent인 것도 Auto-regressive model 입니다.

임의의 Conditional independence를 주는 것이 chain rule 입장에서 joint distribution을 쪼개는것에 어떤 관계가 있는지 잘 생각해봐야 합니다.

 

NADE(Neural Autoregressive Density Estimator) 는 $i$번째 값을 첫번째부터 $i-1$번째 값까지에 dependent하게 하는 것입니다. neural network 입장에서는 입력차원이 계속 달라져 weight가 계속 커지게 됩니다. 첫번째 픽셀을 만드는데는 아무것도 필요없고 weight도 bias만 있으면 된다면 100번째 픽셀을 만들때는 99개의 이전 입력들을 받을 수 있는 NN이 필요합니다. 이 점만 Autoregressive model과 다릅니다.

 

NADE는 단순히 생성만 하는 것이 아니라explicit model로 input들의 확률을 계산할 수 있습니다. 만약 continuous output일 때는 Gaussian mixture 모델을 활용해 continuous distribution을 만들 수 있습니다.

 

Pixel RNN 은 pixel을 생성하기 위한 auto-regressive 모델로 RNN을 통해서 Generate를 한다는 차이점이 있습니다. Pixel RNN은 ordering을 어떻게 하느냐에 따라 Row LSTM과 Diagonal BiLSTM으로 나뉘는데, Row LSTM은 $i$번째 픽셀을 만들 때 위쪽에 있는 픽셀들을 활용하고, Diagonal BiLSTM은 i번째 이전의 정보를 활용합니다.

 


Generative Models 2 (최성준 교수님)

1) Latent Variable Models

Variational Auto-encoder
Variational inference (VI)의 목적은 posterior distribution $p_\theta(z|x)$을 찾는데 있습니다. 여기서 posterior distribution이라는 것은 나의 observation이 주어졌을 때, 내가 관심있는 random variable에 대한 확률분포입니다. 이 식에서 z와 x가 바뀐 것을 보통 likelihood라고 하며 여기서 z는 latent bector입니다. Variational distribution $q_\phi(z|x)$ 은 일반적으로 posterior distribution을 구하기 어려울 때가 많아 이 분포에 가장 근사하는 분포를 말합니다. VI에서는 KL divergence라는 metric을 활용해서 variational distribution과 posterior를 줄입니다. 알 수 없는 posterior distribution에 근사할 수 있게 만드는 방식이 ELBO(Evidence Lower Bound) 트릭입니다.

 

 

결국 하려고 하는건 x라는 입력을 잘 표현할 수 있는 z라는 latent space를 찾고 싶은데, z에 대한 posterior를 모르니까 이를 찾기 위해 variational distribution 혹은 encoder로 근사하는 것입니다. ELBO를 최대화하는 것이 위 식의 objective인 사후분포와 변동분포간의 거리인 KL divergence을 줄여주는 것과 같습니다.

 

ELBO는 Reconstruction Term과 Prior Fitting Term로 나뉘는데, Reconstruction Term은 인코더를 통해 입력 x를 latent space로 보냈다가 디코더로 돌아오는 reconstruction loss를 줄여주는 것이며 Prior Fitting Term은 latent space의 분포가 prior distribution과 비슷하도록 해주는 Term입니다.

 

Variational Auto-Encoder의 한계

  • Variational Auto-Encoder는 엄밀히는 explict하지 않아 가능도(likelihood)를 추정하기 어렵습니다. 따라서 intractable model 입니다.
  • prior fitting term은 미분가능해야 하는데 KL divergence는 자체에 적분이 들어가 있고 적분이 intractable하게 되면 계산을 할 수 없습니다.
  • 따라서 모든 아웃풋 차원이 서로 독립인 Gaussian distribution인 isotropic Gaussian을 사용하게 됩니다.

위의 식을 loss로 집어넣어 계산합니다.

 

Adversarial Auto-encoder
VAE의 경우 Gaussian이 아닌 경우에는 활용하기가 어려운데 Adversarial Auto-encoder는 GAN을 활용해서 latent distributions 사이의 분포를 맞춰주는 방법입니다. 그래서 다양한 분포들을 latent prior distribution으로 활용할 수 있는것이 AA의 장점입니다.

 

2) Generative Adversarial Network

GAN은 Generator는 Discriminator를 속이기 위해 학습하고, Discriminator는 Generator가 생성한 것을 판별하기 위해 계속 학습하게 됩니다.

  • Discriminator

$$\underset{D}maxV(G,D)=E_{x∼p_{data}}[logD(x)]+E_{x∼p_G}[log(1−D(x))]$$

 

GAN objective에서 $G$를 제외하고 $D$만 본 식입니다. 위의 식을 항상 최적화시키는 $D$는 $D^∗G(x)= {p{data(x)} \over p_{data(x)}+p_G(x)}$ 이며 optimal discriminator라고 부릅니다.

  • Generator

$$\underset{G}minV(G,D)=E_{x∼p_{data}}[logD(x)]+E_{x∼p_G}[log(1−D(x))]$$

optimal discriminator를 Generator입장에 넣었을 때 다음 식이 나오게 됩니다.

  • GAN Objective

$$V(G,D^∗G(x))=D{KL}[p_{data},{p_{data}+p_G \over 2}]+D_{KL}[p_G,{p_{data}+p_G \over 2}]−log4$$

위 식에서 $log4$를 제외한 나머지 식을 2 x Jenson-Shannon Divergence (JSD)라고 하며 $2D_{JSD}[p_{data},p_G] - log4$로 표현합니다. 이 식을 최소화하는 것이 GAN의 목적이 될 수 있습니다. 하지만 실질적으로 optimal Discriminator가 수렴한다는 것을 보장하기도 힘들고 그렇게 됐을 때 Generator가 학습이 잘될 수 있다는 보장이 없어서 애매한 부분이 있습니다.

3) GAN의 다양한 활용

이미지 도메인에서 GAN을 활용했으며 reakyrelu를 사용한 DCGAN, 학습을 할 때 단순히 G로 이미지를 만드는게 아니라 class 라는 원핫벡터 C를 매번 랜덤하게 집어넣어 생성할 때 GAN이 특정 모드에 집중할 수 있게 해주는 Info-GAN, 문장이 주어지면 이미지를 만드는 Text2Image, 이미지 안의 작은 부분들을 가지고 이미지를 복원하는 Puzzle-GAN, GAN구조를 활용하지만 이미지간의 도메인을 바꿀 수 있으며 Cycle-consistency loss를 활용한 CycleGAN, style transfer와 유사하며 이미지를 단순히 다른 도메인으로 바꾸는게 아니라 컨트롤할 수 있게 한 Star-GAN, 고차원의 이미지를 잘 만들 수 있으며 낮은 해상도(차원)부터 높은 해상도(차원)까지 픽셀을 키우는 progress training의 아이디어를 활용한 Progressive-GAN 등이 있습니다. 이렇게 GAN을 활용한 논문은 아주 많이 나오고 있으니 전부 보는것은 힘들지만 중요한 아이디어는 이해하는 것이 좋습니다.


2. 과제 수행 과정 / 결과물 정리


3. 피어세션 정리

https://hackmd.io/@ai17/r1GtwsXeY


4. 학습 회고

이번주는 딥러닝의 기초 지식에 대해 공부하였습니다.
시간이 넉넉하지 않은 만큼 하나하나 구체적으로 배울 수 없다는 사실이 조금 아쉬웠습니다. 그래도 개념적인 기초를 다지고 조금이라도 실습을 하며 알고있다고 생각했지만 잊어버린 내용도 돌아볼 수 있었습니다.