ai papers

DDIM(Denoising Diffusion Implicit Models) 이해하기

Junyoung Park · 2023-04-20 · 11 min

들어가며 …

DDPM은 adversarial training과 같이 직접 latent prior를 지정해줄 수 없는 GAN 모델과는 다르게 collapse가 발생하지 않고 안정적인 학습이 가능하다는 장점을 통해 generative model의 새로운 기대주로 떠오를 수 있었다.

그러나 DDPM의 경우 학습 시 많은 iteration(T=1000T = 1000)을 거치면서 아주 작은 가우시안 노이즈를 픽셀 별로 더하고, 각 step에 대한 noised input(xtx_t)을 기반으로 샘플링을 진행하기 때문에 Markov process를 벗어날 수 없었다.

Markov process가 안정적인 prior p(z)p(z)를 만들어줄 수 있는 방법이지만, 세상 모든 것에는 득이 있다면 실이 있듯이 DDPM은 샘플링 속도가 현저하게 느리다는 단점이 있었다. 왜냐하면 Markov process는 이전 state에 대해 다음 state가 의존하는 cascade 구조를 가지는데, 이는 GPU와 같은 hardware 가속기로 병렬 처리가 불가능하기 때문이다. 실제로 같은 resolution을 가지는 이미지를 생성하는데 있어서 GAN과 같은 implicit model에 비해 천 배 많은 연산량이 필요한 것을 볼 수 있다(예컨대 32×3232 \times 32 크기의 이미지를 50k50k 만큼 만들기 위해서는 GAN으로는 1분 미만으로 생성할 수 있지만 DDPM으로는 20시간이 걸린다). 수식 전개 및 디퓨전과 관련된 자세한 내용은 DDPM에 대한 소개글과 DDPM 수식 조지기 글을 참고하면 좋다.

아무튼 이 논문에서는 DDPM의 샘플링 과정이 너무 느리다는 점을 지적하여, DDPM과 objective는 동일하게 가져갈 수는 있되 샘플링 과정에서 non-Markovian process를 보장할 수 있는 새로운 방법을 제시한다. 이때 DDPM의 완전히 stochastic한 샘플링 과정과는 대비되는 deterministic(원래 이미지인 x0x_0에 대한 조건부가 적용됨)하다는 점에서 신경망의 decoder 구조와 같은 11 to 11 mapping trajectory를 생성하였고, 이를 이른바 DDIM(Denoising diffusion implicit model)이라고 불렀다.

개요

DDPM의 아이디어는 Markov process인 forward process를 tractable하게 바꾼 posterior q(xt1xt,x0)q(x_{t-1} \vert x_t, x_0)를 reverse process가 따라가게끔 학습하는 것이었다. DDIM은 non-Markov process를 상정하여 deterministic한 샘플링을 가능하게 하므로 다음과 같이 time tt에 대한 noised inputx0x_0로부터 온 녀석임을 명시해줌으로써 이전 state에만 의존했던 방법에서 벗어날 수 있다.

즉 원래의 pθ(xt1xt)p_\theta(x_{t-1} \vert x_{t})이 따라가는 분포가 Markovian이 아닌 non-Markovian임을 보장할 수 있게 되므로 sampling 과정에서 복구해야 할 이미지 x0x_0에 대한 정보를 디퓨전 프로세스가 implicit하게 인지할 수 있다는 것이다.

그리고 가장 중요한 점은 이런 식으로 바꿈으로 인한 objective function의 변화가 없었기 때문에, 굳이 다른 objective function으로 다시 학습할 필요는 없고 그냥 위의 그림을 통해 전개한 샘플링 방법만 사용하면 pre-trained DDPM을 그대로 사용할 수 있다는 장점이 있다. 또다른 장점이라고 한다면 x0x_0를 인지하고 있는 deterministic sampling이기 때문에 굳이 noised sample을 만들기 위해 거친 forward process의 T=1000T = 1000를 전부 reverse process를 통해 거치지 않더라도 그의 부분집합인 sub-sequence Tsub=[τn, τn1,, τ0]T_\text{sub} = [\tau_n,~\tau_{n-1}, \cdots,~\tau_0]를 거치더라도 큰 quality 손상 없이 샘플링이 가능하다는 장점이 있다.

