[GAN] introduction
GAN에 대해 전체적인 내용을 한번 정리해보고자 합니다.
많은 내용은
- A Survey on Generative Adversarial Networks: Variants, Applications, and Training, 2021.
- Generative Adversarial Networks: A Survey on Training, Variants, and Applications, 2022
를 참고하였습니다.
0. Generative model
- ‘생성모델’은 데이터를 이해하고 이를 바탕으로 데이터를 다시 생성해내는 모델을 의미합니다.
- 많은 양의 데이터를 학습한 후, 이를 바탕으로 데이터의 확률 분포를 학습합니다.
- 최신 모델을 이용하면, 사실적인 데이터 분포를 학습하여 사실적인 데이터를 생성해낼 수 있습니다.
- Explicit Density estimation
- 평균이나 분산과 같은 데이터의 성질을 추정하여 분포를 추정합니다.
- 대표적인 예시는 PixelCNNs , VAE가 있습니다.
- Implicit Density estimation
- 밀도를 명시적으로 하지 않고 데이터를 바탕으로 숨겨진 분포를 추정하고자 한다.
- 대표적인 예시는 GAN으로, VAE 등에 비해 더 품질 높은 이미지를 얻을 수 있다.
1. GANs
1.0. Vanilla GAN
- 2014년 Ian Goodfellow가 만든 GAN 모델을 흔히 Vanilla GAN이라고도 합니다. 두 player의 min-max game을 통해 실제와 비슷한 이미지를 만드는 모형을 Goodfellow가 처음 제시했습니다.
- Generator(G)와 Discriminator(D)가 존재하며, G는 D가 진짜인지 가짜인지 구분하지 못하는 이미지를 만들고, D는 그 이미지가 진짜인지 가짜인지 구분합니다. 이렇게 학습된 G는 실제 데이터에 대한 implicit model을 담고 있는 sampler가 되는거죠.
- 그러나 GAN은 Training time, requirement of a lot of samples, mode collapse, instability of training, Quality of image 등 여러 한계점을 기진고 있고, 이를 해결하기 위한 여러 모델이 개발되고 있습니다.
- 해당 게시글에서 간단히 리뷰하는 GAN의 variation들은 다음과 같습니다.
Title | Year | |
---|---|---|
1 | Conditional Generative Adversarial network (CGAN) | 2014 |
2 | Deep Convolutional Generative Adversarial network (DCGAN) | 2015 |
3 | Laplacian Generative Adversarial network(LapGAN) | 2015 |
4 | Information Maximizing Generative Adversarial network(infoGAN) | 2016 |
5 | Wasserstein Generative Adversarial network(WGAN) | 2017 |
6 | Boundary Equilibrium Generative Adversarial network | 2017 |
7 | Least Square Generative Adversarial Network (LSGAN) | 2017 |
8 | Big Generative Generative Adversarial network(BigGAN) | 2019 |
9 | Style-Based Generator Architecture for Generative Adversarial network(StyleGAN) | 2019 |
1.1. Conditional GAN
- Conditional GAN은 GAN 논문이 첫 발표된 직후 나온 논문으로, 간단한 정보를 모델에 condition으로 줌으로써 모델의 성능을 개선합니다.
- 대표적인 예시로, MNIST 데이터에 대한 학습을 진행할 때, 0~9의 class label을 주는 것이 있습니다.
- 이와 같이 명시적으로 class를 부여하는 것은 multi-modal data를 다루는데 이점을 줍니다.
-
평범한 GAN은 Generator 와 Discriminator를 $D(x) , G(z)$ 로 노테이션 합니다.
-
이에 반해 CGAN은 $D(x c) , G(z c)$로 나타내죠. 즉, 조건이 condition으로 걸립니다.
-
$max_D V(D,G) = E_{x \sim p_{data}(x)} [log D(x c)] + E_{z \sim p_z (z) } [log(1-D(G(z c)))]$
1.2. Deep Convolutional GAN
- 기존의 GAN은 fully connecte networks를 이용한 layer를 채용했습니다.
- DCGAN에서는 convolutional layer를 채용하였고, 이미지 학습 성능을 크게 끌어올려 사실상 GAN 열풍을 시작하는데 일조했습니다.
DCGAN의 기존 GAN과의 주요 차이점은 다음과 같습니다.
- Pooling layer 대신 Discriminator는 strided convolution을, Generator는 Fractional strided convolution을 사용
- Batch Normalization이 사용되어서 생성된 데이터와 실제 데이터가 비슷한 통계적 성질을 갖도록 유도
- Relu activation for Generator, Leaky Relu activation for Discriminator
- 위와 같은 Structure를 통해 이미지의 quality를 올리고, 학습의 stability까지 달성하여서 DCGAN은 이후로 많은 GAN 모델 구조의 근간이 되고 있습니다.
1.3. Laplacian GAN
-
Laplacian GAN은 cGAN에 Laplacian Pyramid를 적용한 모델입니다.
-
Laplacian Pyramid : Image Pyramid의 일종. 사진마다 확인하고자 하는 객체의 사이즈는 당연히 다를 수밖에 없다. 따라서 이미지를 여러 해상도와 스케일의 이미지로 쪼개서 사용하는 것.
-
Upsampling은 해상도는 높지만 스케일이 낮은 이미지를 생성하는 것.
- Gaussian Pyramid에서는 짝수 열과 행에 픽셀을 추가한 후 이미지를 블러처리하여 생성
-
Downsampling은 해상도는 낮지만 스케일이 높은 이미지를 생성하는 것.
-
-
Laplacian Pyramid의 프로세스는 다음과 같다.
-
- 원본 이미지(a)로 가우시안 피라미드로 downsampling 이미지를 생성한다.(b)
- (b)의 upsampling 이미지를 생선한다(c)
- (a)와 (c)의 사이즈를 맞춘 후, 두 이미지 사이의 차이를 구한다.
-
- LapGAN은 여러개의 GAN을 통해 LP representation에서 각 level마다 데이터를 생성한다.
Leave a comment