주제: 8-3 DDPM (Denoising Diffusion Probabilistic Model)

분류: generative

타입: concept

난이도: 중급

선수지식: 있음 — 확률분포, Gaussian Noise, Neural Network

DDPM은 "한 번에 이미지를 그리는 모델"이 아니라, "노이즈를 아주 조금씩 걷어내며 샘플을 복원하는 모델"이라고 보면 된다.

GAN처럼 한 번에 이미지를 뽑는 접근과 달리, diffusion 계열은 생성 과정을 수백 단계의 작은 복원 문제로 쪼갠다. 그래서 학습은 비교적 안정적이고 생성 품질도 높지만, 대신 샘플링이 느릴 수 있다.

이 문서를 읽을 때는 forward process와 reverse process를 꼭 짝으로 생각하면 좋다. 학습은 "어떻게 더럽혀졌는지"를 알고, 생성은 "그 더럽혀진 상태를 어떻게 되돌릴지"를 배우는 과정이다.

문제 설정

이미지를 생성하는 또 다른 접근은 점진적으로 노이즈를 제거하는 것입니다.

핵심 아이디어:

이 방식이 Diffusion Model이며 대표 모델이 DDPM입니다.

DDPM은 "한 번에 이미지를 그리는 모델"이 아니라, "노이즈를 아주 조금씩 걷어내며 샘플을 복원하는 모델"이라고 보면 된다.

GAN처럼 한 번에 이미지를 뽑는 접근과 달리, diffusion 계열은 생성 과정을 수백 단계의 작은 복원 문제로 쪼갠다. 그래서 학습은 상대적으로 안정적이고, 생성 품질도 매우 좋지만, 대신 샘플링이 느려질 수 있다.

이 문서를 읽을 때는 forward process와 reverse process를 꼭 짝으로 생각하면 좋다. 학습은 "어떻게 더럽혀졌는지"를 알고, 생성은 "그 더럽혀진 상태를 어떻게 되돌릴지"를 배우는 과정이다.

시각 자료로 먼저 보기

forward diffusion 과정 예시
원본 이미지에 단계적으로 노이즈를 섞으면 결국 거의 완전한 잡음으로 바뀐다는 DDPM의 forward process를 보여준다.
원본 / 라이선스 · MrAlanKoh · CC BY-SA 4.0
diffusion model 아키텍처 그림
노이즈 추가와 제거, 예측 네트워크, 샘플링 흐름을 포함한 diffusion 모델 전체 구조도다.
원본 / 라이선스 · Rombach et al. · CC BY 4.0
Stable Diffusion 아키텍처 그림
DDPM 계열 아이디어가 latent 공간으로 확장된 Stable Diffusion 구조. diffusion 계열이 실제 시스템으로 어떻게 이어지는지도 보여준다.
원본 / 라이선스 · LMU Munich · MIT License

1. DDPM 핵심 아이디어

DDPM은 두 단계로 구성됩니다.

단계 설명
Forward Process 이미지에 노이즈 추가
Reverse Process 노이즈 제거

Real Image
   ↓
Noise Addition
   ↓
Pure Noise
   ↓
Denoising Model
   ↓
Generated Image

2. Forward Diffusion Process

forward 과정에서는 이미지에 점진적으로 Gaussian noise를 추가합니다.

q(xt|xt1)=N((1βt)xt1,βtI)

기호 의미

왜 필요한가

데이터를 점진적으로 noise distribution으로 변환합니다.

주의점

β 값이 너무 크면 정보가 너무 빨리 사라집니다.

3. Closed-form 표현

forward process는 다음과 같이 표현할 수 있습니다.

xt=(ᾱt)x0+(1ᾱt)ε

기호 의미

왜 중요한가

任의의 timestep의 noisy image를 바로 계산할 수 있습니다.

4. Reverse Diffusion Process

reverse 과정은 노이즈를 제거하여 이미지를 복원합니다.

pθ(xt1|xt)

기호 의미

모델은 다음 값을 예측합니다.

εθ(xt,t)

왜 필요한가

현재 noisy image에서 noise를 추정합니다.

5. DDPM 학습 목표

DDPM은 noise prediction을 학습합니다.

L=E[||εεθ(xt,t)||²]

기호 의미

왜 필요한가

정확한 noise 제거 모델을 학습합니다.

주의점

loss는 MSE 기반입니다.

6. Generation 과정

생성은 pure noise에서 시작합니다.


x_T ~ N(0, I)
   ↓
x_T-1
   ↓
x_T-2
   ↓
...
   ↓
x_0

즉 노이즈를 점진적으로 제거합니다.

7. Diffusion 직관

모델은 복원 과정을 학습합니다.

8. GAN vs Diffusion

특징 GAN Diffusion
학습 구조 min-max game denoising
training stability 불안정 안정적
sampling speed 빠름 느림

9. Diffusion 구조


Image
 ↓
Forward Noise
 ↓
Gaussian Noise
 ↓
Reverse Model (U-Net)
 ↓
Generated Image

대부분 diffusion 모델은 U-Net 구조를 사용합니다.

코드-수식 연결

개념 코드 설명
noise 생성 torch.randn_like(x) Gaussian noise
forward noise x_t = sqrt_alpha * x0 + sqrt_beta * noise noisy image 생성
noise prediction model(x_t,t) noise estimation

자주 하는 오해 5개

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