프로젝트 링크
2020.08.09 17시 상황 = train 마쳤는데 모드 붕괴(?) 일어남
khodid/2020Evening
이번주 학습 내용
- GAN(Generative adversarial network)은 새로운 이미지를 만들어내는 생성자와, 진짜 이미지와 생성자가 만든 가짜 이미지를 판별하는 판별자가 서로 균형있게 학습해나가는 방식의 딥러닝이다.
- VAE는 다소 흐릿하고 부드러운 결과물을 출력하는 데 비해 GAN은 경계가 뚜렷하고 선명한 결과물을 만드는 편이다.
- GAN에서 발생하는 문제로는 손실이 수렴하지 않는 문제, 생성자가 판별자를 확실히 속이는 특정 샘플만 출력하려는 경향을 보이는 '모드붕괴'문제, 생성자의 손실 값과 실제 이미지 유사도의 연관성이 떨어지는 문제, 모델 설계자가 정해야 할 하이퍼파라미터가 너무 많고 하나하나 모델에 영향을 크게 미쳐서 설계자의 경험이 모델의 성능을 크게 좌우하는 문제가 있으며, 이 중 몇가지 문제를 해결하는 WGAN(Wasserstein GAN)이 주목을 받았다.
프로젝트 계획
저번 프로젝트를 만들 땐 훈련 시간이 너무 오래 걸려 (한 에폭을 거치고 나서는 나머지 훈련이 굉장히 빠르게 됐는데 이유를 모르겠다. colab에서 좀더 좋은 GPU를 할당해줬나?..)
이번에는 훈련과 피드백이 좀더 빠르게 수행될 수 있도록 이미지 사이즈를 훨씬 작게(예제처럼 아예 28x28로 한다든지), 훈련 세트도 좀더 작게 가져갈 생각이다.
Dataset
- GAN - 얼굴 표정 데이터셋. 48X48 크기의 흑백 사진 또는 그림으로, 각 표정의 감정에 따라 7가지로 라벨링 되어 있음. (angry, disgust, fear, happy, neutral, sad, surprise). 트레이닝 셋에는 28,709 개의 이미지, 테스트 셋에는 3,589 개의 표본이 있음.
- WGAN - 이전 프로젝트에서 사용한 scenery classification 세트를 다시 사용해서 활용해볼 생각
최종 목표
- 교재에서 사용하는 구조를 PyTorch로 카피한 GAN 만들어보기. training set은 Grayscale image를 28x28 size로 축소시켜서 사용하고, 파라미터도 동일하게 적용할 생각.
- 앞서 만든 모델에서 하이퍼 파라미터를 조정해 보며 학습에 어떤 영향을 끼치는지 관찰할 것. (+ 외부 자료 검색을 통해 각 하이퍼파라미터의 일반적인 효과도 공부해볼 것)
- WGAN, 여유가 있다면 WGAN_GP까지 PyTorch로 직접 구현하기.
여유 있다면 저번 프로젝트도 수정하면 좋을 듯. 아마 출력값의 scale이 안 맞았던 게 이상한 결과의 원인이 아닐까 예상하고 있다.
단계별 목표