마지막으로 샘플링 과정에서 xt(t<T)x_{t(t < T)}인 noised image가 모두 x0x_0에 조건화된 샘플링이기 때문에 latent space에서의 interpolation이 유의미한 semantic interpolation으로 이어질 수 있다는 것이다.

예컨대 GAN inversion처럼 GAN 모델에서 image editing이 보다 간편했던 이유는 latent zz가 mapping되는 과정이 단순하게 style mapper FF와 image synthesizer GG에 의해 implicit하게 생성된 x=F(G(z))x = F(G(z))zz의 공간상의 정보와 xx의 공간상의 정보를 non-linear warping할 수 있었기 때문이다. 따라서 정도의 차이는 있지만 x1x_1x2x_2를 만드는 두 latent z1z_1, z2z_2를 interpolation하는 αz1+(1α)z2\alpha \cdot z_1 + (1-\alpha) \cdot z_2가 image 공간에서도 βx1+(1β)x2\beta \cdot x_1 + (1-\beta)x_2와 같은 효과를 보여줄 수 있다는 것이었다. 물론 non-linearity이기 때문에 Affine이 수식 상으로는 정확하게 맞아떨어지지는 않지만 semantic하게 금발의 여자와 흑발의 여자 중간의 갈색 머리 여자가 나온다는 직관적인 연산이 가능한 것이다.

이러한 직관적 sampling이 diffusion process에서는 stochasticity 때문에 불가능하다는 한계가 있었는데, 이를 극복할 수 있는 방법 중 하나가 바로 DDIM이 될 수 있다는 것이다.

수식 증명

DDIM에서는 DDPM과 다른 notation을 사용하기 때문에 조금 혼란스러울 수도 있다. 본인은 DDPM의 notation을 선호하는 편이라 DDIM에 있는 수식 증명을 죄다 DDPM notation으로 대체할 생각이다.

q(x1:Tx0):=t=1Tq(xtxt1), where q(xtxt1):=N(αtxt1, (1αt)I)q(x_{1:T} \vert x_0) := \prod_{t=1}^T q(x_t \vert x_{t-1}) , \text{ where }q(x_t \vert x_{t-1}):= \mathcal{N}(\sqrt{\alpha_t}x_{t-1}, ~(1-\alpha_t)I)

위에서 볼 수 있는 αt\alpha_t는 각 time step tt에 대해 scheduling된 variance인 βt\beta_t11에서 뺀 값으로, 수식 증명 게시글에서도 밝힌 바 있듯이 위와 같이 forward process를 통해 noise를 만들어가게 되면 variance를 11로 유지하면서 가우시안 분포를 만들어낼 수 있다. 위와 같은 방식으로 noise를 쌓아가게 되면 q(xtx0)q(x_t \vert x_0)에 대해 다음과 같이 정리할 수 있다. 아래의 식에서 αˉt=τ=1tατ\bar{\alpha}_t = \prod_{\tau=1}^t \alpha_\tau가 된다.

q(xtx0):=q(x1:tx0)dx1:(t1)=N(xt; αˉtx0,(1αˉt)I)q(x_t \vert x_0) := \int q(x_{1:t} \vert x_0)dx_{1:(t-1)} = \mathcal{N}(x_t;~\sqrt{\bar{\alpha}}_t x_0, (1-\bar{\alpha}_t)I)

그리고 실제로는 위와 같은 stochastic process(분포에서 랜덤하게 뽑는 과정)이 아니라 reparameterization metric을 사용하는 것은 DDPM에서와 동일하다.

xt=αˉtx0+1αˉtϵ, where ϵN(0,I)x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1-\bar{\alpha}_t} \epsilon, \text{ where }\epsilon \sim \mathcal{N}(0, I)

