Updated:

GAN이란 무엇인가?

알고리즘

1.png

  1. 제일 처음 Noise가 있다. 해당 Noise는 위 수식에서 z라고 표현된다.

  2. 해당 noise를 가지고 Generator(위조지폐범이) 위조지폐를 만든다. 만들어진 위조지폐들을 위 수식에서 G(z)라고 하자.

  3. 이제 Discriminator(경찰) 이 위조지폐와 실제 지폐를 구분해야 한다. 경찰은 이게 위조지폐라면 0을 출력하고, 진짜 지폐라면 1을 출력하기로 한다. 위조지폐 G(z) 와 실제 지폐 x 가 경찰 손으로 들어갔을 때, D(G(z))는 위조지폐이기 때문에 0, 실제 지폐는 D(x)는 1을 출력하게 된다.

이렇게 한번 경찰이 해당 지폐들을 구분한 게 한 번의 epoch 가 된다. 첫 번째 도전에서 경찰이 위조지폐와 진짜 지폐를 잘 구분할지라도, 점차 위조 지폐 범은 더욱 비슷하게 생긴 위조지폐를 만들려고 노력할 것이고 경찰도 점차 위조지폐를 더 잘 구분하기 위해 노력할 것이다. 그러다가 어느 순간 너무나도 완벽한 위조지폐가 탄생한다면, 경찰은 결국 해당 지폐를 구분하지 못하기 때문에 이게 진짜인지 가짜인지 찍기 시작할 것이다. 확률은 둘 중 하나일 테니 결국 50%로 가 될 것이고, 그 순간 학습이 끝나게 된다.

Generator와 Discriminator

Generator

2.jpg

  • Unsupervised Learning
  • MLP (multilayer perceptron)
  • 어떤 latent code를 가지고 training 데이터가 되도록 학습하는 과정을 말한다.
  • 실제 데이터의 확률 분포와 유사한 모델을 제작하려 한다.
  • D(G(z))가 1에 가까워지도록 하는 게 목표

Discriminator

  • Supervised Learning
  • MLP (multilayer perceptron)
  • 일종의 binary classifier
    • styleGAN2-ADA의 경우 ResNet을 사용했다.
  • 어떠한 input 데이터가 들어갔을 때, 해당 input 값이 어떤 것인지 Classify 한다. = output이 0 혹은 1
  • classify할 때 sigmoid function을 이용한다.

    3.jpg

수식의 의미

\[\underset{G}{min} \, \underset{D}{max} \, V(D,G)=\operatorname{E}_{x⁓Pdata(x)}[logD(x)]+\operatorname{E}_{z⁓Pz(z)}[log(1-D(G(z)))]\]
  • $V(D,G)$ : value function (= utility ftn. = objective ftn. = loss ftn.)
  • generator 입장에선 $V(D,G)$를 minimize, discriminator 입장에선 $V(D,G)$를 maximize하려 한다.

Discriminator 입장

4.jpg

  • latent code : 데이터에서 추출된 특징을 특정 값으로 mapping한 것
  • latent space : 대상을 잘 기술할 수 있는 feature들의 분포 공간

Generator 입장

5.jpg