(10강) Generative Models 2
210813
Latent Variable Models
많은 사람들이 Variational encoder가 generative model이기 때문에 Autoencoder 역시 gen model이라고 생각한다. 사실은 그렇지 않다.
그래서 Variational autoencoder가 autoencoder를 gen model이 되도록 한것이 무엇인지 알아보려고 한다
Variational Auto Encoder
Variational inference
목적은 Posterior distribution을 찾는데 있다. Posterior distribution은 observation이 주어졌을 때 random variable의 확률분포이다.

여기서 z는 latent variable이다.
p(x | z)을 우리는 likelihood라고 한다.

일반적으로 Posterior distribution을 계산하기가 힘들다. 불가능할때도 많다. 그래서 이 분포와 가깝게 근사하겠다는것이 목적이고, 그 분포가 바로 Variational distribution 이다.
여기서는, Kullback–Leibler divergence 라는것을 활용해서 Variational distribution과 Posterior distribution과의 차이를 줄이려고 한다.

문제가 무엇이냐면, 애초에 P-dstb도 모르는데, V-dstb를 구하려고 한다는 것. 무엇인지도 모르는 것과 가까운것을 구하려는 것. 이 문제를 해결하는 것이 V-dstb에 있는 ELBO Trick이다.

목적은 P-dstb와 V-dstb의 KL divergence를 줄이는 것이다. 근데 이것이 불가능. 그래서 ELBO, Evidence Low Bound 라는것을 계산하고 증가시킴으로써 목표항을 낮추려고한다.

ELBO는 위와 같이 두 개의 텀으로 나뉘게 된다.
Reconstruction Term
encoder를 통해서 x라는 입력을 latent space로 보냈다가 다시 decoder로 돌아오는 이 reconstruction loss를 줄이는 부분이다.
Prior Fitting Term
latent space에 있는 입력들의 분포가 사전에 정해준 사전 분포와 비슷하도록 하는 부분이다.
이것을 잘 설명해서 구현까지 한 것인 Variational Auto-encoder가 gen model이 될 수 있다. 엄밀한 의미에서 explicit 모델은 아니고 impulse 모델.
이해가 안된것이 뻔하니 자료조사를 통해 내가 이해한 것을 정리해보면,
Auto encoder는 Encoder와 Decoder의 두 파트로 구성되며, 입력에 대한 특징을 추출해서 Latent variables에 담고, 이 변수로부터 다시 입력을 복호화 하는 알고리즘이다.
이 때의 Latent variables가 있는 hidden space(=layer)를 latent space라고 한다.
원래는 인코더를 통해 압축, 디코더를 통해 복원하는 역할을 수행했다.
여기서 이 Latent space로 데이터를 생성해 낼 수 없을까? 라는 점에서 VAE(=Variational auto-encoder)가 주목을 받는다. 문제는, 인코더에 입력되는 데이터 X가 너무 많고 고차원이라는 것. 그래서, 이 X의 분포를 내가 알고, 표현할 수 있다면 새로운 데이터 _X 도 추정할 수 있지 않을까 라는 곳에서 시작한다.
그래서 우리는 이 X의 분포를 예상하기 위해 임의의 분포를 가정하고 이 분포를 X의 분포와 최대한 비슷하게 하려고 한다. 여기서 KL Divergence 개념이 나온다.
KL Divergence는 두 확률 분포가 얼마나 다른지를 표현하는 방법이다. 두 분포가 같으면 0의 값을 갖고 두 분포가 다를 수록 값이 커진다. 그 외의 특징은 다음과 같다
항상 0이상의 값을 가진다
계산 순서에 따라 값이 다르다 :
비교하는 두 분포가 가우시안 분포를 따르면 간략하게 표현이 가능하다
다시 원래 이야기로 돌아가면, 우리가 구하고자는 데이터 X의 분포식을 전개해보니 ELBO항과 KL항으로 나누어진다. 근데 여기서 KL항은 반드시 두 분포를 알아야 구할 수 있는 값이므로 ELBO항에 관심을 두게 된다. 그리고, 데이터 X의 분포식은 고정된 값이므로 ELBO값을 최소화 시키면 반대로, KL값이 최대화 될 것이라고 예상한다.
마치 10 = 4 + 6 인데, 10이 고정값이라서 4를 1로 바꾸면 6이 9가 되는 원리
다시, 본문으로 돌아가서 AE가 왜 Gen 모델이 될수가 없었나 생각해보면, VAE는 latent space를 가지고 새로운 이미지를 생성할 수 있는데비해 AE는 단지 입력이 latent space를 거쳐서 출력으로 나올뿐이기 때문이다.
Key limitation
VAE는 explicit한 모델이 아니기 때문에 likelihood를 구하기 어렵다. 그래서 interactable 모델이라고 불린다
KL항은 반드시 미분이 가능해야 한다. 그렇지 않으면 풀수가 없음. 그래서 미분이 가능하게 하기위해 VAE는 주로 가우시안을 사용한다.
그래서 대부분 isotropic Gaussian을 사용한다.
이는 모든 아웃풋이 독립적인 가우시안을 의미한다.
그래서 가우시안을 사용하면 다음과 같이 이쁜 꼴이 나오게 된다.

Adversarial Auto Encoer
VAE의 가장 큰 단점은 인코딩을 활용할 때 KL을 사용한다는 것이다. 결국 가우시안 분포가 아닌 경우는 풀 수 없다는 것.
이 때는 GAN을 활용해서 latent distribution 사이의 분포를 맞춰주는해 AAE를 사용한다.
Generative Adversarial Network

GAN의 장점은 어떠한 Fixed Discriminator의 의해 학습이 진행되는 것이 아니라 Discriminator와 Generator가 서로 영향을 주며 학습이 진행되는 것
GAN은 explicit 모델이다 ㅎ__ㅎ
VAE vs GAN

한쪽은 높이고 싶어하고 한쪽은 낮추고 싶어하는 minimax game과 같다
discriminator에 입장에서는 다음과 같다

이 값을 항상 최대화 시키는 D는 다음과 같다. (generator가 fix 되었다고 가정)

반대로, generator 입장에서는 다음과 같다

그리고 이 값을 항상 최소화 시키는 G는 다음과 같다 (discriminator가 fix 되었다는 가정)

DCGAN

이미지 도메인으로 활용한 GAN이 Dense Convolution GAN
INFO-GAN

z라는 것을 통해서 매번 이미지를 생성하는 것이 아니라 c라는 보조의 클래스를 이용하여 generate를 할 때 GAN이 특정 모드에 집중할 수 있게 해준다
특정 모드라고 함은, 식을 통해 Conditional Vector에 집중할 수 있게한다.
Text2Image

DALL-E 처럼 문장을 입력하면 이미지를 출력
이 모델이 먼저임
Puzzle-GAN

이미지의 부분을 입력하면 원본을 완성시켜주는 모델
CycleGAN

이미지 사이의 도메인을 바꿀 수 있는 모델
EX) 말을 얼룩말로 만듬
보통은 이런걸 가능하게 하려면 동일 배경의 말 사진 하나와 얼룩말 사진이 하나 필요한데, 그런것 없이 말사진 잔뜩 그리고 얼룩말 사진 잔뜩 학습해서 할 수 있다
Star-GAN

단순히 이미지의 도메인을 바꾸는 느낌이 아니라, 이미지의 도메인을 세부적으로 선택할 수 있게하는 모델
Progressive-GAN

4x4부터 1024x1024까지 단계적으로 이미지 크기를 키우면서 저차원 이미지부터 고차원 이미지를 학습시킨다.
Last updated
Was this helpful?