놀랍게도 요 식에서 바로 DDIM 식을 유도할 수 있다. 해당 내용에 대한 증명은 Bishop의 pattern recognition 책의 2절 115번 공식을 토대로 한다(가우시안 분포, 조건부 확률에서 특정 변수에 대한 marginal을 구하는 방법). 간단하게 해당 수식을 보이자면 다음과 같다.

p(x)=N(xμ, Λ1)p(yx)=N(yAx+b, L1)\begin{aligned} p(x) =& \mathcal{N}(x \vert \mu,~\Lambda^{-1}) \newline p(y \vert x) =& \mathcal{N}(y \vert Ax+b,~\mathrm{L}^{-1}) \end{aligned}

위와 같은 분포가 있을 때, xx에 대해 projection한 yy 분포는 다음과 같다.

p(y)=N(yAμ+b, L1+AΛ1A)p(y) = \mathcal{N}(y \vert A\mu+b,~\mathrm{L}^{-1}+ A \Lambda^{-1}A^\top)

조건부의 평균이 xx에 대해 변수화가 되었는데 이게 prior의 평균으로 수렴하고, 분산은 꽁다리에 붙는 형태가 되었다. 다시 DDIM으로 돌아와서, 우리는 귀납적으로 다음과 같은 constraint를 만족하는 non-Markovian process의 ‘posterior’를 학습하고자 한다.

qσ(xt1xt, x0)q_\sigma(x_{t-1} \vert x_t,~x_0)

이거 어디서 봤는데? 싶다면 바로 DDPM 식에서는 이를 원래 forward였던 q(xt1xt)q(x_{t-1} \vert x_t)t>1t>1인 모든 time step에 대해 x0x_0에 조건화시키면서 Markov process를 유지한 상태로 Bayes’ rule을 전개하는데 사용했었다(아래와 같음).

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)q(x_{t-1} \vert x_t,x_0) = q(x_t \vert x_{t-1},x_0) \frac{q(x_{t-1} \vert x_0)}{q(x_t \vert x_0)}

그런데 조금 다른 점이라면 이번에는 모든 time step tt에 대해 같은marginal인 q(xtx0)q(x_{t} \vert x_0)를 가지는 새로운 non-Markovian 분포 qσ(xtxt1,x0)q_{\sigma}(x_{t} \vert x_{t-1}, x_0)을 찾고자 하는 것이다. 이걸 찾을 때 귀납적으로 증명하기 위해서는 다음과 같은 process를 거치게 된다.

  1. t=1t = 1일 때, q(x1x0)=qσ(x1x0)q(x_{1} \vert x_0) = q_{\sigma}(x_1 \vert x_0) 임은 자명하다.
  2. t=τt = \tau일 때, q(xτ1x0)=qσ(xτ1xτ,x0)dxτq(x_{\tau-1} \vert x_0) = \int q_{\sigma}(x_{\tau-1} \vert x_{\tau}, x_0) dx_\tau를 만족한다고 생각해보자(τ1\tau \ge 1).
  3. 그렇다면 t=τ+1t = \tau + 1에 대해서도 q(xτx0)=qσ(xτxτ+1,x0)dxτ+1q(x_{\tau} \vert x_0) = \int q_{\sigma}(x_{\tau} \vert x_{\tau+1}, x_0) dx_{\tau+1}를 만족시킬 수만 있다면, 모든 t1t \ge 1에 대해 DDIM의 모든 forward process의 marginal을 DDPM과 맞출 수 있다.

앞서 Bishop 책에서 본 공식을 머리 속에 박아넣은 채로 우리가 통일시켜야할 marginal을 살펴보면 다음과 같다.

q(xt1x0)=N(xt1; αˉt1x0,(1αˉt1)I)q(x_{t-1} \vert x_0) = \mathcal{N}(x_{t-1};~\sqrt{\bar{\alpha}}_{t-1} x_0, (1-\bar{\alpha}_{t-1})I)

이 상태에서 xtx_{t}를 조건부로 박아넣게 되면 다음과 같이 정리된다. 참고로 q(xtx0)q(x_t \vert x_0)의 확률과 같이 나타내면 다음과 같이 표현 가능하다.

