Diffusion Model 완벽 가이드 | Diffusion Model 설명과 증명 과정

1. Diffusion Model이란 무엇인가요?

Diffusion Model은 딥 러닝을 활용한 생성 모델(Deep Generative Model) 중 하나로, 데이터(예: 이미지)에 점진적으로 노이즈를 더해가며(\(q\): Forward Process) 완전한 노이즈 상태를 만든 뒤, 다시 그 노이즈에서 원본 데이터로 복원(\(p_\theta\): Reverse Process)하는 과정을 학습하는 방식입니다. 쉽게 말해, 원본 이미지를 점차 흐릿하게 만들었다가 다시 선명하게 복구하는 과정을 통해 새로운 데이터를 생성합니다.

  • Forward Process \((q)\)
    데이터 \(\mathbf{x}_0\)에 가우시안 노이즈를 조금씩 더해가며 \(\mathbf{x}_T\) (순수 노이즈 상태)에 이르는 마코프 체인입니다.
  • Reverse Process \((p_\theta)\)
    위 과정을 반대로 추정하여, \(\mathbf{x}_T\)로부터 원본 데이터 \(\mathbf{x}_0\)에 가깝게 복원해 나가는 과정입니다.

이를 그림으로 표현하면 아래와 같은 흐름입니다.

이 이미지는 확산 모델(Diffusion Model)의 개념을 보여주며, **Forward Process(정방향 과정)**에서는 원본 이미지 \( x_0 \)에 점진적으로 노이즈를 추가하여 완전한 노이즈 이미지 \( x_T \)를 생성하고, **Reverse Process(역방향 과정)**에서는 학습된 확률 모델 \( p_\theta(x_{t-1} | x_t) \)을 사용하여 점진적으로 노이즈를 제거하며 원본 이미지를 복원하는 과정을 나타냅니다.
  • \(\mathbf{x}_0\): 실제 데이터(예: 얼굴 이미지)
  • \(\mathbf{x}_T\): 완전한 노이즈(표준정규분포를 따르는 무작위 텐서)
  • \(\mathbf{x}_t\): 중간 단계에서 노이즈가 포함된 데이터 형태의 잠재 변수(latent variable)

학습이 완료되면, 임의의 노이즈 \(\mathbf{x}_T\)에서 시작해 고해상도 이미지를 생성하거나, 다른 형태의 데이터(음성, 텍스트 등)까지 생성할 수 있게 됩니다.

2. Forward Process (노이즈를 더해가는 과정)

2.1 정의

Forward Process \(\;q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)\)는 다음과 같은 마코프 체인(Markov chain) 형태로 정의됩니다.

\[ q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) = \prod_{t=1}^{T} q(\mathbf{x}_t \mid \mathbf{x}_{t-1}), \]

여기서 각 전이 확률은 가우시안 분포를 따르며:

\[ 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\)는 각 단계에서 추가되는 노이즈의 양을 결정하는 하이퍼파라미터입니다.

2.2 한 번에 \(\mathbf{x}_t\) 샘플링하기

Forward Process를 활용하면, \(\mathbf{x}_0\)가 주어졌을 때 임의의 시점 \(t\)에서 \(\mathbf{x}_t\)를 직접 샘플링할 수 있습니다. 이를 증명하기 위해, \(q(\mathbf{x}_t \mid \mathbf{x}_0)\)를 유도하면 다음과 같습니다:

각 단계가 가우시안 분포를 따르고 마코프 특성을 가짐에 따라, \(\mathbf{x}_t\)는 \(\mathbf{x}_0\)에 대한 가우시안 분포로 표현됩니다. \(q(\mathbf{x}_t \mid \mathbf{x}_{t-1})\)를 반복 적용하면:

\[ 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), \]

여기서 \(\bar{\alpha}_t = \prod_{s=1}^t (1 - \beta_s)\)이고, \(\alpha_s = 1 - \beta_s\)입니다. 이는 각 단계의 노이즈 누적 효과를 반영하며, \(\mathbf{x}_t\)가 \(\mathbf{x}_0\)에서 점진적으로 변형된 분포임을 보여줍니다.

