본문 바로가기
IT

Diffusion Model이란? 개념부터 증명까지 한 번에 정리

by Sense.

목차

    1. Diffusion Model 개요

    Diffusion Model은 데이터(예: 이미지)에 점진적으로 노이즈를 추가(Forward)해 완전 노이즈 상태에 이른 후, 이를 거꾸로 추정(Reverse)해 노이즈를 제거하여 원본 데이터를 복원(또는 새롭게 생성)하는 확률적 생성 모델입니다.

    이 그림은 **Forward Process**(아래쪽 화살표)를 통해 원본 이미지(\(x_0\))가 단계적으로 노이즈가 추가된 상태(\(x_t\))를 거쳐 완전 노이즈(\(x_T\))로 바뀌는 과정을, 그리고 **Reverse Process**(위쪽 화살표)를 통해 그 노이즈 상태(\(x_T\))에서 역으로 노이즈를 제거해 원본 이미지(\(x_0\))를 복원하는 과정을 동시에 나타낸 그림입니다. 맨 오른쪽에는 최종적으로 깨끗한 얼굴 이미지가 복원된 모습을 보여줍니다.
    Diffusion Model

     

    • Forward process (정방향 확산):
      \(\mathbf{x}_0 \to \mathbf{x}_1 \to \cdots \to \mathbf{x}_T\),
      이때 마지막 \(\mathbf{x}_T\)는 거의 순수 노이즈.
    • Reverse process (역방향 복원):
      \(\mathbf{x}_T \to \mathbf{x}_{T-1} \to \cdots \to \mathbf{x}_0\),
      학습된 모델 \(p_\theta\)로 노이즈를 단계별로 제거.

    2. Forward Process: 데이터에 노이즈 추가

    2.1 정의: \(q(\mathbf{x}_t \mid \mathbf{x}_{t-1})\)

    Forward process는 마코프 체인으로 정의합니다:

    \[ q(\mathbf{x}_{1:T}\mid \mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1}), \] \[ \boxed{ q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) = \mathcal{N}\Bigl(\mathbf{x}_t;\,\sqrt{1-\beta_t}\,\mathbf{x}_{t-1},\,\beta_t \mathbf{I}\Bigr). } \]

    • \(\beta_t\)는 단계 \(t\)마다 노이즈가 섞이는 강도(‘노이즈 스케줄’).
    • \(\mathbf{x}_0\)는 원본 데이터.

    점차 노이즈가 추가되어, 최종 \(\mathbf{x}_T\)는 거의 순수 노이즈 상태가 됩니다.

    2.2 임의 시점 샘플링

    가우시안 마코프 체인이므로, 한 번에 \(x_0\to x_t\)를 샘플링할 수도 있습니다. 보통

    \[ \alpha_t = 1 - \beta_t, \quad \bar{\alpha}_t = \prod_{s=1}^t \alpha_s, \] 하면,

    \[ q(\mathbf{x}_t \mid \mathbf{x}_0) = \mathcal{N}\Bigl( \mathbf{x}_t;\, \sqrt{\bar{\alpha}_t}\,\mathbf{x}_0, \,(1-\bar{\alpha}_t)\mathbf{I} \Bigr). \]

    3. Reverse Process: 노이즈 제거 및 복원

    3.1 정의: \(p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t)\)

    Forward process는 우리가 직접 설계했지만, 역방향으로 “\(\mathbf{x}_t\)에서 \(\mathbf{x}_{t-1}\)”를 정확히 복원하는 진짜 분포는 알기 어렵습니다.
    따라서, 가우시안 형태로 가정하고, 신경망(파라미터 \(\theta\))을 학습해 이를 근사합니다:

    \[ p_\theta(\mathbf{x}_{0:T}) = p_\theta(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t), \] \[ \boxed{ p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t) = \mathcal{N}\Bigl( \mathbf{x}_{t-1};\,\mu_\theta(\mathbf{x}_t, t), \,\Sigma_\theta(\mathbf{x}_t, t) \Bigr). } \]

    • 초기 분포 \(p_\theta(\mathbf{x}_T) = \mathcal{N}(\mathbf{0},\mathbf{I})\) (노이즈).
    • 학습 후에는 \(\mathbf{x}_T\sim \mathcal{N}(\mathbf{0},\mathbf{I})\)에서 시작해, 단계별 역방향(노이즈 제거)을 수행하면 새로운 \(\mathbf{x}_0\)(이미지 등)를 얻을 수 있음.

    4. 손실 함수(ELBO) 유도 과정

    4.1 목표: \(-\log p_\theta(\mathbf{x}_0)\) 최소화

    Diffusion Model의 학습 목표: 데이터 \(\mathbf{x}_0\) 우도 \(p_\theta(\mathbf{x}_0)\)를 최대화(혹은 \(-\log p_\theta(\mathbf{x}_0)\) 최소화).
    이걸 직접 최적화하기는 어려워서, Forward process \(q\)를 이용한 변분추론 기법을 씁니다.

    \[ \boxed{ - \log p_\theta(\mathbf{x}_0) \;\le\; \mathbb{E}_{q(\mathbf{x}_{1:T}\mid \mathbf{x}_0)} \Bigl[ \log \tfrac{q(\mathbf{x}_{1:T}\mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \Bigr] \;\equiv\; L. } \]

    • 우변 \(L\)을 ELBO라 부르고, 이걸 최소화하면 \(-\log p_\theta(\mathbf{x}_0)\)도 감소.

    4.2 단계별 KL 분해 (상세 전개)

    \[ L = \mathbb{E}_q\Bigl[ \log q(\mathbf{x}_{1:T}\mid \mathbf{x}_0) - \log p_\theta(\mathbf{x}_{0:T}) \Bigr]. \]

    이때,

    1. Forward:
      \[ q(\mathbf{x}_{1:T}\mid \mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t\mid \mathbf{x}_{t-1}), \] \(\log\)를 취해 \(\sum_{t=1}^T \log q(\mathbf{x}_t\mid \mathbf{x}_{t-1})\) 형태.
    2. Reverse:
      \[ p_\theta(\mathbf{x}_{0:T}) = p_\theta(\mathbf{x}_T)\prod_{t=1}^T p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t), \] \(\log\)를 취해 \(\log p_\theta(\mathbf{x}_T) + \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t)\) 형태.

    \[ L = \mathbb{E}_q \bigl[ \sum_{t=1}^T \log q(\mathbf{x}_t\mid \mathbf{x}_{t-1}) - \log p_\theta(\mathbf{x}_T) - \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t) \bigr]. \]

    이제 Bayes 식으로
    \[ \log q(\mathbf{x}_{t-1}\mid \mathbf{x}_t,\mathbf{x}_0) = \dots \]
    을 대입해가며 단계별 묶기를 하면, 결국 KL Divergence가 생깁니다:

    \[ \mathbb{E}_q\Bigl[\log\tfrac{q(\mathbf{x}_{t-1}\mid \mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t)}\Bigr] = \mathrm{KL}\bigl(q\|\!p_\theta\bigr). \]

    최종 결괏값은

    \[ \boxed{ L = \mathrm{KL}\bigl(q(\mathbf{x}_T\mid x_0)\,\|\,p_\theta(\mathbf{x}_T)\bigr) + \sum_{t=2}^T \mathrm{KL}\bigl(q(\mathbf{x}_{t-1}\mid \mathbf{x}_t,x_0)\,\|\,p_\theta(\mathbf{x}_{t-1}\mid \mathbf{x}_t)\bigr) - \mathbb{E}_q[\log p_\theta(x_0\mid x_1)]. } \]

    • 첫 항: \(\mathbf{x}_T\)분포(\(q\) vs. \(p_\theta\)) 차이
    • 가운데 항: 각 단계별 KL
    • 마지막 항: \(-\log p_\theta(\mathbf{x}_0\mid x_1)\) (음의 로그우도, 원본 복원 항)

    4.3 실제 구현

    Forward/Reverse 과정이 가우시안으로 정의되어 있어, 이 KL 항들은 가우시안 KL폐쇄형(Closed-form) 계산이 됩니다.
    DDPM에서는 이를 더욱 단순화해, “노이즈 예측(MSE)” 형태로 최적화하기도 합니다(“Ho et al. (2020)”).

    5. 결론 및 요약

    1. Forward process(\(q\)): 원본 데이터에 단계별로 노이즈를 섞어 \(x_T\)는 순수 노이즈 상태가 되도록 정의.
    2. Reverse process(\(p_\theta\)): 노이즈에서 원본으로 가는 경로를 학습(가우시안 근사).
    3. ELBO: \(-\log p_\theta(x_0)\) 대신
      \[ L = \mathbb{E}_q\Bigl[\log \tfrac{q}{p_\theta}\Bigr] \] 를 최소화 → 각 단계에서의 분포 차이(KL)가 사라지도록 학습.
    4. 학습 완료 후, 무작위 노이즈로부터 역방향을 진행해 데이터 샘플을 생성 가능.

    핵심 포인트

    • “노이즈 추가” + “노이즈 제거” = 가우시안 마코프 체인
    • 손실 함수Forward vs Reverse 간 KL들의 합 + 마지막 복원항으로 표현
    • 학습 후에는, 무작위 노이즈새로운 이미지(또는 텍스트·그래프 등)로 바뀔 수 있음.

    6. 참고: 노이즈 예측 (실무 팁)

    연구/실무에서 DDPM을 구현할 때, 각 단계 \(t\)에서 신경망이 “\(\mathbf{x}_t\)에 섞인 노이즈 \(\epsilon\)” 자체를 예측하도록 설계해,

    \[ \mathcal{L} = \mathbb{E}_{t,\mathbf{x}_0,\epsilon} \bigl\|\epsilon - \epsilon_\theta(\mathbf{x}_t, t)\bigr\|^2 \]

    형태로 MSE를 최소화하는 것이 학습이 간단하고 결과도 우수합니다. 이 방식은 ELBO 항들과 등가(等價)하거나 근사한 효과를 내므로, 구현 상 편리하게 쓰입니다.

    7. 마무리

    Diffusion Model은 위 수식 유도 과정을 통해,

    • Forward로 데이터에 점진적으로 노이즈를 추가하고,
    • Reverse로 노이즈를 제거해 원본을 복원하는 가우시안 마코프 체인을 구축,
    • \(-\log p_\theta(x_0)\)에 대한 변분추론(ELBO)를 최소화함으로써, “무작위 노이즈 → 실제 데이터”를 잘 수행하도록 학습됩니다.

    결국 그림에서 보이듯, Forward는 \(\mathbf{x}_0\to\mathbf{x}_T\) 방향(노이즈화), Reverse는 \(\mathbf{x}_T\to\mathbf{x}_0\) 방향(복원)이며, 이 두 분포의 차이를 KL Divergence로 표현해 각 단계에서 줄여나가는 것이 Diffusion Model의 핵심 아이디어라 할 수 있습니다.

    Diffusion model 파이썬 코드 보러가기

    • 트위터 공유하기
    • 페이스북 공유하기
    • 카카오톡 공유하기