Review

Denoising Diffusion Probabilistic Model이란 무엇일까? (1)

AI&영상처리개발팀
AI&영상처리개발팀
등록일2024. 04. 09
Denoising-Diffusion-Probabilistic-Model이란-무엇일까-1


 summary 
이미지 생성 인공지능의 새로운 지평을 연 DDPM을 꼼꼼하게 접근해본다.
 


 


Denoising Diffusion Probabilistic Model에 대한 이해 - 1

 

Diffusion Model

Diffusion model의 기본 뼈대는 다음과 같은 latent variable model이다:

 

\(p_{\theta}(x_0):=\int p_{\theta}(x_{0:T})dx_{1:T}\)

 

Notation부터 괴상하다. 하나씩 살펴보면 다음과 같다.

 

Reverse Process

Reverse process는 noise로부터 이미지를 원복하는 과정이고, denoising이므로 reverse라는 단어를 붙였다고 이해해도 좋다.
첫 시작이 \(p(x_T)=\mathcal{N}(x_T:0,I)\)일 때 이는 다음처럼 정의된다:

 

\(p_{\theta}(x_{0:T}):=p(x_T)\prod_{t=1}^Tp_{\theta}(x_{t-1}|x_t),\quad p_{\theta}(x_{t-1}|x_t):=\mathcal{N}(x_{t-1}|\mu(x_t,t),\Sigma_{\theta}(x_t,t))\)

 

위 식은 일견 likelihood 같아 보이기도 한다. 이 과정은 Markovian process임에 주의하라.

 

Forward Process

Forward process는 쉬운 과정, 그러니까 Markov chain 조건 하에서 이미지에 노이즈를 입히는 과정이라 생각해도 좋다.

 

\(\begin{equation}q(x_{1:T}|x_0):=\prod_{t=1}^Tq(x_t|x_{t-1}),\quad q(x_t|x_{t-1}):=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)\end{equation}\)

(1)

 

이 또한 likelihood 같아 보인다.

Forward process의 특징 중 하나는 forward process는 closed form으로 표현이 가능하다는 것이다.
이를 계산해보자. 단, 아래 식에서 \(\alpha_t:=1-\beta_t\)이고 \(\bar{\alpha}_t:=\prod_{s=1}^t\alpha_s\)이다.
먼저,

 

\(q(x_t|x_{t-1}):=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)\)

 

이었으므로 \(x_{t}=\sqrt{1-\beta_t}x_{t-1} + \sqrt{\beta_t}\epsilon_{t-1}\)의 과정을 수행한다는 것으로 이해할 수 있다.

즉, forward process는 이미지에 노이즈를 끼얹는 것이다.
따라서, 수학적 귀납법을 쓰기 위해 \( t=1\)을 대입하면

 

\(x_1 = \sqrt{1-\beta_t}x_0 + \sqrt{\beta_1}\epsilon_0=\sqrt{\overline{\alpha}_1}x_0+\sqrt{1-\overline{\alpha}_1}\epsilon_0\)

 

이고 (단, \(\epsilon_i\sim\mathcal{N}(0,I)\))

 

\(\begin{align}x_{t}&=\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon_0\nonumber\\\end{align}\)

 

이 성립한다고 가정하면

 

\(\begin{align}x_{t+1}&=\sqrt{1-\beta_{t+1}}x_{t} + \sqrt{\beta_{t+1}}\epsilon_{t}\nonumber\\&=\sqrt{1-\beta_{t+1}}\bigg(\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon_0\bigg)+\sqrt{\beta_{t+1}}\epsilon_t\nonumber\\ &=\sqrt{\alpha_{t+1}}\sqrt{\overline{\alpha}_t}x_0+\sqrt{\alpha_{t+1}}\sqrt{1-\overline{\alpha}_t}\epsilon_0+\sqrt{1-\alpha_{t+1}}\epsilon_t\nonumber\\ &=\sqrt{\overline{\alpha}_{t+1}}x_0 + \sqrt{\alpha_{t+1}-\overline{\alpha}_{t+1}}\epsilon_0 +\sqrt{1-\alpha_{t+1}}\epsilon_t\nonumber\\ &=\sqrt{\overline{\alpha}_{t+1}}x_0 + \sqrt{(\alpha_{t+1}-\overline{\alpha}_{t+1})+(1-\alpha_{t+1})}\epsilon_0\\ &=\sqrt{\overline{\alpha}_{t+1}}x_0 + \sqrt{1-\overline{\alpha}_{t+1}}\epsilon_0\\ \end{align}\)

(2)
(3)

 

이 된다.

이 때 \((2)\)에서 \((3)\)으로 넘어가는 과정에서는 \(\epsilon_1,\epsilon_2\sim\mathcal{N}(0,I)\)였다면 \(a\epsilon_1+b\epsilon_2\sim\mathcal{N}(0,\sqrt{a^2+b^2}I)\)라는 성질이 쓰였다.

따라서 이를 정리하면

 

\(\begin{align}x_{t}&=\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}\epsilon_0\nonumber\\\end{align}\)

 

라는 말이 되고 이는 \(q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\overline{\alpha}_t}x_0,(1-\overline{\alpha}_t)I)\)라는 말이 된다.

 

Evidence Lower Bound (ELBO) Revisited

우리는 앞선 글에서 ELBO에 대해서 살펴보았다.

ELBO를 다시 써보면 다음과 같다:

 

