콘텐츠로 이동

10. Diffusion

이 챕터의 목적

Diffusion model은 data에 noise를 조금씩 추가해 단순한 distribution으로 만드는 forward process를 정의하고, 이를 거꾸로 따라가며 noise에서 data를 만드는 방법을 학습한다. 복잡한 sample을 한 번에 생성하는 대신 여러 noise level에서 반복적으로 denoising하는 문제로 바꾸는 것이 핵심이다.

이 장의 목표는 stochastic process를 완전히 유도하는 것이 아니다. Forward noising과 learned reverse process, training과 sampling, diffusion objective와 denoiser architecture를 서로 구분하고 score, DDIM, guidance, latent diffusion의 위치를 알아보는 것이 목표다.

먼저 알아볼 항목

  • Gaussian noise, 평균과 분산
  • conditional expectation의 직관
  • input에 대한 log density gradient의 직관
  • 9장의 data distribution과 generation

5장의 CNN과 U-Net, 7장의 Transformer는 denoiser architecture를 이해하는 데 도움이 되는 선택 배경이다. 이 architecture들을 먼저 배우지 않아도 diffusion의 forward noising과 reverse generation이라는 핵심 개념을 따라갈 수 있다. Markov chain과 stochastic differential equation도 이름과 역할만 알아도 이 장의 핵심 흐름을 따라갈 수 있다.

1. 왜 noise를 추가하는가

고차원 data distribution에서 직접 sample을 뽑는 일은 어렵다. 반면 standard Gaussian noise에서는 sample을 쉽게 뽑을 수 있다. Diffusion은 data distribution과 noise distribution 사이에 많은 중간 단계를 만든다.

Forward process는 깨끗한 data \(x_0\)에 작은 Gaussian noise를 반복해서 더해 \(x_1, x_2, \ldots, x_T\)를 만든다. 충분히 큰 \(T\)에서 \(x_T\)는 data의 세부 구조를 거의 잃고 Gaussian noise에 가까워진다.

한 단계의 대표적인 형태는 다음과 같다.

\[ q(x_t \mid x_{t-1}) = \mathcal{N}\!\left( \sqrt{1-\beta_t}\,x_{t-1}, \beta_t I \right) \]

\(\beta_t\)는 각 단계에서 추가하는 noise 양을 정하는 noise schedule의 일부다. 실제 학습에서는 반복 과정을 모두 실행하지 않고, 선택한 \(t\)의 noisy sample \(x_t\)\(x_0\)에서 직접 만들 수 있는 닫힌 형태를 사용한다.

2. Reverse process는 학습해야 한다

Forward noising은 사람이 정한 process다. 생성하려면 반대로 noise \(x_T\)에서 시작해 조금씩 더 깨끗한 \(x_{T-1}, \ldots, x_0\)를 만들어야 한다. 이 reverse conditional distribution은 알 수 없으므로 neural network가 근사한다.

모델은 noisy input \(x_t\)와 timestep \(t\)를 받는다. Timestep은 현재 sample이 얼마나 noisy한지를 알려준다. Text나 class 같은 조건 \(c\)가 있다면 함께 입력할 수 있다.

\[ \epsilon_\theta(x_t,t,c) \]

대표적인 DDPM 학습에서는 network가 \(x_t\)에 섞인 noise \(\epsilon\)을 예측하도록 한다.

\[ \mathcal{L}_{\text{simple}} = \mathbb{E}_{x_0,\epsilon,t} \left[\lVert \epsilon-\epsilon_\theta(x_t,t,c) \rVert_2^2\right] \]

Data \(x_0\) 자체를 예측하거나, noise와 data를 결합한 velocity-like target을 예측하는 parameterization도 있다. Target이 달라도 목적은 각 noise level에서 깨끗한 방향에 대한 정보를 학습하는 것이다.

3. Training과 generation은 다른 절차다

이 구분은 diffusion을 이해하는 핵심이다.

Training

  1. Training data에서 \(x_0\)를 고른다.
  2. Timestep \(t\)와 Gaussian noise \(\epsilon\)을 sample한다.
  3. \(x_0\)와 noise로 \(x_t\)를 직접 만든다.
  4. Network가 target noise, data 또는 velocity를 예측한다.
  5. 예측 오차를 backpropagation해 parameter를 갱신한다.

Training example 하나를 만들기 위해 매번 전체 reverse chain을 끝까지 실행할 필요는 없다.

