Denoising diffusion probabilistic models(neurIPS_2020)

이의찬·2024년 6월 6일

DDPM

Forward process

  • forward process는 이전 단계(Xt1X_{t-1}) 기준으로 다음 단계(XtX_{t})에 noise를 추가하는 과정

  • 이 과정을 Markov process로 진행하게 되는데 Markov process란 다음 state가 현재 state에만 의존하는 형태이다.

  • forward process: q(XtXt1)q(X_{t} | X_{t-1}) = N(xt;1βtxt1,βtI)\mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I})

  • XtX_{t} = 1βt\sqrt{1 - \beta_t}Xt1X_{t-1} + βt\beta_tϵ\epsilon, ϵ\epsilon ~N\mathcal{N}(0, II)

  • 이때, 더해지는 noise는 미리 정해둔 noise schedule ββ를 사용

Reverse process

  • Reverse process는 forward process와 반대로 noise를 제거하는 과정
  • Reverse process: pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))p_\theta(\mathbf{x}_{t-1} \mid \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))

  • 즉, XtX_{t}에서 Xt1X_{t-1}로 갈 때 분포의 평균을 학습하는 것이 Reverse process

Loss

  • L = maxlog(pθ(x))\max \log(p_\theta(\mathbf{x}))

  • Maximize log likelihood는 untractable

  • Loss를 Variational Lower Bound 사용

  • Variational Lower Bound는 모든 구간에 대해서 실제 likelihood 보다 작도록 설정

Eq[DKL(q(xTx0)p(xT))+t>1DKL(q(xt1xt,x0)pθ(xt1xt))logpθ(x0x1)]\small \mathbb{E}_q \left[ D_{KL} \left( q(\mathbf{x}_T \mid \mathbf{x}_0) \| p(\mathbf{x}_T) \right) + \sum_{t > 1} D_{KL} \left( q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) \| p_\theta (\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right) - \log p_\theta (\mathbf{x}_0 \mid \mathbf{x}_1) \right]

prior matching term

DKL(q(xTx0)p(xT))D_{KL} \left( q(\mathbf{x}_T \mid \mathbf{x}_0) \| p(\mathbf{x}_T)\right)

  • forward process를 진행 할 때, 사전에 정의한 분포와 유사하도록 minimize KL-divergence
  • forward process를 가우시안 분포로 가정했기 때문에 상수취급 가능

reconstruction term

logpθ(x0x1)\log p_\theta (\mathbf{x}_0 \mid \mathbf{x}_1)

  • 마지막 이미지로 갈 때 maximize log likelihood
  • 비중이 작기 때문에 상수취급 가능

Denoising term

t>1DKL(q(xt1xt,x0)pθ(xt1xt))\sum_{t > 1} D_{KL} \left( q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) \| p_\theta (\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right)

DKL(q(xt1xt)pθ(xt1xt))D_{KL} \left( q(\mathbf{x}_{t-1} \mid \mathbf{x}_t) \| p_\theta (\mathbf{x}_{t-1} \mid \mathbf{x}_t) \right)

q(xt1xt)q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)를 모른다는 문제가 있지만, X0X_{0}을 conditioning 하여 전개하면 계산 가능

  • 이때, reverse process를 Markov process로 정의했기 때문에 X0X_{0}을 conditioning해도 정의가 깨지지 않음

q(xt1xt,x0)q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)는 Bayes Rule로 계산 가능

즉, X0X_{0}(원본 이미지)와 XtX_{t}가 있을 때 Xt1X_{t-1}은 평균이 μ~t=1αt(xt1αt1αˉtϵt)\tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_t \right), 분산이 β~t=1αˉt11αˉtβt\tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \cdot \beta_t인 가우시안을 따른다라고 해석 할 수 있음

model이 평균이 μ~t\tilde{\mu}_t이고 분산이 β~t\tilde{\beta}_t인 가우시안 분포를 학습

최종적으로 q(xt1xt,x0)q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0)와 Model이 예측한 분포 pθ(xt1xt)p_\theta (\mathbf{x}_{t-1} \mid \mathbf{x}_t)가 최대한 비슷하도록 학습

이때, 정답 분포의 평균과 분산중 미지수는 ϵ\epsilon만 있기 때문에 모델은 ϵ\epsilon만 예측하면 되고

참고

profile
Data Science

0개의 댓글