오늘 끝나면

GAN

  • GAN의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 GAN이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

굿펠로우 2014 — 위조범과 감별사의 대결 → StyleGAN 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

AI · Day 17 / 생성 모델

위조범과
감식가

2014년, Goodfellow가 술집에서 떠올림. 한 네트워크가 다른 네트워크를 속이려고 경쟁하게 만들면 어떨까. 그날 밤 코드가 한 번에 돌았음. 생성 AI 산업이 그렇게 열림.

P.01AI · Day 17

술집에서 나온 설계도

GAN은 영화 캐치 미 이프 유 캔임. 위조범과 감식가의 끝없는 추격전임.

네트워크가 둘임. 생성자(Generator)는 위조범임. 진짜 같은 가짜를 만들어 속임. 판별자(Discriminator)는 감식가임. 진짜와 가짜를 가려냄.

처음엔 위조가 어설퍼 금세 잡힘. 근데 둘이 계속 경쟁함. 위조범은 기술을 갈고, 감식가는 눈썰미를 키움. 평형에 닿으면 생성자가 진짜와 구분 불가능한 가짜를 만듦. 게임 이론이 딥러닝에 들어온 순간임.

GENERATOR vs DISCRIMINATOR
z ~ N(0,I)G위조범G(z) 가짜진짜 xD감식가0~1진짜?속았는지 되먹임 → G 개선

G는 D를 속이려, D는 G를 잡으려 — 경쟁이 진짜 같은 가짜를 만든다

P.02AI · Day 17

두 네트워크의 결투 — Minimax

GAN의 심장은 한 줄 수식임. 한쪽은 키우고(max) 한쪽은 줄이는(min) 미니맥스 게임임.

판별자 D는 V를 최대화함. 진짜엔 D(x)≈1, 가짜엔 D(G(z))≈0을 주려 함. 생성자 G는 같은 V를 최소화함. 가짜를 D가 진짜로 믿게 만들고 싶음.

결투의 끝이 놀라움. 최적점이 정확히 p_g = p_data—생성 분포가 데이터 분포와 같아지는 지점—임을 Goodfellow가 수학적으로 증명함. 그 순간 D는 못 가려 D(x)=0.5만 내뱉음. 감식가가 동전 던지기로 전락하는 게 목표임. 아이러니함.

min G max D V(D, G)
V(D,G)학습 진행 →D: max ↑G: min ↓평형: p_g = p_dataD(x) = 0.5

한쪽은 올리고 한쪽은 내린다 — 두 곡선이 만나는 곳이 내쉬 균형

P.03AI · Day 17

구현은 BCE 두 번이면 끝

수식은 무섭지만 코드는 30줄임. GAN 학습은 결국 이진 분류 손실(BCE) 두 번임.

판별자는 진짜를 1, 가짜를 0으로 맞히게 배움. 생성자는 반대로 자기 가짜를 D가 1로 믿게 만들려 함. 근데 트릭 하나가 중요함. 이론대로 log(1 - D(G(z)))를 줄이면 초기에 기울기가 거의 0임. G가 신호를 못 받음.

그래서 실전에선 비포화 손실(non-saturating)로 바꿈. 즉 -log D(G(z))를 키우는 쪽임. 수렴 지점은 비슷한데 초기 학습이 훨씬 잘 됨. 이 한 끗 차이가 GAN을 돌아가게 한 비결임.

파이썬 코드 보기
# GAN 한 스텝 = BCE 두 번
# D 학습 (진짜는 1, 가짜는 0)
d_real = BCE(D(real), 1)
d_fake = BCE(D(G(z).detach()), 0)
d_loss = d_real + d_fake

# G 학습 (non-saturating)
# "D가 내 가짜를 진짜로 믿어주길"
g_loss = BCE(D(G(z)), 1)

# Adam(lr=2e-4, b1=0.5)
MINIMAX 결투 놀이터
미니맥스 결투 · G(가짜 분포)와 D(판별 경계)를 손으로 움직여 평형을 찾아라
진짜 평균가짜 평균D 경계← "가짜" 판정"진짜" 판정 →진짜 data가짜 G(z)
D 정확도
7%
분포 겹침
15%
D 헷갈림
15%
G가 아직 멀리 있음 — 가짜 평균을 진짜(0)로 끌어당겨 D를 속여보자.
목표는 D 정확도를 50%로 — 감식가가 동전 던지기로 전락하는 순간이 위조범의 승리(p_g = p_data)
P.04AI · Day 17

GAN의 세 가지 악몽

GAN은 수학적으론 아름다움. 근데 실제론 악명 높게 까다로움. 악몽이 셋임.

첫째, 모드 붕괴(mode collapse). MNIST 학습했는데 G가 숫자 1만 계속 찍음. D를 확실히 속이는 패턴 하나에 응집해버림. 다양성이 사라짐.

둘째, 학습 불안정. 미니맥스라 손실이 수렴 안 하고 요동침. 셋째, 기울기 소실. D가 너무 똑똑해지면 G가 배울 신호가 사라짐. 선생이 너무 잘나서 학생이 배울 게 없는 상황임.

해결책의 진화가 곧 GAN의 역사임. DCGAN이 CNN으로 안정화함. WGAN-GP가 Wasserstein 거리로 기울기를 되살림. StyleGAN이 진짜 같은 얼굴을 만들어 인터넷을 뒤흔듦.

MODE COLLAPSE
정상: 0~9 다양하게047293모드 붕괴: '1'만 반복111111111111다양성붕괴 →한 점에 응집

D를 확실히 속이는 패턴 하나에 G가 갇힌다 — GAN 1번 악몽

P.05AI · Day 17

여전히 살아있는 기술

2022년 이후 주도권은 Diffusion으로 넘어감. 근데 GAN은 안 죽음. 자기 자리를 찾았을 뿐임.

Diffusion은 학습이 안정적이고 모드 붕괴가 없고 텍스트 조건화가 자연스러움. 반면 GAN은 단 한 번의 forward pass로 이미지를 만듦. 그래서 실시간 생성, 얼굴 극사실(StyleGAN), 해상도 향상(ESRGAN), 모바일 경량 배포에선 여전히 최고임.

비즈니스 응용도 명확함. 의료·제조의 희귀 불량 이미지를 합성해 데이터 불균형을 풂. 얼굴 익명화로 프라이버시를 지킴. 디자인 아이데이션을 10배로 가속함. 권앤컴퍼니 관점에선 2~4주짜리 PoC로 딱 맞는 크기임.

Q. GAN의 전역 최적점에서 판별자 D(x)의 값은 얼마일까요?p_g = p_data이면 D*(x) = p_data / (p_data + p_g) = 1/2임. 즉 판별자가 진짜와 가짜를 전혀 못 가리고 항상 0.5만 내뱉는 상태가 학습의 목표임. 감식가가 완전히 헷갈리는 순간이 곧 위조범의 승리임.
GAN의 진화 연대기
2014GAN미니맥스2016DCGANCNN 안정화2017WGAN-GP안정성 혁명2019StyleGAN극사실 얼굴2022Diffusion주도권 이동GAN 우위 영역:실시간 1-pass얼굴 극사실해상도 향상경량 배포

주도권은 넘겼지만 자기 자리를 찾았다 — 기술은 죽지 않는다

3줄 요약

  1. 1굿펠로우 2014 — 위조범과 감별사의 대결 → StyleGAN
  2. 2GAN은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

GAN

굿펠로우 2014 — 위조범과 감별사의 대결 → StyleGAN

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자