PaperReview

[DDPM]Denoising Diffusion Probabilistic Models

Black940514 2026. 1. 7. 15:38

[DDPM] DDPM

저자: N/A
발행년도: None년
인용수: None회


1. 문제 정의 (Problem Definition)

DDPM(Denoising Diffusion Probabilistic Models)이 정면으로 다뤘던 문제는 “고해상도 이미지 같은 복잡한 데이터 분포를, 학습이 안정적이면서도 샘플 품질이 높은 방식으로 생성할 수 있는가”였다. 생성 모델은 늘 “그럴듯한 이미지를 만든다” 수준을 넘어, 데이터 분포를 제대로 학습하고 모드 붕괴 없이 다양한 샘플을 내는 것이 핵심 과제였다고 봤다.

기존 생성 모델들은 대체로 한 번에 이미지를 뽑거나(예: GAN), 잠재변수에서 바로 복원하거나(예: VAE), 혹은 자기회귀적으로 픽셀을 순차 생성하는 방식이었다. 그런데 실제 환경 데이터는 조명 변화, 센서 노이즈, 도메인 시프트, 배경 다양성 같은 요인 때문에 분포가 쉽게 찌그러졌고, 이런 상황에서 “학습이 안정적이면서도 품질이 좋은” 모델을 동시에 만족시키기 어려웠다.

DDPM이 문제를 다시 정의한 지점은 “생성”을 한 번에 해결하려고 하지 않고, “노이즈가 섞인 상태에서 원래 이미지를 복원하는 문제를 반복해서 풀면, 생성은 그 반복의 결과로 따라온다”고 본 관점이었다. 현실 데이터에서 노이즈는 피할 수 없는 요소였고, 노이즈 제거는 지도학습 형태로 만들기 쉬운 문제였기 때문에, 이 방향은 실무적으로도 의미가 컸다고 정리할 수 있었다.


2. 기존 방법의 한계 (Motivation)

GAN 계열은 고품질 샘플을 내는 데 강점이 있었지만, 학습이 불안정하고 모드 붕괴가 발생하기 쉬웠다. 판별기-생성기의 게임 구조는 작은 하이퍼파라미터 변화에도 균형이 무너졌고, 데이터셋이 바뀌거나 도메인이 달라지면 다시 튜닝 비용이 크게 들었다. “잘 되면 최고지만, 안 되면 이유를 찾기 어려운” 성격이 실무에서 특히 부담이었다.

VAE 계열은 학습이 안정적이고 확률모형으로 해석이 쉬웠지만, 픽셀 공간의 단순한 가정(예: 가우시안 likelihood) 때문에 결과가 흐릿해지는 문제가 자주 나타났다. 즉 “다양성”과 “안정성”은 가져가지만, “선명도와 디테일”에서 손해를 보는 경우가 많았다.

자기회귀 모델은 로그우도 관점에서 강력했고 모드 붕괴 같은 이슈가 상대적으로 덜했지만, 픽셀 단위 순차 생성 때문에 샘플링이 너무 느렸다. 또한 장거리 의존성을 처리하기 위해 모델을 크게 키워야 했고, 계산량이 빠르게 증가했다.

이런 배경에서 새로운 접근이 필요했던 이유는 명확했다. 고품질을 내면서도 학습이 안정적이고, 확률적 해석이 가능하며, 무엇보다 “현실 데이터의 복잡한 변동성”을 다룰 때 튜닝 지옥을 줄일 수 있는 프레임이 필요했다. DDPM은 그 해법을 “점진적 노이즈 주입과 점진적 복원”이라는 형태로 제시했다.


3. 제안 방법의 핵심 아이디어 (Key Idea)

DDPM의 핵심 아이디어는 “데이터에 노이즈를 조금씩 섞어 완전히 무작위(가우시안)로 만든 뒤, 그 과정을 반대로 되돌리는 모델을 학습하면 생성이 된다”였다.

직관적으로는 사진 한 장을 생각하면 이해가 쉬웠다. 원본 사진에 아주 약한 잡음을 여러 번 누적해서 결국 완전히 지글지글한 노이즈 이미지로 만든다고 가정했다. 그러면 “원본 → 노이즈”는 규칙적으로 정의할 수 있었고(우리가 노이즈를 넣으니까), 반대로 “노이즈 → 원본”을 되돌리는 모델만 학습하면 생성이 가능했다. 이때 중요한 점은, 한 번에 원본을 복구하는 게 아니라 “아주 조금 더 깨끗하게 만드는 단계”를 수십~수천 번 반복하도록 만든 구조였다는 점이었다.

