Goodfellow et al. · Université de Montréal · NeurIPS 2014 · arXiv:1406.2661

GAN Generative Adversarial Networks

한 줄 요약: Generator(위조지폐범) vs Discriminator(경찰)를 경쟁시키면, Generator가 실제와 구분 불가능한 데이터를 스스로 학습한다.

핵심 아이디어 — 경쟁을 통한 학습

GAN 이전의 생성 모델들(VAE, RBM 등)은 데이터의 확률 분포를 직접 모델링하려 했다. 이는 고차원에서 다루기 어려웠다. Goodfellow는 대신 두 네트워크를 게임 이론적 대립으로 경쟁시키는 혁신적인 아이디어를 제안했다.

Generator G

랜덤 노이즈 벡터 $z$를 받아 가짜 데이터를 생성한다. 목표는 Discriminator를 속이는 것 — $D(G(z))$를 최대한 1(진짜)에 가깝게 만들어야 한다.

처음엔 완전히 랜덤한 노이즈만 출력하지만, D의 피드백(그래디언트)을 받아 점점 실제 같은 이미지를 만들어 간다.

Discriminator D

진짜 데이터 $x$와 가짜 데이터 $G(z)$를 받아 각각에 대해 "진짜일 확률"을 0~1로 출력한다. 목표는 진짜는 1, 가짜는 0으로 정확히 분류하는 것.

G가 더 그럴듯한 가짜를 만들수록 D도 더 정교해져야 한다 — 두 네트워크가 서로를 강하게 만든다.

훈련 루프 — 두 네트워크의 싸움

Noise z ~ N(0,I) Generator G(z) 가짜 샘플 G(z) 진짜 데이터 x ~ p_data Discriminator D(x) Real? 0~1 ← G 그래디언트
Step 1 / 3
D를 먼저 업데이트: 진짜는 1, 가짜는 0으로 분류하도록 학습한다.

목적 함수 (Minimax Game)

GAN 훈련은 하나의 가치 함수 $V(D,G)$를 D는 최대화하고 G는 최소화하는 이중 최적화 문제다.

$$\min_G \max_D\; V(D,G) = \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1-D(G(z)))]$$
각 항 분해:
이론적 최적해: $p_g = p_{data}$일 때, $D^*(x) = \dfrac{p_{data}(x)}{p_{data}(x)+p_g(x)} = \dfrac{1}{2}$. G가 실제 분포와 완벽히 일치하는 데이터를 만들면 D는 더 이상 구분할 수 없다.

실제 훈련 디테일

논문에서 제안한 실제 훈련 절차: G 1회 업데이트당 D를 k회 업데이트한다(논문 기본값 k=1). 또한 G를 훈련할 때 $\log(1-D(G(z)))$를 최소화하는 대신 $\log D(G(z))$를 최대화하도록 한다. 두 목표는 이론적으로 동치지만, 학습 초기에 D가 G를 쉽게 구분할 때 전자는 그래디언트가 포화(saturate)되어 학습이 느려지기 때문이다.

학습 중 분포 변화

아래 시각화에서 녹색은 실제 데이터 분포 $p_{data}$, 보라색은 G가 만들어내는 분포 $p_g$다. 학습이 진행될수록 $p_g$가 $p_{data}$에 수렴한다. 노란 선은 D의 결정 경계(D(x)=0.5)로, 수렴 후에는 두 분포가 같아져서 D가 어디서도 구분을 못 하게 된다.

왜 학습이 어려운가

GAN의 훈련은 이론적으로 우아하지만 실제로는 매우 불안정하다. 두 네트워크의 학습이 균형을 이루어야 하는데, 한쪽이 너무 강해지면 다른 쪽이 학습을 멈춘다.

Mode Collapse (모드 붕괴): G가 D를 속이는 특정 샘플(예: 특정 얼굴 표정 하나)만 반복 생성. 다양성이 전혀 없어진다. G 입장에서는 하나의 "좋은 위조품"을 계속 내는 게 합리적 전략이라 발생.

학습 불균형: D가 너무 강해지면 D(G(z))≈0이 되어 $\log(1-D(G(z)))$의 그래디언트가 0에 수렴 → G가 학습할 신호를 받지 못한다. 반대로 G가 너무 강하면 D가 진짜/가짜를 구분 못 해서 의미 없는 피드백만 준다.

평가 어려움: 손실값이 수렴해도 생성 품질을 보장 못 한다. GAN 연구자들은 주로 FID(Fréchet Inception Distance) 같은 별도 지표로 샘플 품질을 측정한다.

GAN 이후 주요 개선

  • DCGAN — Conv 구조로 안정화
  • WGAN — Wasserstein 거리 사용
  • StyleGAN — 스타일 기반 생성
  • BigGAN — 대규모 클래스 조건부

Nash 균형점

이론적 최적: $p_g = p_{data}$

이 때 $D^*(x) = \dfrac{1}{2}$ everywhere

→ D는 진짜/가짜를 50%로 구분 (찍기 수준)