본문 바로가기

인공지능/컴퓨터비전

Generative Adversarial Nets(GAN)


< 목차 >

  1. 용어정의
  2. 요약
  3. 학습방법
  4. 결과
  5. 출처

1. 용어정의

  • 피드백 후 작성예정입니다.

2. 요약

Generative Adversarial Nets(GAN)은 실제데이터를 통해 모조데이터를 생성하는 Generative model (Generator) 과 이 두 가지 데이터를 구별하는 Discriminative model(Discriminator)로 구성된다.

 

 

그리고 충분히 학습된 Generator 가 생성한 데이터를 Discriminator가 실제데이터와 구분할 수 없도록 만드는 것이 연구목표이다.


3. 학습방법

우선 Generator(G)에서 생성된 Noise z (Latent sample)을 이용해서 모조데이터 생성하고, Discriminative  model(Discriminator, D)이 모조데이터를 실제와 구분할 수 없을 확률을 최대화하는 원리로, D와 G의 대립적 (Adversarial) 관계를 아래 수식을 통해 설명할 수 있다.

 

 

mini-max game을 따라, 식별하는 입장에서는 D의 모조 식별력을 최대화하기 위해서 실제데이터에 대해 D(x) 가 1이 되고 생성된 모조데이터 D(G(z))에 대해서는 0 이 되어야하며, 반대로 모조데이터를 실제데이터와 유사하게 생성하려는 입장에서는 D(G(z))가 1이 되어야한다.

 

즉, 이론적으로는 충분한 학습 뒤에 D(x)와 D(G(z))의 확률분포가 0.5으로 수렴하게 될 것을 의미하고, 이는 G가 실제데이터와 유사한 데이터를 생성해낼 수 있다는 것을 나타낸다.


4. 결과

28 x 28 이미지크기의 숫자 손글자 MNIST 데이터셋을 통해서 GAN 을 100 에포크까지 학습시켜 보았고, 블러링과 노이즈가 간간이 존재하긴 하지만 실제 MNIST 데이터셋와 유사한 숫자 손글씨 이미지데이터를 생성해내는 것을 볼 수 있다. 아마 학습 파라미터와 에포크 수를 조절하면 성능은 더 좋아질 것으로 예상된다.

 

 

(구현코드는 다른 사이트에도 GAN 튜토리얼로 워낙 많이 나와있기 때문에 참고하면 될 것 같으나, 말씀주시면 올려놓도록 하겠습니다.)  


5. 출처

 

728x90
반응형