Deep Generative Models
Generative Models
- Suppose we are given images of dogs
- We want to learn a probalility distribustion p(x) such that
- Generation: if we sample xnew∼p(x),xnew should look like a dog (sampling)
- Density estimation: p(x) should be high if x looks like a dog, and low otherwise (anomaly detection: 이상행동감지) → discriminative model 같이 동작, GA모델은 discriminative model 포함
- Also known as, explicit models. 입력이 주어졌을 때, 얘에 대한 확률값을 얻어낼 수 있음
- c.f. implicit: 단순히 generation만 할 수 있음
- Unsupervised representation learning: We should be able to learn what these images have in common, e.g., ears, tail, etc (feature learning) → but 약간의 논란 여지 있음
- Then, how can we represent p(x)?
- x라는 입력이 들어갔을 때 어떤 값이 나오는 것
- x를 샘플링 할 수 있는 어떤 모델
Basic Discrete Distributions
이산 분포
- Bernoulli distribution: (biased) coin flip
- D = {heads, tails}
- Specify P(X=Heads)=P. Then P(X=Tails)=1−p.
- Write: X∼Ber(p).
- Categorical distribution: (biased) m-sided dice
- D={1,...,m}
- Specify P(Y=i)=Pi, such that i=1∑mpi=1
- Write: Y∼Cat(p1,...,pm)
Example
- modeling an RGB joint distribution (of a single pixel)
- (r,g,b)∼p(R,G,B)
- number of cases?
- How many parameters do we need to specify?
- Suppose we have X1,...,Xn of n binary pixels (a binary image) 28 x 28 = 784
- how many possible states?
- 2×2×...×2=2n
- 2784
- sampling from p(x1,...,xn) generates an image
- how many parameters to specify p(x1,...,xn)?
- 2n−1
- 2783
기계학습에서, 파라미터 수가 많아질수록 학습은 더욱 더 어려움
Structure Through Independence
n개의 픽셀들이 모두 independent하다고 생각하면? (말이 안되긴 함,,, 인접한 픽셀은 비슷할 것)
- what if X1,...,Xn are independent, then
- p(x1,...,xn)=p(x1)p(x2)...p(xn)
- how many possible states?
- how many parameters to specify p(x1,...,xN)?
- n
- 각각의 픽셀에 대해 파라미터 한개만 있으면 되고 independent
- 2n entries can be described by just n numbers! But this independence assumption is too strong to model useful distributions. : 파라미터의 수 2n → n
indendent는 표현할 수 있는 이미지가 너무 적어서 일반적으로 우리가 아는 이미지 만들 수 X
그래서 우리는 2n과 n방법 사이 어딘가 중간을 찾아야함
Conditional Independence
- Three important rules
- Chain rule
- p(x1,...,xn)=p(x1)p(x2∣x1)p(x3∣x1,x2)...p(xn∣x1,...,xn−1)
- n개의 joint distribution을 n개의 condition distribution으로 변환
- x1과 xn이 independent 이던 아니던 상관 X
- Bayes’ rule
- p(x∣y)=p(y)p(x,y)=p(y)p(y∣x)p(x)
- Conditional independence
- if x⊥y∣z, then p(x∣y,z)=p(x∣z)
- 가정: z가 주어졌을 때, x와 y가 independent하다.
- Using the chain rule,
- p(x1,...,xn)=p(x1)p(x2∣x1)p(x3∣x1,x2)...p(xn∣x1,...,xn−1)
- how many parameters?
- p(x1): 1 parameter
- p(x2∣x1): 2 parameters (one per p(x2∣x1=0) and one per p(x2∣x1=1) )
- p(x3∣x1,x2): 4 parameters
- Hence, 1+2+22+...+2n−1=2n−1, which is the same as before.
- why?
- 아무것도 바뀐 건 없음. joint distribution을 chain rule을 통해 condition distribution으로 곱으로 표현, 우리가 어떤 가정도 하지 않음 (e.g. conditional independence)
→ fully dependent 모델과 같은 수의 parameter를 가지겠네?
- Now, suppose Xi+1⊥X1,...,Xi−1∣Xi (Markov assumption),
- i+1번째 pixel은 i번째 pixel에만 dependent
- p(x1,...,xn)=p(x1)p(x2∣x1)p(x3∣x2)...p(xn∣xn−1)
- how many parameters?
- Hence, by leveraging the Markov assumption, we get exponential reduction on the number of parameters
- chain rule만 가지고 joint distribution을 쪼개면 파라미터 수는 달라지지 않음.
쪼갠 다음 Markov assumption하여 conditional independence를 통해서 파라미터를 2n−1로 줄임 (fully independent model 보다는 많음)
- Auto-regressive models leverage this conditional independency
- conditional independent assumption을 어떻게 줄이느냐에 따라 파라미터 수를 잘 바꿀 수 있음
Auto-regressive Model
- Suppose we have 28 x 28 binary pixels.
- Our goal is to learn p(x)=p(x1,..,x784) over x∈{0,1}784.
- How can we parametrize p(x)?
- Let’s use the chain rule to factor the joint distribution.
- p(x1:784)=p(x1)p(x2∣x1)p(x3∣x1:2)...
- This is called an autoregressive model
- 정보가 이전 정보들에 dependent
: Markov와 같이 이전 하나에만 dependent 해도, 전체에 다 dependent해도 autoregressive model임!
- 이전 n개를 고려: AR-n 모델
- Note that we need an ordering of all random variables
- depent를 위해 순서가 중요!
- 이미지를 순서? 명확하지 않음 → 순서를 어케하냐에 따라 성능/방법론 달라질 수도,,
NADE: Neural Autoregressive Density Estimator
- i번째 pixel을 1번째부터 i-1까지 dependent하게 함
- 첫번째 pixel 확률분포를 어느 것에도 dependent 하지 않은 상태로 만들고
두번째 pixel에 대한 확률을 첫번째 pixel에만 dependent하게
- pixel값을 입력으로 받는 neural network를 만들어서 single scalar가 나오면 sigmoid를 통과해 0~1의 수로 만듦
- neural network 입장에서는 입력 차원이 계속 달라짐 → weight가 계속 커지게 됨
- The probability distribution of i-th pixel is
- p(xi∣x1:i−1)=σ(αihi+bi) where hi=σ(W<ix1:i−1+c)
- explicit model: 입력이 주어졌을 때, 얘에 대한 확률값을 얻어낼 수 있음
- implicit: 단순히 generation만 할 수 있음
- NADE is an explicit model that can compute the density of the given inputs
- density: probability density
- how can we compute the density of the given image?
- suppose we have a binary image with 784 binary pixels, {x1,x2,...,x784}.
- Then, the joint probability is computed by
- p(x1,...,x784)=p(x1)p(x2∣x1)...p(x784∣x1:783)
- where each conditional probability p(xi∣x1:i−1) is computed independently
- joint distribution을 chain rule을 통해 conditional distribution으로 쪼개.
우리의 모델이 1번째 pixel에 대한 확률분포를 알고 있고, 첫번째 pixel이 주어졌을 때 두번째 pixel의 확률분포를 알고,... → 각각을 independent하게 다 집어넣음
- 다 곱하면 매우 작은 확률 값이 하나 나오겠지?
- In case of modeling continuous random variables, a mixture of Gaussain can be used
- binary pixel의 output은 sigmoid 통과해서 끝이지만 continuous output이라면 마지막 layer에 gaussain mixture을 활용해서 continuous distribution을 만듦
Pixel RNN
- 이미지에 있는 pixel들을 만들어낼꺼야 (generative model)
- We can also use RNNs to define an auto-regressive model.
- For example, for an n×n RGB image,
- p(x)=Πi=1n2p(xi,R∣x<i)p(xi,G∣x<i,xi,R)p(xi,B∣x<i,xi,R,xi,G)
- p(xi,R∣x<i) : Prob. i-th R
- p(xi,G∣x<i,xi,R) : Prob. i-th G
- p(xi,B∣x<i,xi,R,xi,G) : Prob. i-th B
- R을 먼저 → G → B 순서로 만들어
이전에는 auto regressive model을 fully connected layer를 통해 만들었지만 pixel RNN은 recurrent neural network를 만듦
- There are two model architectures in Pixel RNN based on the ordering of chain
- Row LSTM: 위쪽 정보 활용
- Diagonal BiLSTM: 이전 정보 전부 활용