Generation

  1. Gaussian noise \(x_T\)에서 시작한다.
  2. Network prediction을 이용해 한 단계 덜 noisy한 sample을 계산한다.
  3. 정한 timestep이나 solver schedule을 따라 반복한다.
  4. 마지막 \(x_0\) 근처의 결과를 output sample로 사용한다.

Generation은 network를 여러 번 호출하므로 one-pass decoder보다 느릴 수 있다. Sampling step 수와 각 step의 비용을 함께 보고 비교해야 한다.

4. Score는 density가 증가하는 방향을 나타낸다

Distribution \(p_t(x)\)score는 input에 대한 log density gradient다.

\[ s_t(x)=\nabla_x \log p_t(x) \]

직관적으로 score는 현재 위치에서 probability density가 더 높은 방향을 가리킨다. 여러 noise level에서 score를 알면 noise 쪽 sample을 data distribution의 밀도가 높은 쪽으로 이동시키는 reverse dynamics를 구성할 수 있다.

Noise prediction과 score prediction은 특정 Gaussian perturbation 설정에서 서로 변환할 수 있다. 따라서 DDPM과 score-based generative modeling은 완전히 분리된 세계라기보다 서로 연결된 관점이다. 하지만 parameterization과 continuous-time formulation의 세부는 구분해야 한다.

Score matching은 normalized density 자체를 계산하지 않고 score를 학습하는 방법군이다. Denoising score matching은 noise를 섞은 data를 이용해 각 noise scale의 score를 학습한다.

5. Denoiser architecture는 별개의 선택이다

Diffusion은 noising process와 training target, sampling rule을 정의하는 생성 방법이다. 실제 prediction network는 데이터 구조에 맞춰 선택한다.

  • Image와 spatial field에서는 U-Net 계열 CNN이 널리 사용된다.
  • Image patch나 latent token에서는 Diffusion Transformer를 사용할 수 있다.
  • 분자와 재료 구조에서는 GNN이나 geometric equivariant network를 사용할 수 있다.
  • Audio와 sequence에는 1D convolution이나 Transformer 계열을 사용할 수 있다.

Diffusion을 쓴다U-Net을 쓴다는 같은 말이 아니다. 하나는 생성 process이고 다른 하나는 denoising function의 architecture다.

6. DDPM과 DDIM의 관계

Denoising Diffusion Probabilistic Model(DDPM)은 정해진 forward Markov chain과 학습된 reverse process를 사용한다. 기본 sampling은 여러 단계에서 noise를 포함하는 stochastic update를 수행한다.

Denoising Diffusion Implicit Model(DDIM)은 같은 계열의 training objective로 학습한 모델에서 다른 non-Markovian generation process를 구성할 수 있음을 보였다. Deterministic한 경로를 선택할 수 있고 더 적은 step의 sampling에 활용된다.

DDIM을 단순히 DDPM보다 항상 빠르고 좋은 후속 모델로 이해하면 안 된다. Step 수를 줄이면 계산량은 줄지만 quality와 diversity, solver error의 trade-off가 생길 수 있다. 비교할 때 같은 network evaluation 수와 sampling 설정을 확인해야 한다.

7. 조건을 얼마나 강하게 따르게 할 것인가

Conditional diffusion은 class, text, 구조 조건, 물성값 등을 denoiser에 제공한다. Guidance는 generation이 조건을 더 강하게 반영하도록 prediction 방향을 조절한다.

Classifier guidance는 noisy sample에서 class를 예측하는 별도 classifier의 gradient를 사용한다. Classifier-free guidance(CFG)는 별도 classifier 없이 같은 diffusion model을 조건이 있는 경우와 없는 경우에 학습하고, sampling 때 두 prediction을 조합한다.

Guidance scale을 높이면 조건을 더 강하게 따르는 결과가 나올 수 있지만, 다양성이 줄거나 artifact가 증가할 수 있다. Prompt를 잘 따른다, 실제처럼 보인다, 다양하다는 별개의 평가축이다.

8. Latent diffusion은 어디에서 denoising하는가

Pixel space에서 고해상도 image를 반복 처리하면 계산량이 크다. Latent diffusion은 pretrained autoencoder로 image를 낮은 차원의 latent representation에 encoding하고, 그 latent space에서 diffusion을 수행한 뒤 decoder로 image를 복원한다.

