Generative Adversarial Network
GAN?
서로 적대(Adversarial)하는 관계의 2가지 모델(생성 모델과 판별 모델)을 동시에 사용하는 기술.
생성모델(Generator,위조지폐범) 판별모델(Discriminator, 경찰) 이와 같이 계속 진행되면, 서로 발전의 관계가 되어 원본과 구별이 어려운 가짜 이미지가 만들어지게 된다.
AnimalGAN이라는 머신이 어떻게 잡음으로부터 동물 이미지를 만드는지 봄으로써 GAN의 작동방식을 이해를 해보자면,
이 머신에게 주어진 문제는 다음과 같다.
- Input Data : 랜덤으로 생성된 잡음
- Output Data : 0~1 사이의 값( 0은 가짜, 1은 진짜)
이때 대립하는 두 모델은 다음과 같다.
- Generator(위조지폐범): 이미지가 진짜(1)로 판별될 수 있도록 보다 정교하게 모델을 만들려고 노력하며, Target은 1로 나오도록 해야한다.
가짜를 진짜인것처럼 만들기 위하여 타깃인 1과 예측의 차이인 손실을 줄이기 위하여 Backpropagation을 이용한 weight를 조정한다.- Discriminator(경찰): 진짜 이미지는 1로, 가짜 이미지는 0으로 판별할 수 있어야한다.
생성된 모델에서 Fake와 Real 이미지 둘다를 학습하여 예측과 타깃의 차이인 손실을 줄여야한다.
- 이렇게 두 모델이 대립하면서(Adversarial) 발전해 에폭(Epoch)이 지날 때마다 랜덤 이미지가 점점 동물을 정교하게 생성해 내는 것(Generative)을 볼 수 있다.
GAN의 예시
- CycleGAN
- StarGAN
- CartoonGAN
- DeepFake
- BeautyGAN
- Toonify Yourself