q(xtx0)=N(xt; αˉtx0,(1αˉt)I)qσ(xt1xt,x0)=N(xt1; αˉt1x0+C(xtαˉtx0),σt2I)\begin{aligned} q(x_t \vert x_0) =& \mathcal{N}(x_{t};~\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_{t})I) \newline q_\sigma(x_{t-1} \vert x_t, x_0) =& \mathcal{N}(x_{t-1};~\sqrt{\bar{\alpha}_{t-1}}x_0 + C\cdot(x_t - \sqrt{\bar{\alpha}_t}x_0),\sigma_t^2 I) \end{aligned}

위의 식에서 σt\sigma_t는 같은 marginal을 만족하는 모든 가우시안 분포의 임의의 standard deviation이라고 생각하면 된다. 평균 부분에 CC라는 constant를 붙여서 위와 같이 식을 쓴 이유는 다음과 같다. Bishop 책 2절의 115번 공식에 따르면 위와 같은 식을 만족하는 두 분포에 대해,

E(qσ(xt1x0))=E(qσ(xt1xt,x0))xt=E(q(xtx0))\mathbb{E}\left(q_\sigma(x_{t-1} \vert x_0)\right) = \mathbb{E}\left(q_\sigma(x_{t-1} \vert x_t, x_0)\right) \rvert_{x_t = \mathbb{E}(q(x_t \vert x_0))}

위와 같기 때문에 αˉt1x0+C(xtαˉtx0)\sqrt{\bar{\alpha}_{t-1}}x_0 + C\cdot(x_t - \sqrt{\bar{\alpha}_t}x_0) 식에서 xtx_t 대신 αˉtx0\sqrt{\bar{\alpha}_t}x_0를 대입했을 때 αˉt1x0\sqrt{\bar{\alpha}_{t-1}}x_0가 나올 수 있도록 의도적으로 만들어준 것이다. CC라는 constant를 우리가 임의로 지정했기 때문에 이를 구하고자 variance에 대한 식을 마찬가지로 적용하면,

Var(qσ(xt1x0))=Var(qσ(xt1xt,x0))+C2Var(q(xtx0))\mathrm{Var}(q_\sigma(x_{t-1} \vert x_0)) = \mathrm{Var}(q_\sigma(x_{t-1} \vert x_t, x_0))+C^2 \cdot \mathrm{Var}(q(x_t \vert x_0))

이고, 우리가 미리 알고 있는 marginal 분포의 variance를 사용하여 위의 식을 다시 나타내면,

(1αˉt1)I=σt2I+C2(1αˉt)I(1-\bar{\alpha}_{t-1})I = \sigma_t^2I + C^2 \cdot (1-\bar{\alpha}_t)I

Identity matrix(II) 부분을 제외하고 CC를 coefficient에 대해서 다시 표현하면,

C=1αˉt1σt2(1αˉt)C = \frac{\sqrt{1-\bar{\alpha}_{t-1}-\sigma_t^2}}{\sqrt{(1-\bar{\alpha}_t)}}

위와 같이 나타낼 수 있다. 따라서 임의의 variance σt2\sigma_t^2에 대한 non-Markovian posterior를 다음과 같이 정리할 수 있다.

qσ(xt1xt,x0)=N(xt1; αˉt1x0+1αˉt1σt2(1αˉt)(xtαˉtx0),σt2I)q_\sigma(x_{t-1} \vert x_t, x_0) = \mathcal{N}(x_{t-1};~\sqrt{\bar{\alpha}_{t-1}}x_0 + \frac{\sqrt{1-\bar{\alpha}_{t-1}-\sigma_t^2}}{\sqrt{(1-\bar{\alpha}_t)}} \cdot(x_t - \sqrt{\bar{\alpha}_t}x_0),\sigma_t^2 I)

다시 한번 언급하자면 위의 식은 DDPM에서 유도했던 posterior와 전혀 다른 의미를 가진다. 이번에는 반대로 위의 non-Markov process posterior를 likelihood로 바꿔주게 되면,