이 방법은 계산 효율을 높일 수 있지만 autoencoder가 버린 정보나 reconstruction artifact의 영향을 받는다. 9장의 VAE와 연결되지만 모든 latent diffusion이 같은 VAE formulation을 사용하는 것은 아니다. Autoencoder stage와 diffusion stage의 objective도 분리해 봐야 한다.

9. 과학 데이터에서의 적용

Diffusion은 image뿐 아니라 molecule, crystal structure, protein conformation, trajectory, spatial field 생성에도 적용할 수 있다. 이때 사람 눈에 자연스럽다는 평가로 충분하지 않다.

  • Chemical validity와 structural constraint를 만족하는가?
  • 원자 순열과 3차원 rotation, translation에 올바르게 반응하는가?
  • 원하는 composition이나 property condition을 만족하는가?
  • Generated candidate가 simulation이나 experiment에서 유효한가?
  • Training set과 지나치게 가까운 구조를 복제하지 않았는가?

Architecture의 symmetry와 generation process의 constraint를 함께 설계해야 한다.

핵심과 노출 수준 구분

핵심으로 이해할 것

  • Data에서 noise로 가는 fixed forward process와 learned reverse process
  • Noise level 또는 timestep을 denoiser에 제공하는 이유
  • Training은 random timestep 예측, generation은 iterative denoising이라는 차이
  • Noise, data, velocity prediction target의 위치
  • Diffusion formulation과 denoiser architecture의 구분

이름과 위치를 알아둘 것

  • score와 denoising score matching
  • DDPM과 DDIM
  • classifier guidance와 classifier-free guidance
  • latent diffusion
  • diffusion Transformer
  • continuous-time score-based model과 probability-flow ODE

자주 생기는 혼동과 한계

Forward process는 학습 대상이 아닐 수 있다

기본 diffusion에서는 forward noising schedule을 미리 정하고 reverse prediction을 학습한다. 모든 단계가 neural network로 학습되는 것은 아니다.

Denoising은 단순한 image filter가 아니다

Network는 하나의 손상 image를 복원하는 것뿐 아니라 여러 noise level에서 data distribution의 구조를 학습한다. Generation은 순수 noise에서 시작한다.

  • Iterative sampling은 많은 network evaluation을 요구할 수 있다.
  • Training objective의 값이 사람이 인식하는 quality와 정확히 일치하지 않는다.
  • Guidance는 condition fidelity와 diversity 사이의 trade-off를 만든다.
  • Generated sample의 novelty, memorization, safety, scientific validity를 별도로 평가해야 한다.
  • Noise schedule, sampler, step 수가 다르면 같은 checkpoint도 결과가 달라진다.

공통 분석축으로 정리하기

  • 입력과 출력: noisy sample과 timestep, 선택적 condition을 받아 noise, clean data 또는 velocity target을 예측한다.
  • 구조적 가정: 복잡한 data distribution을 여러 noise level을 거쳐 단순한 Gaussian과 연결할 수 있다고 본다.
  • 학습 신호: 알고 있는 injected noise나 그와 동치인 target을 사용한다.
  • Architecture: U-Net, Transformer, GNN 등 data structure에 맞는 denoiser를 선택한다.
  • Baseline과 평가: 다른 생성모델, 단순 sampling method와 quality, diversity, condition fidelity, 계산비용을 함께 비교한다.
  • 실패 조건: 적은 sampling step, 강한 guidance, domain shift, 잘못된 symmetry 또는 validity constraint에서 문제가 생길 수 있다.

앞뒤 장과의 연결

9장의 VAE가 latent variable과 encoder-decoder를 통해 sample을 만든다면 diffusion은 여러 noise level의 denoising으로 generation을 정의한다. 11장의 flow matching은 source distribution과 target distribution 사이의 time-dependent vector field를 직접 regression하는 관점을 소개한다. Continuous-time diffusion과 flow가 수학적으로 연결되는 경우가 있지만, 학습 objective와 path를 같은 것으로 취급해서는 안 된다.

더 읽을 자료

스스로 확인하기

  • Diffusion의 training 과정과 generation 과정은 network를 호출하는 방식이 어떻게 다른가?
  • Noise prediction model과 U-Net architecture를 왜 같은 개념으로 부르면 안 되는가?
  • DDPM과 DDIM을 비교할 때 sampling step 외에 어떤 조건을 맞춰야 하는가?
  • Conditional fidelity와 sample diversity는 왜 하나의 지표로 대체하기 어려운가?