주제: 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:
기호 의미
- x_t : timestep t의 noisy sample
- ε_θ : 모델이 예측한 noise
- σ_t z : random Gaussian noise
왜 필요한가
노이즈를 제거하며 데이터를 복원합니다.
주의점
각 step마다 랜덤 노이즈가 추가되므로 sampling이 stochastic합니다.
2. DDPM 문제
- 1000 step sampling 필요
- inference 매우 느림
sampling complexity:
3. DDIM 핵심 아이디어
DDIM은 reverse process를 deterministic trajectory로 바꿉니다.
즉:
- noise injection 제거
- sampling step 감소
4. DDIM Sampling Equation
DDIM update:
여기서
기호 의미
- x_0 : 예측된 원본 이미지
- ᾱ_t : cumulative noise schedule
왜 중요한가
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:
- random walk sampling
DDIM:
- deterministic path
즉 동일 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을 유지합니다.
즉:
분포는 동일하지만 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개
- DDIM은 새로운 diffusion 모델이라고 생각한다
- DDIM은 학습이 필요하다고 생각한다
- DDIM은 항상 품질이 더 좋다고 생각한다
- DDPM과 완전히 다른 구조라고 생각한다
- deterministic sampling이 항상 좋은 결과를 만든다고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- DDPM sampling이 느린 이유는 무엇인가?
- DDIM은 어떤 방식으로 sampling을 가속하는가?
- DDPM과 DDIM의 sampling 차이는 무엇인가?
- 왜 DDIM은 같은 모델을 사용할 수 있는가?
- deterministic sampling의 장점은 무엇인가?