qσ(xtxt1,x0)=qσ(xt1xt,x0)×qσ(xtx0)qσ(xt1x0)q_\sigma(x_{t} \vert x_{t-1}, x_0) = q_\sigma(x_{t-1} \vert x_t,x_0) \times \frac{q_\sigma(x_t \vert x_0)}{ q_\sigma(x_{t-1} \vert x_0)}

위와 같다. 결국 논문에서 하고자 했던 Markov forward process qq와 동일한 marginal을 가지는 non-Markovian forward process qσq_\sigma를 구해낼 수 있게 되었다.

Non Markovian posterior to DDPM loss

이제 실제로 왜 위와 같은 qq에 대한 최적화가 DDPM loss와 동일한지 확인해보자. 참고로 DDPM loss를 기준으로 바뀌는 부분은 qq 부분만 해당되므로 다음과 같이 표현할 수 있다. DDPM의 lower bound를 non-Markovian forward process로 대체한 것이다.

E(logpθ(x0))Eq(logpθ(xT)t1logpθ(xt1xt)qσ(xtxt1,x0))\mathbb{E}(-\log p_\theta (x_0)) \leq \mathbb{E}_q \left( -\log p_\theta(x_T) - \sum_{t \ge 1}\log \frac{p_\theta(x_{t-1} \vert x_t)}{q_\sigma(x_t \vert x_{t-1}, x_0)} \right)

이걸 posterior로 바꾸고 지지고 볶는 과정은 DDPM에서 이미 다 했기 때문에 굳이 증명할 필요는 없고 결론부터 보자면 variational inference loss는 다음과 같이 나온다.

DKL(q(xTx0)pθ(xT))+t>1DKL(qσ(xt1xt,x0)pθ(xt1xt))Eq(logpθ(x0x1))D_{KL}(q(x_T \vert x_0) \vert\vert p_\theta(x_T)) +\sum_{t > 1} D_{KL} (q_\sigma(x_{t-1} \vert x_t, x_0) \vert\vert p_\theta(x_{t-1} \vert x_t)) -\mathbb{E}_q\left(\log p_{\theta}(x_0 \vert x_1) \right)

결국 바뀐 것은 forward process를 나타내는 분포 qqσ\sigma라는 non-Markovian posterior의 standard deviation만 붙은 것이다. DDPM에서 했던 것처럼 첫 번째 term은 날려버리고 나머지 term에 대한 디퓨전 모델의 학습을 reverse process pθp_\theta에 대해 다음과 같이 표현 가능함.

