검색
← 모듈 로드맵

생성 모델 총론: 분포를 배우는 법

강의 · 입문자 · KAITABASE 정리

원제 · Deep Generative Models Overview (Stanford CS236 노트 참고)

최대우도=KL 최소화와 자기회귀 · 잠재 변수, GAN · VAE · 확산 · 플로우를 한 지도로 비교

먼저 알아야 할 것

확률분포와 조건부 확률KL 발산최대우도 추정신경망 기초

다루는 내용

생성 모델이 데이터 분포를 배우는 방법을 하나의 틀로 정리합니다. 최대우도 추정이 KL 발산 최소화와 같다는 것을 동전 예로 확인하고, 명시적 · 암묵적 모델, 자기회귀 분해, 잠재 변수 모델의 적분 문제를 설명합니다. GAN · VAE · 확산 · 플로우 · 자기회귀를 학습 목표 · 가능도 · 생성 속도로 비교하고 상황별 선택 기준을 제시합니다.

해설

생성 모델 총론: 분포를 배우는 법

생성 모델(generative model) 은 "데이터가 어떻게 생겼는지"를 확률분포로 배워, 그 분포에서 새 표본을 뽑는 모델입니다. 이 수업은 GAN · VAE · 확산 · 플로우 · 자기회귀 모델을 하나의 지도 위에 올려 놓습니다. 모두 같은 질문 — "모델 분포 pθp_\theta 를 데이터 분포 pdatap_{\text{data}} 에 얼마나, 어떻게 가깝게 만들까" — 에 서로 다른 답을 낸 것입니다.

항목내용
참고 출처스탠퍼드 CS236 Deep Generative Models 강의 노트(소개, 자기회귀 모델, 플로우)
트랙 · 수준생성 모델 · 기초
이 수업이 다루는 범위판별 vs 생성, 밀도 추정 · 표본 추출 · 표현 학습, 최대우도 = KL 최소화, 명시적 · 암묵적 모델, 자기회귀 분해, 잠재 변수 모델, 다섯 갈래 비교와 고르는 법

들어가기 전에

한눈에 보기

  • 판별 모델과 생성 모델이 각각 무엇을 배우는지 한 문장으로 구분합니다.
  • "최대우도로 학습한다"와 "데이터 분포와의 KL 발산을 줄인다"가 같은 말인 이유를 숫자로 확인합니다.
  • 자기회귀 모델이 결합 확률을 조건부 확률의 곱으로 쪼개는 방법과, 그것이 왜 LLM의 바탕인지 압니다.
  • 잠재 변수 모델이 왜 "계산하기 어려운 적분"을 만나고, VAE · 확산이 그것을 어떻게 피하는지 감을 잡습니다.
  • GAN · VAE · 확산 · 플로우 · 자기회귀를 표 하나로 비교하고, 상황별로 고르는 기준을 세웁니다.

1. 판별 모델과 생성 모델

직관(해설용 비유). 개 사진과 고양이 사진을 구분하는 사람은 "경계선"만 알면 됩니다. 반면 개 사진을 그려 내는 사람은 "개 사진이란 무엇인가" 전체를 알아야 합니다. 앞쪽이 판별 모델(discriminative model), 뒤쪽이 생성 모델 입니다.

  • 판별 모델은 조건부 분포 p(y∣x)p(y\mid x) — 입력이 주어졌을 때 정답의 확률 — 를 배웁니다.
  • 생성 모델은 데이터 자체의 분포 p(x)p(x) (조건이 있으면 p(x∣c)p(x\mid c)) 를 배웁니다.

CS236 노트는 생성 모델로 할 수 있는 일을 셋으로 나눕니다.

할 일뜻예
밀도 추정(density estimation)주어진 xx 에 확률(밀도) pθ(x)p_\theta(x) 를 매기기이상한 거래 탐지: 확률이 낮으면 이상치
표본 추출(sampling)pθp_\theta 에서 새 xx 뽑기이미지 · 음성 · 문장 생성
표현 학습(representation learning)데이터의 숨은 구조를 특징으로 뽑기잠재 벡터로 검색 · 분류

