Deep Learning/GAN

[GAN] Generative Model

언킴 2021. 10. 21. 23:55
반응형

우리가 일반적으로 Generative Model을 생각하면 바로 GAN 이 떠오를 것이다. 번역을 하면 생성모델이긴 하지만 이 모델은 단순히 이미지를 생성만 하는 것이 아니라 다른 작업도 수행할 수 있다. 예를들어 다음과 같은 강아지 이미지가 있다고 생각해보자. 우리는 이 강아지와 유사한 이미지를 생성해낼수도 있고, 새로운 이미지가 들어왔을 때 이 이미지와 강아지 간의 확률값을 통해서 강아지인지 혹은 강아지가 아닌지 annomaly dectection도 수행할 수 있다. 

 

Density estimation처럼 어떤 이미지가 들어왔을 때 기존 이미지와 얼마나 유사한가 확률값을 출력해내는 모델을 Explicit model이라고 부르고, 단순히 이미지 생성만 할 수 있는 GAN과 같은 모델은 implicit model이라고 부른다. 

 

 

 

위 처럼 확률값($P(x)$)를 출력하기 위해서 사용되는 기본적인 Discrete Distribution은 Bernoulli distribution과 Categorical distribution이 존재한다. Bernoulli와 Categorical 을 분류하는 기준은 Category의 개수를 가지고 판단한다. 동전 뒤집기와 같은 경우는 앞면 뒷면 총 두가지로만 존재하기 때문에 $p$ 혹은 $1-p$의 값만 가진다. 주사위를 굴리는 경우에는 1~6까지의 총 6개의 값을 가질 수 있는 분포가 나온다. 동전 뒤집기와 같은 경우를 Bernoulli, 주사위 굴리기와 같은 경우를 Categorical이라고 지칭한다.

 

예를들어 (r, g, b)를 가지는 이미지의 Category의 개수는 몇개가 될까? r, g, b는 각각 256개의 값을 가질 수 있기 때문에 이 경우 256x256x256개가 생긴다. 그렇다면 이때의 parameter수는 몇개가 될까? bernoulli의 경우를 보면 2-1개의 변수가 필요하다. 그러므로 총 256x256x256 -1 개의 parameter 가 필요하다. 

 

흑백 사진이(binary image) n개 있다고 가정하면, 이때 필요한 parameter수는 총 $2^n -1$개가 된다. 우리가 이전에도 계속 배웠듯 학습을 할 때 parameter수가 증가하면 증가할수록 모델의 Generalization performance는 낮아지고 학습은 더 어려워진다. 

 

우리는 이렇게 많은 parameter수를 줄이기 위해 모든 이미지들이 independent하다는 가정을 하기 시작했다. 사실상 이미지 내의 한 pixel에 대해서 인접한 pixel은 dependent하기 때문이다. 위 가정을 하게되면 possible state는 $2^n$으로 동일하지만 모든 경우가 독립이기 때문에 이미지 하나당 하나의 parameter만 가져서 n개의 parameter가 필요해진다. 이 가정 하나로 parameter수가 엄청나게 줄어든 것을 확인할 수 있다. 

 

fully dependent한 상태로 이미지를 분석하려고하니 parameter수가 너무 많고, independent하다는 가정하에 이미지를 분석하려고 하면 parameter수가 너무 줄어들어 이 모델이 표현할 수 있는 이미지에 너무 제한적이게 된다. 이 중간에 어떠한 것을 찾기 위해서 다음과 같은 트릭을 시행한다. 

 

1. Chain rule

$p(x_1, ..., x_n) = p(x1)p(x_2|x1)p(x_3|x_1, x_2)\cdots p(x_n|x1,\ \cdots \ , x_{n-1}) $

 

2. Bayes' rule 

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

 

3. Conditional independence

$if\ x \bot y|z, then\ p(x|y,z)= p(x|z) $

 

위의 Chain rule과 Bayes' rule는 exact한 방법이지만 마지막 Conditional independence는 가정이다. $z$가 주어졌을 때 $x$와 $y$는 서로 independent하다고 가정하면 $z$가 주어졌을 때 $p(x|y,z)= p(x|z)$이기 때문에 $y$의 값은 상관이 없게 된다. Chain rule과 Conditional independence를 잘 섞어서 Chain rule 의 뒤에 붙는 Conditional을 잘 조절해서 fully dependent와 indpendent 사이의 적절한 조건을 찾는 것이다. 이 과정을 Auto-regressive라고 부른다. 

 

 

Auto-regressive Model

MNIST 데이터가 있을때(28x28) Auto_regressive model을 활용해 parameter를 줄여보자.

우리가 하려고 하는 것은 $p(x)=p(x_1, ... , x_{784}) $ over $ x  \in {0,1}^{784} $를 학습시키는 것이다. 그렇다면 $p(x)$를 어떻게 표현할 수 있을까? 위에서 본 Chain rule을 사용해 $p(x_{1:784}) = p(x_1)p(x_2|x_1)p(x_3|x_{1:2})..$ 형태로 바꾸어주고 이것을 Auto-regressive model이라고 한다. Auto-regressive model은 어떤 하나의 정보가 이전 정보들에 dependent한 것을 말한다. 한 정보가 이전 정보에만 dependent한 것도 auto-regressive model이지만 전체 정보에 대해서 dependent한 경우에도 auto-regressive model이라고 한다. 

 

어떤 데이터에 auto-regressive model을 적용 시키기 위해서는 ordering을 해주어야 한다. 왜냐하면 Chain rule을 적용시키기 위해서는 1부터 n까지의 순서가 있어야하기 때문이다. 이미지의 경우 2차원 공간인데 순서는 1차원 수준으로 매기기 때문에 가로, 세로, 대각선 등 다양한 순서를 매기는 방법에 따라서 성능이 달라질 수 있고, 방법론이 달라질 수 있다. auto-regressive model은 이전 한 정보만 고려할수도 있고, 3개 5개 등 갯수를 정할 수 있기 때문에 n개를 고려할 경우 AR(n) model이라고 부른다.