[딥러닝] GAN
GAN은 무엇일까? 일반적으로 딥러닝 이론들을 배울 때 우리는 Classification 또는 Regression을 수행하는 모델에 대해 주로 배우게 된다. GAN은 생성 모델이다. 훌륭한 판별자(Discriminator)가 있을 때 그 판별자를 속일 수 있는 Sample을 Generate 하는 모델을 학습하는 것이다. Discriminator를 속이기 위해 더 좋은 Generator를 생성과 좋아지는 Generator에게 속지 않으려는 더 똑똑한 Discriminator를 생성하는, 두 개의 Network 간의 경쟁적 학습이 일어난다. 최종적으로는 Discriminator가 도저히 판별할 수 없는 퀄리티의 Fake를 생성하는 고성능 Generator를 만들어내는 것을 목표로 한다. 일반적으로는 Image 생성에 활용된다. Generator가 만들어 낸 이미지가 진짜 같을수록, Discriminator를 속이기 쉬워지는 것이다.
여기서 주목해야할 것은 우리가 Generator를 생성할 때, 아직까지 우리는, 진짜 같은 이미지를 생성하도록 가이드하는 방식을 사용하지 못한다는 점이다. Discriminator를 이용해서 우회적으로 진짜 이미지와 구분할 수 없도록 학습하는 방식을 채택하는데, 이렇게 학습하는 방식에 몇 가지 문제점이 있다. 첫째로, GAN 역시 기존 딥러닝처럼 Loss Function의 Gradient를 이용해서 학습하는데, 이 것이 과연 GAN에 맞는 학습방식인가 하는 점이다. 두 번째로는, Generator 입장에서는 어떻게든 Discriminator를 속이기만 하면 Generator 입장에서는 학습 성공이라는 점이다. 즉 지금의 학습 방식으로는, Generator는 가이드를 충실히 따르더라도, 사람이 기대하는 결과가 나오지 않을 수 있다는 것이다.
이러한 문제점을 여전히 안고 있는 GAN이지만, 현재의 GAN은 다양한 개선을 통해 고품질의 Fake Image를 생성하고 있다. GAN이 어떤 구조로 어떻게 동작하는지, 위에서 언급한 단점들은 구체적으로 어떻게 문제를 일으키는지, 장점은 무엇인지, 어떤 종류의 GAN이 존재하는지 살펴볼 것이다. 수식은 성균관대학교 이지형 교수님의 딥러닝 강의 교안에서 발췌하였다.
1. GAN의 기본 구조
학습해야 하는 Network가 두 가지이다. Fake Image를 생성해줄 Generator와 Generator에서 생성한 Image가 진짜인지 판별해 줄 Discriminator 이렇게 두 가지이다. 학습이 완료되고나면, Generator만 떼어서 사용한다. 학습이 종료된 시점에는 Discriminator는 이미지가 Real인지 Fake인지 판별할 수 없게 된다(Desireably)
그림 추가
2. Loss Function
위와 같은 Loss Function을 사용한다.
2.1) Generator 입장에서의 Loss
3. GAN 학습 시 문제점 및 Improving Technique
1) 문제점
- Convergence Issue (gradient, Nash Equillibrium)
- Mode Collapse(KL Divergence, Jensen-Shannon Divergence)
2) Improving Technique
- Feature Matching
- Historical Averaging
- Minibatch Discriminition
4. GAN의 장점
- AutoEncoder와의 비교
5. Various Types of GAN
[Disentanglement를 통한 Mode Control 기법]
1) InfoGan
2) Conditional GAN
[Image Style 변경]
3) Image-to-Image Translation
4) CycleGAN
[Text 기반 Image Generation]
5) Text-to-Image Synthesis
[High Resolution Image Generation]
6) Progressive GAN