Vanilla GAN

처음엔 CNN을 활용한 줄 알았는데, 자세히 살펴보니, 단순한 Layered 된 Deep Model이었다…

CNN을 활용한 GAN 모델은 DCGAN 인 것 같네😅

구현방법

D모델 : img(28x28) → probability(0 to 1)

G모델 : random vector(??) → img(28x28)

A모델 : G모델 + D모델 (rand vec → proba)

정당성 설명

$D$모델을 훈련시킬 때, real img와 fake img를 라벨을 달아 동시에 Binary-CrossEntropy로 학습 시키면

수식 해서 두개 더하면 Loss되는 것을 보임

$$ \nabla \theta_d \frac{1}{m} \sum_{i=1}^m [ \log D(x^{(i)}) + \log (1-D(G(z^{(i)}))) ] $$

$A$모델은 $G$모델을 학습시키기 위한 모델이다. $G$모델의 손실함수를 보면, $D(G(z^{(i)}))$ 합성함수로 되어있다. $A$를 $D(G(z))$ 로 본다면 Binary-CrossEntropy로 $A$를 학습시킨다면 의도한 손실함수로 최적화할 수 있다

단, A를 학습시킬 때, D가 학습되면 안됨

$$ \nabla \theta_g \frac{1}{m} \sum_{i=1}^m [ \log (1-D(G(z^{(i)}))) ] $$

GAN

Google Colaboratory

?!?!??

이건 뭘까…🙄🙄