[DL Basic 9강] Generative Models Part 1

💡
Generative Model의 기본 개념에 대해 알아본다.

Generative Model이란?

Generative Model은 High Level의 Data를 출력하는 Model이다. Image나 Text와 같은 형태의 Data를 생성하는 Model로 이해할 수 있다. 하지만, 엄밀한 의미에서 제대로 학습이 된 Generative Model은 Data에 대해서 확률값을 사용해 판단을 내리는 모델이다. 즉, Generative Model은 단순히 생성만 할 수 있는 것은 아니다.

주어진 Data로부터 새로운 Data를 만드는 Sampling, Data의 특징점을 파악하는 Feature Learning, Data와 학습된 확률분포를 비교하는 Anomaly Detection 등을 수행할 수 있다. 특히, Anomaly Detection은 확률 값을 통해서 이루어진다. 이는 분류와 같은 기능을 수행할 수 있는 모델이라는 의미이며, 이에 따라 Explicit Model과 Implicit Model로 구분할 수 있다.

Generative Model을 학습시키는 것에 대한 이해

Input xx가 들어왔을 때, 확률값 P(x)P(x)를 출력하도록 어떻게 모델링해야 할까?

이산확률분포와 Parameter

Binary Class인 경우에는 Bernoulli Distribution을 따르며, 이는 1개의 Parameter만으로도 표현할 수 있다. P(X)P(X)1P(X)1-P(X)로 표현할 수 있기 때문이다. 예를 들어, 28x28 형태의 Binary Image를 표현하고자 한다. 가능한 모든 경우의 이미지는 27842^{784}개이며, 필요한 총 Parameter의 갯수는 278412^{784}-1개이다.

모든 Pixel이 관계를 갖는다고 가정하면, 28x28크기의 흑백 Image 조차 말도 안되는 크기의 Parameter를 요구한다.

N개의 Class를 갖는 경우에는 Categorical Distribution을 따르며, 이는 N-1개의 Parameter로 표현할 수 있다. 예를 들어, RGB의 색상을 갖는 1개의 Pixel에 대해 표현하고자 한다. Pixel은 각각의 채널에서 256개의 값을 가질 수 있으므로, 총 2563256^3개의 값을 가질 수 있다. 이를 표현하기 위해서는 한 Pixel 마다 2553255^3개의 Parameter가 필요하다.

모든 가능성을 고려해 모델링하면, RGB형태의 Pixel 하나 조차 제대로 학습할 수 없다.

만약 위와 같이 784개의 Pixel이 있는 경우에는 총 7842553784*255^3개의 Parameter가 필요하다.

Fully Dependent Model

모든 Pixel이 모두 다른 Pixel과 관계를 갖는다고 할 경우, 다음과 같이 정리 될 수 있다. p(x1,,xn)=p(x1)p(x2x1)p(x3x1,x2)p(xnx1,,xn1)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})

이는 위에서 계산한 것과 동일하게, 총 2n12^n-1개의 Parameter로 표현할 수 있다.

각 Pixel이 다른 모든 Pixel과 관계가 있다는 가정으로 모델링할 경우의 예시

Structure Through Independence

모든 Pixel의 각각 독립적이라는 가정을 한다면, Parameter의 갯수를 크게 줄일 수 있다. 이를 수식으로 표현하면 다음과 같다. P(x1,x2...,xn)=P(x1)P(x2)...P(xn)P(x_1,x_2...,x_n)=P(x_1)P(x_2)...P(x_n)

784개의 Pixel이 있다고 하면, 가정과 무관하게 마찬가지로 27842^{784}개의 이미지가 생성될 수 있다. 단, 이를 모델링할 때 필요한 Parameter는 784개에 불과하다.

모든 Pixel이 독립적이라고 가정했을 경우, 매우 적은 Parameter로 모델링 할 수 있다.

Parameter를 말도 안되게 줄인만큼, 이와 같은 가정을 통해 생성된 Image는 White Noise에 불과할 것이다. Image의 각 Pixel 위치에 따라 주변 Pixel과 관계를 갖기 때문이다.

우리는 적당히 Parameter를 줄이면서, 적절한 Image를 생성하도록 하는 적절한 가정을 찾아가고 있다.

Conditional Independence

Markov Assumption을 통해 Pixel 간의 관계를 간단하게 고려해보겠다. 각 Pixel은 바로 이전의 Pixel과만 연관성이 있다고 가정하는 것을 의미한다. 이 가정으로 확률식을 모델링하면, 아래와 같이 정리될 수 있다. P(x1,x2...,xn)=P(x1x2)P(x2x3)...P(xnxn1)P(x_1,x_2...,x_n)=P(x_1|x_2)P(x_2|x_3)...P(x_n|x_{n-1})

이 가정을 사용하면 필요한 Parameter의 수는 2n12n-1개다.

Markov Assumption을 통해 모델링할 경우, 2n12n-1개의 Parameter로 표현할 수 있다.

Auto Regressive Model

Fully Dependent Model은 Parameter가 너무 많기 때문에, 적절한 Assumption으로 Parameter를 줄이는 적합한 모델을 찾고자 한다. Data가 이전 N개의 Data와 관계를 갖는가를 설정한 모델을 AR-n Model이라고 칭한다.

이런 Dependency를 결정한다는 것은 즉 Conditional Independency를 결정하는 것이다. 이를 통해 Model의 Structure와 필요한 Parameter의 개수가 결정될 것이다.

