1.GAN (Generative Adversarial Network-생성적 적대 신경망)
GAN은 이미지 생성 모델이다. 생성모델이란 그럴 듯한 가짜를 만들어내는
모델을 말한다.
'그럴듯 하다' 라는 것은 무슨 의미일까?
바로 두 데이터가 비슷한 분포를 가지는 데이터라는 것을 의미한다.
아래의 이미지를 잘 보면 편하다.
2.Adversairal (적대적) - 두개의 모델을 적대적으로 경쟁시켜 두 모델을 성능을 높인다.
근데, 비슷한 거를 만드는데 왜 적대적이라는 거야?
라는 생각이 들 것이다.
아래의 설명을 잘 보도록 하자.
generator는 그럴듯한 가짜를 만들어주는 모델이고,
Discrimator는 경찰과 같이 생성한 가짜 이미지를 판별하는 모델이다.
GAN은 바로 Generator와 Discriminator를 경쟁적으로 학습시킨다.
generator는 '진짜같은 가짜'를 만드는 것이 목적이고
Discriminator는 generator가 만든 놈을 구분하는 것으로
둘을 함께 학습시킨다.
이렇게 경쟁적으로 학습을 시키면
generator를 봤더니, 뭐가 뭔지 알 수가 없네!!
라는 말이 나오도록 하는 것이
GAN의 Adversarial Trainning이다.
아래의 그림을 보면 더 이해가 잘 갈것이다.
(바트 심슨.... 너 그럴줄 알았다 임마)
3.Generator와 Discriminator 네트워크
4.훈련
생성자가 가짜 이미지를 만들면, 그거랑 진짜 이미지랑 섞어서 판별자에 보내서 학습을 시킨다.
생성자는, 생성자가 가짜 이미지를 만들고, 그것만 판별자에 보낸다.
위의 그림을 한 epoch으로 쳐서 계속 학습을 한다.
이런 식으로 상호경쟁(!)을 통해 성능을 올리는것이다.
이를 통해 좋은 성능을 내는 Generator 모델을 학습시킨다.
5.GAN 응용
실제 사진과 동일한 수준의 이미지를 생성한다.
(하지만, 육손이 많이 나온다는 단점도 있다. 아무래도 말 그대로 100프로는 아닌 모양이다.)
image to image 변환(Style Transfer)
한 도매인 내의 이미지를 다른 도매인의 이미지로 변환한다.
추천 item 생성
패션 카테고리의 추천 시스템에 gan을 이용해서 수많은 의상을 분석해 주어진 스타일에 어울이는 새로운
아이템을 생성한다.
데이터셋 증가
의료 연구에서 진단 정확도 개선을 위해 gan을 이용해 생성한 데이터로 데이터셋을 증가시킨다.
(특히 의료용 데이터에서 이런 것이 많이 쓰인다.)