9. Generative Models 1

유승우·2022년 5월 11일
0

Generative model


  • 생성 모델을 학습한다는 것은 그럴듯한 이미지나 문장을 만드는 것으로 생각할 수 있다
  • 하지만 단순히 Generative model의 전부가 아니고 다양한 것을 할 수 있다.

Learning a Generative Model


  • 어떠한 강아지 이미지가 주어졌다고 가정했을 때

  • 아래는 generative model이 했으면 하는 혹은 할 수 있는 것들 3가지이다.

    • Generation : 강아지 같은 이미지를 sampling하는 모델
    • Density estimation : 어떤 이미지가 들어왔을 때 확률 값 하나가 튀어나와 강아지 인지 아닌지를 구분하는 모델
    • Unsupervised representation learning : 강아지가 있으면 강아지는 귀가 두개고, 꼬리가 있고, 다른 특성들을 추출하는 모델(feature learning)
  • 또한, Generative model은 explicit model과 inplicit model로 나뉜다

    • explicit model
      • 어떠한 입력이 주어졌을때 이것에 대한 확률값을 얻어낼수 있는 모델
    • inplicit model
      • 단순히 generation만 할 수 있는 모델

Basic Discrete Distributions


  • Bernoulli distribution : coin flip
    • 동전의 앞 뒷면과 같이 0과 1의 확률을 표현하기 위해서는 1개의 파라미터가 필요하다
    • 앞이 나올 확률이 p이면 뒷면이 나올 확률은 1-p
  • Categorical distribution : m-sided dice
    • 예를 들어, 6개의 주사위를 던지는데는 5개의 파라미터가 필요하다

Example


  • 픽셀하나를 표현하는데 몇 개의 파라미터가 필요할까?
  • r,g,b 가 independent하고, 각각의 색은 하나는 0부터 255개의 256개 파라미터를 가질 수 있다. 따라서, 256 x 256 x 256개의 경우의 수가 있다.
  • 따라서, 하나의 rgb 픽셀을 표현하기 위해선 256 x 256 x 256 -1 개의 수많은 파라미터가 필요하다

  • binary 픽셀으로 보았을 때는 2n2^n의 경우의 수가 있고, 파라미터는 2n2^n-1개의 파라미터가 필요하다

Structure Throught Independence


  • 파라미터 수를 줄이기 위해 n개의 픽셀들이 모두 independent하다고 생각해보자
  • binary 픽셀을 가지는 6의 이미지를 생각해보면 인접한 픽셀은 비슷한 색깔을 가질거라는 가정이 있는데, 그렇게 되면 사실상 표현할 수 있는 것은 white noise뿐이다.
  • 그래도 픽셀들이 independent하다고 가정하면 여전히 가능한 경우의 수는 2n2^n이지만, 이 분포를 표현하기 위한 파라미터는 n개만 필요하다
  • 왜냐면, 각각의 픽셀에 대해 파라미터 한 개만 있어도 되고 모든 픽셀들이 독립적이기 때문에 다 더하여 n개의 파라미터만 필요하다
  • 따라서 independent를 가정하면 엄청난 파라미터 수를 줄일 수 있는 것을 보았다.

Conditional Independence


  • fully dependent하면 너무 많은 파라미터가 필요하고 independent하다면 파라미터를 줄일 수 있었지만, 이렇게 되면 표현할 수 있는 이미지가 적은 문제가 있으니 이 중간점을 찾자!

  • 3 가지 중요한 방법

    • Chain rule : n개의 결합확률분포를 n개의 조건부확률 분포로 바꾸어 주는 것
    • Bayes’ rule : y가 일어났을때 x의 확률을 아래와 같이 바꾸어 준다
    • Conditional independence : z가 주어졌을 때 x와 y가 independent 하다고 가정하는 것
      • z라는 랜덤 변수가 주어졌을때 x를 표현하는데 있어서 x와 y가 독립적이니까 y는 상관이 없어진다.
      • chain rule에서 나온 혹은 어떤 조건부 분포에서 뒷단의 condition 조건을 날려주는 효과가 있다.

  • 따라서, 위의 chain rule 과 conditional independence를 섞어서 fully dependent 모델과 independent 모델 사이에 있는 어떤 좋은 모델을 만들자

