Densitiy Estimation : 이미지 x가 주어졌을 때 그 분포 p(x)를 확인하여 강아지인지, 아닌지 구분 (anomaly detection) // 입력이 주어졌을 때 확률값을 얻을 수 있는 모델(explicit model) / 단순히 generation 만 할 수 잇는 모델 (implicit model)
Unsupervised representation learning : 데이터가 공통적으로 가지고 있는 특징을 배운다 (feature learning)
그렇다면 우리는 어떻게 p(x)를 표현할까?
Learning a Generative Model
Basic Discrete Distribution
베르누이 분포
동전 던지기처럼 0또는 1 두가지 경우의 수가 나오는 분포 / 이 확률을 표현하기 위한 수는 한개가 필요함
D = {head, tail}
P(x = head) = p / p(x = tail) = 1-p
x ~ Ber(p)
카테고리 분포
주사위 던지기처럼 n개의 경우의 수가 나오는 분포 / 이 확률을 표현하기 위한 수는 n-1개 , sum to one이기 때문에
D = {1, ... ,m}
P(Y = i) = pi∑i=1mpi=1
Y ~ Cat(p1, ..., pm)
Example
(r,g,b) ~ p(R,G,B)
RGB 이미지를 표현할 때 나올수 있는 경우의 수는
256 x 256 x256
이 분포를 표현하기 위해 필요한 parmeter의 수는
256 x 256 x256 - 1
X1 , .. ,Xn 까지 n개의 흑백사진이 있다고 가정했을 때,
가능한 states 는 2n
p(x1, ... ,xm)를 표현하기 위해 필요한 parameter 수는 2n−1
즉 엄청나게 많은 파라미터가 필요하다는 것
파라미터가 많으면 학습이 어렵기 때문에 수를 줄여야 한다.
n개의 픽셀이 모두 독립(fully independent)이라고 생각하면
가능한 states 는 2n
이 분포를 표현하기 위해 필요한 parmeter의 수는 n개이다.
이렇게 하면 parameter수는 줄일 수 있지만 표현력이 떨어지기 때문에 아래와 같은 방법이 필요하다.
Coiditional independence
z 가 주어졌을 때 x,y가 독립이라면 x라는 변수를 표현할때에 z가 주어지면 y 는 상관이 없다는 얘기
If x⊥y∣z , then p(x∣y,z)=p(x∣z)
chain rule 의 뒷단에 있는 수식을 날려줄 수 있다.
chain rule을 사용하면 fully dependent 모델과 param 수는 같다. 하지만 이 chian rule과 Coiditional independence을 조합하면 Conditional Independence를 표현할 수 있다.
먼저 chain rule을 사용했을 때 parameter 갯수는 다음과 같다,
p(x1,…,xn)=p(x1)p(x2∣x1)p(x3∣x1,x2)⋯p(xn∣x1,⋯,xn−1)p(x1):1 parameterp(x2∣x1):2 parameters (one per p(x2∣x1=0) and one per p(x2∣x1=1))p(x3∣x1,x2):4 parameters
총 파라미터 수는 1+2+22+...+2n−1=2n−1로, 기존의 갯수와 달라진 것이 없다.
i+1번째 픽셀은 i 번째 픽셀에만 dependent하다고 가정하면(Markov assumption),
결론은 chain rule로 결합분포를 조건부 확률로 바꾼뒤 Markov assumption과 Conditional independence를 사용하여 파라미터 갯수를 조절할 수 있다는 것이다.
이처럼 chain rule, Conditional independence를 잘 활용한 모델을 Auto-regressive Model 이라고 한다.
Auto-regressive Model
28 x 28 흑백 이미지를 가지고 있다고 가정했을 떄
우리의 목표는 분포 p(x)=p(x1,...,x784) 를 학습하는 것이다.
chain rule, Conditional independence 을 사용하여 Auto-regressive Model을 만들어보자.
이때, 주의할 것은 이전 한개에만 dependent하지않고 이전 모든 데이터에 dependent해도 Auto-regressive Model이라고 부른다.
또한 Auto-regressive Model을 만들기 위해 데이터에 순서를 정해야하는데 (ordering) 이 순서에 따라 성능이 좌우되기도 한다.
Nade(Neural Autoregressive Density Estimator)
앞선 모든 데이터에 dependent 하게 만든 모델.
p(xi∣x1:i−1)=σ(αihi+bi) where hi=σ(W<ix1:i−1+c)
explicit model 로, 주어진 데이터에 대해 확률(density)을 계산할 수 있다.
마지막 레이어에 가우시안 분포를 사용해서 continuous하게 만들었다.
Pixel RNN
RNN을 통해 generate하는 모델
ordering에 따라 두가지의 모델로 나뉜다.
Row LSTM
Diagonal BiLSTM
(10강) Generative Models 2
Variational Auto-encoder
autoencoder는 generative model이 아니다.
Variational inference (VI)
관찰값이 주어졌을 때, 내가 관심있는 랜덤 변수의 분포인 사후확률(Posterior distribution)을 가장 잘 근사할 수 있는 분포를 구하는 것이 목표이다.
이를 근사한 것이 바로 Variational distribution이다. KL divergence를 사용하여
Variational distribution를 구한다.
어떻게 구할것이냐, 궁극적으로는 우리가 Posterior distribution과 Variational distribution의 KL divergence를 줄이는 것이 목적인데, 이게 불가능 하므로 ELBO를 계산해서 키움으로서 반대급부로 내가 원하는 KL divergence의 값을 줄일 수 있는 것이다.
ELBO를 나누어 보면 , Reconstruction term과 Prior Fitting Term으로 나뉜다.
ELBO ↑Eqϕ(z∣x)[lnqϕ(z∣x)pθ(x,z)]=∫ϕϕlnqϕ(z∣x)pθ(x∣z)p(z)qϕ(z∣x)dz=Reconstruction Term Eqϕ(z∣x)[pθ(x∣z)]+Prior Fitting Term DKL(qϕ(z∣x)∥pθ(z∣x)) This term minimizes the reconstruction loss of an auto-encoder. This term enforces the latent distribution to be simiarto the prior distribution.
Reconstruction term은 encoder를 통해 x를 latent space로 보냈다가 다시 decorder를 통해 돌아올 때 reconstruction loss 를 줄이는 역할이고,ㅡ
Prior Fitting Term은 x라는 이미지들을 latent space에 올렸을 때 이루는 분포가 Prior distribution과 같아지도록 하는 역할이다.
VAE의 한계
explicit mocel이 아니다 : 입력이 주어졌을 때 likelihood를 계산하는 것이 어렵다(intractable model)
Prior Fitting Term 가 미분가능해야 한다. : KL divergence를 사용하므로 대부분 모든 output dimension이 독립인 isotropic Gaussian 을 사용한다. 이때의 loss function은 다음과 같다.
하지만 prior dustribution으로 가우시안분포를 사용하지 않을 때는 AAE(Adversarial Auto Encoder) 를 사용한다.
GAN을 활용해서 latent distribution 사이의 분포를 맞춰주는 것, 이는 VAE의 prior fitting term 을 GAN objective func으로 바꿔주는 것이다. 이렇게 하면 샘플링만 가능하면 어떤 것이든 latent 분포로 사용할 수 있다.
GAN이란?
Generative Adversarial Network는 생성자(generator, G)와 구분자(discirimiator, D), 두 네트워크를 적대적(adversarial)으로 학습시키는 비지도 학습 기반 생성모델(unsupervised generative model)이다.
G는 입력 z를 받아 실제 데이터와 유사한 데이터를 만들어내도록 학습되고, D는 G가 생성한 가짜 데이터를 구별하도록 학습된다. 이렇게 적대적으로 학습하여 실제 데이터의 분포에 가까운 데이터를 생성하는 것이 GAN의 목표이다.
GAN과 VAE의 차이
VAE는 encoder(q)와 decoder(p)로 구성되며 encoder는 관측된 데이터 x를 받아서 잠재변수 z를 만들어내고, decoder는 encoder가 만든 z를 활용해 x를 복원해내는 역할을 한다.
GAN은 Generator(G) 와 Discriminator(D)로 구성되며 G는 Zero-Mean Gaussian으로 생성된 z를 받아서 가짜 데이터를 만들고, D는 진짜와 가짜를 구분하도록 학습된다. GAN의 가장큰 장점은 두 네트워크가 적대적으로 학습하며 성능이 점점 좋아진다는 것이다.
실제 데이터(x)를 입력하면 높은 확률이 나오도록 하고(D(x)를 높임), 가짜 데이터(G(z))를 입력하면 확률이 낮아지도록(1−D(G(z))를 낮춤=D(G(z))를 높임) 학습된다. 다시 말해 D는 실제 데이터와 G가 만든 가상데이터를 잘 구분하도록 조금씩 업데이트된다.
Zero-Mean Gaussian으로 뽑은 노이즈 z를 받아 생성된 가짜 데이터(G(z))를 D에 넣었을 때, 실제 데이터처럼 확률이 높게 나오도록(1−D(G(z))를 높임=D(G(z))를 낮춤) 학습된다. 다시 말해 G는 D가 잘 구분하지 못하는 데이터를 생성하도록 조금씩 업데이트된다.
G가 학습이 매우 잘되어 G가 생성한 데이터의 분포가 실제 분포가 일치하는 경우 (G(x)=x,pg(x)=pdata(x)), 최적의 구분자 (optimal discriminator) D는 다음과 같다.
VAE의 구조
VAE는 인풋, 인코더, 레이턴트 스페이스, 디코더, 아웃풋의 구조
encoding 해서 나오는 레이턴트 벡터가 점 하나만 있는 것이 아니라 주변에 노이즈를 부여
노이즈를 부여하는 과정에서 가우시안 분포 활용
노이즈 부여의 의미는 변형을 시키는데 있음
VAE와 트랜스포머의 구조 차이점
트랜스포머는 인코더, 디코더의 구조
VAE는 인코더 이후 레이턴트 스페이스로 보내는 임베딩 연산이 추가적으로 존재
레이턴트 스페이스의 장점
데이터 변형이 용이함
변형은 ELBO로 이뤄지는지
강화 학습 등 다양한 방법론 존재.
ELBO는 x가 z로 인코딩과 디코딩 후의 probability를 의미
ELBO로 변형이 이루어지지는 않음
GAN을 활용 방안
sinGAN, 게임 쪽에서 활용되기도 함
학습 회고
이번주는 체력이 부족해서 공부하기가 많이 힘들었다.
다음주부터 아침에 간단한 운동이라도 해서 체력을 늘려가야겠다.
본격적으로 deep learning 에 대해 배운 일주일이었는데 내가 많이 부족하다는 것을 알았고
더 확실하게 개념을 잡고 가야겠다.
또 강의 영상을 받아쓰는 형식으로 블로그 글을 쓰니 남이 보면 이해못할 글이다.
강의 내용과 추가 공부내용을 적절히 합쳐 가치있는 글을 쓰자.