[논문] Denoising Diffusion Probability Models (DDPM)

melan·2024년 3월 8일
0

paper_review

목록 보기
4/5
post-thumbnail

배경

Diffusion Probabilistic Model은 정의와 학습에 대해서 명확하지만 완성도가 높은 이미지를 생성할 수 있다는 것은 보이지 못했다.

이 논문에서 제안하는 Denoising Diffusion Probabilistic Model이 사용한 loss 함수에 대해 몇 가지 가정과 간소화를 통해서 다른 생성형 모델들에 견줄만한 성능을 보이고 더 나아가서 더 좋은 품질의 이미지를 생성할 수 있는 loss 함수를 제안한다.

Diffusion model

Loss 함수를 이야기하기 전에 diffusion의 기본 개념인 forward process와 backward process에 대해 소개하겠다.

Diffusion model의 forward, reverse process

1. Forward diffusion process

Forward diffusion process

  • 선명한 상태인 x0\textbf{x}_0 이미지부터 노이즈를 조금씩 더해가는 과정이다. 이 과정은 학습하는 것이 아니라 주어진 하이퍼 파라미터에 의해서 계산하는 과정이다.
  • 오직 이전 상태(xt1\textbf{x}_{t-1})에 의해서 다음 상태(xt\textbf{x}_t)가 결정되는 Markov chain이며, 모든 과정은 Gaussian distribution을 따른다. Markov chain을 수식으로 나타내면 다음과 같다.
    q(xtxt1)=N(xt;1βtxt1,βtI)q(xtxt1)=1βtxt1+βtϵ, ϵN(0,I)\begin{aligned} q(\textbf x_t|\textbf x_{t-1})&=N(\textbf x_t; \sqrt{1-\beta_t}\textbf x_{t-1}, \beta_tI)\\ q(\textbf x_t|\textbf x_{t-1})&=\sqrt{1-\beta_t}\textbf x_{t-1}+\sqrt{\beta_t}\epsilon,~\epsilon\sim N(0, I)&& \end{aligned}
    여기서 βt\beta_t는 timestep tt에서 노이즈의 정도를 결정하는 계수이며 총 step의 수를 의미하는 TT와 스케줄링 방법에 의해 결정되는 값이다. 평균과 분산을 βt\beta_t를 이용하여 위와 같이 정의한 이유는 모든 시점에서 분산이 1이 되도록 만들기 위해서이다. 위 수식으로 분산을 구해보면 다음과 같이 전개가 된다.
    Var(xt)=Var(1βtxt1+βtϵ)=Var(1βtxt1)+Var(βtϵ)=(1βt)Var(xt1)+βtVar(ϵ)=(1βt)+βt=1\begin{aligned} Var(x_t) &= Var(\sqrt{1-\beta_t}x_{t-1} + \sqrt{\beta_t}\epsilon)\\ &= Var(\sqrt{1-\beta_t}x_{t-1}) + Var(\sqrt{\beta_t}\epsilon)\\ &= (1-\beta_t)Var(x_{t-1}) + \beta_tVar(\epsilon)\\ &= (1-\beta_t) + \beta_t\\ &=1&& \end{aligned}
    또한 markov chain property를 이용하면 x0\textbf{x}_0을 조건으로 할 때 timestep 1부터 TT까지의 joint distribution을 다음과 같이 구할 수 있다.
    q(x1:Tx0)=t=0Tq(xtxt1)q(\textbf x_{1:T}|\textbf x_0)=\prod^T _{t=0}{q(\textbf x_t|\textbf x_{t-1})}
  • 임의의 timestep tt의 이미지(또는 latent vector)는 x0\textbf{x}_0에서 한 번에 계산할 수 있다. 한 번에 계산하기 위해서 βt\beta_t를 다음과 같이 αt\alpha_t에 대한 식으로 재정의한다.
    αt=1βt, αˉt=s=1tαsq(xtxt1)=αtxt1+1αtϵ\alpha_t = 1-\beta_t,~ \bar \alpha_t=\prod^t_{s=1}\alpha_s\\ q(\textbf x_t|\textbf x_{t-1})=\sqrt{\alpha_t}\textbf{x}_{t-1}+\sqrt{1-\alpha_t}\epsilon
    이것을 이용해서 x0\textbf x_0로부터 xt\textbf x_t를 만들어내는 식은 다음과 같이 표현할 수 있다.
    q(xtx0)=αˉtx0+1αˉtϵq(\textbf x_t|\textbf x_0)=\sqrt{\bar\alpha_t}\textbf x_0+\sqrt{1-\bar\alpha_t}\epsilon

2. Reverse denoising process