노트는 또 하나 중요한 말을 합니다. 세 가지를 모두 빠르고 정확하게 해 주는 모델 족(family)은 없어서 여러 갈래가 따로 발전했다는 것입니다. 이 수업의 마지막 비교표가 바로 그 이야기입니다.

2. 학습 목표: 최대우도 = KL 최소화

직관. 데이터 분포 pdatap_{\text{data}} 는 모르지만 표본(학습 데이터)은 있습니다. 모델 분포 pθp_\theta 를 이 표본에 "가장 그럴듯하게" 맞추는 것이 최대우도 추정(maximum likelihood estimation, MLE)입니다.

단계.

  1. 모델 족을 정합니다(예: 정규분포, 신경망이 매개변수인 분포).
  2. 두 분포의 차이를 재는 잣대를 정합니다. 가장 흔한 것은 KL 발산입니다.
  3. 잣대를 최소화하는 θ\theta 를 경사 하강법으로 찾습니다.

KL 발산을 풀어 쓰면 다음과 같습니다.

DKL(pdata ∥ pθ)=Ex∼pdata[log⁡pdata(x)]⏟θ 와 무관−Ex∼pdata[log⁡pθ(x)]D_{\mathrm{KL}}(p_{\text{data}}\,\|\,p_\theta) = \underbrace{\mathbb{E}_{x\sim p_{\text{data}}}[\log p_{\text{data}}(x)]}_{\theta\text{ 와 무관}} - \mathbb{E}_{x\sim p_{\text{data}}}[\log p_\theta(x)]
기호뜻
pdatap_{\text{data}}데이터를 만든 진짜 분포(모름)
pθp_\theta매개변수 θ\theta 를 가진 모델 분포
Ex∼pdata[⋅]\mathbb{E}_{x\sim p_{\text{data}}}[\cdot]데이터에 대한 평균. 실제로는 학습 표본의 평균으로 계산
log⁡pθ(x)\log p_\theta(x)모델이 데이터 xx 에 매기는 로그 확률(로그 가능도)

첫 항은 θ\theta 와 상관이 없으므로, KL을 줄이는 것은 둘째 항인 평균 로그 가능도를 키우는 것 과 정확히 같습니다. CS236 노트의 자기회귀 장도 같은 논리로 "KL을 줄이는 대신 최대우도로 같은 최적 매개변수를 얻는다"고 설명합니다.

숫자로 해 보기(해설용). 동전을 10번 던져 앞면 7번이 나왔습니다. 데이터 분포를 (0.7, 0.3)(0.7,\ 0.3) 로 봅니다.

  • 모델 q=(0.5, 0.5)q=(0.5,\ 0.5): 교차 엔트로피 −(0.7ln⁡0.5+0.3ln⁡0.5)=0.693-(0.7\ln0.5+0.3\ln0.5)=0.693, 데이터 엔트로피 0.6110.611, KL =0.693−0.611=0.082=0.693-0.611=0.082
  • 모델 q=(0.6, 0.4)q=(0.6,\ 0.4): KL ≈0.022\approx 0.022
  • 모델 q=(0.7, 0.3)q=(0.7,\ 0.3): KL =0=0

로그 가능도로 보면 θ=0.7\theta=0.7 일 때 7ln⁡0.7+3ln⁡0.3≈−6.1097\ln0.7+3\ln0.3\approx-6.109, θ=0.5\theta=0.5 일 때 10ln⁡0.5≈−6.93110\ln0.5\approx-6.931 입니다. 가능도가 가장 큰 곳과 KL이 0인 곳이 같습니다.

왜 이렇게 하나. 다른 잣대도 있습니다. 순서를 바꾼 KL, 젠슨-섀넌(JS) 발산, 바서슈타인 거리 등입니다. 그런데 최대우도는 "데이터 표본에서 log⁡pθ(x)\log p_\theta(x) 를 계산할 수 있기만 하면" 바로 쓸 수 있다는 큰 장점이 있습니다. 반대로 pθ(x)p_\theta(x) 를 계산할 수 없는 모델(GAN)은 다른 잣대가 필요합니다. 이 차이가 갈래를 가릅니다.

