GAN 에 대해 알아보자!
GAN
= Generative Adversarial Network
= 생성적 적대 신경망
GAN 내부의 두 신경망 Discriminator와 Generator가 서로 경쟁하면서 학습하기 때문에 "Adversarial"이라는 말이 붙은 것이다.
두 개 이상의 신경망이 서로를 향하고 서로 대항듯이 훈련하게 함으로써
Generative Model을 학습해낸다.
Discriminator = 판별하는 신경망
Generator = 생성하는 신경망
우리가 잘 알고있는 분류(Classification)기법은 전형적인 Discriminator 중 하나이다.
GAN의 원리
GAN은 Real Data와 비슷한 확률 분포를 가지는 Fake Data를 생성한다. Fake Data는 GAN에서 만들어진 데이터이기 때문에 생성 Data라고도 한다. GAN은 허구의 사진을 생성한다고 하면 DNN, CNN같은 판별형 신경망은 데이터의 레이블을 학습하여 판별한다.
GAN은 정답이 없다. 즉 레이블이 없다. 입력 데이터는 임의의 잡음이고 출력데이터는 입력 데이터보다 높은 차원으로 구성된다. 입력한 무작위 잡음은 출력 데이터와 상관이 없기 때문에 GAN은 비지도형 생성형 신경망이라 할 수 있다.
학습 결과가 그 어떠한 데이터와도 완전히 같지 않기때문에 정답이 없다고 말할 수도 있다.
GAN의 구조
앞서 말했든 Discriminator와 Generator가 서로 경쟁하며 학습을 수행한다. 학습의 목적은 학습한 실제 데이터와 같은 확률 분포를 가지는 새로운 허구데이터를 만들도록 생성망을 학습시키는 것이다. Discriminator는 Real인지 Fake인지 더 잘 구별해야하고 Generator는 Discriminator를 더 잘 속일 수 있도록 이미지를 생성해내야한다.
GAN의 동작 원리
Generator는 무작위 잡음을 입력받아 고차원 허구 이미지를 생성한다.
실제 이미지를 학습하여 실제 이미지와 확률분포가 최대한 비슷하도록 허구 이미지를 만든다.
이 학습 과정에서 판별망의 판단 결과를 활용하게 된다.
생성망이 만든 허구 이미지를 판별망이 실제 이미지로 착각하도록 만드는 방향으로 생성망 학습이 이루어진다.
https://www.datacamp.com/community/tutorials/deep-learning-python
Keras Tutorial: Deep Learning in Python
This Keras tutorial introduces you to deep learning in Python: learn to preprocess your data, model, evaluate and optimize neural networks.
www.datacamp.com