Reverse denoising process

  • 노이즈가 낀 상태인 xt\textbf{x}_{t} 이미지로부터 노이즈를 조금 걷어낸 xt1\textbf x_{t-1}의 이미지로 복원해가는 과정이다.
  • Markov chain이며 모든 과정은 Gaussian distribution을 따른다. 이런 특성을 수식으로 표현하면 다음과 같다. 여기서 μθ\mu_\thetaxt\textbf x_{t}tt에 의해서 결정되는 xt1\textbf x_{t-1}의 평균이며 모델이 학습하는 부분이다.
    pθ(xt1xt)=N(xt1;μθ(xt,t),σt2I)p_\theta(\textbf x_{t-1}|\textbf x_t)=N(x_{t-1}; \mu_\theta(\textbf x_t, t), \sigma_t^2I)
    위 식을 이용하여 joint distribution을 표현하면 다음과 같다.
    pθ(x0:T)=pθ(xTx0)pθ(xt1x0)p_\theta(\textbf x_{0:T})=p_\theta(\textbf x_T|\textbf x_0)\prod p_\theta(\textbf x_{t-1}|\textbf x_0)

Loss 함수

Loss 함수 유도

  • 목적은 VAE와 동일하게 data log likelihood를 최대화하는 것을 목표로 시작한다. 그리고 수식을 전개하면 ELBO(Evidence Lower BOund)를 최대화하는 것으로 바꿔서 진행한다.
    Eq(x0)[logpθ(x0)]Eq(x0)q(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)]\mathbb E_{q(\textbf x_0)}[-logp_\theta(\textbf x_0)]\leq\mathbb E_{q(\textbf x_0)q(\textbf x_{1:T}|\textbf x_0)}[-log\frac{p_\theta(\textbf x_{0:T})}{q(\textbf x_{1:T}|\textbf x_0)}]
    위 식에서 전개해서 loss 함수까지 유도하는 과정은 다음과 같다.

DDPM에서 Lt1L_{t-1}만 이용하는 이유

식을 보면 총 3개의 항이 있는데, DDPM에서는 LTL_TL0L_0를 무시하고 Lt1L_{t-1}항 만을 loss 함수로 이용하게 된다. 두 항을 무시하는 이유는 다음과 같다.

  • L0L_0: Denoising 과정의 가장 마지막 과정이기 때문에 거의 노이즈가 없는 상태로 상정하고 loss로써 영향이 거의 없을 것이라고 가정하여 무시한다.
  • LTL_T: Forward diffusion process에서 xT\textbf x_T의 분포와 reverse denoising process에서의 xT\textbf x_T의 분포는 모두 표준 정규 분포이기 때문에 분포 간의 거리가 거의 없다고 볼 수 있다. 또한 기존의 diffusion model은 이 항을 통해서 βt\beta_t를 learnable하게 학습하였는데, DDPM에서는 TT에 따라서 스케줄링하기 때문에 βt\beta_t를 학습하지 않는다.

Lt1L_{t-1}q(xt1xt,x0)q(\textbf x_{t-1}|\textbf x_t, \textbf x_0)의 의미

q(xt1xt,x0)q(\textbf x_{t-1}|\textbf x_t, \textbf x_0)qq는 forward process를 의미하는데, condition으로 들어간 값들과 구하려는 분포의 형태가 직관적으로 이해가 되지 않는다. q(xt1xt,x0)q(\textbf x_{t-1}|\textbf x_t, \textbf x_0)tractable posterior라는 점에서 의미가 있다. 이어서 loss 함수를 구체화하는 과정에서 이 posterior를 풀어서 식을 구성하게 된다.

q(xt1xt,x0)q(\textbf x_{t-1}|\textbf x_t, \textbf x_0)를 위와 같은 식으로 표현할 수 있는데, 이런 형태가 되는 이유는 posterior를 bayes’ rule로 분해해서 gaussian distribution의 식에 값을 대입하고 전개한 결과를 토대로 결정이 된다. 과정은 아래와 같다.

구체화된 loss 함수

Lt1L_{t-1}항은 위에서 전개한 forward process의 tractable posterior와 reverse process의 KL Divergence이다. 이 식을 KLD 식에 대입하여 전개하면 다음과 같다.

그리고 μ~,μθ\tilde\mu, \mu_\thetaxt,ϵ\textbf x_t, \epsilon의 형태로 풀어서 전개하면 다음과 같은 식이 된다.

마지막으로 논문에서는 MSE 식 앞에 있는 계수가 1이고 하나의 이미지를 timestep TT만큼 훈련시키는 것이 아닌 tt[1,T][1, T] 사이의 값 중 하나로 골라서 학습을 시키는 것이 결과가 좋았다는 경험적인 이유로 다음과 같이 loss 함수를 단순화하였다.

참고 자료

  • 논문

Denoising Diffusion Probabilistic Models

  • 유튜브 디퓨전영상올려야지 채 강의 영상

Diffusion Model 수학이 포함된 tutorial

profile
🤨 내가 한 거

0개의 댓글

관련 채용 정보