3. 명시적 모델과 암묵적 모델

  • 명시적(explicit) 모델: pθ(x)p_\theta(x) 를 식으로 적을 수 있습니다. 정확히 계산되면 자기회귀 · 플로우, 하한(바닥값)만 계산되면 VAE · 확산입니다.
  • 암묵적(implicit) 모델: 확률은 적지 못하고 "뽑는 방법"만 있습니다. 잡음 zz 를 넣으면 x=G(z)x=G(z) 가 나오는 GAN이 대표입니다. 가능도를 못 쓰니, 진짜와 가짜를 구분하는 판별자를 만들어 그 판정을 학습 신호로 씁니다.

직관(해설용 비유). 명시적 모델은 "이 문장이 나올 확률은 0.03%" 라고 답할 수 있는 작가, 암묵적 모델은 확률은 모르지만 그럴듯한 글을 술술 쓰는 작가입니다.

4. 자기회귀 분해: 한 조각씩 예측하기

직관. 전체 문장의 확률을 한 번에 매기기는 어렵지만, "앞 단어들이 주어졌을 때 다음 단어의 확률"은 신경망으로 배울 수 있습니다. 확률의 곱의 법칙(연쇄 법칙)이 이 둘을 정확히 이어 줍니다.

p(x1,…,xn)=∏i=1np(xi∣x1,…,xi−1)p(x_1,\dots,x_n)=\prod_{i=1}^{n} p(x_i \mid x_1,\dots,x_{i-1})
기호뜻
xix_iii 번째 조각(토큰, 픽셀, 음성 표본)
p(xi∣x<i)p(x_i\mid x_{<i})앞 조각들이 주어졌을 때 ii 번째 조각의 조건부 확률
∏\prod모두 곱하기(로그를 취하면 합)

숫자로 해 보기(해설용). 이진 변수 3개 x=(1,0,1)x=(1,0,1) 의 확률을 구합니다. 모델이 p(x1=1)=0.6p(x_1{=}1)=0.6, p(x2=0∣x1=1)=0.3p(x_2{=}0\mid x_1{=}1)=0.3, p(x3=1∣x1=1,x2=0)=0.8p(x_3{=}1\mid x_1{=}1,x_2{=}0)=0.8 을 냈다면 p(x)=0.6×0.3×0.8=0.144p(x)=0.6\times0.3\times0.8=0.144 입니다.

왜 신경망이 필요한가. 조건부 확률을 표로 다 적으면 이진 변수 nn 개에 대해 1+2+4+⋯+2n−1=2n−11+2+4+\dots+2^{n-1}=2^n-1 개의 숫자가 필요합니다. n=3n=3 이면 7개지만 n=10n=10 이면 1,023개, 28×28 흑백 이미지(n=784n=784)면 2784−12^{784}-1 개라 불가능합니다. CS236 노트는 그래서 각 조건부 확률을 로지스틱 회귀(FVSBN)나 매개변수를 공유하는 신경망(NADE)으로 표현합니다. 오늘날 트랜스포머 LLM이 같은 분해를 씁니다(언어 모델의 기본).

장단점. 가능도를 정확히 계산할 수 있고 학습이 안정적입니다. 대신 생성할 때 조각을 하나씩 차례로 뽑아야 해서 느리고, 이미지처럼 "순서"가 자연스럽지 않은 데이터에는 순서를 억지로 정해야 합니다.

5. 잠재 변수 모델: 숨은 원인을 가정하기

직관(해설용 비유). 얼굴 사진 뒤에는 "나이 · 표정 · 조명" 같은 숨은 원인이 있습니다. 이 원인을 잠재 변수(latent variable) zz 로 두고, "먼저 zz 를 뽑고, zz 로부터 xx 를 그린다"고 모델링합니다.