기존 방법과의 차별점은 여기서 분명해졌다. GAN처럼 한 번에 고해상도 이미지를 맞추는 게임을 하지 않았고, VAE처럼 잠재공간을 잘 설계해 한 번에 복원하는 부담을 지지 않았다. 대신 “쉬운 문제(노이즈 제거)를 매우 많이 푸는 방식으로 어려운 문제(생성)를 푼다”는 전략을 채택했다.


4. 아키텍처 설명 (Architecture)

DDPM 파이프라인은 크게 “정방향 확산(Forward diffusion)”과 “역방향 생성(Reverse process)” 두 흐름으로 구성됐다고 설명할 수 있었다.

정방향 확산은 학습 데이터 (x_0)에 대해 작은 가우시안 노이즈를 단계적으로 추가해 (x_1, x_2, ..., x_T)를 만드는 과정이었다. 이 과정은 사람이 설계한 고정 마르코프 체인이었고, 충분히 큰 (T)에서 (x_T)는 거의 표준 가우시안 노이즈가 되도록 구성했다. 여기서의 설계 의도는 “복잡한 데이터 분포를, 우리가 샘플링하기 쉬운 단순 분포(가우시안)로 확실히 보내버리자”였다.

역방향 생성은 반대로 (x_T \sim \mathcal{N}(0, I))에서 시작해 (x_{T-1}, ..., x_0)로 점진적으로 복원하는 과정이었다. 이때 각 단계의 역전이 (p_\theta(x_{t-1} \mid x_t))를 신경망으로 근사했다. 실무적으로 중요한 포인트는, DDPM이 “직접 (x_{t-1})을 예측”하기보다 “노이즈 (\epsilon)을 예측하는 형태”로 학습 문제를 정리했다는 점이었다. 왜냐하면 각 시점의 (x_t)는 “원본 + 노이즈”의 조합으로 표현 가능했고, 노이즈를 맞추는 것이 회귀 문제로 깔끔해졌기 때문이었다.

 

전체 흐름을 pseudo-code로 요약하면 아래처럼 이해할 수 있었다.

 

# training
for x0 in data:
    t ~ Uniform({1..T})
    eps ~ Normal(0, I)
    xt = add_noise(x0, t, eps)     # forward diffusion, closed-form
    eps_pred = model(xt, t)        # usually U-Net with timestep embedding
    loss = ||eps - eps_pred||^2
    update(model, loss)

# sampling
xT ~ Normal(0, I)
x = xT
for t in reversed(1..T):
    eps_pred = model(x, t)
    x = denoise_step(x, t, eps_pred)  # compute mean, add noise except at t=1
return x  # x0

 

이 구조가 문제 해결에 적합했던 이유는, 생성이라는 어려운 목표를 “조건부 노이즈 제거”라는 학습 가능한 단위 문제로 분해했기 때문이었다. 각 단계는 로컬하게는 단순한 가우시안 전이를 다루고, 글로벌하게는 많은 단계가 합쳐져 복잡한 분포를 재구성했다. 즉 복잡도를 시간축(확산 단계)으로 분산시키는 방식이었다.


5. 접근 방법의 특징 및 설계 의도 (Design Choices)

DDPM의 대표적 설계 선택은 “노이즈 스케줄(beta schedule)”과 “노이즈 예측 파라미터화(ε-prediction)”였다. 노이즈 스케줄은 각 단계에서 얼마나 노이즈를 넣을지를 결정했는데, 너무 빨리 노이즈를 키우면 정보가 급격히 사라져 역과정이 어려워졌고, 너무 천천히 키우면 단계 수가 늘어나 샘플링이 지나치게 느려졌다. 즉 스케줄은 품질-속도-학습난이도의 균형점 역할을 했다.

노이즈 예측을 택한 이유는 학습 타깃이 안정적이었기 때문이라고 해석했다. (x_{t-1})이나 (x_0)를 직접 예측하면 시점마다 분포 스케일이 달라져 회귀 난이도가 커졌는데, (\epsilon)은 항상 표준정규에 가까운 타깃이라 목적함수가 단순해졌다. 실무 관점에서 이는 “학습이 잘 굴러가는 손실”을 만든 선택으로 볼 수 있었다.

