Motivation
Deep Learning에 많은 분야가 있지만 그 중 GAN은 이름에서도 알 수 있듯이 생성 모델, 즉 Generative model에 속합니다. GAN을 이용하면 굉장히 사실적인 가짜 이미지를 만들 수도 있고 어떤 속성의 이미지를 다른 속성의 이미지로 위화감 없이 변화시키는 등 다양한 일을 할 수 있습니다. 아래 사진이 그 예시입니다(놀랍...)
* 이 사진은 ProgressiveGAN 이라는 GAN 모델이 만들어낸 '가짜' 사람 얼굴입니다.
지금부터 전설이 된 논문 Generative Adversarial Nets에 대한 정리 및 리뷰를 시작하겠습니다.
For beginners
우선 복잡한 수학은 다루지 않고 이야기를 시작하도록 하겠습니다.
* GAN의 기본적인 구조입니다.
그림에서 보면 파란색으로 칠해진 도형인 Generator와 Discriminator가 보입니다. 이 둘은 Deep neural network 입니다.
Generator는 input을 이용해 가짜 이미지인 Fake를 만드는 network입니다. Discriminator는 input으로 들어온 이미지가 Training data에 해당하는 진짜 이미지 Real인지 Generator가 만든 가짜 이미지 Fake인지 판단하여 진짜 이미지라면 1, 가짜 이미지라면 0을 반환하는 network입니다. 위 그림에서 Real과 Fake가 Discriminator의 input으로 사용됨을 볼 수 있습니다.
GAN training을 통해 하고자 하는 것은 다음과 같습니다
- Discriminator는 학습을 통해 Real을 input으로 받으면 1, Fake를 input으로 받으면 0을 반환하는 능력을 키웁니다. 즉, Real과 Fake를 올바로 판단하는 능력을 학습합니다.
- Generator는 Discriminator를 속일 수 있을 정도로 정교한 Fake를 만드는 능력을 키웁니다. 즉, Discriminator가 Fake를 봤을 때 1이라고 잘못 반환하도록 Fake를 최대한 진짜처럼 만들고자 노력합니다. ( * 여기서 Generator의 input은 일단은 작은 dimension의 random vector 라고 생각하시면 됩니다.)
- Discriminator와 Generator는 번갈아가면서 학습을 하여 같이 성장합니다. Discriminator는 Generator의 성장에 의해 점점 정교하게 만들어지는 Fake를 구분해내야 합니다. 이 과정을 통해 Discriminator가 더욱 성장하게 됩니다. Generator는 이렇게 강화된 Discriminator를 다시 속이기 위해 더욱 정교한 Fake를 만들어야 합니다. 이렇게 둘은 서로를 이기기 위해(Adversarial) 같이 성장하게 됩니다.
저자는 이러한 과정에 대해 굉장히 좋은 예시를 들어줍니다. Discriminator는 경찰이고 Generator는 지폐 위조범이라고 하는데요. Discriminator는 정상 지폐와 위조 지폐를 잘 구분해야하고 Generator는 Discriminator를 속일 수 있는 위조 지폐를 만들어야 하는 상황을 생각하면 위의 Training 과정과 정확히 일치함을 알 수 있습니다.
이것으로 Generative Adversarial Network(GAN) - part.1의 정리를 마치겠습니다. Generative Adversarial Network(GAN) - part.2에서는 논문을 이해하기 위해 필수적으로 이해하고 넘어가야할 distribution 개념에 대해 알아보겠습니다. 더 나아가 distribution이 GAN에서 어떤 식으로 적용 되는지 알아보도록 하겠습니다. 감사합니다.
0 coment�rios:
댓글 쓰기