pθ(t)(xt1xt)={N(x0(xt,ϵθ),σ12I),if t=1qσ(xt1xt, x0(xt,ϵθ)),otherwisep_\theta^{(t)}(x_{t-1} \vert x_t) = \begin{cases} \mathcal{N}(x_0(x_t, \epsilon_\theta), \sigma_1^2I), &\text{if }t = 1\newline q_\sigma (x_{t-1} \vert x_t,~x_0(x_t,\epsilon_\theta)),& \text{otherwise}\end{cases}

참고로 위의 식에서 x0(xt,ϵθ)x_0(x_t, \epsilon_\theta)는 네트워크가 각 xtx_t에 대해 더해졌을 것이라고 예측한 noise인 ϵθ(t)\epsilon_\theta^{(t)}를 통해 역으로 추적한 x0=(xt1αˉtϵθ(t)(xt))/αˉtx_0 = (x_t - \sqrt{1-\bar{\alpha}_t} \cdot \epsilon_\theta^{(t)}(x_t)) / \sqrt{\bar{\alpha}_t}를 의미한다. 이를 통해 t>1t>1인 부분에 대해서만 확인해보면 가우시안 분포에 대한 KL divergence는 exponential을 벗겨버리므로 간단하게 표현된다.

DKL(qσ(xt1xt,x0)pθ(t)(xt1xt))=DKL(qσ(xt1xt,x0)qσ(xt1xt, x0(xt, ϵθ)))=Eq(x0x0(xt,ϵθ)222σt2)\begin{aligned} &D_{KL} (q_\sigma(x_{t-1} \vert x_t, x_0) \vert\vert p_\theta^{(t)}(x_{t-1} \vert x_t)) \newline &=D_{KL} (q_\sigma(x_{t-1} \vert x_t, x_0) \vert\vert q_\sigma(x_{t-1} \vert x_t,~x_0(x_t,~\epsilon_\theta))) \newline &=\mathbb{E}_q\left(\frac{\parallel x_0 - x_0(x_t,\epsilon_\theta) \parallel_2^2}{2\sigma_t^2} \right) \end{aligned}

Reparameterization으로 식을 ϵ\epsilon(실제로 더해진 noise)을 통해 다시 정리하면,

=Eq((xt1αˉtϵ)/αˉt(xt1αˉtϵθ(t)(xt))/αˉt222σt2)=\mathbb{E}_q\left( \frac{\parallel (x_t-\sqrt{1-\bar{\alpha}_t}\epsilon)/\sqrt{\bar{\alpha}_t} - (x_t-\sqrt{1-\bar{\alpha}_t}\epsilon_\theta^{(t)}(x_t))/\sqrt{\bar{\alpha}_t} \parallel_2^2}{2\sigma_t^2} \right)

슬슬 어디서 많이 본 애가 나타나기 시작했다. 계수로 붙는 애들을 정리하고 나면 simplified version인 익숙한 친구가 눈에 보인다.

=Eq((1αˉt)ϵϵθ(t)(xt)22σt2αˉt)=Eq(1αˉt2σt2αˉtϵϵθ(t)(xt)2)=\mathbb{E}_q \left( (1-\bar{\alpha}_t)\cdot\frac{\parallel \epsilon - \epsilon_\theta^{(t)}(x_t) \parallel^2}{2\sigma_t^2\bar{\alpha}_t} \right) = \mathbb{E}_q\left( \frac{1-\bar{\alpha}_t}{2\sigma_t^2\bar{\alpha}_t} \cdot \parallel \epsilon - \epsilon_\theta^{(t)}(x_t) \parallel^2 \right)

결국 DDIM sampling을 하기 위해 설정한 non-Markovian posterior가 실제로 DDPM loss로 수렴한다는 사실이 입증된다.

Sampling with DDIM

앞서 상정한 non-Markovian forward process에 predicted ϵθ\epsilon_\theta를 써서 샘플링 과정을 보면 다음과 같다.

xt1=αˉt1(xt1αˉtϵθ(t)(xt)αˉt)predicted x0+1αˉt1σt2ϵθ(t)(xt)direction pointing to xt+σtzrandom noise, zN(0,I)x_{t-1} = \sqrt{\bar{\alpha}_{t-1}}\underset{\text{predicted }x_0}{\left( \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon_\theta^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right)} + \underset{\text{direction pointing to }x_t}{\sqrt{1-\bar{\alpha}_{t-1} - \sigma_t^2} \cdot \epsilon_\theta^{(t)}(x_t)} + \underset{\text{random noise}}{\sigma_t z},~z \sim \mathcal{N}(0, I)

식을 보게 되면 x0x_0를 예측하고 xtx_t를 다시 복구하는 형태를 가지는데, 이때 굳이 t1t-1번째 샘플을 예측할 것이 아니라 t2t-2번째 샘플을 예측하더라도 큰 무리가 없는 것을 볼 수 있다. 이처럼 DDIM 샘플링은 TT의 time step을 전부 소모하지 않고도 일부 tt만 샘플링 용도로 사용할 수 있다. 예컨대 만약 길이가 TT인 전체 time sequence [1, 2, , T][1,~2,~\cdots,~T]의 sub-sequence인 [xτ1, , xτS](S<T)[x_{\tau_1},~\cdots,~x_{\tau_S}] (S < T)가 있을 때, non-Markov process인 forward process를 새롭게 q(xτix0)=N(αˉτix0, (1αˉτi)I)q(x_{\tau_i} \vert x_0) = \mathcal{N}(\sqrt{\bar{\alpha}_{\tau_i}}x_0,~(1-\bar{\alpha}_{\tau_i})I)로 정의할 수 있으며, 더 이상 이전 state에만 의존하지 않기 때문에 연속 sequence에 대한 의존성도 없어진다.

Experiment

Sampling 식을 보게 되면 σ\sigma라는 새로운 hyperparameter가 등장한 것을 볼 수 있다.

xt1=αˉt1(xt1αˉtϵθ(t)(xt)αˉt)predicted x0+1αˉt1σt2ϵθ(t)(xt)direction pointing to xt+σtzrandom noise, zN(0,I)x_{t-1} = \sqrt{\bar{\alpha}_{t-1}}\underset{\text{predicted }x_0}{\left( \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon_\theta^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right)} + \underset{\text{direction pointing to }x_t}{\sqrt{1-\bar{\alpha}_{t-1} - \sigma_t^2} \cdot \epsilon_\theta^{(t)}(x_t)} + \underset{\text{random noise}}{\sigma_t z},~z \sim \mathcal{N}(0, I)

해당 식에서 variance를 따로 계산해보면 다음과 같이 엡실론에 붙은 애들을 제곱해서 더한 결과와 같다.

Var(xt1)=αˉt1(1αˉt)αˉt+(1αˉt1σt2)+σt2=(1+αt2αˉt)αt\mathrm{Var}(x_{t-1}) = \frac{\bar{\alpha}_{t-1} \cdot (1-\bar{\alpha}_t)}{\bar{\alpha}_t} + (1-\bar{\alpha}_{t-1} - \sigma_t^2) + \sigma_t^2 = \frac{(1+\alpha_t-2\bar{\alpha}_t)}{\alpha_t}

즉 해당 식이 시사하는 바는 σ\sigma는 DDPM과 DDIM의 stochastic와 deterministic을 조절해주는 역할을 수행하고, 실질적으로 sampling variance에는 변화를 주지 않는 것을 확인할 수 있다. DDPM의 샘플링 식을 recap 해보면 다음과 같다.

xt1=1αt(xtβt1αˉtϵθ(xt,t))+σtzx_{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_tz

그리고 이 식이 나오게 되면 Markovian forward process에 대한 tractable probability distribution q(xt1xt,x0)q(x_{t-1} \vert x_t, x_0)의 표준편차는 다음과 같았다.

σ~t2=βt×(1αˉt11αˉt)\tilde{\sigma}_t^2 = \beta_t \times \left( \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \right)

놀랍게도 DDIM의 σt\sigma_t가 위의 형태가 되면 정확하게 DDPM의 샘플링 식과 동일해진다. 그래서 다음과 같이 η\eta를 hyperparameter로 정의하게 되면 DDPM과 DDIM 샘플링을 조절할 수 있게 된다.

σt=η(1αt)×(1αˉt11αˉt)\sigma_{t} = \eta\sqrt{(1-\alpha_t) \times \left( \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \right)}

η=1\eta = 1이면 완전한 DDPM이 되고 00이면 완전한 DDIM이 된다.

DDPM(η=1\eta = 1)과 DDIM(η=0\eta = 0)은 그리고 그 중간에 대해서 T<1000T < 1000에 대해서는 적은 step만큼 학습시킨 결과를 FID로 나타내었고 DDPM이 급격하게 성능이 안좋아지는 모습을 볼 수 있지만 DDIM은 퀄리티를 유지하는 것을 볼 수 있다.

당연하겠지만 step 수를 늘릴수록 샘플링 성능은 더 좋음 근데 샘플링 시간이 오바라서….

대략 2010020 \sim 100 step에서 10001000 step에 필적할 생성 성능이 보이는데, 단순 계산으로 10배에서 50배 속도 향상과 같음.

그리고 가장 좋은 점인 latent interpolation이 생성된 이미지의 semantic과 유의미한 관계를 가지게 되었다. 그와중에 Shutterstock 조금씩 드러나는게 개웃김 ㅋㅋㅋㅋㅋ(나만 그런가 ㅠ)

Neural ODE with DDIM

놀랍게도 DDIM과 DDPM은 diffusion인데 diffusion을 discrete하게 사용하기 때문에 미분 방정식이라고 보긴 힘들다. 그런데 DDIM은 오일러 근사(추정)이 가능한 샘플링의 형태를 보여준다. 예컨대 샘플링 식을 다시 끌고와보면,

xt1=αˉt1(xt1αˉtϵθ(t)(xt)αˉt)predicted x0+1αˉt1σt2ϵθ(t)(xt)direction pointing to xt+σtzrandom noise, zN(0,I)x_{t-1} = \sqrt{\bar{\alpha}_{t-1}}\underset{\text{predicted }x_0}{\left( \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon_\theta^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} \right)} + \underset{\text{direction pointing to }x_t}{\sqrt{1-\bar{\alpha}_{t-1} - \sigma_t^2} \cdot \epsilon_\theta^{(t)}(x_t)} + \underset{\text{random noise}}{\sigma_t z},~z \sim \mathcal{N}(0, I)

오 보인다 보여 DDIM은 앞서 말했던 것처럼 σ=0\sigma = 0으로 두면 된다.

xt1αˉt1=xt1αˉtϵθ(t)(xt)αˉt+1αˉt1ϵθ(t)(xt)αˉt1\frac{x_{t-1}}{\sqrt{\bar{\alpha}_{t-1}}} = \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon_\theta^{(t)}(x_t)}{\sqrt{\bar{\alpha}_t}} + \frac{\sqrt{1-\bar{\alpha}_{t-1}} \cdot \epsilon_\theta^{(t)}(x_t)}{\sqrt{\bar{\alpha}_{t-1}}}

