즐겁게!! 자신있게!! 살아보세!!

재밌는 인생을 위하여! 영촤!

AI/Deep Learning

[DL] Keras MNIST Dataset DCGAN 구현

Godwony 2020. 4. 29. 10:09
728x90
반응형

결국 Discriminator(판별자, 경찰)와 Generator(생성자, 도둑)의 적대적 관계에서 시작됩니다.

 

(생성자, Generator, 도둑)은 Discriminator를 '속이기' 위해서 가짜를 더욱 진짜 같이 생성하고 (판별자, Discrimanator, 경찰)은 Generator가 준 가짜를 가짜라고 파단하기 위해서 애쓴다.

 

실제 GAN -> DCGAN 을 Code 분석을 해봤는데 생각보다 학습이 잘 안되었습니다.

 

Discriminator는 진짜로 갈수록 1에 근접한 숫자를 뱉고, 가짜면 0에 근접한 숫자를 뱉었습니다.

 

DCGAN은 적대적관계의 비지도 학습이고, 0과 1을 표현하기에 binary_crossentropy를 사용합니다.

 

그런데 사실 비지도 학습도 아닌 거라 생각이 드는 게 판별자를 학습시킬 때 세부 Class의 labeling이 없는 것이지 진짜와 가짜 라는 labeling이 되지 않는가..

 

MNIST라면 0~9까지의 label 대신에 진짜와 가짜라는 라벨이 주어진 것이 아닌가 하는 생각도 해볼 수도 있겠습니다.

 

30 epoch 이지만 횟수로 치자면 18000회 학습이 진행된 것입니다.

 

MNIST X_train 60000개의 Data를 batch_size(100)만큼 나눠서 per_epoch을(D <->G 학습) 진행했습니다.

 

 

Loss 분포를 보면 잘 떨어지고 하기는 한데 크게 의미는 없다고 합니다 (교육 강사님)

Prediction은 MNIST Image를 훼손시킨 것 1000개와 Normal Image 1000개로 사용했습니다.

Discriminator prediction을 보면 좀 애매했습니다.

 

불량 MNIST는 잘 맞추고요. 다 가짜라고 0에 근접한 분포를 보입니다.

 

그런데 실제 MNIST는 좀 애매했습니다. 0.5 이것도 아니고 저것도 아닌 쪽으로 분포가 기울어졌습니다.

 

그렇다고 epoch 수를 늘려봐야 overfitting 발생해서 둘 다 0.5 쪽으로 같아지는 현상이 발생합니다. (total 18만 회 300 epoch 경험.)

 

학습이 덜된 것이라고 하네요.... OTL.... 

728x90
반응형