pθ(x)=∫pθ(x∣z) p(z) dzp_\theta(x)=\int p_\theta(x\mid z)\,p(z)\,dz
기호뜻
p(z)p(z)잠재 변수의 사전 분포. 보통 표준 정규분포
pθ(x∣z)p_\theta(x\mid z)디코더: zz 가 주어졌을 때 xx 의 분포
∫⋯dz\int\cdots dz가능한 모든 zz 에 대해 더하기

문제는 이 적분입니다. zz 가 수십~수백 차원이고 디코더가 신경망이면 적분을 정확히 계산할 수 없습니다. 생성 모델의 큰 갈래들은 이 적분을 피하는 방식으로 구분됩니다.

  • VAE: 인코더로 zz 를 어림하고, 계산 가능한 하한(ELBO)을 대신 최대화합니다(다음 수업에서 유도).
  • 확산 모델: 잠재 변수를 "잡음이 섞인 이미지 x1,…,xTx_1,\dots,x_T" 로 고정해 두고, 역시 하한을 최대화합니다. 결국 "더해진 잡음 맞히기"라는 단순한 회귀가 됩니다.
  • 플로우: xx 와 zz 의 차원을 같게 하고 역함수가 있는 변환만 써서, 적분 없이 변수 변환 공식으로 정확한 가능도를 냅니다.
  • GAN: 가능도를 아예 포기하고 판별자로 비교합니다.
mermaid
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 --> S

6. 다섯 갈래 한눈에 비교

아래 표는 각 갈래의 대표 성질을 정리한 해설용 요약입니다(세부 변형에 따라 달라질 수 있음).

갈래학습 목표가능도생성 속도대표 강점대표 약점
자기회귀정확한 로그 가능도정확느림(조각마다 한 번)안정적 학습, 텍스트에 최적순차 생성
VAEELBO하한빠름(한 번)쓸 만한 잠재 공간흐릿한 표본이 되기 쉬움
GAN판별자와 최소최대 게임없음빠름(한 번)선명한 표본불안정 학습 · 모드 붕괴
확산잡음 예측(하한의 변형)하한느림(여러 단계)높은 품질 · 다양성 · 조건 걸기 쉬움단계 수만큼 계산
플로우정확한 로그 가능도정확구조에 따라 다름정확한 가능도, 역변환차원 · 구조 제약

숫자로 해 보기(해설용). 같은 이미지 한 장을 만들 때 "신경망 호출 횟수"를 셉니다. GAN · VAE 디코더는 1번입니다. DDPM 원 논문 설정처럼 T=1000T=1000 단계를 다 밟는 확산 모델은 1,000번입니다(DDPM). 그래서 확산 쪽 연구의 큰 줄기가 "단계 줄이기"입니다(→ 확산 모델 실전). 64×64 이미지(4,096픽셀 × 3채널)를 픽셀 단위 자기회귀로 만들면 12,288번 순차 예측이 필요합니다.

7. 언제 무엇을 고르나

  • 텍스트 · 코드: 자기회귀(트랜스포머 LLM). 조각(토큰)이 자연스러운 순서를 가집니다.
  • 이미지 · 영상 · 음성 고품질 생성: 확산 또는 플로우 매칭. 텍스트 조건을 걸기 쉽고 품질이 높습니다. 속도가 중요하면 단계를 줄인 샘플러나 증류를 씁니다.
  • 실시간 · 한 번에 생성 · 데이터가 좁은 영역: GAN이 여전히 쓰입니다(예: 특정 얼굴 영역의 고해상도 생성).
  • 압축 · 잠재 공간이 필요할 때: VAE(또는 VQ-VAE)로 잠재 공간을 만들고, 그 위에서 확산이나 자기회귀를 돌립니다. Stable Diffusion이 이 조합입니다.
  • 정확한 확률 값이 필요할 때(이상치 탐지 등): 자기회귀 또는 플로우.

왜 섞어 쓰나. 실제 시스템은 한 갈래만 쓰지 않습니다. "VAE로 압축 → 압축 공간에서 확산" 처럼 각자의 장점을 이어 붙입니다. 로봇 분야의 확산 정책 이나 π0 도 이미지 생성 기법을 "행동 생성"으로 가져온 예입니다.