chain rule만 활용했을 때


  • chain rule을 활용하면서 어떠한 가정을 하지 않았기 때문에, fully dependent model과 같은 파라미터 수를 가진다고 알 수 있다. 직접 해본 것
    • p(x1)p(x_1) : 0 또는 1을 가질 수 있으며 1개의 파라미터가 필요
    • p(x2x1)p(x_2|x_1) : x1x_1이 주어졌을 때 x2x_2가 0과 1인 경우 2개의 파라미터 필요
    • p(x3x1,x2)p(x_3|x_1,x_2) : 4개의 파라미터가 필요하다
    • 따라서 2n2^n개의 파라미터를 가진다고 할 수 있다.

chain rule에 Markov assumption를 활용했을 떄


  • 그렇다면 i+1 번째 픽셀은 i번째 픽셀에만 dependent하다고 가정을 해보자
  • 가정한 후의 식은 아래와 같고 파라미터는 2n-1개가 필요하다

  • chain rule만 가지고 결합확률분포를 쪼개면 파라미터 수는 달라지는게 없는데, 쪼갠 이후 markov assumption을 가하면 conditional independent를 통해서 2n2^n-1에서 2n-1개로 줄일 수 있었다.
  • 이러한 방법을 auto regressive model이라 부르고, conditioanl independence를 잘 활용하는 모델이다.

Auto-regressive model


  • 위와 같이 binary 픽셀을 가지는 28x28의 이미지가 있을 때, 앞에서 보았던 확률 분포를 만들기를 원한다면 몇 개의 파라미터가 필요할까?

  • chain rule을 가지고 joint distribution을 나눈 이 모델을 autoregressive model이라 부른다

p(x1:784)=p(x1)p(x2x1)p(x3x1:2)p(x_{1:784}) = p(x_1)p(x_2|x_1)p(x_3|x_{1:2})\cdots
  • 명확히 하면 auto regressive 모델은 이전 하나의 정보가 이전 정보들에 dependent 한다는 것을 말한다

  • i번째 픽셀이 i-1에만 dependent한 것도 auto regressive 모델이지만 i번째 픽셀이 1부터 i-1까지 dependent한 것도 auto regressive 모델이다.

  • auto regressive를 활용을 하기 위해 중요한 것은 ordering이다.

    • 이미지의 경우는 순서를 매기기 애매하기 때문에, 순서에 따라 성능과 방법이 달라질 수 있으며, 이전의 몇 개의 정보를 고려할지에 따라 전체 모델의 구조가 달라질 수 있다.

NADE : Neural Autoregressive Density Estimator


  • i번째 픽셀을 첫 번째부터 i-1번째 픽셀까지 dependent하기 위한 모델

  • 첫 번째 픽셀에 대한 확률 분포를 어떤 것에도 dependent하지 않은 상태로 만들고, 두 번째 픽셀에 대한 확률을 첫 번째 픽셀에만 dependent하게 만들고, i번째 픽셀에 대한 확률은 첫번째 픽셀에 대한 확률부터 i-1 번째 픽셀에 대한 확률까지 dependent한 모델이다.

    • dependent하다는 것은 첫 번째부터 i-1번까지의 확률 값을 입력으로 받는 neural network를 만든 후 single scalar가 나온 뒤 시그모이드를 통해 확률 값으로 바꾸는 형식을 말한다.
  • neural network의 입장에서는 입력 차원이 계속 달라지기 때문에 weight가 계속 커진다.

    • 입력의 개수와 같은 i-1개의 weight가 필요하다
  • NADE는 explicit 모델로 단순히 이 모델이 generation만 할 수 있는 것이 아니라 binary 벡터가 주어졌을 때 임의의 확률로 계산할 수 있는 모델이다

  • 이제껏 binary 픽셀을 말헀지만, 연속적인 픽셀의 경우에는 Gaussian mixture model을 활용하여 만들 수 있다.

Pixel RNN


  • 어떤 이미지에 있는 픽셀들을 만들고 싶은데, RGB의 픽셀을 고려하여 i번째 픽셀의 R먼저 만들고 후에 G,B순서로 만드는 모델이다.

  • 앞에서 봤던 것은 auto regression 모델을 fully connect layer를 통해 만들었는데,

  • 차이점으로는 위에서는 i번째 픽셀은 i-1개의 입력을 다 고려할 수 있는 Dense layer를 만든것인 반면, Pixel RNN은 이름에서와 같이 RNN을 활용해 만들겠다는 차이점이 있다.

  • ordering을 어떻게 하냐에 따라서 두 가지의 알고리즘으로 나뉜다
    - Row LSTM : i번쨰 픽셀을 만들 때 위쪽의 픽셀을 활용하는 것
    - Diagonal BiLSTM : bidirection LSTM을 활용하되 이전의 픽셀들을 다 활용하는 것

0개의 댓글