또 하나의 설계 포인트는 timestep (t)를 네트워크에 명시적으로 조건으로 넣었다는 점이었다. 동일한 U-Net(혹은 유사한 CNN)이더라도, 초반 단계에서는 거친 구조를 복원해야 하고 후반 단계에서는 미세 디테일을 복원해야 했다. 따라서 모델이 “지금이 몇 단계인지”를 알아야 서로 다른 복원 전략을 쓸 수 있었고, timestep embedding은 그 목적을 수행했다.

다른 대안과 비교하면 장단점이 분명했다. GAN 대비 장점은 학습 안정성과 확률모형적 해석이었고, 단점은 샘플링 속도였다. VAE 대비 장점은 샘플 품질이었고, 단점은 단계적 생성으로 인한 계산 비용이었다. DDPM은 “학습을 안정적으로 만들기 위해 샘플링 비용을 지불한 구조”였다고 정리했다.


6. 실험 결과 요약 (선택)

DDPM이 실험으로 보여준 핵심은 “확산 기반 모델이 단순히 이론적으로 우아한 게 아니라, 실제 이미지 생성 품질에서도 경쟁력 있다”는 가설을 검증했다는 점이었다. 특히 기존에 “GAN이 품질을 책임지고, likelihood 모델이 안정성을 책임진다”는 구도가 있었는데, DDPM은 그 경계를 흐렸다. 확률모형 기반 접근이면서도 샘플 품질을 상당히 끌어올릴 수 있음을 보여줬다고 해석했다.

또한 단계 수, 노이즈 스케줄, 파라미터화 방식이 성능과 샘플 특성에 영향을 준다는 점이 드러났고, 이는 이후 연구들이 “더 빠르게 샘플링하는 diffusion”으로 집중하게 되는 계기를 만들었다고 봤다. 즉 ablation은 단순 튜닝이 아니라, 확산 모델의 병목이 ‘샘플링 단계 수’라는 구조적 사실을 확인하는 의미가 있었다.


7. 개인적인 해석 및 실무 관점 코멘트

실무에서 DDPM 프레임이 유용했던 지점은 “노이즈 제거”라는 형태로 문제를 재구성했기 때문에 데이터 변형과 조건부 생성으로 확장하기 쉬웠다는 점이었다. 예를 들어 이미지 복원(denoising, deblurring), 인페인팅, super-resolution 같은 문제는 본질적으로 “손상된 입력에서 원본을 복구”하는데, 확산 모델은 이 목표와 결이 맞았다. 조건을 넣는 방식으로 텍스트 조건, 마스크 조건, 저해상도 조건 등을 자연스럽게 붙일 수 있었고, 이는 이후 실제 제품 수준의 생성 시스템으로 이어지기 쉬운 구조였다.

반대로 현실적인 단점도 컸다. 가장 큰 것은 계산량이었다. 학습 자체도 무겁지만, 특히 샘플링이 단계 반복이라 지연 시간이 커졌다. 서비스 환경에서 “한 장 생성에 수 초”가 걸리면 UX가 무너질 수 있었고, 그래서 distillation, 가속 샘플러, fewer-step diffusion 같은 후속 연구가 필수처럼 따라붙었다. 또한 데이터 요구량 측면에서도, 고품질 생성은 결국 충분한 다양성과 정제된 데이터가 필요했고, 도메인 특화에서는 데이터 큐레이션 비용이 크게 작용했다.

개선 아이디어 관점에서는, DDPM이 열어준 질문이 명확했다고 봤다. “같은 품질을 더 적은 단계로 만들 수 있는가, 혹은 같은 단계에서 더 좋은 조건부 제어를 할 수 있는가”였다. 실무적으로는 모델 구조(U-Net 변형, attention 도입), 샘플링 가속(DDIM류, solver 기반), 학습 목표(ε 대신 v-parameterization 같은 변형)로 이어지는 선택지가 생겼고, 팀의 제약(지연 시간, GPU 비용, 목표 품질)에 따라 설계 공간이 넓어졌다고 정리했다.

결국 DDPM은 생성 모델을 “불안정한 게임”에서 “반복 가능한 복원 문제”로 바꿔 놓았고, 이 관점 변화가 이후 확산 모델 붐의 출발점이 됐다고 설명했다.