<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Diffusion Model |</title><link>https://chaeniverse.github.io/tags/diffusion-model/</link><atom:link href="https://chaeniverse.github.io/tags/diffusion-model/index.xml" rel="self" type="application/rss+xml"/><description>Diffusion Model</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 28 May 2024 00:00:00 +0000</lastBuildDate><image><url>https://chaeniverse.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>Diffusion Model</title><link>https://chaeniverse.github.io/tags/diffusion-model/</link></image><item><title>Diffusion Models: DDPM 수식 유도와 응용 (DDIM, LDM)</title><link>https://chaeniverse.github.io/blog/diffusion-models-ddpm-derivation/</link><pubDate>Tue, 28 May 2024 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/diffusion-models-ddpm-derivation/</guid><description>&lt;h2 id="concept"&gt;Concept&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Diffusion model의 생물학적 원리.&lt;/strong&gt; 분자 구조가 퍼져 나가는 모습에서 착안. 예) 물에 잉크가 퍼지는 과정, 공기 중에 연기가 퍼지는 과정.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;수학적 원리.&lt;/strong&gt; 분자의 다음 위치는 &lt;strong&gt;gaussian distribution&lt;/strong&gt; 에 의해 결정된다.&lt;/p&gt;
&lt;h2 id="forward--reverse-process"&gt;Forward / Reverse Process&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Forward process&lt;/strong&gt; — 앞선 이미지에 gaussian distribution을 연속적으로 곱해 noise를 추가한다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reverse process&lt;/strong&gt; — 같은 가우시안 분포를 곱해 denoising 상태로 복원한다. 학습을 위한 loss term을 구하는 과정에서 $p$ 와 $q$ 의 평균·분산을 알아야 한다.&lt;/p&gt;
&lt;p&gt;여기서&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$p$ : 우리가 구하고 싶은, 이미 정해진 정답 pdf&lt;/li&gt;
&lt;li&gt;$q$ : 우리가 학습을 통해 구해야 하는 pdf&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="사전-지식"&gt;사전 지식&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KL divergence&lt;/strong&gt; — 두 확률 분포의 차이를 계산. 거리 개념은 아님 (asymmetric).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markov chain&lt;/strong&gt; — 현재 상태는 바로 이전 상태의 영향만 받는다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bayes&amp;rsquo; theorem&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ELBO (Evidence Lower Bound)&lt;/strong&gt; — VAE에서 출발한 개념. MLE를 푸는 한 방식.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vae에서-elbo"&gt;VAE에서 ELBO&lt;/h2&gt;
&lt;p&gt;VAE에서는 latent $z$ 가 주어졌을 때 관측 $x$ 의 분포 $p(x \mid z)$ 를 모델링한다. $p(x)$ 자체는 직접 구하기 어렵고, $q(z \mid x)$ 라는 추정 분포로 우회한다.&lt;/p&gt;
&lt;p&gt;KL divergence 정의로부터&lt;/p&gt;
$$D_{\mathrm{KL}}(q(z\mid x) \,\|\, p(z\mid x)) = \int q(z\mid x) \log\frac{q(z\mid x)}{p(z\mid x)}\,dz \ge 0$$&lt;p&gt;이를 풀어서 $\log p(x)$ 만 남기고 정리하면&lt;/p&gt;
$$\log p(x) = D_{\mathrm{KL}}(q(z\mid x)\,\|\,p(z\mid x)) - \mathbb{E}_{q(z\mid x)}[\log q(z\mid x)] + \mathbb{E}_{q(z\mid x)}[\log p(x, z)]$$&lt;ul&gt;
&lt;li&gt;$\log p(x)$ 는 &lt;strong&gt;fixed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;첫 항 $D_{\mathrm{KL}} \ge 0$ 이고, &lt;strong&gt;이걸 minimize 해야&lt;/strong&gt; $q$ 가 $p$ 에 가까워진다&lt;/li&gt;
&lt;li&gt;그러면 나머지 두 항 (&lt;strong&gt;ELBO&lt;/strong&gt;) 은 자연스럽게 maximize 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ELBO 부분을 정리하면&lt;/p&gt;
$$\mathrm{ELBO} = \mathbb{E}_{q(z\mid x)}\!\left[\log\frac{p(x, z)}{q(z\mid x)}\right]$$&lt;p&gt;→ 이걸 maximize하는 게 VAE 학습의 핵심.&lt;/p&gt;
&lt;h2 id="vae--ddpm-연결"&gt;VAE → DDPM 연결&lt;/h2&gt;
&lt;p&gt;DDPM에서는 latent $z$ 자리에 &lt;strong&gt;여러 시점의 noisy state&lt;/strong&gt; $x_1, x_2, \dots, x_T$ 가 들어간다 ($x_0$ 는 원본 이미지).&lt;/p&gt;
&lt;p&gt;ELBO에 음수를 붙여 minimize 문제로 바꾸면&lt;/p&gt;
$$\mathcal{L} = -\mathbb{E}_{q(x_{1:T} \mid x_0)}\!\left[\log\frac{p_\theta(x_{0:T})}{q(x_{1:T} \mid x_0)}\right]$$&lt;p&gt;이게 DDPM loss의 출발점.&lt;/p&gt;
&lt;h2 id="ddpm-loss-수식-유도"&gt;DDPM Loss 수식 유도&lt;/h2&gt;
&lt;p&gt;Markov chain 가정 하에서 joint 분포가 chain rule로 분해된다:&lt;/p&gt;
$$p_\theta(x_{0:T}) = p(x_T)\prod_{t=1}^{T} p_\theta(x_{t-1} \mid x_t)$$$$q(x_{1:T} \mid x_0) = \prod_{t=1}^{T} q(x_t \mid x_{t-1})$$&lt;p&gt;대입 후 로그 전개:&lt;/p&gt;
$$\mathcal{L} = \mathbb{E}_q\!\left[-\log p(x_T) + \sum_{t=1}^{T} \log\frac{q(x_t \mid x_{t-1})}{p_\theta(x_{t-1} \mid x_t)}\right]$$&lt;p&gt;Bayes&amp;rsquo; theorem과 markov 성질로 $q(x_t \mid x_{t-1}) = q(x_t \mid x_{t-1}, x_0)$ 가 성립하고, 이를 활용해 $q(x_{t-1} \mid x_t, x_0)$ 형태로 변환:&lt;/p&gt;
$$q(x_t \mid x_{t-1}, x_0) = \frac{q(x_{t-1} \mid x_t, x_0)\, q(x_t \mid x_0)}{q(x_{t-1} \mid x_0)}$$&lt;p&gt;이 변환을 적용하면 telescoping이 일어나며 최종적으로 다음의 KL 형태로 정리된다.&lt;/p&gt;
$$\mathcal{L} = \mathbb{E}_q\!\left[\underbrace{D_{\mathrm{KL}}(q(x_T \mid x_0)\,\|\,p(x_T))}_{L_T} + \sum_{t=2}^{T} \underbrace{D_{\mathrm{KL}}(q(x_{t-1} \mid x_t, x_0)\,\|\,p_\theta(x_{t-1} \mid x_t))}_{L_{t-1}} \;-\; \underbrace{\log p_\theta(x_0 \mid x_1)}_{L_0}\right]$$&lt;h3 id="학습할-항만-남기기"&gt;학습할 항만 남기기&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;$L_T$ — forward process에서만 쓰이고 학습할 파라미터 없음 → &lt;strong&gt;무시&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;$L_0$ — 영향이 미미해서 &lt;strong&gt;무시&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;결국 &lt;strong&gt;$L_{t-1}$&lt;/strong&gt; 만 minimize 하면 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="의-평균분산"&gt;$q(x_{t-1} \mid x_t, x_0)$ 의 평균·분산&lt;/h3&gt;
&lt;p&gt;Forward process: $q(x_t \mid x_{t-1}) = \mathcal{N}(x_t;\, \sqrt{1-\beta_t}\, x_{t-1},\, \beta_t I)$.&lt;/p&gt;
&lt;p&gt;$\alpha_t = 1 - \beta_t$, $\bar\alpha_t = \prod_{s=1}^{t}\alpha_s$ 라 정의하면 reparameterization trick으로&lt;/p&gt;
$$q(x_t \mid x_0) = \mathcal{N}(x_t;\, \sqrt{\bar\alpha_t}\,x_0,\, (1-\bar\alpha_t) I)$$&lt;p&gt;Bayes&amp;rsquo; theorem과 가우시안 곱 정리로&lt;/p&gt;
$$q(x_{t-1} \mid x_t, x_0) = \mathcal{N}\big(x_{t-1};\, \tilde\mu_t(x_t, x_0),\, \tilde\beta_t I\big)$$&lt;p&gt;여기서&lt;/p&gt;
$$\tilde\mu_t(x_t, x_0) = \frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1-\bar\alpha_t}\,x_0 + \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}\,x_t$$$$\tilde\beta_t = \frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\,\beta_t$$&lt;p&gt;$x_0 = \dfrac{1}{\sqrt{\bar\alpha_t}}\big(x_t - \sqrt{1-\bar\alpha_t}\,\epsilon\big)$ 로 다시 정리하면&lt;/p&gt;
$$\tilde\mu_t(x_t, x_0) = \frac{1}{\sqrt{\alpha_t}}\!\left(x_t - \frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon\right)$$&lt;h3 id="의-정의"&gt;$p_\theta(x_{t-1} \mid x_t)$ 의 정의&lt;/h3&gt;
&lt;p&gt;가우시안 분포로 가정하고, 평균을 다음처럼 &lt;strong&gt;네트워크 출력 $\epsilon_\theta$&lt;/strong&gt; 의 형태로 둔다:&lt;/p&gt;
$$p_\theta(x_{t-1} \mid x_t) = \mathcal{N}\!\big(x_{t-1};\, \mu_\theta(x_t, t),\, \sigma_t^2 I\big)$$$$\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}\!\left(x_t - \frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon_\theta(x_t, t)\right)$$&lt;p&gt;→ 두 평균의 차이만 학습하면 되고, 이는 곧 &lt;strong&gt;$\epsilon$ vs $\epsilon_\theta$&lt;/strong&gt; 의 차이를 학습하는 것이 된다.&lt;/p&gt;
&lt;h3 id="가우시안-kl--평균-차이의-l2"&gt;가우시안 KL → 평균 차이의 L2&lt;/h3&gt;
&lt;p&gt;분산이 같은 두 가우시안의 KL은 평균 제곱 차로 환원되므로&lt;/p&gt;
$$L_{t-1} = \mathbb{E}_{x_0,\epsilon}\!\left[\frac{\beta_t^2}{2\sigma_t^2\,\alpha_t(1-\bar\alpha_t)} \,\big\|\epsilon - \epsilon_\theta\big(\sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon,\; t\big)\big\|^2\right]$$&lt;h3 id="단순화된-최종-loss"&gt;단순화된 최종 loss&lt;/h3&gt;
&lt;p&gt;DDPM 논문에서는 weight term을 제거한 단순화된 loss를 사용한다:&lt;/p&gt;
$$\mathcal{L}_{\text{simple}}(\theta) = \mathbb{E}_{t,\,x_0,\,\epsilon}\!\left[\,\big\|\epsilon - \epsilon_\theta\big(\sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon,\; t\big)\big\|^2\,\right], \qquad \epsilon \sim \mathcal{N}(0, I)$$&lt;p&gt;→ 결국 &lt;strong&gt;U-Net (또는 다른 구조)이 noise $\epsilon$ 을 예측하도록 학습&lt;/strong&gt;시키는 단순한 MSE 회귀 문제로 귀결.&lt;/p&gt;
&lt;h2 id="학습샘플링-알고리즘-요약"&gt;학습·샘플링 알고리즘 요약&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Training&lt;/strong&gt;: $x_0$ 와 $t \sim \mathrm{Unif}(\{1, \dots, T\})$, $\epsilon \sim \mathcal{N}(0, I)$ 을 뽑아 $\mathcal{L}_{\text{simple}}$ 의 SGD로 $\epsilon_\theta$ 를 학습.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sampling&lt;/strong&gt;: $x_T \sim \mathcal{N}(0, I)$ 부터 시작, $t = T, T-1, \dots, 1$ 까지 reverse step으로&lt;/p&gt;
$$x_{t-1} = \frac{1}{\sqrt{\alpha_t}}\!\left(x_t - \frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon_\theta(x_t, t)\right) + \sigma_t z, \quad z \sim \mathcal{N}(0, I)$$&lt;h2 id="ddim-denoising-diffusion-implicit-models"&gt;DDIM (Denoising Diffusion Implicit Models)&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Song et al. (2021)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;DDPM은 markov chain을 연속적으로 곱해 process가 이루어져 &lt;strong&gt;샘플링이 느리다&lt;/strong&gt; ($T$ 보통 1000).&lt;/p&gt;
&lt;p&gt;이를 단축하기 위해 &lt;strong&gt;non-markovian&lt;/strong&gt; 개념을 도입. Forward process에서 $x_t$ 분포를 구할 때 $x_{t-1}$ 와 $x_0$ 만으로도 정의 가능 → markov 성질을 가정할 필요 없음. Sampling step을 대폭 줄여도 품질이 유지된다.&lt;/p&gt;
&lt;p&gt;가우시안이 아니어도 적용 가능 (이상치가 많은 분포라면 t분포·코시분포 활용 검토 가능).&lt;/p&gt;
&lt;h2 id="diffusion-gan"&gt;Diffusion-GAN&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Wang et al. (2023)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Diffusion model에 GAN의 discriminator를 도입. Generator + Discriminator 구조로,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Real noise (forward process로 만든 noisy image) 와 fake noise (학습한 모델이 만든 noisy image) 사이의 차이를 discriminator가 판별&lt;/li&gt;
&lt;li&gt;둘의 차이를 minimize하도록 generator를 학습&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="latent-diffusion-model-ldm"&gt;Latent Diffusion Model (LDM)&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Rombach et al. (2022) — &lt;em&gt;High-Resolution Image Synthesis with Latent Diffusion Models&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;기존 diffusion model은 픽셀 공간에서 직접 작동해 &lt;strong&gt;계산량이 많다&lt;/strong&gt;. LDM은 이를 줄이기 위해 &lt;strong&gt;차원 축소된 latent space&lt;/strong&gt;에서 diffusion을 수행한다.&lt;/p&gt;
&lt;h3 id="pixel-space-vs-latent-space"&gt;Pixel space vs Latent space&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pixel space&lt;/strong&gt;: 차원 축소되지 않은 고차원&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latent space&lt;/strong&gt;: 차원 축소된 저차원&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이미지의 resolution은 두 측면으로 분해할 수 있다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Semantic&lt;/strong&gt; — 사물의 형체만 알아볼 정도의 해상도&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perceptual&lt;/strong&gt; — 더 디테일한 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;차원 축소 시 perceptual 정보를 덜어내고 semantic resolution을 보존한다. 이 latent에서 diffusion을 수행한 뒤 decoder로 perceptual 정보를 복원.&lt;/p&gt;
&lt;h3 id="구조"&gt;구조&lt;/h3&gt;
&lt;p&gt;VAE의 autoencoder 개념이 결합된 구조:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$\varepsilon$ (encoder)&lt;/strong&gt;: pixel → latent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$\mathcal{D}$ (decoder)&lt;/strong&gt;: latent → pixel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diffusion&lt;/strong&gt; 은 latent space에서 작동&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;내부적으로는 &lt;strong&gt;U-Net + attention-based transformer&lt;/strong&gt; 모듈을 결합. Conditioning ($y$ — 텍스트, 클래스 라벨, semantic map 등) 은 cross-attention으로 주입한다.&lt;/p&gt;
&lt;h3 id="손실-함수"&gt;손실 함수&lt;/h3&gt;
$$\mathcal{L}_{\mathrm{LDM}} = \mathbb{E}_{z_0,\, y,\, \epsilon,\, t}\!\left[\,\big\|\epsilon - \epsilon_\theta(z_t,\, t,\, y)\big\|_2^2\,\right]$$&lt;p&gt;→ 픽셀 공간 DDPM의 단순화된 loss와 형태는 같고, &lt;strong&gt;변수만 latent $z$ 와 condition $y$&lt;/strong&gt; 로 바뀐 형태.&lt;/p&gt;
&lt;h3 id="왜-좋은가"&gt;왜 좋은가&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;차원 축소된 공간에서 diffusion → &lt;strong&gt;계산 비용 ↓&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Latent space는 likelihood 기반 생성 모델에 더 적합&lt;/li&gt;
&lt;li&gt;Semantic 수준에서만 학습되므로 데이터 효율성도 ↑&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="정리"&gt;정리&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;DDPM의 loss는 결국 VAE의 ELBO를 markov chain으로 펼친 형태이며, 가우시안 KL이 평균 차의 L2로 환원되어 결국 &amp;ldquo;noise 예측&amp;rdquo; 회귀 문제가 된다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DDIM은 sampling 가속화, Diffusion-GAN은 GAN과의 결합, LDM은 latent space 활용으로 계산 효율을 끌어올린 후속 작업들.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="참고"&gt;참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ho et al., &lt;em&gt;Denoising Diffusion Probabilistic Models&lt;/em&gt;, NeurIPS 2020&lt;/li&gt;
&lt;li&gt;Song et al., &lt;em&gt;Denoising Diffusion Implicit Models&lt;/em&gt;, ICLR 2021&lt;/li&gt;
&lt;li&gt;Rombach et al., &lt;em&gt;High-Resolution Image Synthesis with Latent Diffusion Models&lt;/em&gt;, CVPR 2022&lt;/li&gt;
&lt;li&gt;Wang et al., &lt;em&gt;Diffusion-GAN: Training GANs with Diffusion&lt;/em&gt;, 2023&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>