AR-n Model의 n은 가정에 해당하며, 이를 통해 확률분포의 모델링이 달라진다.

Neural Autoregressive Density Estimator

NADE는 Fully Dependent Model이다. ii번째 입력에 대한 확률분포를 만들 때, i1i-1까지의 모든 입력을 계산하는 형태이다. 예를 들어, x3x_3에 대한 출력은 x0,...,x2x_0,...,x_2까지의 입력에 해당하는 w0,...,w2w_0,...,w_2가 필요하다. 즉, 뒤에 있는 데이터일 수록 필요한 Parameter가 많아진다는 특징을 가진다.

NADE는 Fully Dependent Model이다.

NADE는 Explicit Model이다. 위에서 보았듯, 입력에 대한 확률 값을 계산하기 때문이다. 각 입력에 대한 확률분포를 만들기 때문에, 모든 확률을 곱하여 확률값을 구할 수 있다.

Pixel RNN

Pixel RNN은 RNN구조를 이용해 Image를 생성하고자 하는 Model이다. AR Model의 형태로 이전 모든 Pixel에 대해 Dependent하며, 채널은 각각 RGB 순으로 Dependent하도록 구성한 구조이다.

Pixel RNN은 RGB Channel도 관계가 있음을 가정하고 있다.

모든 AR Model이 그렇듯 Ordering에 따라 성능이 다를 수 있는데, Diagonal BiLSTM은 위에 소개한 바와 같고, Row LSTM 구조는 상단의 Pixel에만 Dependent한 구조를 갖는다.

Ordering에 따른 구조의 차이 예시


[DL Basic 10강] Generative Models Part 2

💡
Practical 한 Generative Model에 대해 알아본다.

Variational Auto Encoder

Auto Encoder 자체는 사실 Generative Model이 아니다. Auto Encoder 자체의 목적은 Data가 생성된 Distribution을 찾는 것이다. 변이추론(Variational Inference)을 통해 Data의 사후확률분포(Posterior Distribution)을 찾고자 하는 것이다.

Variational Auto Encoder는 원래는 변이추론을 목적으로 한 Model이다.

이를 기반으로 뒷 단에 다른 Decoder를 활용하는 Model이 Generative Model이다.

변이추론을 통해 생성된 확률분포를 Encoder로 활용하여, Generative Model을 구성했다.

Variational Distribution

Auto Encoder가 찾고자 하는 사후확률은 직접적으로 구할 수 없기 때문에, 이를 근사하는 방법으로 찾게된다. 즉, True Posterior Distribution과 KL Divergence가 최소화되는 Variational Distribution을 Modeling 하는 것이다.

근사의 방법으로는 직접적인 비교가 불가능 하기 때문에, ELBO Object를 도입하여 계산한다. 이 ELBO Term을 최대화 하는 것이 KL Divergence를 최소화 하는 것과 동일하기 때문이다.

참값인 사후확률분포를 근사하는 방법으로, ELBO Term을 최대화 하는 방법을 사용한다.

ELBO

ELBO는 다시 2개의 Term으로 나눌 수 있다. Reconstruction Term과 Prior Fitting Term으로 구분할 수 있다. Reconstruction Term은 Decoder를 통해 출력된 값과 실제 Data와의 차이를 직접 비교하는 Term으로 Loss를 통해 계산된다. Prior Fitting Term은 Input Data가 Latent Distribution과 얼마나 유사한지를 비교하는 Term이다.

ELBO도 두개의 Term으로 구성되어 있다.

Distribution의 비교는 모든 점에서 미분이 가능해야하므로, 다양한 확률분포를 가정할 수 없다. 그렇기 때문에 통상 Gaussian Distribution을 사용한다.

Adversarial Auto Encoder

이 모델은 Auto Encoder에서 Prior Fitting Term을 GAN Object로 바꾼 것에 불과하다. 하지만, 이를 통해서 다양한 확률분포 상의 비교가 가능해졌다. 일반화 성능도 기존의 Auto Encoder에 비해 좋은 것으로 알려져 있다.

Prior Fitting Term 대신, Adversarial Cost를 사용한다.

Generative Adversarial Network

GAN은 Generator뿐만 아니라 Discriminator를 같이 학습시켜 우수한 생성모델을 만드는 기법이다.

Auto Encoder는 입력데이터 xx를 Latent Distribution의 P(z)P(z)로 Encoding 한 후, Decoding하여 실제 xx와 같이 만드는 개념이었다. GAN은 실제 데이터와 생성 데이터를 구분하는 Discriminator와 Discriminator가 구분하지 못하도록 데이터를 생성하는 Generator의 Two Player Game형태로 학습한다.

VAE와 GAN의 차이의 예시

Original Input인지, Generator의 생성인지를 구분하는 Discriminator는 다음과 같은 목적 함수를 통해 학습한다.

Discriminator의 목적함수 수식

생성을 담당한 Generator는 다음과 같은 목적 함수를 통해 학습한다.

Generator의 목적함수 수식


Reference

Auto Encoder

1시간 만에 GAN 완전 정복하기

An Introduction to Variational Autoencoders(저자)

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

[U] Day 17 - NLP II  (0) 2021.03.26
[U] Day 16 - NLP I  (0) 2021.03.26
[U] Day 14 - Recurrent Neural Network  (0) 2021.03.26
[U] Day 13 - Convolution Neural Networks  (0) 2021.03.26
[U] Day 12 - 최적화  (0) 2021.03.26

+ Recent posts