생성 모델 총론: 분포를 배우는 법
최대우도=KL 최소화와 자기회귀 · 잠재 변수, GAN · VAE · 확산 · 플로우를 한 지도로 비교
먼저 알아야 할 것
다루는 내용
생성 모델이 데이터 분포를 배우는 방법을 하나의 틀로 정리합니다. 최대우도 추정이 KL 발산 최소화와 같다는 것을 동전 예로 확인하고, 명시적 · 암묵적 모델, 자기회귀 분해, 잠재 변수 모델의 적분 문제를 설명합니다. GAN · VAE · 확산 · 플로우 · 자기회귀를 학습 목표 · 가능도 · 생성 속도로 비교하고 상황별 선택 기준을 제시합니다.
해설
생성 모델 총론: 분포를 배우는 법
생성 모델(generative model) 은 "데이터가 어떻게 생겼는지"를 확률분포로 배워, 그 분포에서 새 표본을 뽑는 모델입니다. 이 수업은 GAN · VAE · 확산 · 플로우 · 자기회귀 모델을 하나의 지도 위에 올려 놓습니다. 모두 같은 질문 — "모델 분포 를 데이터 분포 에 얼마나, 어떻게 가깝게 만들까" — 에 서로 다른 답을 낸 것입니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | 스탠퍼드 CS236 Deep Generative Models 강의 노트(소개, 자기회귀 모델, 플로우) |
| 트랙 · 수준 | 생성 모델 · 기초 |
| 이 수업이 다루는 범위 | 판별 vs 생성, 밀도 추정 · 표본 추출 · 표현 학습, 최대우도 = KL 최소화, 명시적 · 암묵적 모델, 자기회귀 분해, 잠재 변수 모델, 다섯 갈래 비교와 고르는 법 |
들어가기 전에
- 확률과 통계 최소한 — 조건부 확률 · 곱의 법칙 · 정규분포. 생성 모델 수식은 전부 이 위에 서 있습니다.
- 정보 이론 최소한: 엔트로피 · 교차 엔트로피 · KL 발산 — 두 분포가 얼마나 다른지를 재는 KL 발산을 이 수업에서 바로 씁니다.
- 확률적 머신러닝 입문 — 최대우도 추정(MLE)을 동전 예로 익혀 두면 좋습니다.
한눈에 보기
- 판별 모델과 생성 모델이 각각 무엇을 배우는지 한 문장으로 구분합니다.
- "최대우도로 학습한다"와 "데이터 분포와의 KL 발산을 줄인다"가 같은 말인 이유를 숫자로 확인합니다.
- 자기회귀 모델이 결합 확률을 조건부 확률의 곱으로 쪼개는 방법과, 그것이 왜 LLM의 바탕인지 압니다.
- 잠재 변수 모델이 왜 "계산하기 어려운 적분"을 만나고, VAE · 확산이 그것을 어떻게 피하는지 감을 잡습니다.
- GAN · VAE · 확산 · 플로우 · 자기회귀를 표 하나로 비교하고, 상황별로 고르는 기준을 세웁니다.
1. 판별 모델과 생성 모델
직관(해설용 비유). 개 사진과 고양이 사진을 구분하는 사람은 "경계선"만 알면 됩니다. 반면 개 사진을 그려 내는 사람은 "개 사진이란 무엇인가" 전체를 알아야 합니다. 앞쪽이 판별 모델(discriminative model), 뒤쪽이 생성 모델 입니다.
- 판별 모델은 조건부 분포 — 입력이 주어졌을 때 정답의 확률 — 를 배웁니다.
- 생성 모델은 데이터 자체의 분포 (조건이 있으면 ) 를 배웁니다.
CS236 노트는 생성 모델로 할 수 있는 일을 셋으로 나눕니다.
| 할 일 | 뜻 | 예 |
|---|---|---|
| 밀도 추정(density estimation) | 주어진 에 확률(밀도) 를 매기기 | 이상한 거래 탐지: 확률이 낮으면 이상치 |
| 표본 추출(sampling) | 에서 새 뽑기 | 이미지 · 음성 · 문장 생성 |
| 표현 학습(representation learning) | 데이터의 숨은 구조를 특징으로 뽑기 | 잠재 벡터로 검색 · 분류 |
노트는 또 하나 중요한 말을 합니다. 세 가지를 모두 빠르고 정확하게 해 주는 모델 족(family)은 없어서 여러 갈래가 따로 발전했다는 것입니다. 이 수업의 마지막 비교표가 바로 그 이야기입니다.
2. 학습 목표: 최대우도 = KL 최소화
직관. 데이터 분포 는 모르지만 표본(학습 데이터)은 있습니다. 모델 분포 를 이 표본에 "가장 그럴듯하게" 맞추는 것이 최대우도 추정(maximum likelihood estimation, MLE)입니다.
단계.
- 모델 족을 정합니다(예: 정규분포, 신경망이 매개변수인 분포).
- 두 분포의 차이를 재는 잣대를 정합니다. 가장 흔한 것은 KL 발산입니다.
- 잣대를 최소화하는 를 경사 하강법으로 찾습니다.
KL 발산을 풀어 쓰면 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 데이터를 만든 진짜 분포(모름) | |
| 매개변수 를 가진 모델 분포 | |
| 데이터에 대한 평균. 실제로는 학습 표본의 평균으로 계산 | |
| 모델이 데이터 에 매기는 로그 확률(로그 가능도) |
첫 항은 와 상관이 없으므로, KL을 줄이는 것은 둘째 항인 평균 로그 가능도를 키우는 것 과 정확히 같습니다. CS236 노트의 자기회귀 장도 같은 논리로 "KL을 줄이는 대신 최대우도로 같은 최적 매개변수를 얻는다"고 설명합니다.
숫자로 해 보기(해설용). 동전을 10번 던져 앞면 7번이 나왔습니다. 데이터 분포를 로 봅니다.
- 모델 : 교차 엔트로피 , 데이터 엔트로피 , KL
- 모델 : KL
- 모델 : KL
로그 가능도로 보면 일 때 , 일 때 입니다. 가능도가 가장 큰 곳과 KL이 0인 곳이 같습니다.
왜 이렇게 하나. 다른 잣대도 있습니다. 순서를 바꾼 KL, 젠슨-섀넌(JS) 발산, 바서슈타인 거리 등입니다. 그런데 최대우도는 "데이터 표본에서 를 계산할 수 있기만 하면" 바로 쓸 수 있다는 큰 장점이 있습니다. 반대로 를 계산할 수 없는 모델(GAN)은 다른 잣대가 필요합니다. 이 차이가 갈래를 가릅니다.
3. 명시적 모델과 암묵적 모델
- 명시적(explicit) 모델: 를 식으로 적을 수 있습니다. 정확히 계산되면 자기회귀 · 플로우, 하한(바닥값)만 계산되면 VAE · 확산입니다.
- 암묵적(implicit) 모델: 확률은 적지 못하고 "뽑는 방법"만 있습니다. 잡음 를 넣으면 가 나오는 GAN이 대표입니다. 가능도를 못 쓰니, 진짜와 가짜를 구분하는 판별자를 만들어 그 판정을 학습 신호로 씁니다.
직관(해설용 비유). 명시적 모델은 "이 문장이 나올 확률은 0.03%" 라고 답할 수 있는 작가, 암묵적 모델은 확률은 모르지만 그럴듯한 글을 술술 쓰는 작가입니다.
4. 자기회귀 분해: 한 조각씩 예측하기
직관. 전체 문장의 확률을 한 번에 매기기는 어렵지만, "앞 단어들이 주어졌을 때 다음 단어의 확률"은 신경망으로 배울 수 있습니다. 확률의 곱의 법칙(연쇄 법칙)이 이 둘을 정확히 이어 줍니다.
| 기호 | 뜻 |
|---|---|
| 번째 조각(토큰, 픽셀, 음성 표본) | |
| 앞 조각들이 주어졌을 때 번째 조각의 조건부 확률 | |
| 모두 곱하기(로그를 취하면 합) |
숫자로 해 보기(해설용). 이진 변수 3개 의 확률을 구합니다. 모델이 , , 을 냈다면 입니다.
왜 신경망이 필요한가. 조건부 확률을 표로 다 적으면 이진 변수 개에 대해 개의 숫자가 필요합니다. 이면 7개지만 이면 1,023개, 28×28 흑백 이미지()면 개라 불가능합니다. CS236 노트는 그래서 각 조건부 확률을 로지스틱 회귀(FVSBN)나 매개변수를 공유하는 신경망(NADE)으로 표현합니다. 오늘날 트랜스포머 LLM이 같은 분해를 씁니다(언어 모델의 기본).
장단점. 가능도를 정확히 계산할 수 있고 학습이 안정적입니다. 대신 생성할 때 조각을 하나씩 차례로 뽑아야 해서 느리고, 이미지처럼 "순서"가 자연스럽지 않은 데이터에는 순서를 억지로 정해야 합니다.
5. 잠재 변수 모델: 숨은 원인을 가정하기
직관(해설용 비유). 얼굴 사진 뒤에는 "나이 · 표정 · 조명" 같은 숨은 원인이 있습니다. 이 원인을 잠재 변수(latent variable) 로 두고, "먼저 를 뽑고, 로부터 를 그린다"고 모델링합니다.
| 기호 | 뜻 |
|---|---|
| 잠재 변수의 사전 분포. 보통 표준 정규분포 | |
| 디코더: 가 주어졌을 때 의 분포 | |
| 가능한 모든 에 대해 더하기 |
문제는 이 적분입니다. 가 수십~수백 차원이고 디코더가 신경망이면 적분을 정확히 계산할 수 없습니다. 생성 모델의 큰 갈래들은 이 적분을 피하는 방식으로 구분됩니다.
- VAE: 인코더로 를 어림하고, 계산 가능한 하한(ELBO)을 대신 최대화합니다(다음 수업에서 유도).
- 확산 모델: 잠재 변수를 "잡음이 섞인 이미지 " 로 고정해 두고, 역시 하한을 최대화합니다. 결국 "더해진 잡음 맞히기"라는 단순한 회귀가 됩니다.
- 플로우: 와 의 차원을 같게 하고 역함수가 있는 변환만 써서, 적분 없이 변수 변환 공식으로 정확한 가능도를 냅니다.
- GAN: 가능도를 아예 포기하고 판별자로 비교합니다.
flowchart LR
D[학습 데이터 x] --> F{p θ x 를<br/>계산할 수 있나}
F -->|정확히| AR[자기회귀 · 플로우<br/>최대우도]
F -->|하한만| LV[VAE · 확산<br/>ELBO 최대화]
F -->|못 함| GAN[GAN<br/>판별자와 게임]
AR --> S[표본 추출 · 평가]
LV --> S
GAN --> S6. 다섯 갈래 한눈에 비교
아래 표는 각 갈래의 대표 성질을 정리한 해설용 요약입니다(세부 변형에 따라 달라질 수 있음).
| 갈래 | 학습 목표 | 가능도 | 생성 속도 | 대표 강점 | 대표 약점 |
|---|---|---|---|---|---|
| 자기회귀 | 정확한 로그 가능도 | 정확 | 느림(조각마다 한 번) | 안정적 학습, 텍스트에 최적 | 순차 생성 |
| VAE | ELBO | 하한 | 빠름(한 번) | 쓸 만한 잠재 공간 | 흐릿한 표본이 되기 쉬움 |
| GAN | 판별자와 최소최대 게임 | 없음 | 빠름(한 번) | 선명한 표본 | 불안정 학습 · 모드 붕괴 |
| 확산 | 잡음 예측(하한의 변형) | 하한 | 느림(여러 단계) | 높은 품질 · 다양성 · 조건 걸기 쉬움 | 단계 수만큼 계산 |
| 플로우 | 정확한 로그 가능도 | 정확 | 구조에 따라 다름 | 정확한 가능도, 역변환 | 차원 · 구조 제약 |
숫자로 해 보기(해설용). 같은 이미지 한 장을 만들 때 "신경망 호출 횟수"를 셉니다. GAN · VAE 디코더는 1번입니다. DDPM 원 논문 설정처럼 단계를 다 밟는 확산 모델은 1,000번입니다(DDPM). 그래서 확산 쪽 연구의 큰 줄기가 "단계 줄이기"입니다(→ 확산 모델 실전). 64×64 이미지(4,096픽셀 × 3채널)를 픽셀 단위 자기회귀로 만들면 12,288번 순차 예측이 필요합니다.
7. 언제 무엇을 고르나
- 텍스트 · 코드: 자기회귀(트랜스포머 LLM). 조각(토큰)이 자연스러운 순서를 가집니다.
- 이미지 · 영상 · 음성 고품질 생성: 확산 또는 플로우 매칭. 텍스트 조건을 걸기 쉽고 품질이 높습니다. 속도가 중요하면 단계를 줄인 샘플러나 증류를 씁니다.
- 실시간 · 한 번에 생성 · 데이터가 좁은 영역: GAN이 여전히 쓰입니다(예: 특정 얼굴 영역의 고해상도 생성).
- 압축 · 잠재 공간이 필요할 때: VAE(또는 VQ-VAE)로 잠재 공간을 만들고, 그 위에서 확산이나 자기회귀를 돌립니다. Stable Diffusion이 이 조합입니다.
- 정확한 확률 값이 필요할 때(이상치 탐지 등): 자기회귀 또는 플로우.
왜 섞어 쓰나. 실제 시스템은 한 갈래만 쓰지 않습니다. "VAE로 압축 → 압축 공간에서 확산" 처럼 각자의 장점을 이어 붙입니다. 로봇 분야의 확산 정책 이나 π0 도 이미지 생성 기법을 "행동 생성"으로 가져온 예입니다.
연습 문제
- 데이터 분포가 일 때, 모델 의 KL 발산 를 구하세요.
- 풀이: 입니다.
- 이진 변수 4개의 결합 분포를 조건부 확률 표로 모두 적으면 숫자가 몇 개 필요한가요?
- 풀이: 개입니다.
- 자기회귀 모델이 , 를 냈습니다. 은?
- 풀이: 입니다.
- 가능도를 계산할 수 없는 모델은 다섯 갈래 중 무엇이고, 대신 무엇으로 학습 신호를 얻나요?
- 풀이: GAN입니다. 진짜와 가짜를 구분하도록 학습한 판별자의 판정을 신호로 씁니다.
스스로 점검
- 최대우도 추정이 KL 발산 최소화와 같은 이유는?
- 답: KL을 풀면 "데이터 엔트로피 − 평균 로그 가능도" 가 되는데, 앞 항이 와 무관하므로 평균 로그 가능도를 키우는 것이 곧 KL을 줄이는 것이기 때문입니다.
- 잠재 변수 모델의 가능도 계산이 어려운 이유와 VAE의 우회 방법은?
- 답: 모든 에 대해 적분해야 하는데 고차원 신경망 디코더에서는 계산할 수 없습니다. VAE는 인코더로 사후분포를 근사해 계산 가능한 하한(ELBO)을 최대화합니다.
- 확산 모델의 대표 약점과 그 이유는?
- 답: 생성이 느립니다. 잡음을 여러 단계에 걸쳐 걷어 내므로 단계 수만큼 신경망을 호출하기 때문입니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 생성 모델 | 데이터의 분포를 배워 새 표본을 만드는 모델 |
| 판별 모델 | 입력이 주어졌을 때 정답의 확률 만 배우는 모델 |
| 밀도 추정 | 어떤 데이터가 나올 확률(밀도)을 매기는 일 |
| 최대우도 추정(MLE) | 데이터의 로그 확률 합이 가장 커지게 매개변수를 고르는 방법 |
| KL 발산 | 두 분포가 얼마나 다른지 재는 값(0이면 같음) |
| 명시적 · 암묵적 모델 | 확률을 식으로 적을 수 있는 모델 · 뽑는 방법만 있는 모델 |
| 자기회귀 모델 | 앞 조각을 보고 다음 조각의 확률을 예측해 곱하는 모델 |
| 잠재 변수 | 데이터 뒤에 숨은 원인을 나타내는, 관측되지 않는 변수 |
| ELBO | 로그 가능도의 계산 가능한 하한(증거 하한) |
| 모드 붕괴 | 생성 모델이 데이터의 일부 유형만 반복해 만드는 현상 |
더 깊이 보려면
- CS236 강의 노트 전체: https://deepgenerativemodels.github.io/notes/ — 자기회귀 · VAE · 플로우 · GAN 장
- 생성적 적대 신경망 (GAN) · 변분 오토인코더 (VAE) · DDPM — 각 갈래의 원 논문 해설
- 언어 모델의 기본 — 자기회귀 분해가 LLM에서 쓰이는 방식
다음에 볼 것
- 오토인코더에서 VAE까지 — 잠재 변수 모델의 하한(ELBO)을 손으로 유도합니다.
- 변분 오토인코더 (VAE) — 원 논문 해설
라이선스
본문은 KAITABASE 자체 해설입니다. 참고 자료 CS236 강의 노트(스탠퍼드)는 페이지에 별도 라이선스 표기가 없어 내용을 옮기지 않고 구성만 참고했습니다. 동전 · 이진 변수 숫자와 비교표는 이 수업을 위해 만든 해설용 예입니다.
출처
- CS236 노트 Introduction: https://deepgenerativemodels.github.io/notes/introduction/
- CS236 노트 Autoregressive Models: https://deepgenerativemodels.github.io/notes/autoregressive/
- CS236 노트 Normalizing Flow Models: https://deepgenerativemodels.github.io/notes/flow/
- DDPM 하이퍼파라미터(): https://arxiv.org/abs/2006.11239
AI 원리부터 이해하기 · 생성 모델 모듈
생성 모델 모듈 학습
이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 1번째입니다.
출처·원문
원문 보기요약만