3. Reverse Process (노이즈에서 데이터로 복원)

3.1 정의

Reverse Process \(\;p_\theta(\mathbf{x}_{0:T})\)는 \(\mathbf{x}_T\) (거의 노이즈 상태)에서부터 \(\mathbf{x}_0\) (원본 데이터)에 이르는 확률분포를 학습합니다. 이는 다음과 같이 표현됩니다:

\[ p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t), \]

여기서 \(p(\mathbf{x}_T) = \mathcal{N}(\mathbf{x}_T; \mathbf{0}, \mathbf{I})\)는 표준정규분포로 초기화되며, 각 단계의 조건부 분포는 가우시안으로 가정됩니다:

\[ p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) = \mathcal{N}\bigl(\mathbf{x}_{t-1}; \boldsymbol{\mu}_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t)\bigr), \]

\(\boldsymbol{\mu}_\theta\)와 \(\Sigma_\theta\)는 신경망으로 파라미터화되어 학습됩니다.

3.2 직관

Reverse Process는 Forward Process로 인해 생긴 노이즈를 단계적으로 제거하며 원본 데이터에 가까워지는 과정입니다. 학습이 끝나면, 무작위 노이즈 \(\mathbf{x}_T\)에서 시작해 \(\mathbf{x}_0\)를 생성할 수 있습니다.

4. ELBO(Variational Lower Bound)로 보는 학습 과정

4.1 학습 목표

Diffusion Model은 모델이 생성한 분포 \(p_\theta(\mathbf{x}_0)\)가 실제 데이터 분포에 가깝도록 학습합니다. 이를 위해 Variational Lower Bound (ELBO)를 최소화하며, 이는 로그 가능도 \(\log p_\theta(\mathbf{x}_0)\)를 최대화하는 데 연결됩니다.

4.2 ELBO 도출 및 항별 분석

