6 minute read

What I can not create, I do not understand.
- richard feynman -

Generative Models

  • Generation: dog과 비슷한 모양으로 새로운 X data를 만들 수 있다.(sampling)
  • Density estimation: 데이터 주어졌을때 확률을 적용해 구분 하는 것.
    • explicit model이라고 한다.
  • Unsupervised representation learning: 강아지의 꼬리, 귀 같은 것들 특징을 학습 할 수 있다.

Basic Discrete Distributions

  • Bernoulli distribution : 예) 동전 앞뒤 \(P(X=back) = 1-p\)
  • Categorical distribution : 예) 주사위 6면 $$\sum{m}{i=1}p_i=1.

Example

  • RGB를 표현하기 위해서는 (r,g,b) ~ p(R,G,B)
  • 256x256x256의 경우의 수가 필요하다

Structure Through Independence

  • 앞서 색을 나타내기 위해서는 256x256x256 개의 파라미터가 필요했다.
  • 하지만 모든 r,g,b가 독립적이라고 생각하면 어떻게 될까?
  • 표현하기 위해서는 3개 만 있으면 된다. Ex) R:244, G:222, B:11
  • 256^3이 아니라 3이 필요하므로 말되안되는 가정이다.(하지만 너무 분포에서 유용하다.)

Conditional Independence

  • Chain rule: $$p(x_1,…,x_n) = p(x_1)p(x_2 x_1)…p(x_n x_1,…,x_{n-1})$$
  • Bayes’ rule : 앞서 배운 베이즈 통계 에서 알아보자.
  • Conditional Independence : x,y,z는 모두 랜덤 변수, x와 y가 독립적이면 x를 표현하는데 잇어서 z가 주어진다면 y가 필요없다.
  • Chain rule과 Conditional Independence를 이용해 여러 모델의 아이디어를 얻을 수 있다.

Markov assumption(“시간 t에서의 상태는 t−1 에서의 상태에만 영향을 받는다”)과 Chain rule을 합치면

  • \[p(x_1,...,x_n) = p(x_1)p(x_2|x_1)p(x_3|x_2)...p(x_n|x_{n-1})\]

Auto-regressive Model

28x28

  • 28x28 binary pixels에 대해서
  • 목표는 \(p(x) = p(x_1,...,x_{784})\) 는 0,1에 존재한다.
  • 어떻게 p(x)를 파라미터화 할까
    • chain rule을 사용해보자
    • \[p(x_{1:784}) = p(x_1)p(x_2|x_1)p(x_3|x_{1:2})...\]
    • 이것을 autoregressive model이라고 부른다.

NADE (Neural Autoregressive Density Estimator)

NADE

  • 그림 처럼 i 번째 픽셀을 1 ~ i-1 번째 픽셀에 의존하게 만듦(빨간, 파란, 초록줄보자.)
  • 첫 번째 픽셀의 확률분포는 독립적으로 만들고, 두 번째 픽셀의 확률은 첫 번째 픽셀에 의존 (h 가 됨), 세 번째 픽셀의 확률은 첫 번째와 두번째에 의존 … 끝까지 진행
  • explicit 모델 (생성 + 확률계산) -> 주어진 입력에 대해 density계산(확률)) 가능
  • 784 개의 픽셀 {x1, …, x784} 이 있다면, joint 확률은 아래와 같음
  • continous한 변수일 경우에는 mixture of Gaussian 사용된다.

Pixel RNN

  • 이미지에 있는 pixel들을 만들고 싶다.

Pixel RNN

  • R먼저 만들고 G, B 순서대로 만든다.
  • 순서를 어떻게 하느냐 에 따라 Row LSTM, Diagonal BiLSTM을 나타내는 것이다.

Pixel RNN

  • Row LSTM 은 i 번째 픽셀을 만들 때 위쪽 정보 사용헌더,
  • Diagonal BiLSTM - bidirectional하면서 자기 이전 정보 모두 사용

Latent Variable Models

Variational Auto-encoder

  • Variational inference(VI)
    • VI 의 목표는 variational distribution을 posterior distribution와 최고의 매치가 되도록 하는 것이다.
    • Posterior distribution: \(p_{\theta}(z \mid x)\)
    • 관측이 주어졌을 때 관심있는 확률 변수의 분포
    • 계산하기 힘듬 -> 근사하는것이 Variational distribution
    • Variational distribution: \(q_{\phi}(z \mid x)\)
    • 가장 관심있는 Posterior distribution 을 근사한 것
    • 이전에 배웠던 KL 발산을 사용해 true posterior를 최소하 하는 VD를 찾고자한다.

Pixel RNN

  • 뭔지도 모르는 Posterior distribution을 Variational Distributions를 통해 근사하는 것. 어떻게 할까?

ELBO

  • ELBO (Evidence Lower Bound)를 계산해 키움으로 써 원하는 objective를 얻고자 한다.

Pixel RNN

  • Recostruction Term - 인코더를 통해 x 라는 입력을 latent space 로 보냈다가 디코더로 돌아오는 Reconstruction loss 를 줄이는 것
  • Prior Fitting Term - x 라는 이미지들을 latent space 에 올림 (점들). 점들이 이루는 분포가 내가 가정하는 latent space 의 prior dist (사전 분포) 와 동시에 만족하는 것과 같음
    • 엄밀한 의미에서 Implicit model
  • 어떤 입력을 latent space 로 보내서 무언가를 찾고 이를 다시 reconstruction 하는 term 만들어지고, generative model 이 되기 위해서는 latent space 된 prior dist 로 z 를 샘플링 하고 decoder를 태워서 나온 output을 제너레이션 result 로 봄.

  • Auto-encoder는 latent space로 갔다가 output이 나오므로 generative model이 아니다.

  • intractable 모델이다.(explicit 모델이 아님, 가늠도를 측정하기 힘들다)

단점

  • Guassian이 아닌 경우에 힘들다.

GAN(Generative Adversarial Networks)

Pixel RNN

  • 위조지폐를 만들려고 하는 도둑
  • 위조지폐를 잘 판별하는 경찰
  • 경찰이 판별한 돈을 보고 도둑은 성능을 개선
  • 반복

GAN objective

  • generator와 discriminator의 minimax game과 같다(한명은 높이고, 한명은 낮추고 싶어함)
  • optimal discriminator가 판별한 것을 보고 generator가 계산한다.?

DCGAN

DCGAN

  • deconvolution을 이용했다.
  • LeakyReLU 사용

Info-GAN

DCGAN

  • 단순히 이미지 z를 만드는 것이 아니라, class c를 사용하자.
  • 특정 모드에 최적화 하게 만든다.

Text2Image

  • Text를 통해 image를 만들어 낸다.

Puzzle-GAN

  • 이미지 안에 서브패치들로 원래 이미지 복원하는데 사용

CycleGAN

DCGAN

  • Cycle-consistency loss 알아두자.

Star-GAN

  • 한국에서 나온 논문
  • 이미지를 control할 수 있게 만든다.

Progressive-GAN

DCGAN

  • 고차원 이미지를 만들 수 있는 방법론.
  • 좋은 성능.

참고자료

Pixel RNN

Comments