\(\begin{align}\log p(x) &= 1\cdot\log p(x)\nonumber\\ &=\int_{\Omega}q(z|x)\log p(x)dz\nonumber\\ &=\int_{\Omega}q(z|x)\log \bigg(p(x)\frac{q(z|x)}{q(z|x)}\bigg)dz\nonumber\\ &=\int_{\Omega}q(z|x)\log\bigg(\frac{p(x|z)p(z)}{p(z|x)}\frac{q(z|x)}{q(z|x)}\bigg)dz\nonumber\\ &=\int_{\Omega}q(z|x)\log\bigg(\frac{q(z|x)}{p(z|x)}\bigg)dz + \int_{\Omega}q(z|x)\log\bigg(\frac{p(x|z)p(z)}{q(z|x)}\bigg)dz\nonumber\\ &=D_{KL}(q(z|x)\|p(z|x)) + \int_{\Omega}q(z|x)\log\bigg(\frac{p(x|z)p(z)}{q(z|x)}\bigg)dz\nonumber\\ &=D_{KL}(q(z|x)\|p(z|x))-D_{KL}(q(z|x)\|p(z))+\mathbb{E}_{q(z|x)}\big[\log p(x|z)\big] \end{align}\)

(4)

 

가 된다. 이를 정리하면 우리는 부등식

 

\(\log p(x)\geq\mathbb{E}_{q(z|x)}\bigg[\log\frac{p(x,z)}{q(z|x)}\bigg]\)

 

을 얻고 DDPM의 notation으로 다시 쓰기 위해 \(p=p_{\theta}, x=x_0, z=x_{1:T}\)로 쓰면,

 

\(\log p_{\theta}(x_0)\geq\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[\log\frac{p_{\theta}(x_0,x_{1:T})}{q(x_{1:T}|x_0)}\bigg]\)

 

를 얻는다.
그런데 reverse process도 Markov process였으므로,

 

\(\begin{align}p_{\theta}(x_0,x_{1:T})&=p_{\theta}(x_0|x_{1:T})p_{\theta}(x_{1:T})\\ &=p_{\theta}(x_0|x_1)p_{\theta}(x_{1:T})\\ &=p_{\theta}(x_{0:T})\end{align}\)

(5)
(6)
(7)

 

가 된다. 이 때 \((5)\)에서 \((6)\)으로 넘어가는 과정에서 Markov property가 쓰였고 \((6)\)에서 \((7)\)로 넘어가는 과정은 reverse process의 정의이다. 따라서
 

\(\log p_{\theta}(x_0)\geq\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[\log\frac{p_{\theta}(x_{0:T})}{q(x_{1:T}|x_0)}\bigg]\)

 

라는 식을 얻고, gradient descent를 하기 위해서 양 변에 \(-\)부호를 붙이면

 

\(\mathbb{E}\big[-\log p_{\theta}(x_0)\big]\leq\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log\frac{p_{\theta}(x_{0:T})}{q(x_{1:T}|x_0)}\bigg]=:L\)

 

라는 관계식을 얻는다.

결국, 우리는 negative variational lower bound인 loss \(L\)을 가능한 줄이면서 목적하는 값인 \(\mathbb{E}\big[\log p_{\theta}(x_0)\big]\)를 최대화하는 과정을 수행하게 된다.

\(L\)을 다시 써보면 다음과 같다.

 

\(\begin{align}L:&=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log\frac{p_{\theta}(x_{0:T})}{q(x_{1:T}|x_0)}\bigg]=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log p(x_T)-\sum_{t\geq1}\log\frac{p_{\theta}(x_{t-1}|x_t)}{q(x_t|x_{t-1})}\bigg]\nonumber\\ &=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log p(x_T)-\sum_{t>1}\log\frac{p_{\theta}(x_{t-1}|x_t)}{q(x_t|x_{t-1})}-\log\frac{p_{\theta}(x_0|x_1)}{q(x_1|x_0)}\bigg]\nonumber\\ &=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log p(x_T)-\sum_{t>1}\log\frac{p_{\theta}(x_{t-1}|x_t)}{q(x_{t-1}|x_t,x_0)}\cdot\frac{q(x_{t-1}|x_0)}{q(x_t|x_0)}-\log\frac{p_{\theta}(x_0|x_1)}{q(x_1|x_0)}\bigg]\nonumber\\&=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[-\log\frac{p(x_T)}{q(x_T|x_0)}-\sum_{t>1}\log\frac{p_{\theta}(x_{t-1}|x_0)}{q(x_{t-1}|x_t,x_0)}-\log p_{\theta}(x_0|x_1)\bigg]\nonumber\\ &=\mathbb{E}_{q(x_{1:T}|x_0)}\bigg[D_{KL}(q(x_T|x_0)||p(x_T))+\sum_{t>1}D_{KL}(q(x_{t-1}|x_t,x_0)\|p_{\theta}(x_{t-1}|x_t))-\log p_{\theta}(x_0|x_1)\bigg]\end{align}\)

(8)

 

이렇게 식을 변형하고, 실제로는 식 \((8)\)을 optimize하게 된다.
이어지는 내용은  다음 편에서 알아 보도록 한다.

#AI

#AI-Study

#Deep-learning

#Denoising-Diffusion-Probabilistic-Model

#Diffusion Model

#Corelinesoft

#Coreline AI

Contact

제품, 인재 채용, 투자 관련 또는 기타 문의사항이 있으신 경우 편하신 방법으로 연락주시기 바랍니다

문의하기