오늘 끝나면
GAN
- ✓GAN의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 GAN이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
굿펠로우 2014 — 위조범과 감별사의 대결 → StyleGAN 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
AI · Day 17 / 생성 모델
위조범과
감식가
2014년 Goodfellow가 제안한 GAN은 한 네트워크가 다른 네트워크를 속이려고 경쟁하게 만드는 구조다. 이 아이디어에서 생성 AI 산업이 열렸다.
술집에서 나온 설계도
GAN은 영화 캐치 미 이프 유 캔과 같다. 위조범과 감식가의 끝없는 추격전이다.
네트워크가 둘이다. 생성자(Generator)는 위조범이다. 진짜 같은 가짜를 만들어 속인다. 판별자(Discriminator)는 감식가다. 진짜와 가짜를 가려낸다.
처음엔 위조가 어설퍼서 금세 잡힌다. 하지만 둘이 계속 경쟁한다. 위조범은 기술을 갈고, 감식가는 눈썰미를 키운다. 평형에 닿으면 생성자가 진짜와 구분 불가능한 가짜를 만든다. 게임 이론이 딥러닝에 들어온 순간이다.
G는 D를 속이려 하고 D는 G를 잡으려 한다. 그 경쟁이 진짜 같은 가짜를 만든다
두 네트워크의 결투, 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만 내뱉는다. 감식가가 동전 던지기로 전락하는 게 학습의 목표다.
한쪽은 올리고 한쪽은 내린다. 두 곡선이 만나는 곳이 내쉬 균형이다
구현은 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)
GAN의 세 가지 악몽
GAN은 수학적으론 깔끔하지만 실제 학습은 까다롭다. 대표적 실패가 셋이다.
첫째, 모드 붕괴(mode collapse)다. MNIST를 학습했는데 G가 숫자 1만 계속 찍는다. D를 확실히 속이는 패턴 하나에 응집해버린 것이다. 다양성이 사라진다.
둘째, 학습 불안정이다. 미니맥스라 손실이 수렴하지 않고 요동친다. 셋째, 기울기 소실이다. D가 너무 똑똑해지면 G가 배울 신호가 사라진다. 선생이 너무 잘나서 학생이 배울 게 없는 상황이다.
해결책의 진화가 곧 GAN의 역사다. DCGAN이 CNN으로 안정화했다. WGAN-GP가 Wasserstein 거리로 기울기를 되살렸다. StyleGAN이 진짜 같은 얼굴을 만들어 인터넷을 뒤흔들었다.
D를 확실히 속이는 패턴 하나에 G가 갇힌다. GAN의 1번 악몽이다
여전히 살아있는 기술
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만 내뱉는 상태가 학습의 목표다. 감식가가 완전히 헷갈리는 순간이 곧 위조범의 승리다.주도권은 넘겼지만 자기 자리를 찾았다, 기술은 죽지 않는다