애초에 discrete한 샘플링에 대한 식이었기 때문에 시간 간격을 죄다 Δ\Delta로 바꿔주면 differential equation 형태로 바꿔볼 수 있다.

xtΔαˉtΔ=xtαˉt+(1αˉtΔαˉtΔ1αˉtαˉt)ϵθ(t)(xt)\frac{x_{t-\Delta}}{\sqrt{\bar{\alpha}_{t-\Delta}}} = \frac{x_t }{\sqrt{\bar{\alpha}_t}} + \left(\frac{\sqrt{1-\bar{\alpha}_{t-\Delta}} }{\sqrt{\bar{\alpha}_{t-\Delta}}} - \frac{\sqrt{1-\bar{\alpha}_t}}{\sqrt{\bar{\alpha}_t}} \right)\cdot \epsilon_\theta^{(t)}(x_t)

xt/αˉt=xˉt, 1αˉtαˉt=σx_t/\sqrt{\bar{\alpha}_t} = \bar{x}_t,~\frac{\sqrt{1-\bar{\alpha}_t}}{\sqrt{\bar{\alpha}_t}} = \sigma라고 식을 바꾸게 되면,

dxˉ(t)=ϵθ(t)(xˉ(t)σ2+1)dσ(t)d\bar{x}(t) = \epsilon_\theta^{(t)}\left(\frac{\bar{x}(t)}{\sqrt{\sigma^2+1}}\right)d\sigma(t)

위와 같은 미분 방정식이 된다. SDE를 통한 continuous diffusion process 논문을 보게 되면 DDPM과 차이가 있는 점이 바로 Neural ODE의 solution으로써 x(T)x(T)를 제시하기 때문에 one to one mapping(deterministic)이 성립할 수 있다는 것이다.

아무래도 ODE가 성립하다보니 x0x_0xTx_T로 바로 인코딩하거나 x0x_0로 리컨이 가능한데, 결국 trajectory도 Δ\Delta에 따라 오차가 정해지기 때문에 SS가 클수록(시간 간격이 짧을수록) 실제 미분 방정식의 솔루션에 가까워지는 것을 볼 수 있다. 위는 CIFAR-10에 대한 리컨 error를 의미한다.