Image processing/논문 Review

GAN(Generative Adversarial Network)의 이해

유니디니 2018. 12. 29. 00:10
728x90
반응형

참고자료 : [1] 1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

              [2] https://towardsdatascience.com/understanding-generative-adversarial-networks-4dafc963f2ef

              [3] https://dreamgonfly.github.io/2018/03/17/gan-explained.html



1. GAN(Generative Adversarial Network)이란? 


Generative : "생성적인, 생산하는"이라는 뜻으로 GAN모델 안에서의 의미는 이미지를 생성한다라는 의미입니다.


Adversarial : "적대적인" 이르는 뜻으로, 서로 경쟁하면서 무엇인가를 좋게하는 의미입니다. 즉, 이미지를 만들긴 하는데, 서로 경쟁하면서 좋게 만든다라는 의미가 됩니다.    


따라서, 전반적인 GAN의 의미는 서로 경쟁하면서 가짜이미지를 진짜이미지와 최대한 비슷하게 만들어내는 네트워크를 말하게 되는 것 입니다.


2. GAN의 구조



GAN의 구조는 보시는 것 처럼 Discriminator(판별기)와 Generator(생성기)로 구성되어 있습니다.


    • Discriminator (판별기) : 가짜 데이터와 진짜 데이터에 대해서 0과 1로 판별하는 역할
    • Generator (생성기) : latent sample(노이즈)을 통해, 가짜 데이터를 생성하는 역할

여기서, latent sample(잠재된 공간에서의 샘플 데이터)는 정규화된 분포(예, 가우시안 분포)나 균등한 분포를 따르게 됩니다.

 

3. GAN의 원리와 학습 순서


앞서 언급 했던것 처럼, Adverisarial (적대적인) 원리를 가지고 있습니다. Discriminator(판별기)와 Generator(생성기)는 서로 적대적으로 경쟁하며, 가짜 이미지를 진짜 이미지처럼 만듭니다. 그렇다면 어떻게 학습이 진행 되는 것일까요? 순서는 다음과 같습니다.


1. 훈련 데이터(진짜 데이터)를 가지고 Discriminator(판별기)를 학습시킵니다. 이를 통해, 훈련 데이터의 분포를 얻게 됩니다.


2. Latent sample를 통해 노이즈한 값을 Generator(생성기)에 주고, 생성기에서는 이미지를 생성합니다. 물론, 처음에는 굉장히 허접한 데이터를 생성하지만 분포가 점점 훈련데이터 분포에 따라갈수록 진짜 이미지와 비슷한 이미지를 생성합니다. 


3. 생성된 이미지(가짜 데이터)는 Discriminator(판별기)에서 가짜 데이터와 진짜 데이터를 구별하게 되고, 오차 역전파를 통해 Generator(생성기)를 좀 더 진짜 데이터로 만들 수 있는 방향으로 학습하게 됩니다.

  

이와 같은 방법을 반복하게 되면, 생성기는 결국 진짜 데이터와 유사한 데이터를 생성하게 됩니다. 즉, 정규화된 분포에서 시작한 발생기(파란색 선)에서의 분포 판별기에서 훈련 데이터(보라색 선) 통해 얻은 분포를 유사하게 따라가는 형태입니다.


 

4. GAN의 장점 및 단점


    • 장점 : 새로운 개념의 이미지 생성 방법.
    • 단점 : 데이터의 분포를 따라가다 보니, 어떤 데이터가 나올지 모른다라는점. 예를 들어 , 가장 쉽게 생각할 수 있는 MNIST 데이터인 0~9의 숫자에서 어떤 숫자가 발생기에서 나올지 모른다는 점이다. 이를 보완하기 위해 추후 연구에서 라벨(one-hot 벡터)-cGAN이라던지, 에지-pix2pix 등의 조건을 원하는 데이터를 생성하기도 합니다. 


반응형