주제: 8-1 GAN (Generative Adversarial Network와 Min-Max 학습)
분류: generative
타입: concept
난이도: 중급
선수지식: 있음 — 확률분포, Cross-Entropy, Gradient Descent
생성 모델을 직접 확률식으로 세우는 대신, GAN은 문제를 게임처럼 바꾼다. generator는 진짜 같은 샘플을 만들려 하고, discriminator는 그 샘플이 진짜인지 가짜인지 맞히려 한다. 이 경쟁이 잘 맞물리면 generator가 점점 더 현실적인 샘플을 만들게 된다.
문제 설정
생성 모델의 목표는 실제 데이터와 비슷한 데이터를 생성하는 것입니다.
목표:
즉 모델이 실제 데이터 분포를 학습해야 합니다.
하지만 직접 분포를 모델링하는 것은 어렵습니다.
GAN은 이 문제를 게임 구조로 해결합니다.
즉 GAN은 확률분포를 직접 쓰는 대신, "판별자를 속일 수 있을 정도로 진짜 같은가"를 목표로 삼는 우회 전략이다. 그래서 학습이 직관적이면서도, 동시에 불안정성과 mode collapse 같은 고유한 어려움도 생긴다.
시각 자료로 먼저 보기
1. GAN 핵심 아이디어
GAN은 두 모델이 경쟁하면서 학습합니다.
| 모델 | 역할 |
|---|---|
| Generator (G) | 가짜 데이터 생성 |
| Discriminator (D) | 진짜/가짜 판별 |
Noise z → Generator → Fake Image
↓
Discriminator
/ \
Real Fake
이 구조는 적대적 학습(adversarial learning)이라고 합니다.
2. Generator
Generator는 노이즈에서 데이터를 생성합니다.
기호 의미
- z : latent noise
- G : generator network
- x_fake : 생성 데이터
왜 필요한가
랜덤 노이즈를 실제 데이터처럼 변환합니다.
주의점
초기에는 생성 데이터 품질이 매우 낮습니다.
3. Discriminator
Discriminator는 입력이 진짜인지 가짜인지 판별합니다.
기호 의미
- D(x) : 진짜일 확률
왜 필요한가
Generator가 더 좋은 데이터를 만들도록 압박합니다.
4. GAN Min-Max Objective
GAN의 핵심 수식:
objective:
기호 의미
- P_data : 실제 데이터 분포
- P_z : noise 분포
- G(z) : 생성 데이터
왜 필요한가
- D는 real을 맞추고 fake를 구분하려고 함
- G는 D를 속이려고 함
주의점
학습이 불안정할 수 있습니다.
5. Min-Max 게임 직관
GAN은 다음 게임을 수행합니다.
| 단계 | 목표 |
|---|---|
| D 업데이트 | real vs fake 구분 |
| G 업데이트 | D 속이기 |
1 Train D
2 Train G
3 반복
6. Generator Loss
Generator는 다음 목표를 가집니다.
왜 필요한가
Discriminator가 fake를 real로 판단하도록 유도합니다.
7. Discriminator Loss
Discriminator 손실:
왜 필요한가
real과 fake를 정확히 구분하도록 학습합니다.
8. GAN 학습 과정
z ~ noise
x_fake = G(z)
D(x_real) → real
D(x_fake) → fake
Update D
Update G
9. GAN 학습 문제
| 문제 | 설명 |
|---|---|
| Mode Collapse | 같은 샘플만 생성 |
| Training Instability | loss 불안정 |
| Gradient Vanishing | generator 학습 어려움 |
10. GAN 직관 비유
- Generator → 위조 지폐 제작자
- Discriminator → 경찰
경찰이 발전하면 위조범도 발전합니다.
결과적으로 더 현실적인 데이터가 생성됩니다.
코드-수식 연결
| 개념 | 코드 | 설명 |
|---|---|---|
| noise 생성 | torch.randn(batch, latent_dim) |
latent vector |
| generator | fake = G(z) |
가짜 데이터 생성 |
| discriminator | D(x) |
real/fake 판별 |
자주 하는 오해 5개
- GAN은 단일 모델이라고 생각한다
- generator만 학습한다고 생각한다
- GAN loss는 항상 안정적이라고 생각한다
- GAN은 확률 모델이라고 생각한다
- GAN은 항상 고품질 이미지를 생성한다고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- GAN에서 generator와 discriminator의 역할은 무엇인가?
- GAN의 min-max objective는 어떤 의미인가?
- discriminator loss는 무엇을 학습하는가?
- generator는 어떤 방식으로 discriminator를 속이려고 하는가?
- GAN 학습에서 발생하는 대표적인 문제는 무엇인가?