연습 문제

  1. 데이터 분포가 (0.2, 0.8)(0.2,\ 0.8) 일 때, 모델 (0.5, 0.5)(0.5,\ 0.5) 의 KL 발산 DKL(pdata∥q)D_{\mathrm{KL}}(p_{\text{data}}\|q) 를 구하세요.
    • 풀이: 0.2ln⁡(0.2/0.5)+0.8ln⁡(0.8/0.5)=0.2(−0.916)+0.8(0.470)=−0.183+0.376≈0.1930.2\ln(0.2/0.5)+0.8\ln(0.8/0.5)=0.2(-0.916)+0.8(0.470)=-0.183+0.376\approx0.193 입니다.
  2. 이진 변수 4개의 결합 분포를 조건부 확률 표로 모두 적으면 숫자가 몇 개 필요한가요?
    • 풀이: 1+2+4+8=15=24−11+2+4+8=15=2^4-1 개입니다.
  3. 자기회귀 모델이 p(x1=0)=0.5p(x_1{=}0)=0.5, p(x2=1∣x1=0)=0.4p(x_2{=}1\mid x_1{=}0)=0.4 를 냈습니다. p(x1=0,x2=1)p(x_1{=}0,x_2{=}1) 은?
    • 풀이: 0.5×0.4=0.20.5\times0.4=0.2 입니다.
  4. 가능도를 계산할 수 없는 모델은 다섯 갈래 중 무엇이고, 대신 무엇으로 학습 신호를 얻나요?
    • 풀이: GAN입니다. 진짜와 가짜를 구분하도록 학습한 판별자의 판정을 신호로 씁니다.

스스로 점검

  1. 최대우도 추정이 KL 발산 최소화와 같은 이유는?
    • 답: KL을 풀면 "데이터 엔트로피 − 평균 로그 가능도" 가 되는데, 앞 항이 θ\theta 와 무관하므로 평균 로그 가능도를 키우는 것이 곧 KL을 줄이는 것이기 때문입니다.
  2. 잠재 변수 모델의 가능도 계산이 어려운 이유와 VAE의 우회 방법은?
    • 답: 모든 zz 에 대해 적분해야 하는데 고차원 신경망 디코더에서는 계산할 수 없습니다. VAE는 인코더로 사후분포를 근사해 계산 가능한 하한(ELBO)을 최대화합니다.
  3. 확산 모델의 대표 약점과 그 이유는?
    • 답: 생성이 느립니다. 잡음을 여러 단계에 걸쳐 걷어 내므로 단계 수만큼 신경망을 호출하기 때문입니다.

용어 정리

용어쉬운 뜻
생성 모델데이터의 분포를 배워 새 표본을 만드는 모델
판별 모델입력이 주어졌을 때 정답의 확률 p(y∣x)p(y\mid x) 만 배우는 모델
밀도 추정어떤 데이터가 나올 확률(밀도)을 매기는 일
최대우도 추정(MLE)데이터의 로그 확률 합이 가장 커지게 매개변수를 고르는 방법
KL 발산두 분포가 얼마나 다른지 재는 값(0이면 같음)
명시적 · 암묵적 모델확률을 식으로 적을 수 있는 모델 · 뽑는 방법만 있는 모델
자기회귀 모델앞 조각을 보고 다음 조각의 확률을 예측해 곱하는 모델
잠재 변수데이터 뒤에 숨은 원인을 나타내는, 관측되지 않는 변수
ELBO로그 가능도의 계산 가능한 하한(증거 하한)
모드 붕괴생성 모델이 데이터의 일부 유형만 반복해 만드는 현상

더 깊이 보려면

다음에 볼 것

라이선스

본문은 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 하이퍼파라미터(T=1000T=1000): https://arxiv.org/abs/2006.11239

AI 원리부터 이해하기 · 생성 모델 모듈

생성 모델 모듈 학습

이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 1번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Stanford CS236 강의 노트(라이선스 표기 없음)