Generative Models

naem1023·2021년 8월 13일
0

DL Basic

목록 보기
15/16

https://deepgenerativemodels.github.io/
스탠포드 대학의 수업이라고하는데 참고해서 수업을 진행하셨다.

Generative model

단순히 이미지와 문자를 만드는 것이 아니다.

강아지 이미지들을 받았다고 해보자.

Generative model에 probability distribution p(x)p(x)를 학습할 것을 기대할 수 있다.

  • Generation: xnewp(x)x_{new} \sim p(x)를 샘플링 했을 때, xnewx_{new}는 개처럼 보여야한다.
  • Density estimation: p(x)p(x)를 사용해서 임의의 입력 xx에 대해서 개인지, 혹은 개가 아닌지, 고양이인지 등의 판단이 가능하다. (anomaly detection, 이상행동 감지)
    • 엄밀한 의미에서 Generative model은 Descriminator model을 포함하고 있다.
    • 확률값을 얻을 수 있는 모델을 explicit model이라고 한다.
  • Unsupervised representation learning(feature learning): feature를 unsupervised 방식으로 학습하는 것
    • 교수님은 의아하다고 하지만 스탠포드 대학 강의에서는 이 또한 generative model이 지향하는 것이라고 했다고 한다.

Basic Discrete Distributions

시작하기 전에 알아둬야할 간단한 수학적 지식이다. 앞서 임성빈 교수님 수업에서도 말씀해주셨던 내용이지만 복습하는 의미로 적는다.

Bernoulli distribution

Bernoulli에는 1개의 paramter만 필요하다.

  • D = {Heads, Tail}
  • P(X=Heads) = p, then P(X=Tails) = 1 - 0
  • Write: X ~ Ber(p)

Categorical distribution

Categorical에는 m-1개의 parameter가 필요하다. m-1개의 요소들을 안다면, 나머지 1개의 요소는 자동적으로 결정되기 때문이다.

  • D = {1, ..., m}
  • P(Y=i) = pip_i, such that i=1mpi\sum_{i=1}^m p_i = 1
  • Write: Y ~ Cat(p1, ..., pm)

RGB

  • (r,g,b)p(R,G,B)(r, g, b) \sim p(R, G, B)
  • number of cases = 256 x 256 x 256
  • number of parameters = 256 x 256 x 256 - 1
    • 1개의 rgb 픽셀을 표현하기 위한 parameter의 수는 매우 많다! 당연한 이야기지만..

Binary image

  • n pixel의 binary image를 가정해보자.
  • 2n2^n state가 필요하다.
  • Sampling from p(x1,...,xn)p(x_1, ..., x_n) generate an image.
    • p(x1,...,xn)p(x_1, ..., x_n)를 샘플링하기 위해서는 2n12^n - 1의 parameters가 필요하다.

즉, parameter의 수가 너무 많다. 줄여볼 수 없을까?

Structure through independence

Binary image에서 X1,...,XnX_1, ..., X_n이 independent하다고 가정해보자.
사실 말이 안된다. 모든 픽셀이 independent하다면 표현할 수 있는 이미지는 화이트 노이즈일 뿐일 것이다. 하지만 그래도 가정해보자.

p(x1,...,xn)=p(x1)p(x2)...p(xn)p(x_1, ..., x_n) = p(x_1)p(x_2)...p(x_n)

이 때, possible state의 수는 동일하게 2n2^n이다.

하지만 p(x1,...,xn)p(x_1, ..., x_n)를 위한 parameter의 수는 n개이다. 왜냐하면 각각의 픽셀에 대해서 필요한 parameter의 수는 1개이다. 또한 모두 independent하기 때문에, 모두 더하면 n이다.

Chain rule

그 어떤 가정도 필요없는 정리이다. 즉, 기본적인 출발선에서 시작하기 때문에 fully dependent model이라고 생각하자.

모든 parameter의 수는 $2^n -1 $이다. exponential reduction을 했다!

Bayes' rule

Conditional independence


x and y are conditional independent given z, p of x given y and z는 p of x given z와 같다. 라고 영어로 말하시더라.

z가 주어지고 x와 y가 indepedent하다면, random한 x를 볼 때 y는 상관없다는 것이다.

즉, chain rule이나 혹은 다른 수식에서 independent한 관계인 변수들이 있다면 조건부에서 날려주는 역할을 하는 정리이다.
이 정리를 사용해서 fully depedent model과 fully independent model 사이의 좋은 모델을 만들 것이다.

Markov assumption

chain rule에 Markov assumption을 적용해보자. RNN에 나왔던 가정인거 같은데, 현재 상태를 바로 이전의 상태만을 활용해서 정의하는 것이다.
즉, chain rule에서 이전의 모든 정보를 활용하는 항들이, n시점에서는 n-1만을 참조하는 항들로 바뀐다.

모든 parameter의 수는 2n12n-1이다.

fully independent하게 계산했던 parameter의 수인 n과 비교하면 크지만, dependent하게 계산했던 chain rule인 2n12^n-1에 비하면 exponential reduction하다.

즉, 이러한 형태로 중간의 sweet spot을 찾는 것이 auto-regressive model.

Auto-regressive model

  • 28x28의 binary image를 사용한다고 가정.
  • p(x)=p(x1,...,x785)p(x) = p(x_1, ..., x_785)x{0,1}784x\in\{0,1\}^{784}에서 학습하는 것.
  • p(x)p(x)를 어떻게 parametrize할 것인가?
    • chain rule을 사용해 joint distribution을 나눈다.
    • 이것을 autoregressive model이라고 한다.
    • markov assumption처럼 바로 이전의 정보만을 활용하는 것도 autoregressive model이다.
  • 모든 random variables에 대해 순서를 부여해야한다.
    • 순서에 따라 성능이 달라지기도 한다.

이전 1개만 고려하는 모델 = AR(1) model
이전 n개를 고려하는 모델 = AR(N) model

NADE

Neural autoregressive density estimator

i번째 픽셀을 첫번째 ~ i-1번째 픽셀에 dependent하게 구성.

  • 첫번째 픽셀에 대한 확률분포를 어느 것에도 dependent하지 않게 구성.
  • 두번째 픽셀에 대한 확률분포는 첫번째 픽셀에만 dependent하게 구성.
  • 다섯번째 픽셀에 대한 확률분포는 첫번째 ~ 네번째 픽셀에만 dependent하게 구성.
  • i번째 픽셀은 i-1개의 픽셀에 dependent하다.
  • 입력차원이 달라지면서 weight는 게속 커진다.
    • i번째 입력은 i-1개의 입력을 받을 수 있는 weight가 필요하니까.
  • 마지막 layer에 'a mixture of Gaussian'을 써서 continuous random variables를 만들 수도 있다.

NADE는 explicit model이다.
chain rule처럼 확률이 계산되기 때문에, 어떻게든 확률을 계산할 수 있다.

inplicit model은 generation만 할 수 있다.

Pixel RNN

RNN을 auto-regressive하게 만들자.

n x n RGB image에 대한 수식은 다음과 같다.

Ordering에 따라서 두가지로 나뉜다.

  • Row LSTM
    • 위 쪽의 정보들을 활용
  • Diagonal BiLSTM
    • 이전의 모든 정보들을 활용
profile
https://github.com/naem1023

0개의 댓글