오늘 끝나면

GAN

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

실습 미션

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

성공 조건

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

AI · Day 17 / 생성 모델

위조범과
감식가

2014년 Goodfellow가 제안한 GAN은 한 네트워크가 다른 네트워크를 속이려고 경쟁하게 만드는 구조다. 이 아이디어에서 생성 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

모델

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

손실

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