상세 컨텐츠

본문 제목

[6주차 / 천원준 / 논문리뷰] Generative Adversarial Nets

방학 세션/CV

by 원준천 2023. 2. 21. 23:25

본문

Introduction

 

이 논문은 Adversarial nets 프레임 워크를 새로 소개합니다. 이 모델의 핵심은 진짜 같은 가짜를 만들어 내는 것입니다. 

Adversarial nets는 서로 적대적인 generative model과 discriminative model을 사용합니다. 

 

Generative model의 목적은 진짜 데이터와 비슷한 가짜를 만들어 내는 것입니다. 반대로 discriminative model은 실제 데이터와 generative model이 만들어낸 데이터를 구별합니다. 두 모델은 서로 경쟁을 통해 성능을 발전시켜 나갑니다. 

 

결과적으론 discriminative model의 "정답 확률"이 50%에 수렴하는 generative model을 만드는 것이 목적입니다. 

 

Adversarial Nets

기본 수식

D: Discriminative model

G: Generative model

인풋 x에 대한 generator의 분포 pg를 학습하기 전에 input noise 변수 pz(Z)를 정의합니다.

그다음 pz(x)를 data space에 매핑하는 G(z;θg)를 정의합니다.

 

수식에서도 나온 거처럼 우리의 목표는 다음과 같습니다.

  • 실제 데이터셋과 G에서 생성된 데이터에 정답 label을 할당할 확률을 최댓값으로 만들기
  • log(1-D(G(z)))를 최솟값으로 만들기 = D가 정답 label을 올바르게 할당할 수 없을 정도로 실제 데이터와 유사한 G 만들기

 

 

파란색 점선: discriminative distribution

검은색 점선: data generating distribution

녹색 선: generative distribution

 

(a)가 학습 초기이며 (d)가 학습의 마지막 결과입니다. 처음엔 실제 데이터와 생성 데이터의 분포가 확연히 차이가 나는 것을 알 수 있습니다. 하지만 갈수록 실제 데이터와 생성 데이터 사이의 간격이 줄어들고 결국은 discriminator가 둘을 구분할 수 없습니다. 이것이 GAN 모델이 지향하는 방향입니다. 

 

 

G와 D를 학습하는 알고리즘은 다음과 같습니다. D는 계산적으로 최적화가 불가능 하고 학습 데이터는 유한하기 때문에 오버피팅이 발생할 수 있습니다. 따라서 D를 k번 학습하고 G를 한번 학습합니다. 이런 방식으로 학습을 진행하면 최적의 결과에 가까운 D와 G를 얻을 수 있습니다. 

 

Experiments

G, D를 MNIST, TFD(Toronto Face Database), CIFAR-10를 사용하여 학습시켰습니다.

G는 활성화 함수로 ReLU, 시그모이드 함수를 혼합하였습니다. D는 maxout을 활성화 함수로 사용했습니다. G는 noise를 인풋으로 받아 데이터를 생성했습니다.

 

G로 생성된 데이터들에 Gaussian Parzen window을 맞추는 방식으로 확률을 측정합니다. 측정된 확률에서 log-likelihood를 반환합니다.

Parzen window-based log-likelihood estimates

 

아래 사진은 GAN 모델이 생성한 이미지의 샘플입니다.

 

Conclusion

장점:

  • Markov chain이 필요없다
  • 그래디언트를 얻기 위해 역전파가 사용된다
  • 다양한 함수들이 통합될 수 있다

단점:

  • pg(x)가 명시적으로 존재하지 않다
  • D는 학습 동안 G와 잘 동기화되어야 한다
 
 

관련글 더보기

댓글 영역