728x90

 Denoising diffusion probabilistic models (DDPM)은 diffusion model을 활용한 image generative model을 제시한 논문으로, 기존의 diffusion model의 loss term과 parameter estimation 과정을 더 학습이 잘 되는 방향으로 발전시킨 논문이다. 이번 글에서는 DDPM 모델이 어떻게 작동하는지에 대해서 알아보겠다.

* 이 글은 diffusion model에 대한 이해가 있다고 가정한다.

 시작하기 전에 간단히 diffusion model을 복습하자면, diffusion model은 기본적으로 data로부터 noise를 만들어내는 forward (diffusion) process $q(x_{1:T}|x_0)$와 noise로부터 data를 만들어내는 reverse process $p(x_{0:T})$로 이루어져 있다. Diffusion model은 다른 generative model들처럼 true data distribution $p_\theta(x_0)$를 학습하는 것을 목표로 하고, 이는 다음 loss를 minimize하면서 진행된다.

diffusion model의 training loss

위 loss를 minimze하면서 reverse process를 학습하여 noise로부터 data를 만들어내는 generative model을 만들어낸다. 위 loss는 다음과 같이 normal distribution 사이의 KL divergence 형태로도 표현될 수 있다.

diffusion model의 training loss의 전개

그럼 이를 바탕으로 해서 DDPM은 어떻게 모델링을 진행하는지 알아보겠다.

Forward process

 DDPM의 forward process는 기본적인 diffusion model과 똑같이 data에 Gaussian noise를 더하는 형태로 정의된다. 이 때, $\beta_t$는 학습을 할 수도 있고, 어떤 함수로 정의할 수도 있지만 DDPM에서는 미리 정해진 상수로 정의한다. 그러므로 forward process에서는 별도의 학습이 필요하지 않다.

DDPM의 forward process

Reverse process

 DDPM의 reverse process에서 우리는 다음 식에서의 $\mu_\theta$와 $\Sigma_\theta$를 학습해야 한다.

Diffusion model의 reverse process

 우리는 위에서 언급했듯이 다음과 같은 loss function을 최소화하는 것을 목적으로 한다.

Diffusion model의 training loss

이 각각의 loss function을 DDPM에서 어떻게 최소화하는지를 알면, 우리가 어떻게 parameter를 학습해야할지도 알 수 있을 것이다. 이들 각각을 하나씩 살펴보겠다.

$L_T$

 $L_T$에서 우리는 $q$와 $p(x_T)$를 각각 학습이 필요하지 않은 파라미터를 가지는 정규분포로 가정했기 때문에, 이를 최소화하기 위해서 우리가 학습해야하는 파라미터는 없다. 그러므로 학습하는 동안 이 loss는 무시가 가능하다.

$L_{t-1}$

 $L_{t-1}$에서 우리는 이를 계산하기 위해서 첫 번째로 $q(x_{t-1}|x_t,x_0)$의 분포를 알아내고, 두 번째로 $p_\theta(x_{t-1}|x_t)$를 알아내기 위해 $\Sigma_\theta$와 $\mu_\theta$를 알아내야 한다. 이를 순서대로 하나씩 살펴보겠다.

 

1. $q(x_{t-1}|x_t,x_0)$

 이는 우리가 기존 diffusion model에서 알아보았던 것처럼 다음과 같은 형태로 정의할 수 있다. (증명은 diffusion model 글을 참고한다.) 

 

 

2. $p_\theta(x_{t-1}|x_t)$

$\Sigma_\theta$

 p의 표준편차는 $\sigma_t^2I$라는 상수 행렬로 정의한다. 그러므로 이에 대해서는 학습이 필요하지 않다.

$\mu_\theta$

 마지막으로, p의 평균은 다음과 같이 정의한다.

$\mu_\theta$의 정의

 이는 다음과 같은 과정을 통해 증명할 수 있다. (증명은 생략해도 좋다.)

 첫 번째 =은 forward process가 다음과 같은 형태이기 때문에, 우리가 $x_t(x_0,\epsilon)=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon$이라고 쓸 수 있고, 이를 이용해서 $x_0$를 표현하면 위 식과 동일해지기 때문이다.

diffusion model의 forward process

 다음으로, 두 번째 =은 그 증명 과정이 조금 복잡하다. 우선, 우리는 다음과 같은 사실들을 알고 있다.

우리가 알고 있는 사실들

이들을 활용해서 식을 전개해보면 다음과 같다.

$\mu_\theta$의 증명

 이렇게 위 과정을 통해서 $\mu_\theta$를 얻어내면, 이를 활용해서 우리는 $p_\theta(x_{t-1}|x_t)$로부터 $x_{t-1}$을 샘플링할 수 있다. 이 과정은 다음과 같은 알고리즘으로 표현할 수 있다.

$x_t$의 샘플링 과정

 또한 우리는 이렇게 얻어낸 파라미터들을 활용해 loss function을 다음과 같이 normal distribution 간의 KL divergence를 계산한 식으로 표현할 수 있다.

도출된 $L_{t-1}$

 그리고 마지막으로, 우리는 위의 loss function을 epsilon에 대한 식의 형태로 다시 한 번 표현할 수 있다. 이를 simplified objective function이라고 부르고, 이러한 loss function을 통해 training을 하면 학습이 좀 더 잘 된다는 것을 확인할 수 있다.

Simplified objective function

 결론적으로, DDPM의 training 과정을 몇 줄의 알고리즘으로 요약하면, 다음과 같다.

DDPM의 traning 과정

$L_0$

 마지막으로, loss function의 마지막 구성 요소인 $L_0$에 대해 알아보겠다. 이는 그냥 간단한 두 normal 분포 사이의 KL divergence이기 때문에 다음과 같은 간단한 형태로 표현할 수 있다.

$L_0$

Experiments

 사실상 DDPM 논문의 핵심은 reverse process의 $L_{t-1}$을 예쁜 형태로 다시 정의한 것에 있다. 이렇게 forward process와 reward process를 정의하여 generative model을 구성하고, 이들로부터 사진 데이터를 만들어보면, 다음과 같이 좋은 퀄리티의 사진들을 만들어냄을 알 수 있다.

DDPM의 image generation 결과

 이번 글에서 우리는 가장 간단한 형태의 diffusion model에 이어 DDPM이 무엇인지에 대해 증명과 함께 알아보았다. Diffusion model 논문들은 수식이 굉장히 복잡해서 이해하기가 쉽지 않은데, 공부하다보면 비슷한 flow로 논문들이 전개되고 있음을 알 수 있다. 다음 글에서는 discrete 데이터에 적절한 diffusion model을 제시한 D3PM과 any-order autoregressive model과 diffusion model을 엮어낸 autoregressive diffusion model 등에 대해서도 알아보겠다. 

 약속이 없으면 고대로 야근 때리는 바쁜 평일을 보내고 있어서 글 쓰기가 쉽지 않았는데 주말에 화이팅해보겠다.. 올해에 200번째 글 채우기 프로젝트 화이팅

References

Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic models. Advances in Neural Information Processing Systems, 33, 6840-6851.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기