[GAN] introduction

Date :     Updated :

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가 되는거죠.

image-20220820225831735

  • 그러나 GAN은 Training time, requirement of a lot of samples, mode collapse, instability of training, Quality of image 등 여러 한계점을 기진고 있고, 이를 해결하기 위한 여러 모델이 개발되고 있습니다.



img


  • 해당 게시글에서 간단히 리뷰하는 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과의 주요 차이점은 다음과 같습니다.

  1. Pooling layer 대신 Discriminator는 strided convolution을, Generator는 Fractional strided convolution을 사용
  2. Batch Normalization이 사용되어서 생성된 데이터와 실제 데이터가 비슷한 통계적 성질을 갖도록 유도
  3. 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의 프로세스는 다음과 같다.

      1. 원본 이미지(a)로 가우시안 피라미드로 downsampling 이미지를 생성한다.(b)
      2. (b)의 upsampling 이미지를 생선한다(c)
      3. (a)와 (c)의 사이즈를 맞춘 후, 두 이미지 사이의 차이를 구한다.


  • LapGAN은 여러개의 GAN을 통해 LP representation에서 각 level마다 데이터를 생성한다.


1.4. InfoGAN

<나중에 추가=""> ### 1.5. Wasserstein GAN

Tags:

Categories:

Date :

Leave a comment