Ch.21
GAN 기초: 만들고 구분하기 대결
GAN: 만들고 구분하기 대결
위조범과 감정사가 서로 실력을 끌어올리는 모습과 비슷합니다.
진짜 사진과 잡음으로 만든 가짜가 판별자에 들어가 진짜 / 가짜로 갈립니다. 먼저 만드는 쪽(G)과 가리는 쪽(D)만 구분해 보세요.
학습 흐름 한눈에
- ① 진짜 사진 준비: 학습 데이터에서 진짜 샘플 를 하나 가져옵니다.
- ② 잡음 넣기: 어떤 그림을 만들지 정해 주는 노이즈 를 무작위로 뽑습니다.
- ③ 생성기 작업: 노이즈 를 가짜 샘플 로 바꿉니다.
- ④ 판별기 판단: 와 를 보고 진짜 / 가짜를 가릅니다.
- ⑤ 번갈아 학습: G와 D가 차례대로 조금씩 업데이트됩니다.
GAN(Generative Adversarial Network)은 무언가를 창조해 내는 생성기(Generator, )와 그것이 진짜인지 가짜인지 감식해 내는 판별기(Discriminator, )가 서로 끝없이 경쟁하며 발전하는 혁신적인 인공지능 구조입니다. 비유하자면 '천재 위조지폐범'과 '베테랑 감식반 형사'의 숨 막히는 두뇌 싸움과 같습니다. 위조범은 형사를 완벽하게 속이기 위해 점점 더 정교한 가짜 지폐를 만들고, 형사는 이를 잡아내기 위해 감식 기술을 한계까지 끌어올립니다. 이 팽팽한 미니맥스(Minimax) 줄다리기의 끝에서 위조범은 결국 사람의 눈으로는 진짜와 구별할 수 없는 완벽한 창조물을 만들어냅니다. 이 장에서는 GAN을 관통하는 수학적 원리와 미니맥스 게임, 생성기가 매너리즘에 빠지는 모드 붕괴(Mode Collapse) 현상을 풍성한 예시와 함께 깊이 있게 탐구합니다.
수식, 이렇게 읽으면 됩니다 (GAN)
한 줄 요약: 는 가짜를 만들고, 는 진짜인지 가짜인지 맞히려 합니다.
(생성기): 잡음 를 넣으면 새 데이터(가짜)를 만들어냅니다.
(판별기): 들어온 샘플이 진짜일 확률을 0~1로 냅니다.
: 는 자신에게 불리한 쪽, 는 유리한 쪽으로 점수를 잡으려 서로 반대 방향으로 경쟁합니다. (그래서 번갈아 학습합니다.)
: 두 네트워크가 겨루는 목표 함수 이름입니다. 아래 왼쪽·오른쪽 두 항을 더한 값입니다.
(왼쪽 항): 실제 데이터 를 여러 번 무작위로 뽑아, 그때그때의 를 평균 낸 값입니다. 진짜 데이터로 판별기를 키웁니다.
: 가 1에 가까울수록 커집니다. 판별기는 진짜 에 “진짜다” (높은 점수)를 주려 합니다.
(오른쪽 항): 노이즈 를 여러 번 뽑아 로 가짜를 만든 뒤, 의 평균입니다. 가짜 데이터 쪽입니다.
: 그때 뽑은 로 생성기가 만든 가짜 한 샘플입니다.
: 가짜에 가 가짜라 판단할수록 (가 0에 가까울수록) 값이 커집니다. 생성기는 판별기를 속이는 쪽이 유리합니다.
정리: 어떤 입력이든 0(가짜)~1(진짜) 사이의 진짜일 확률입니다.
GAN: 생성기와 판별기의 경쟁
1. GAN의 핵심 구조: 창(생성기)과 방패(판별기)의 치열한 대결
GAN(Generative Adversarial Network)은 두 개의 인공지능이 서로를 이기기 위해 끝없이 싸우며 성장하는 독특한 구조입니다. 생성기(Generator, )는 어떻게든 가짜 데이터를 진짜처럼 만들어내려 하고, 판별기(Discriminator, )는 그것이 가짜인지 진짜인지 날카롭게 감별해 냅니다.
* 비유하자면: 미술품 위조꾼(생성기)이 가짜 그림을 그려오면, 감정사(판별기)가 돋보기를 들고 진품인지 위작인지 판별하는 상황과 같습니다. 위조꾼은 감정사를 속이기 위해 붓터치 하나까지 정교하게 발전하고, 감정사 역시 미세한 물감의 차이까지 잡아내도록 진화합니다.
2. GAN을 지배하는 단 하나의 절대 수식: 미니맥스(Minimax) 게임
이 둘의 팽팽한 싸움을 수학적으로 표현한 GAN의 핵심 수식은 다음과 같습니다.
* 판별기()의 목표 (수식을 로 키우기): 진짜 데이터()를 보면 를 (진짜)로, 가짜 데이터()를 보면 를 (가짜)으로 판별해야 점수가 올라갑니다.
* 생성기()의 목표 (수식을 으로 줄이기): 자기가 만든 가짜 데이터()를 판별기가 (진짜)로 착각하게 만들어야(), 수식의 뒤쪽 항목이 작아지며 게임에서 승리합니다.
3. 잠재 노이즈 : 무한한 상상력의 씨앗
생성기에게 무언가를 만들라고 지시할 때 던져주는 무작위 숫자들의 모음을 잠재 노이즈(Latent Noise, )라고 부릅니다.
* 비유하자면: 찰흙 공예가에게 건네는 '아무렇게나 뭉쳐진 찰흙 덩어리'입니다. 이 찰흙 덩어리()의 모양이 미세하게 바뀔 때마다 완성된 조각상(얼굴, 풍경 이미지)의 표정이나 색감이 스르륵 마법처럼 변하게 됩니다.
4. 모드 붕괴(Mode Collapse): 우물 안 개구리가 된 위조꾼
GAN을 학습시키다 보면 가장 흔하게 겪는 악명 높은 오류입니다. 생성기가 다양한 이미지를 만들지 않고, 판별기를 완벽하게 속였던 딱 한 가지의 샘플만 무한히 복사해서 찍어내는 현상을 말합니다.
* 비유하자면: 식당 주인이 '김치찌개'로 까다로운 음식 평론가에게 만점을 받자, 메뉴판의 다른 음식은 전부 갖다 버리고 1년 내내 모든 손님에게 김치찌개만 내오는 꼼수와 같습니다. 다양성이 생명인 AI에게 이는 큰 실패를 의미합니다.
5. 조건부 GAN(cGAN): 주문 제작형 마법 지팡이
기본 GAN은 무작위로 결과물을 내놓지만, 여기에 '조건(Condition, )'을 붙여주면 cGAN이 됩니다.
* 실생활 예시: "이번에는 '고양이'를 그려줘", "흑백 스케치 사진을 '컬러 사진'으로 바꿔줘"처럼 원하는 클래스 레이블이나 텍스트를 와 함께 꼬리표처럼 달아주어, 결과를 내 마음대로 조종할 수 있게 해주는 아주 유용한 확장형 모델입니다.
왜 중요한지
1. 무에서 유를 창조하는 '생성형 AI'의 진정한 출발점
과거의 인공지능이 사진을 보고 "이것은 강아지입니다"라고 정답을 맞히는 '분류(Classification)' 모범생이었다면, GAN은 세상에 존재하지 않는 강아지의 사진을 백지에서부터 그려내는 예술가입니다. 이미지, 음악, 사람의 목소리까지 만들어내는 오늘날 생성형 AI 혁명의 가장 중요한 뼈대가 되었습니다.
2. 소름 돋도록 선명하고 극사실적인 디테일 (Sharpness)
다른 딥러닝 모델들(예: 오토인코더)은 틀리지 않으려고 평균적인 픽셀값을 내놓다 보니 결과물이 뿌옇고 안개가 낀 것처럼 흐릿해지는 단점이 있습니다. 하지만 GAN은 깐깐한 판별기라는 비평가를 통과해야 하므로, 아주 미세한 머리카락 한 올이나 피부의 질감까지 칼로 베인 듯 선명하고 생생하게(Sharp) 살려내는 데 압도적인 성능을 자랑합니다.
3. 데이터 가뭄을 단비로 적시는 '데이터 증강(Data Augmentation)'
자율주행 자동차를 훈련시켜야 하는데 '눈보라가 치는 밤거리' 사진이 너무 부족하다면 어떻게 할까요? GAN에게 몇 장의 사진을 보여주고 학습시키면, 진짜보다 더 진짜 같은 가상의 눈보라 사진을 수만 장 찍어낼 수 있습니다. 이처럼 구하기 힘든 희귀 질환 의료 데이터나 공장 불량품 사진을 AI 스스로 증식시켜 다른 모델의 교재로 쓰는 핵심 기술입니다.
어떻게 쓰이는지
1단계: 도화지의 규격을 통일하라 (데이터 정규화와 Tanh)
AI가 그림을 그리기 쉽게 이미지의 픽셀 값(0~255)을 수학적으로 다루기 편한 의 범위로 눌러줍니다. 특히 생성기의 마지막 출력 필터로 사이의 값만 내뱉는 함수를 주로 사용하기 때문에, 진짜 사진(정답지)도 똑같이 로 맞춰주어야 체급이 맞아 판별기가 공정하게 심사할 수 있습니다.
2단계: 심판의 잣대 세우기 (BCE 손실함수)
진짜인지 가짜인지 두 가지 중 하나를 고르는 문제이므로, 가장 기본적이고 강력한 이진 교차 엔트로피(Binary Cross-Entropy, BCE) 손실 함수를 사용합니다. 이때 판별기가 너무 오만해져서 "이건 100% 진짜야!"라고 극단적으로 판단하지 못하게, 정답률을 대신 로 살짝 낮춰서 가르치는 라벨 스무딩(Label Smoothing)이라는 꿀팁을 쓰면 훈련이 훨씬 안정됩니다.
3단계: 아슬아슬한 줄타기 훈련 (번갈아 학습하기)
생성기와 판별기를 한 번에 동시에 훈련하면 무조건 탈이 납니다. 가장 중요한 요령은 번갈아 가며 훈련하는 것입니다.
* 를 먼저 똑똑하게 만들기: 진짜 데이터와 가짜 데이터를 보여주며 판별기를 먼저 번 학습시킵니다.
* 를 몰래 키우기: 그 후 생성기가 가짜 이미지를 만들어 판별기를 속이도록 번 학습시킵니다.
판별기가 너무 압도적으로 이겨버리면 생성기는 자포자기하여 학습을 멈추고(기울기 소실), 반대면 판별기가 바보가 됩니다. 섬세한 학습률(Learning rate) 조절이라는 '밀당'이 필수입니다.
4단계: 함정 피하기와 객관적 품질 검사 (안정화와 FID)
모드 붕괴(한 우물만 파는 꼼수)에 빠지지 않았는지 생성된 사진들을 수시로 눈으로 확인해야 합니다. 더불어 사람의 눈에만 그럴싸해 보이는 것을 막기 위해, 진짜 사진의 통계적 분포와 가짜 사진의 분포가 수학적으로 얼마나 비슷한지를 재는 FID(Fréchet Inception Distance) 지표를 계산합니다. FID 점수가 낮을수록 원본과 똑같이 훌륭한 그림을 그렸다는 뜻입니다.
요약
한 줄 요약 — GAN은 생성기와 판별기가 서로 겨루며, 노이즈 에서 현실적인 샘플을 만들어내는 생성 모델입니다.
핵심 포인트: 데이터 스케일, 업데이트 균형, 모드 붕괴, 안정화 전략이 성능을 좌우합니다.
다음 연결: 조건을 추가한 cGAN, 더 안정적인 변형들로 자연스럽게 확장됩니다.
문제 풀이를 위한 설명
처음에는 이 한 줄만 잡으면 됩니다. 생성기 는 노이즈 로 가짜를 만들고, 판별기 는 진짜 / 가짜를 가릅니다. 문제에서 먼저 누가 만드는지·누가 가리는지만 확인한 뒤, 미니맥스, 번갈아 학습, 모드 붕괴 키워드를 붙이면 됩니다.
숫자가 나오면: 이미지를 한 줄로 펼친 길이는 (세로)×(가로)(RGB면 ×3), 패치 격자(CLS 없이)는 , 완전연결 한 층 가중치는 대략 입니다.
예시 (입력 펼치기) — GAN 흑백 을 펼친 ? → 784
예시 (패치 격자) — , 패치 , CLS 제외 → 196
예시 (개념) — GAN에서 생성기 역할?
② 노이즈 로 가짜 생성 → 2
예시 (계산) — RGB 3채널 펼친 ? → 3072
예시 (응용) — 판별기가 너무 강하면?
① G/D 업데이트 균형
정의 — 모드 붕괴는 거의 같은 샘플만 반복 낸다. → 해당 설명 선택
참/거짓 — 조건부 GAN은 레이블·조건을 쓸 수 있다. → 1