Preview
이번 포스트또한 지난시간에 이어서 GAN의 종류에 대해 알아보는 시간을 가진다.
Semi-Supervised GAN(SGAN)
비교적 간단한 모델이다.
Discriminator 에게 가짜 진짜 구분의 역할 뿐만아니라, Class를 구분하여 추가로 Fake라는 Class또한 구분하게 만든것을 SGAN이라 한다.
예를들어 G가 Fake 숫자 MNIST 이미지를 생성해낸다면, Discriminator는 그 사진이 Fake 인지 아닌지를 구분함과 동시에 Real 이미지일시 Class를 구분하여 분류한다.
Mnist 데이서셋으로 가정한다면, Real Image 0 이 들어왔을 때, Discriminator는 0을 나타내는 one-hot vector를 반환한다.
이때, 위의 사진에서 보듯이, G에게는 Noise, One-hot-vector가 들어가게 되는데, Generator는 One-hot vector에 들어온 숫자를 통하여 Class를 생성해낸다.
Auxiliary Classfier GAN (ACGAN)
위의 SGAN과 유사하다.
하지만 가장 중요한 차이점이 하나 존재한다. D가 두개의 Classifier로 구성되어 있다는 점
즉 D는 하나의 분류기에서는 가짜, 진짜를 판별하고, 또 다른 하나의 분류기에서는 데이터의 범주 (Class)를 판별한다.
이 덕분에 ACGAN으로 생성된 데이터는 다른 분류기에 넣더라도 범주 분류에 있어서 뛰어나다고 한다. 즉 이치에 맞는 데이터를 잘 생성해낸다고 한다.
따라서 ACCGAN의 Discriminator 은 multi-task learning 이라고도 불린다.
다음은 ACGAN의 아키텍처이다.
Reference
- https://ratsgo.github.io/generative%20model/2017/12/21/gans/ - ratsgo’s blog
- https://m.blog.naver.com/euleekwon/221559102854 - EuleeKwon’s Blog