ELBO를 도출하기 위해 Forward Process \(q\)와 Reverse Process \(p_\theta\) 간의 차이를 분석합니다. 아래는 단계별 증명입니다.

  1. ELBO 정의
    ELBO는 \(-\log p_\theta(\mathbf{x}_0)\)의 하한으로 정의되며, KL Divergence를 이용해 표현할 수 있습니다. Jensen 부등식을 적용하면:

    \[ \log p_\theta(\mathbf{x}_0) = \log \int p_\theta(\mathbf{x}_{0:T}) d\mathbf{x}_{1:T}. \]

    이를 \(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)\)로 근사하면:

    \[ \log p_\theta(\mathbf{x}_0) \geq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \right]. \]

    부호를 바꾸면:

    \[ -\log p_\theta(\mathbf{x}_0) \leq -\mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \right]. \]

    여기서 \(p_\theta(\mathbf{x}_{0:T}) = p_\theta(\mathbf{x}_0, \mathbf{x}_{1:T})\)이고, \(p_\theta(\mathbf{x}_0) = \int p_\theta(\mathbf{x}_{0:T}) d\mathbf{x}_{1:T}\)를 고려하면:

    \[ -\log p_\theta(\mathbf{x}_0) \leq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] + \log p_\theta(\mathbf{x}_0). \]

    \(\log p_\theta(\mathbf{x}_0)\)를 양변에서 빼면:

    \[ -\log p_\theta(\mathbf{x}_0) \leq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right], \]

    이를 \(L_{\mathrm{VLB}}\)로 정의합니다.

  2. ELBO의 분해
    \(p_\theta(\mathbf{x}_{0:T})\)를 전개하면:

    \[ p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t), \]

    \(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})\)이므로:

    \[ \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} = \frac{\prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)}. \]

    로그를 취하면:

    \[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} = \log \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) - \log \left( p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right). \]

    기댓값을 적용하면:

    \[ \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] = \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \sum_{t=1}^T \log q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) - \log p(\mathbf{x}_T) - \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right]. \]

    이를 재정리하면:

    \[ = -\mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log p(\mathbf{x}_T) + \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) - \sum_{t=1}^T \log q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) \right]. \]

    이제 \(\mathbf{x}_0\)에 대한 마진라이제이션을 고려하여:

    \[ \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log p_\theta(\mathbf{x}_{0:T}) \right] = \log p_\theta(\mathbf{x}_0) + \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{p_\theta(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \right], \]

    여기서 KL Divergence를 사용하면:

    \[ D_{\mathrm{KL}}(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) \| p_\theta(\mathbf{x}_{1:T} \mid \mathbf{x}_0)) = \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \right]. \]

    따라서:

    \[ -\log p_\theta(\mathbf{x}_0) \leq D_{\mathrm{KL}}(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) \| p_\theta(\mathbf{x}_{1:T} \mid \mathbf{x}_0)). \]

    이를 더 전개하면:

    \[ -\log p_\theta(\mathbf{x}_0) \leq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T}) / p_\theta(\mathbf{x}_0)} \right]. \]

    \(\log p_\theta(\mathbf{x}_0)\)를 양변에서 빼면:

    \[ -\log p_\theta(\mathbf{x}_0) \leq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} + \log p_\theta(\mathbf{x}_0) \right] - \log p_\theta(\mathbf{x}_0), \]

    최종적으로:

    \[ -\log p_\theta(\mathbf{x}_0) \leq \mathbb{E}_{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right]. \]

  3. 대안적인 ELBO 도출
    또 다른 관점에서 \(-\log p_\theta(\mathbf{x}_0)\)의 상한을 구하면:

    \[ \mathbb{E}\bigl[-\log p_\theta(\mathbf{x}_0)\bigr] \leq \mathbb{E}_q \biggl[-\log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}\biggr]. \]

    \(p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)\)이고, \(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})\)이므로:

    \[ -\log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)} = -\log p(\mathbf{x}_T) - \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) + \sum_{t=1}^T \log q(\mathbf{x}_t \mid \mathbf{x}_{t-1}). \]

    기댓값을 적용하면:

    \[ \mathbb{E}_q \biggl[-\log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}\biggr] = \mathbb{E}_q \biggl[-\log p(\mathbf{x}_T) - \sum_{t=1}^T \log \frac{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)}{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}\biggr]. \]

    이를 \(L\)로 정의하면:

    \[ \mathbb{E}\bigl[-\log p_\theta(\mathbf{x}_0)\bigr] \leq L. \]

  4. ELBO의 항별 분해
    ELBO를 더 구체적으로 분해하면:

    \[ L_{\mathrm{VLB}} = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right]. \]

    \(q(\mathbf{x}_{1:T} \mid \mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})\)이고, \(p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)\)이므로:

    \[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} = \log \frac{\prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)}. \]

    이를 전개하면:

    \[ = \log \prod_{t=1}^T q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) - \log p(\mathbf{x}_T) - \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t). \]

    기댓값을 적용하면:

    \[ \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \frac{q(\mathbf{x}_{1:T} \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_{0:T})} \right] = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \sum_{t=1}^T \log q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) - \log p(\mathbf{x}_T) - \sum_{t=1}^T \log p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right]. \]

    이를 재정리하면:

    \[ = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log p(\mathbf{x}_T) + \sum_{t=1}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} \right]. \]

    여기서 \(\mathbf{x}_0\)에 대한 조건부를 분리하면:

    \[ = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log p(\mathbf{x}_T) + \sum_{t=2}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} - \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right]. \]

    \(q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)\)를 고려하면 Bayes 정리를 사용해:

    \[ q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) = \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)}{q(\mathbf{x}_t \mid \mathbf{x}_0)}, \]

    이를 대입하면:

    \[ \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} = \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} + \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)}{q(\mathbf{x}_t \mid \mathbf{x}_0)}. \]

    이를 전체 합에 적용하면:

    \[ L_{\mathrm{VLB}} = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log p(\mathbf{x}_T) + \sum_{t=2}^T \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} + \sum_{t=2}^T \log \frac{q(\mathbf{x}_t \mid \mathbf{x}_0)}{q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)} - \log \frac{q(\mathbf{x}_1 \mid \mathbf{x}_0)}{p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)} \right]. \]

    합을 재조정하면:

    \[ = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log p(\mathbf{x}_T) + \log \frac{q(\mathbf{x}_T \mid \mathbf{x}_0)}{p(\mathbf{x}_T)} + \sum_{t=2}^T \log \frac{q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)} - \log p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1) \right], \]

    KL Divergence로 변환하면:

    \[ L_{\mathrm{VLB}} = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ D_{\mathrm{KL}}(q(\mathbf{x}_T \mid \mathbf{x}_0) \| p(\mathbf{x}_T)) + \sum_{t=2}^T D_{\mathrm{KL}}(q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) \| p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t)) - \log p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1) \right], \]

    마지막으로 기댓값을 밖으로 빼면:

    \[ L_{\mathrm{VLB}} = \underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_T \mid \mathbf{x}_0) \| p(\mathbf{x}_T))}_{L_T} + \sum_{t=2}^T \underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) \| p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t))}_{L_{t-1}} - \underbrace{\log p_\theta(\mathbf{x}_0 \mid \mathbf{x}_1)}_{L_0}. \]

