[Deep Learning] Generative Models
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 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)
- 그림 처럼 i 번째 픽셀을 1 ~ i-1 번째 픽셀에 의존하게 만듦(빨간, 파란, 초록줄보자.)
- 첫 번째 픽셀의 확률분포는 독립적으로 만들고, 두 번째 픽셀의 확률은 첫 번째 픽셀에 의존 (h 가 됨), 세 번째 픽셀의 확률은 첫 번째와 두번째에 의존 … 끝까지 진행
- explicit 모델 (생성 + 확률계산) -> 주어진 입력에 대해 density계산(확률)) 가능
- 784 개의 픽셀 {x1, …, x784} 이 있다면, joint 확률은 아래와 같음
- continous한 변수일 경우에는 mixture of Gaussian 사용된다.
Pixel RNN
- 이미지에 있는 pixel들을 만들고 싶다.
- R먼저 만들고 G, B 순서대로 만든다.
- 순서를 어떻게 하느냐 에 따라 Row LSTM, Diagonal BiLSTM을 나타내는 것이다.
- 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를 찾고자한다.
- 뭔지도 모르는 Posterior distribution을 Variational Distributions를 통해 근사하는 것. 어떻게 할까?
- ELBO (Evidence Lower Bound)를 계산해 키움으로 써 원하는 objective를 얻고자 한다.
- 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)
- 위조지폐를 만들려고 하는 도둑
- 위조지폐를 잘 판별하는 경찰
- 경찰이 판별한 돈을 보고 도둑은 성능을 개선
- 반복
GAN objective
- generator와 discriminator의 minimax game과 같다(한명은 높이고, 한명은 낮추고 싶어함)
- optimal discriminator가 판별한 것을 보고 generator가 계산한다.?
DCGAN
- deconvolution을 이용했다.
- LeakyReLU 사용
Info-GAN
- 단순히 이미지 z를 만드는 것이 아니라, class c를 사용하자.
- 특정 모드에 최적화 하게 만든다.
Text2Image
- Text를 통해 image를 만들어 낸다.
Puzzle-GAN
- 이미지 안에 서브패치들로 원래 이미지 복원하는데 사용
CycleGAN
- Cycle-consistency loss 알아두자.
Star-GAN
- 한국에서 나온 논문
- 이미지를 control할 수 있게 만든다.
Progressive-GAN
- 고차원 이미지를 만들 수 있는 방법론.
- 좋은 성능.
Comments