주제: 8-5 Diffusion Sampling (DDIM과 DDPM 비교)

분류: generative

타입: concept

난이도: 중상

선수지식: 있음 — DDPM, 확률분포, Noise Prediction

문제 설정

DDPM(Denoising Diffusion Probabilistic Model)은 고품질 이미지를 생성하지만 sampling 속도가 매우 느립니다.

이유:


x_T → x_T-1 → x_T-2 → ... → x_0

보통 1000 step 정도의 reverse diffusion을 수행해야 합니다.

이 문제를 해결하기 위해 제안된 방법이 DDIM (Denoising Diffusion Implicit Models)입니다.

1. DDPM Sampling

DDPM의 reverse step:

xt1=(1/αt)(xt(1αt)/(1ᾱt)εθ(xt,t))+σtz

기호 의미

왜 필요한가

노이즈를 제거하며 데이터를 복원합니다.

주의점

각 step마다 랜덤 노이즈가 추가되므로 sampling이 stochastic합니다.

2. DDPM 문제

sampling complexity:

O(T)

3. DDIM 핵심 아이디어

DDIM은 reverse process를 deterministic trajectory로 바꿉니다.

즉:

4. DDIM Sampling Equation

DDIM update:

xt1=ᾱt1x0+(1ᾱt1)εθ(xt,t)

여기서

x0=(xt(1ᾱt)εθ(xt,t))/ᾱt

기호 의미

왜 중요한가

noise를 추가하지 않고 deterministic하게 sampling 가능합니다.

주의점

DDIM은 DDPM과 같은 모델을 사용하지만 sampling 방식만 다릅니다.

5. Sampling Step Reduction

DDPM:


1000 steps

DDIM:


20 ~ 100 steps

즉 sampling이 크게 가속됩니다.

6. Deterministic Sampling

DDIM에서는 다음과 같이 동작합니다.


x_t → predict x_0
   → compute x_{t-1}

random noise가 제거됩니다.

7. DDIM 직관

DDPM:

DDIM:

즉 동일 noise에서 항상 같은 결과가 나옵니다.

8. DDPM vs DDIM

특징 DDPM DDIM
sampling stochastic deterministic
step 수 ~1000 20~100
속도 느림 빠름

9. DDIM Sampling 절차


x_T ~ N(0,I)
   ↓
predict noise
   ↓
estimate x_0
   ↓
compute x_{t-1}
   ↓
repeat

10. 왜 같은 모델로 가능할까?

DDIM은 DDPM의 forward process와 동일한 marginal distribution을 유지합니다.

즉:

q(xt|x0)

분포는 동일하지만 sampling path가 달라집니다.

코드-수식 연결

개념 코드 설명
noise prediction eps = model(x_t,t) noise estimation
x0 reconstruction x0 = (x_t - sqrt_beta * eps)/sqrt_alpha original sample estimate
DDIM step x_prev = alpha_prev*x0 + sigma*eps deterministic sampling

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)