각 항의 의미는 다음과 같습니다:

  • \(L_T\): \(\mathbf{x}_T\)의 초기 분포 차이를 나타내며, Forward Process와 모델의 초기 노이즈 분포 간의 KL Divergence입니다.
  • \(L_{t-1}\): 각 중간 단계에서 Forward와 Reverse Process 간의 분포 차이를 측정합니다.
  • \(L_0\): \(\mathbf{x}_0\)를 복원하는 최종 단계의 로그 가능도 항입니다.

따라서, \(L_{\mathrm{VLB}}\)를 최소화함으로써 모델이 노이즈에서 데이터를 자연스럽게 복원하도록 학습됩니다.

5. 실제 활용 및 장단점

5.1 다양한 응용 분야

응용 분야 설명 특징
이미지 생성 무작위 노이즈로부터 얼굴, 풍경, 예술적 이미지 생성 높은 해상도·사실감, 모드 붕괴 적음
음성 합성 TTS(Text-To-Speech) 등에서 보다 안정적인 음질 구현 GAN 대비 학습 안정성 우수
Inpainting 부분적으로 가려지거나 손상된 이미지·영상 복원 단계적 노이즈 제거로 자연스러운 결과
시계열 데이터 주가·기상 등 시계열 생성 모델로 확장 가능 연구가 활발히 진행 중
기타 영역 텍스트, 그래프 구조 생성 등에 적용 가능 융통성 높은 생성 모델

5.2 장점

  • 학습 안정성: 다른 생성 모델(GAN 등)에 비해 모드 붕괴가 거의 없고, 훈련 자체가 비교적 안정적으로 진행됩니다.
  • 표현력: 점진적으로 노이즈를 제거해가므로 높은 해상도와 사실감을 갖춘 샘플을 생성할 수 있습니다.

5.3 단점

  • 생성 속도: \(T\)단계를 모두 거쳐야 샘플링하므로, 샘플 생성이 상대적으로 느립니다.
  • 메모리 및 계산량: 큰 모델에 많은 단계가 겹치면 연산량이 커질 수 있습니다. (이를 보완하는 다양한 기법들, 예: DDIM, Latent Diffusion 등이 연구되고 있습니다.)

6. 마무리

지금까지 Diffusion Model의 전반적인 아이디어부터 Forward/Reverse Process, 그리고 ELBO를 통해 학습 손실을 구성하는 과정까지 살펴보았습니다.

  1. Forward Process: 데이터를 노이즈로 단계적으로 변환합니다.
  2. Reverse Process: 노이즈에서 원본 데이터를 복원하는 분포를 학습합니다.
  3. ELBO 최소화: Forward와 Reverse 간의 분포 차이를 최소화하며, 데이터 복원 성능을 극대화합니다.

이미지, 음성, 텍스트 등 다양한 분야에서 우수한 성능을 발휘하므로, 생성 모델에 관심이 있다면 이론과 실습을 병행해 보시길 권장드립니다. PyTorch와 같은 프레임워크를 활용하면 Diffusion Model의 실질적인 구현을 경험할 수 있습니다.


Reference: