GAN

이상우·2021년 12월 28일
0

GAN이란?

GAN은 '생성적 적대 신경망'의 약자로 풀어서 쓰면, 생성자와 식별자가 서로 경쟁(Adversarial)하며 데이터를 생성(Generative)하는 모델(Network)을 뜻한다.
GAN은 머신러닝 방법중 비지도학습의 대표주자이다.
만약, GAN으로 인물 사진을 생성해 낸다면 인물 사진을 만들어내는 것을 Generator(생성자)라고 하며, 만들어진 인물 사진을 평가하는 것을 Discriminator(구분자)라고 한다. 생성자와 구분자가 서로 대립하며(Adversarial:대립하는) 서로의 성능을 점차 개선해 나가는 쪽으로 학습이 진행되는 것이 주요 개념이다.

좀 더 쉽게 표현하자면 경찰과 위조지폐범 사이의 게임을 비유할 수 있다. 위조지폐범은 최대한 진짜 같은 화폐를 만들어(생성) 경찰을 속이기 위해 노력하고, 경찰은 진짜 화폐와 가짜 화폐를 완벽히 판별(분류)하여 위조지폐범을 검거하는 것을 목표로 합니다. 이러한 경쟁적인 학습이 지속되다 보면 어느 순간 위조지폐범은 진짜와 다를 바 없는 위조지폐를 만들 수 있게 되고 경찰이 위조지폐를 구별할 수 있는 확률도 가장 헷갈리는 50%로 수렴하게 되어 경찰은 위조지폐와 실제 화폐를 구분할 수 없는 상태에 이르게 된다.

GAN의 구조와 원리

  • Generator(생성자) : 생성된 z를 받아 실제 데이터와 비슷한 데이터를 만들어내도록 학습
  • Discriminator(구분자) : 실제 데이터와 생성자가 생성한 가짜 데이터를 구별하도록 학습

Generator(생성자)는 입력 데이터의 분포(distribution)를 알아내도록 학습한다. 이 분포를 재현하여 원 데이터의 분포와 차이가 없도록 하고 Discriminator는 실데이터인지 가짜 데이터인지 구별해서 각각에 대한 확률을 추정하는 것이다.

아래는 GAN의 목적함수이다.

즉, Generator는 맨 위의 수식을 '최소화'시키는 방향으로, Discriminator는 '최대화'하는 방향으로 가게하는 minmax Problem

GAN의 학습


GAN의 구성요소인 두 모델 Generator와 Discriminator의 학습 진행 방법은 위 이미지와 같다.
1. 처음 학습이 진행되기 이전에 Real데이터의 확률분포, Generator의 확률분포, Discriminator의 확률분포의 그림이다. -> (a)
2. Discriminator는 Generator와 기존 확률 분포가 얼마나 다른지 판단한다. -> (b)
3. Generator는 Real 확률분포에 맞춰 Discriminator를 속이기 위한 쪽으로 생성모델을 수정해 나간다. -> (c)
4. 궁극적으로 Generator의 확률분포가 Real데이터의 확률분포와 차이를 줄여나가는 과정을 가지게 된다. (D(x)=0.5파란선) -> (d)

즉, GAN은 결국 주어진 데이터의 확률 분포를 예측하는 모델이다.

참고 사이트

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글