logo

논문 리뷰: Denoising Diffusion Probabilistic Models (DDPM) 📂머신러닝

논문 리뷰: Denoising Diffusion Probabilistic Models (DDPM)

개요 및 요약

생성 모델이란, 주어진 랜덤 샘플 {yi}\left\{ y_{i} \right\}이 따르는 확률분포 YY 혹은 그것을 찾는 방법을 말한다. 맨땅에서 이를 찾는 것은 매우 어려우므로, 보통은 이미 잘 알려진 분포로부터 원하는 분포를 근사하는 방법을 찾는다. 그래서 잘 알려진 분포 XX를 따르는 데이터 집합 {xi}\left\{ x_{i} \right\}가 주어졌을 때, 생성 모델이란 다음과 같은 함수 ff라 할 수 있으며, 생성 모델을 개발한다는 것은 ff를 잘 근사하는 함수를 찾는 것을 말한다.

f:{xi}{yj} f : \left\{ x_{i} \right\} \to \left\{ y_{j} \right\}

잘 알려진 분포 XX로 가장 많이 사용되는 것은 정규분포이다. 그래서 생성 모델을 쉽게 이해하고 싶다면 정규분포로부터 미지의 분포를 따르는 샘플을 추출하는 방법을 찾는 것이라고 받아들여도 무방하다.

Denoising Diffusion Probabilistic Models (DDPM)1에서도 마찬가지로, 정규분포로부터 다른 미지의 분포를 따르는 데이터를 추출하는 방법을 소개한다. 정규분포 N(0,I)N(0, I)에서 추출된 어떤 노이즈 z\mathbf{z}와 어떤 미지의 분포 XX에서 추출되었다고 가정되는 이미지 x0\mathbf{x}_{0}가 있다고 하자. 노이즈 z\mathbf{z}로부터 x0\mathbf{x}_{0}를 만들어내는 함수 x0=p(z)\mathbf{x}_{0} = p(\mathbf{z})를 찾는 것은 당연히 어렵겠으나, 생각해보면 x0\mathbf{x}_{0}를 손상시켜 z\mathbf{z}를 만드는 역함수 z=q(x0)\mathbf{z} = q(\mathbf{x}_{0})을 찾는 것 또한 쉽지 않을 것이다. (사진 출처2)

그런데 이미지 x0\mathbf{x}_{0}에 정규분포에서 추출된 아주 작은 노이즈 ϵ1\boldsymbol{\epsilon}_{1}이 더해져 아주 조금 손상curruption된 이미지 x1=x0+ϵ1\mathbf{x}_{1} = \mathbf{x}_{0} + \boldsymbol{\epsilon}_{1}를 얻는 것은 쉬운 일이다. 여기에 다시 작은 가우시안 노이즈 ϵ2\boldsymbol{\epsilon}_{2}를 추출하고 더해주어 x2=x1+ϵ2\mathbf{x}_{2} = \mathbf{x}_{1} + \boldsymbol{\epsilon}_{2}를 얻는 것도 쉽다. 이런 과정을 아주 많이 반복하여 얻은, xT\mathbf{x}_{T}는 마치 정규분포에서 추출된 노이즈와 같을 것이다. 다시말해 이미지 x0\mathbf{x}_{0}에 가우시안 노이즈를 반복적으로 더해가며 손상시키면 결국 정규분포에서 추출된 노이즈와 같은 이미지를 얻을 수 있다는 것이고, 이 과정을 바로 확산diffusion이라고 한다. 이를 확산이라고 부르는 이유는 실제로 미세한 입자가 불규칙적이고 무작위적으로 퍼져나가는 현상인 브라운 운동이 수학적으로는 가우스 분포에서 추출된 값을 계속해서 더해가는 것으로 기술되기 때문이며, 브라운 운동은 실제로 확산 방정식(열 방정식)과 관련되어있다.

확산과정이 노이즈를 계속 더해가는 것이므로, 이의 역과정은 노이즈를 계속 빼는 것이다. 따라서 이 역과정은 자연스럽게 디노이징denoising이 된다. 이 논문에서는 잘 알려진 확산이라는 과정의 정보를 이용하여, 미지의 디노이징이라는 역과정을 수행하는 방법을 소개한다. 이러한 아이디어는 2015년 논문3 Deep Unsupervised Learning using Nonequilibrium Thermodynamics에서 diffusion probabilistic models (DPM)이라는 이름으로 처음 소개되었으며, DDPM은 이를 보완하고 딥러닝과 잘 결합한 논문이다.

DDPM 논문과 부록은 수식 전개에 그리 친절하지 않다. 이를 리뷰한 수많은 글들도 수식이 어떻게 전개되고 유도되는지 명확하게 설명하지 않는다. 본 글에서는 DDPM의 성능이나 결과물에 대해서는 다루지 않고, DDPM이 수학적으로 어떻게 기술되는지를 꼼꼼하게 다룬다. 그래서 글이 좀 길어지긴 했지만, 적어도 수식 전개에서 막히는 부분은 없을 것이다.

단 한줄의 수식도 대충 넘어가지 않았다. 단언컨대 전 세계에서 DDPM 논문의 수식을 가장 수학적으로 정확하고 자세하게 설명한 글이다.

기초(preliminaries)

본 논문에서는 확률변수 xRD\mathbf{x} \in \mathbb{R}^{D}와 이의 실현을 모두 xRD\mathbf{x} \in \mathbb{R}^{D}로 표기한다. 다시말해 일반적으로 확률변수 XX에 대한 확률밀도함수가 pX(x)p_{X}(x)와 같이 표현된다면, 본 논문에서는 p(x)=px(x)p(\mathbf{x}) = p_{\mathbf{x}}(\mathbf{x})와 같이 표기한다. 특징추출

확률변수들의 수열 (x0,x1,,xT)={xt}t=0T(\mathbf{x}_{0}, \mathbf{x}_{1}, \dots, \mathbf{x}_{T}) = \left\{ \mathbf{x}_{t} \right\}_{t=0}^{T}확률과정 이라 한다. 본 논문에서는 확률과정을 x0:T=(x0,x1,,xT)\mathbf{x}_{0:T} = (\mathbf{x}_{0}, \mathbf{x}_{1}, \dots, \mathbf{x}_{T})와 같이 표기한다. x0:T\mathbf{x}_{0:T}결합 확률밀도함수를 다음과 같이 표기한다.

p(x0:T)=px0:T(x0:T) p(\mathbf{x}_{0:T}) = p_{\mathbf{x}_{0:T}}(\mathbf{x}_{0:T})

x0:T1\mathbf{x}_{0:T-1}에 대한 xT\mathbf{x}_{T}조건부 확률밀도함수란, 다음을 만족하는 p(xTx0:T1)p(\mathbf{x}_{T} | \mathbf{x}_{0:T-1})를 말한다.

p(xTx0:T1)=p(x0:T)p(x0:T1) p(\mathbf{x}_{T} | \mathbf{x}_{0:T-1}) = \dfrac{p(\mathbf{x}_{0:T})}{p(\mathbf{x}_{0:T-1})}

위 정의를 반복하면 다음을 얻는다.

p(x0:T)=p(x0)p(x1x0)p(x2x0:1)p(xT1x0:T2)p(xTx0:T1)(1) p(\mathbf{x}_{0:T}) = p(\mathbf{x}_{0}) p(\mathbf{x}_{1} | \mathbf{x}_{0}) p(\mathbf{x}_{2} | \mathbf{x}_{0:1}) \cdots p(\mathbf{x}_{T-1} | \mathbf{x}_{0:T-2}) p(\mathbf{x}_{T} | \mathbf{x}_{0:T-1}) \tag{1}

x0:T\mathbf{x}_{0:T}가 다음을 만족하면 마코프 체인이라 한다.

p(xTx0:T1)=p(xTxT1) p(\mathbf{x}_{T} | \mathbf{x}_{0:T-1}) = p(\mathbf{x}_{T} | \mathbf{x}_{T-1})

x0:T\mathbf{x}_{0:T}가 마코프 체인이면, (1)(1)는 다음과 같이 간단해진다.

p(x0:T)=p(x0)p(x1x0)p(x2x0:1)p(xT1x0:T2)p(xTx0:T1)=p(x0)p(x1x0)p(x2x1)p(xT1xT2)p(xTxT1)=p(x0)t=1Tp(xtxt1)(2) \begin{align*} p(\mathbf{x}_{0:T}) &= p(\mathbf{x}_{0}) p(\mathbf{x}_{1} | \mathbf{x}_{0}) p(\mathbf{x}_{2} | \mathbf{x}_{0:1}) \cdots p(\mathbf{x}_{T-1} | \mathbf{x}_{0:T-2}) p(\mathbf{x}_{T} | \mathbf{x}_{0:T-1}) \\ &= p(\mathbf{x}_{0}) p(\mathbf{x}_{1} | \mathbf{x}_{0}) p(\mathbf{x}_{2} | \mathbf{x}_{1}) \cdots p(\mathbf{x}_{T-1} | \mathbf{x}_{T-2}) p(\mathbf{x}_{T} | \mathbf{x}_{T-1}) \\ &= p(\mathbf{x}_{0}) \prod\limits_{t=1}^{T} p(\mathbf{x}_{t} | \mathbf{x}_{t-1}) \end{align*} \tag{2}

2 Background

Section 2에서는 diffusion model의 아이디어를 어떻게 수학적으로 표현할 수 있는지 간단히 소개한다. 기본이 되는 아이디어가 다른 논문에서 나왔기 때문에 상세히 설명하지는 않고있다. 입문자가 보기에는 생략된 부분이 많아 이해하기 어려울 수 있다. 아래에서 최대한 자세히 풀어나가겠다.

  • 확산 과정diffusion process(정방향 과정forward process)

확산 과정을 수학적으로 정리해보자. tt단계에서의 이미지 xtRD\mathbf{x}_{t} \in \mathbb{R}^{D}t1t-1단계에서의 이미지 xt1RD\mathbf{x}_{t-1} \in \mathbb{R}^{D}에 가우시안 노이즈 βtϵtN(0,βtI)\sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t} \sim \mathcal{N}(\mathbf{0}, \beta_{t}\mathbf{I})를 더한 것이다. βt\beta_{t}는 노이즈가 확산되는 정도를 결정하는 계수이다. 따라서 다음과 같이 표현할 수 있다.

xt=1βtxt1+βtϵt,ϵtN(0,I) \mathbf{x}_{t} = \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} + \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t}, \qquad \boldsymbol{\epsilon}_{t} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})

여기서 계수가 (1βt,βt)(1-\beta_{t}, \beta_{t})가 아니라 (1βt,βt)(\sqrt{1-\beta_{t}}, \sqrt{\beta_{t}})인 이유는, 분산의 성질 Var(aX)=a2Var(X)\Var(aX) = a^{2}\Var(X) 때문이다. 계수에 \sqrt{}가 붙어있어야 tt가 충분히 클 때 모든 n1n \ge 1에 대해서 xt+n\mathbf{x}_{t+n}이 계속 표준정규분포를 따르게 된다. tt가 충분히 크다고 가정하면 xt\mathbf{x}_{t}는 표준정규분포를 따를 것이다. 그 때 xt+1\mathbf{x}_{t+1}공분산 행렬이 유지됨을(여전히 표준정규분포를 따름을) 아래와 같이 확인할 수 있다. xt1\mathbf{x}_{t-1}ϵt\boldsymbol{\epsilon}_{t}는 서로 독립이므로 다음이 성립한다.

Cov(xt)=Cov(1βtxt1+βtϵt)=(1βt)Cov(xt1)+βtCov(ϵt)=(1βt)I+βtI=I \begin{align*} \Cov(\mathbf{x}_{t}) &= \Cov(\sqrt{1-\beta_{t}}\mathbf{x}_{t-1} + \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t}) \\ &= (1-\beta_{t})\Cov(\mathbf{x}_{t-1}) + \beta_{t}\Cov(\boldsymbol{\epsilon}_{t}) \\ &= (1-\beta_{t})\mathbf{I} + \beta_{t}\mathbf{I} \\ &= \mathbf{I} \end{align*}

xt1\mathbf{x}_{t-1}가 결정되었을 때(상수일 때) xt\mathbf{x}_{t}에 대한 조건부 확률밀도함수는 다음과 같다.

q(xtxt1)=N(1βtxt1,βtI)(3) q(\mathbf{x}_{t} | \mathbf{x}_{t-1}) = \mathcal{N}(\sqrt{1 - \beta_{t}}\mathbf{x}_{t-1}, \beta_{t}\mathbf{I}) \tag{3}

(논문에서는 xt\mathbf{x}_{t}에 대한 분포라는 것을 확실하게 명시하기 위해 N(xt;1βtxt1,βtI)\mathcal{N}(\mathbf{x}_{t}; \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1}, \beta_{t}\mathbf{I})로 표기하였다.) 평균벡터와 공분산행렬이 위와 같음은 각각 아래와 같이 확인할 수 있다. xt1\mathbf{x}_{t-1}가 결정되었다고 하자(즉 상수이다).

E[xtxt1]=E[1βtxt1+βtϵt](xt1 is constant vector)=E[1βtxt1]+E[βtϵt]=1βtxt1+βtE[ϵt]=1βtxt1 \begin{align*} \mathbb{E} [\mathbf{x}_{t} | \mathbf{x}_{t-1}] &= \mathbb{E} \left[ \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} + \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t} \right] \qquad (\mathbf{x}_{t-1} \text{ is constant vector})\\ &= \mathbb{E} \left[ \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} \right] + \mathbb{E} \left[ \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t} \right] \\ &= \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} + \sqrt{\beta_{t}}\mathbb{E} \left[ \boldsymbol{\epsilon}_{t} \right] \\ &= \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} \end{align*}

Cov(xtxt1)=Cov(1βtxt1+βtϵt)(xt1 is constant vector)=Cov(βtϵt)=βtCov(ϵt)=βtI \begin{align*} \Cov (\mathbf{x}_{t} | \mathbf{x}_{t-1}) &= \Cov \left( \sqrt{1 - \beta_{t}}\mathbf{x}_{t-1} + \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t} \right) \qquad (\mathbf{x}_{t-1} \text{ is constant vector})\\ &= \Cov \left( \sqrt{\beta_{t}}\boldsymbol{\epsilon}_{t} \right) \\ &= \beta_{t}\Cov \left( \boldsymbol{\epsilon}_{t} \right) \\ &= \beta_{t} \mathbf{I} \end{align*}

이미지 x0\mathbf{x}_{0}가 주어졌을 때, 가우시안 노이즈를 반복적으로 더해가며 손상된 이미지를 x1,x2,,xT\mathbf{x}_{1}, \mathbf{x}_{2}, \dots, \mathbf{x}_{T}라고 하면(이의 확률변수와 표기법을 같이 사용함에 다시 주의하라), 이 전체 과정에 대한 확률밀도 함수는 결합 조건부 확률밀도함수 q(x1:Tx0)q(\mathbf{x}_{1:T} | \mathbf{x}_{0})로 주어지며 이를 정방향 과정forward process 또는 확산 과정diffusion process이라고 한다. x0:T\mathbf{x}_{0:T}가 마코프이기 때문에, (2)\eqref{2}에 의해, 확산 과정은 다음과 같이 모델링된다.

q(x1:Tx0)=t=1Tq(xtxt1)(4) q(\mathbf{x}_{1:T} | \mathbf{x}_{0}) = \prod\limits_{t=1}^{T} q(\mathbf{x}_{t} | \mathbf{x}_{t-1}) \tag{4}

한편 x0\mathbf{x}_{0}에서 임의의 tt에 대해 xt\mathbf{x}_{t}가 결정될 조건부 확률밀도함수도 명시적으로 나타낼 수 있다. αt=1βt\alpha_{t} = 1 - \beta_{t}라 하면,

xt=αtxt1+1αtϵt=αt(αt1xt2+1αt1ϵt1)+1αtϵt=αtαt1xt2+αt1αt1ϵt1+1αtϵt \begin{align*} \mathbf{x}_{t} &= \sqrt{\alpha_{t}}\mathbf{x}_{t-1} + \sqrt{1 - \alpha_{t}}\boldsymbol{\epsilon}_{t} \\ &= \sqrt{\alpha_{t}}\left( \sqrt{\alpha_{t-1}}\mathbf{x}_{t-2} + \sqrt{1 - \alpha_{t-1}}\boldsymbol{\epsilon}_{t-1} \right) + \sqrt{1 - \alpha_{t}}\boldsymbol{\epsilon}_{t} \\ &= \sqrt{\alpha_{t}}\sqrt{\alpha_{t-1}}\mathbf{x}_{t-2} + \sqrt{\alpha_{t}}\sqrt{1 - \alpha_{t-1}}\boldsymbol{\epsilon}_{t-1} + \sqrt{1 - \alpha_{t}}\boldsymbol{\epsilon}_{t} \\ \end{align*}

이때 두 정규분포의 합은 다시 하나의 정규분포로 나타낼 수 있다.

X1N(μ1,σ12)X_{1} \sim \mathcal{N}(\mu_{1}, \sigma_{1}^{2})X2N(μ2,σ22)X_{2} \sim \mathcal{N}(\mu_{2}, \sigma_{2}^{2})가 독립이면, X1+X2N(μ1+μ2,σ12+σ22) X_{1} + X_{2} \sim \mathcal{N}(\mu_{1} + \mu_{2}, \sigma_{1}^{2} + \sigma_{2}^{2}) 랜덤 벡터에 대해서도 같은 방식으로 성립한다.

따라서 다음이 성립한다.

αt1αt1ϵt1+1αtϵtN(0,αt(1αt1)I+(1αt)I)=N(0,(1αtαt1)I) \begin{align*} \sqrt{\alpha_{t}}\sqrt{1 - \alpha_{t-1}}\boldsymbol{\epsilon}_{t-1} + \sqrt{1 - \alpha_{t}}\boldsymbol{\epsilon}_{t} &\sim \mathcal{N}(\mathbf{0}, \alpha_{t}(1-\alpha_{t-1})\mathbf{I} + (1 - \alpha_{t})\mathbf{I}) \\ &\quad= \mathcal{N}(\mathbf{0}, (1 - \alpha_{t}\alpha_{t-1})\mathbf{I}) \end{align*}

그러므로 xt\mathbf{x}_{t}는 아래와 같다.

xt=αtαt1xt2+1αtαt1ϵ,ϵN(0,I) \mathbf{x}_{t} = \sqrt{\alpha_{t}\alpha_{t-1}}\mathbf{x}_{t-2} + \sqrt{1 - \alpha_{t}\alpha_{t-1}}\boldsymbol{\epsilon}, \qquad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})

이 과정을 반복하면 다음을 얻는다.

xt=αtαt1xt2+1αtαt1ϵ=αtαt1(αt2xt3+1αt2ϵt2)+1αtαt1ϵ=αtαt1αt2xt3+αtαt1(1αt2)ϵt2+1αtαt1ϵ=αtαt1αt2xt3+1αtαt1αt2ϵ=s=1tαsx0+1s=1tαsϵ=αtx0+1αtϵ,ϵN(0,I),αt=s=1tαs \begin{align*} \mathbf{x}_{t} &= \sqrt{\alpha_{t}\alpha_{t-1}}\mathbf{x}_{t-2} + \sqrt{1 - \alpha_{t}\alpha_{t-1}}\boldsymbol{\epsilon} \\ &= \sqrt{\alpha_{t}\alpha_{t-1}}(\sqrt{\alpha_{t-2}}\mathbf{x}_{t-3} + \sqrt{1 - \alpha_{t-2}}\boldsymbol{\epsilon}_{t-2}) + \sqrt{1 - \alpha_{t}\alpha_{t-1}}\boldsymbol{\epsilon} \\ &= \sqrt{\alpha_{t}\alpha_{t-1}\alpha_{t-2}}\mathbf{x}_{t-3} + \sqrt{\alpha_{t}\alpha_{t-1}(1 - \alpha_{t-2})}\boldsymbol{\epsilon}_{t-2} + \sqrt{1 - \alpha_{t}\alpha_{t-1}}\boldsymbol{\epsilon} \\ &= \sqrt{\alpha_{t}\alpha_{t-1}\alpha_{t-2}}\mathbf{x}_{t-3} + \sqrt{1 - \alpha_{t}\alpha_{t-1}\alpha_{t-2}}\boldsymbol{\epsilon} \\ &\vdots \\ &= \sqrt{\prod\limits_{s=1}^{t} \alpha_{s}}\mathbf{x}_{0} + \sqrt{1 - \prod\limits_{s=1}^{t} \alpha_{s}}\boldsymbol{\epsilon} \\ &= \sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0} + \sqrt{1 - \overline{\alpha}_{t}}\boldsymbol{\epsilon}, \qquad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}), \quad \overline{\alpha}_{t} = \prod\limits_{s=1}^{t} \alpha_{s} \tag{5} \end{align*}

따라서 x0\mathbf{x}_{0}가 결정됐을 때, xt\mathbf{x}_{t}에 대한 조건부 결합밀도함수는 다음과 같다.

q(xtx0)=N(αtx0,(1αt)I)(6) q(\mathbf{x}_{t} | \mathbf{x}_{0}) = \mathcal{N}(\sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0}, (1 - \overline{\alpha}_{t})\mathbf{I}) \tag{6}

αt\alpha_{t}가 충분히 작고(=βt\beta_{t}11에 가까우면) TT가 충분히 크면 αT=s=1Tαs\overline{\alpha}_{T} = \prod_{s=1}^{T} \alpha_{s}00에 가깝고, 다음이 성립할 것이다.

q(xTx0)N(0,I)as T q(\mathbf{x}_{T} | \mathbf{x}_{0}) \to \mathcal{N}(\mathbf{0}, \mathbf{I}) \quad \text{as } T \to \infty

이는 x0\mathbf{x}_{0}에 가우시안 노이즈를 계속 더해주어 만들어진 xT\mathbf{x}_{T}가 표준정규분포를 따를 것이라는 아이디어를 뒷받침하는 수식이다.

  • 잡음제거 과정denoising process(역방향 과정reverse process)

이제 가우시안 노이즈 xTN(0,I)\mathbf{x}_{T} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})로부터 노이즈를 점점 제거하여 x0\mathbf{x}_{0}가 되는 역과정(디노이징)을 생각하자. Feller4에 의하면, 전방 과정이 정규분포이항분포 를 경우 충분히 작은 확산계수 β\beta에 대해서는 그 역과정이 전방과정과 같은 분포를 따른다고 한다.

“For both Gaussian and binomial diffusion, for continuous diffusion (limit of small step size β\beta) the reversal of the diffusion process has the identical functional form as the forward process.”

– Sohl-Dickstein, Jascha, et al. Deep unsupervised learning using nonequilibrium thermodynamics. International conference on machine learning. pmlr, 2015.

즉 디노이징에 대한 확률밀도함수를 pp로 표기하면, 다음이 성립한다는 의미이다. q(xtxt1)q(\mathbf{x}_{t} | \mathbf{x}_{t-1})가 정규분포를 따르므로, 그 역과정은 아래와 같다.

p(xt1xt)=N(μ(xt,t),Σ(xt,t)) p(\mathbf{x}_{t-1} | \mathbf{x}_{t}) = \mathcal{N}(\mathbf{\mu}(\mathbf{x}_{t}, t), \boldsymbol{\Sigma}(\mathbf{x}_{t}, t))

역방향 과정 역시 마코프 체인이므로, 표준정규분포에서 추출된 랜덤 가우시안 노이즈 xT\mathbf{x}_{T}에서 점점 노이즈를 제거하여 특정한 이미지 x0\mathbf{x}_{0}가 되는 전체 과정에 대한 결합 확률밀도함수는 다음과 같이 표현된다.

p(x0:T)=p(xT)t=1Tp(xt1xt) p(\mathbf{x}_{0:T}) = p(\mathbf{x}_{T}) \prod\limits_{t=1}^{T} p(\mathbf{x}_{t-1} | \mathbf{x}_{t})

확산 과정 q(x0:T)q(\mathbf{x}_{0:T})와 달리 디노이징 과정 p(x0:T)p(\mathbf{x}_{0:T})는 우리가 알지 못하므로 추정해야하는 대상이다. 파라매터 θ\theta를 갖고 pp를 근사하는 함수를 pθp_{\theta}라 표기하자. xT\mathbf{x}_{T}에 대한 확률밀도함수는 p(xT)=N(0,I)p(\mathbf{x}_{T}) = \mathcal{N}(\mathbf{0}, \mathbf{I})임을 알고있으므로,

pθ(x0:T)=p(xT)t=1Tpθ(xt1xt)(7) p_{\theta} (\mathbf{x}_{0:T}) = p(\mathbf{x}_{T}) \prod\limits_{t=1}^{T} p_{\theta} (\mathbf{x}_{t-1} | \mathbf{x}_{t}) \tag{7}

각각의 p(xt1xt)p(\mathbf{x}_{t-1} | \mathbf{x}_{t})는 정규분포를 따른다는 것을 알고 있지만 평균벡터와 공분산행렬은 알지 못한다. 따라서 이들도 근사해야할 대상이며, pθ(xt1xt)p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})를 다음과 같이 나타낼 수 있다.

pθ(xt1xt)=N(μθ(xt,t),Σθ(xt,t)) p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) = \mathcal{N}(\mu_{\theta}(\mathbf{x}_{t}, t), \Sigma_{\theta}(\mathbf{x}_{t}, t))

  • 손실 함수

새로운 데이터를 생성해내기 위해서 찾고자 하는 것은 데이터 x0\mathbf{x}_{0}에 대한 확률밀도함수 p(x0)p(\mathbf{x}_{0})이다. 이를 알고있다면 랜덤 추출로 기존의 데이터와 같은 분포를 따르는 새로운 데이터를 생성할 수 있다. p(x0)p(\mathbf{x}_{0})를 근사하는 함수는 pθ(x0)p_{\theta}(\mathbf{x}_{0})이고 파라미터 θ\theta를 갖는다. pθ(x0)p_{\theta}(\mathbf{x}_{0})p(x0)p(\mathbf{x}_{0})와 비슷하도록 만드는 방법은 pθ(x0)p_{\theta}(\mathbf{x}_{0})우도 로 보고, 최대우도추정법을 사용하는 것이다. pp가 정규분포이므로 로그 우도를 사용하는 것이 수학적으로 더 간단하며, 상대적 엔트로피(쿨백-라이블러 발산)와와도 자연스럽게 연결된다. logpθ(x0)\log p_{\theta}(\mathbf{x}_{0})를 최대화하는 것은 logpθ(x0)-\log p_{\theta}(\mathbf{x}_{0})를 최소화하는 것과 같으므로 여기서 시작하자 (경사하강법을 사용할 것이기 때문). 따라서 Eq(x0)[logpθ(x0)]\mathbb{E}_{q(\mathbf{x}_{0})}[-\log p_{\theta}(\mathbf{x}_{0})]를 최소화하는 θ\theta를 찾는 것이 목표이다. 우선, 주변/조건부 확률밀도함수의 정의에 의해, p(x)p(\mathbf{x})를 다음과 같이 표현할 수 있다.

pθ(x0)=pθ(x0:T)dx1:T=p(x0:T)q(x1:Tx0)q(x1:Tx0)dx1:T=q(x1:Tx0)p(x0:T)q(x1:Tx0)dx1:T=Eq(x1:Tx0)[p(x0:T)q(x1:Tx0)] \begin{align*} p_{\theta}(\mathbf{x}_{0}) &= \int p_{\theta}(\mathbf{x}_{0:T}) d\mathbf{x}_{1:T} \\ &= \int p(\mathbf{x}_{0:T}) \dfrac{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} d\mathbf{x}_{1:T} \\ &= \int q(\mathbf{x}_{1:T} | \mathbf{x}_{0}) \dfrac{ p(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} d\mathbf{x}_{1:T} \\ &= \mathbb{E}_{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \left[ \dfrac{ p(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \right] \end{align*}

그러면 우리가 최소화하고 싶은 기댓값을 아래와 같이 정리할 수 있다. 옌센 부등식에 의해 log(E[X])E[logX]-\log (\mathbb{E}[X]) \le \mathbb{E}[-\log X]이므로,

Eq(x0)[logpθ(x0)]=Eq(x0)[log(Eq(x1:Tx0)[pθ(x0:T)q(x1:Tx0)])]Eq(x0)[Eq(x1:Tx0)(logpθ(x0:T)q(x1:Tx0))]=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)] \begin{align*} \mathbb{E}_{q(\mathbf{x}_{0})}[-\log p_{\theta}(\mathbf{x}_{0})] &= \mathbb{E}_{q(\mathbf{x}_{0})} \left[ -\log \left( \mathbb{E}_{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \left[ \dfrac{ p_{\theta}(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \right] \right) \right] \\ &\le \mathbb{E}_{q(\mathbf{x}_{0})} \left[ \mathbb{E}_{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})}\left( -\log \dfrac{ p_{\theta}(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \right) \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log \dfrac{ p_{\theta}(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \right] \\ \end{align*}

마지막 등호는 조건부 확률밀도함수의 정의 q(X,Y)=q(X)q(YX)q(X,Y) = q(X)q(Y|X)에 의해 성립한다. 두 기댓값 꼴을 적분꼴로 바꿔서 생각해보면 쉬울 것이다. 위 식에 (4)(4)(7)(7)를 대입하면 다음을 얻는다.

Eq(x0)[logpθ(x0)]Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]=Eq(x0:T)[logp(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq(x0:T)[logp(xT)t=1Tlogpθ(xt1xt)q(xtxt1)]=:L \begin{align*} \mathbb{E}_{q(\mathbf{x}_{0})}[-\log p_{\theta}(\mathbf{x}_{0})] &\le \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log \dfrac{ p_{\theta}(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T} | \mathbf{x}_{0})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log \dfrac{ p(\mathbf{x}_{T}) \prod\limits_{t=1}^{T} p_{\theta} (\mathbf{x}_{t-1} | \mathbf{x}_{t})}{\prod\limits_{t=1}^{T} q(\mathbf{x}_{t} | \mathbf{x}_{t-1})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ -\log p(\mathbf{x}_{T}) - \sum\limits_{t=1}^{T} \log \dfrac{ p_{\theta} (\mathbf{x}_{t-1} | \mathbf{x}_{t})}{ q(\mathbf{x}_{t} | \mathbf{x}_{t-1})} \right] =: L \end{align*}

마지막 등호는 로그의 성질에 의해 성립한다. 위 식의 좌변은 우리가 실제로 줄이고 싶은 것이지만 계산이 불가능하다. 실제 데이터의 분포 q(x0)q(\mathbf{x}_{0})를 모르기 때문이다. 하지만 우변을 보면 계산해야할 것은 p(xT)p(\mathbf{x}_{T})q(xtxt1)q(\mathbf{x}_{t} | \mathbf{x}_{t-1})인데, 첫번째는 정규분포가 가정했으므로 알고있다. 두번째는 확산 과정을 실제로 수행하므로 그 값을 얻을 수 있다. 따라서 우변의 LL은 모두 실제로 계산 가능한 값으로 이루어져있으므로 이 값을 계산하여 최소화하면, 부등식에 의해 좌변도 최소화할 수 있다.

여기서 수식을 조작하여 손실함수를 계산에 효율적이도록 개선할 수 있다. 지금 LL에서는 logpθ(xt1xt)q(xtxt1)\log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t} | \mathbf{x}_{t-1})}가 들어있는데, 이를 계산하기 위해서는 pθ(xt1xt)p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})에 대해서 샘플링하는 과정이 필요하다. 이는 실제 값에 대해서 분산이 존재하여 학습 과정이 불안정하다는 것을 의미한다. 그래서 위 식을 쿨백-라이블러 발산 (KLD)이 포함된 수식으로 바꿔줄 것이다. 지금 pθ(xt1xt)p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})q(xtxt1)q(\mathbf{x}_{t} | \mathbf{x}_{t-1})는 모두 정규분포를 따른다고 가정했으므로, 아래의 공식에 따라서 KLD의 닫힌 형식을 얻을 수 있다. 그래서 분산없이 정확한 손실함수를 계산할 수 있고, 학습을 안정적이고 효율적으로 할 수 있다.

정규분포의 상대적 엔트로피:

다변량정규분포 N(μ,Σ)N(\boldsymbol{\mu}, \Sigma)N(μ1,Σ1)N(\boldsymbol{\mu_{1}}, \Sigma_{1}) 간의 상대적 엔트로피는 다음과 같다. μ,μ1RD\boldsymbol{\mu}, \boldsymbol{\mu}_{1} \in \mathbb{R}^{D}일 때,

DKL(N(μ,Σ)N(μ1,Σ1))=12[log(ΣΣ1)+Tr(Σ11Σ)+(μμ1)TΣ11(μμ1)D] \begin{array}{l} D_{\text{KL}}\big( N(\boldsymbol{\mu}, \Sigma) \| N(\boldsymbol{\mu_{1}}, \Sigma_{1}) \big) \\[1em] = \dfrac{1}{2} \left[ \log \left( \dfrac{|\Sigma|}{|\Sigma_{1}|} \right) + \Tr(\Sigma_{1}^{-1}\Sigma) + (\boldsymbol{\mu} - \boldsymbol{\mu_{1}})^{\mathsf{T}} \Sigma_{1}^{-1} (\boldsymbol{\mu} - \boldsymbol{\mu_{1}}) - D \right] \end{array}

L=Eq(x0:T)[logp(xT)t=1Tlogpθ(xt1xt)q(xtxt1)]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xtxt1)logpθ(x0x1)q(x1x0)] \begin{align*} L &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=1}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t} | \mathbf{x}_{t-1})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t} | \mathbf{x}_{t-1})} - \log \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{1} | \mathbf{x}_{0})} \right] \end{align*}

이 때 두번째 항의 분자를 잘 보면, 다음과 같이 바꿔 적을 수 있다.

q(xtxt1)=q(xtxt1,x0)by Markov property=q(xt,xt1,x0)q(xt1,x0)by def. of conditional pdf=q(xt1xt,x0)q(xt,x0)q(xt1,x0)by def. of conditional pdf=q(xt1xt,x0)q(xt,x0)q(xt1,x0)=q(xt1xt,x0)q(xt,x0)p(x0)q(xt1,x0)p(x0)=q(xt1xt,x0)q(xt,x0)p(x0)p(x0)q(xt1,x0)=q(xt1xt,x0)q(xtx0)q(xt1x0)by def. of conditional pdf \begin{align*} q(\mathbf{x}_{t} | \mathbf{x}_{t-1}) &= q(\mathbf{x}_{t} | \mathbf{x}_{t-1}, \mathbf{x}_{0}) &\text{by Markov property} \\ &= \dfrac{q(\mathbf{x}_{t}, \mathbf{x}_{t-1}, \mathbf{x}_{0})}{q(\mathbf{x}_{t-1}, \mathbf{x}_{0})} &\text{by def. of conditional pdf} \\ &= \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) q(\mathbf{x}_{t}, \mathbf{x}_{0})}{q(\mathbf{x}_{t-1}, \mathbf{x}_{0})} &\text{by def. of conditional pdf} \\ &= q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \dfrac{q(\mathbf{x}_{t}, \mathbf{x}_{0})}{q(\mathbf{x}_{t-1}, \mathbf{x}_{0})} & \\ &= q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \dfrac{q(\mathbf{x}_{t}, \mathbf{x}_{0}) p(\mathbf{x}_{0})}{q(\mathbf{x}_{t-1}, \mathbf{x}_{0}) p(\mathbf{x}_{0})} & \\ &= q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \dfrac{q(\mathbf{x}_{t}, \mathbf{x}_{0}) }{ p(\mathbf{x}_{0})} \dfrac{p(\mathbf{x}_{0})}{q(\mathbf{x}_{t-1}, \mathbf{x}_{0})} & \\ &= q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \dfrac{q(\mathbf{x}_{t}| \mathbf{x}_{0})}{q(\mathbf{x}_{t-1}| \mathbf{x}_{0})} &\text{by def. of conditional pdf} \end{align*}

이를 대입하여 아래와 같이 정리하자.

L=Eq(x0:T)[logp(xT)t=2Tlog(pθ(xt1xt)q(xt1xt,x0)q(xt1x0)q(xtx0))logpθ(x0x1)q(x1x0)]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xt1xt,x0)t=2Tlogq(xt1x0)q(xtx0)logpθ(x0x1)q(x1x0)]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xt1xt,x0)log(q(xT1x0)q(xTx0)q(xT2x0)q(xT1x0)q(x1x0)q(x2x0))logpθ(x0x1)q(x1x0)]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xt1xt,x0)log(q(xT1x0)q(xTx0)q(xT2x0)q(xT1x0)q(x1x0)q(x2x0)pθ(x0x1)q(x1x0))]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xt1xt,x0)log(q(xT1x0)q(xTx0)q(xT1x0)q(xT1x0)q(x1x0)q(x2x0)pθ(x0x1)q(x1x0))]=Eq(x0:T)[logp(xT)t=2Tlogpθ(xt1xt)q(xt1xt,x0)logpθ(x0x1)q(xTx0)]=Eq(x0:T)[logp(xT)q(xTx0)t=2Tlogpθ(xt1xt)q(xt1xt,x0)logpθ(x0x1)]=Eq(x0:T)[logq(xTx0)p(xT)+t=2Tlogq(xt1xt,x0)pθ(xt1xt)logpθ(x0x1)](8)=Eq(x0:T)[logq(xTx0)p(xT)]+t=2TEq(x0:T)[logq(xt1xt,x0)pθ(xt1xt)]Eq(x0:T)[logpθ(x0x1)] \begin{align*} L &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \left( \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}\dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \right) - \log \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{1} | \mathbf{x}_{0})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} - \sum\limits_{t=2}^{T} \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} - \log \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{1} | \mathbf{x}_{0})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} \right. \\ &\qquad\qquad\qquad \left. -\log \left( \dfrac{q(\mathbf{x}_{T-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{T} | \mathbf{x}_{0})} \cdot \dfrac{q(\mathbf{x}_{T-2} | \mathbf{x}_{0})}{q(\mathbf{x}_{T-1} | \mathbf{x}_{0})} \cdots \dfrac{q(\mathbf{x}_{1} | \mathbf{x}_{0})}{q(\mathbf{x}_{2} | \mathbf{x}_{0})} \right) - \log \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{1} | \mathbf{x}_{0})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} \right. \\ &\qquad\qquad\qquad \left. - \log \left( \dfrac{q(\mathbf{x}_{T-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{T} | \mathbf{x}_{0})} \cdot \dfrac{q(\mathbf{x}_{T-2} | \mathbf{x}_{0})}{q(\mathbf{x}_{T-1} | \mathbf{x}_{0})} \cdots \dfrac{q(\mathbf{x}_{1} | \mathbf{x}_{0})}{q(\mathbf{x}_{2} | \mathbf{x}_{0})} \cdot \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{1} | \mathbf{x}_{0})} \right) \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} \right. \\ &\qquad\qquad\qquad \left. - \log \left( \dfrac{\color{red}{\cancel{\color{black}q(\mathbf{x}_{T-1} | \mathbf{x}_{0})}}}{q(\mathbf{x}_{T} | \mathbf{x}_{0})} \cdot \dfrac{\color{green}{\bcancel{\color{black}q(\mathbf{x}_{T-1} | \mathbf{x}_{0})}}}{\color{red}{\cancel{\color{black}q(\mathbf{x}_{T-1} | \mathbf{x}_{0})}}} \cdots \dfrac{\color{purple}{\cancel{\color{black}q(\mathbf{x}_{1} | \mathbf{x}_{0})}}}{\color{green}{\bcancel{\color{black}q(\mathbf{x}_{2} | \mathbf{x}_{0})}}} \cdot \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{\color{purple}{\cancel{\color{black}q(\mathbf{x}_{1} | \mathbf{x}_{0})}}} \right) \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log p(\mathbf{x}_{T}) - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} - \log \dfrac{p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}{q(\mathbf{x}_{T} | \mathbf{x}_{0})} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ - \log \dfrac{p(\mathbf{x}_{T})}{q(\mathbf{x}_{T} | \mathbf{x}_{0})} - \sum\limits_{t=2}^{T} \log \dfrac{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})}{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})} - \log p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1}) \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} + \sum\limits_{t=2}^{T} \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} - \log p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1}) \right] \\ (8) &= \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} \right] + \sum\limits_{t=2}^{T} \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} \right] - \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1}) \right] \tag{8} \end{align*}

(8)(8)의 첫번째 항은 아래와 같은 과정으로 KLD에 관한 식으로 바꿔줄 수 있다.

Eq(x0:T)[logq(xTx0)p(xT)]=q(x0:T)logq(xTx0)p(xT)dx0:T=q(x0)q(x1:Tx0)logq(xTx0)p(xT)dx0:Tby def. of conditional pdf=q(x0)q(x1:Tx0)logq(xTx0)p(xT)dx1:T1dxTdx0=q(x0)q(xTx0)logq(xTx0)p(xT)dxTdx0by def. of marginal pdf=Eq(x0)[q(xTx0)logq(xTx0)p(xT)dxT]=Eq(x0)[DKL(q(xTx0)p(xT))] \begin{align*} &\mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} \right] \\ &= \int q(\mathbf{x}_{0:T}) \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} d\mathbf{x}_{0:T} \\ &= \int q(\mathbf{x}_{0}) q(\mathbf{x}_{1:T} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} d\mathbf{x}_{0:T} &\text{by def. of conditional pdf} \\ &= \int\int\int q(\mathbf{x}_{0}) q(\mathbf{x}_{1:T} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} d\mathbf{x}_{1:T-1} d\mathbf{x}_{T} d\mathbf{x}_{0} \\ &= \int\int q(\mathbf{x}_{0}) q(\mathbf{x}_{T} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} d\mathbf{x}_{T} d\mathbf{x}_{0} &\text{by def. of marginal pdf} \\ &= \mathbb{E}_{q(\mathbf{x}_{0})}\left[ \int q(\mathbf{x}_{T} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{T} | \mathbf{x}_{0})}{p(\mathbf{x}_{T})} d\mathbf{x}_{T} \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( q(\mathbf{x}_{T} | \mathbf{x}_{0}) \| p(\mathbf{x}_{T}) \right) \Big] \end{align*}

논문에서는 Eq(x0:T)=Eq=Eq(x0)\mathbb{E}_{q(\mathbf{x}_{0:T})} = \mathbb{E}_{q} = \mathbb{E}_{q(\mathbf{x}_{0})}로 표기법을 남용하고 있으니 주의가 필요하다. 물론 기댓값안의 값은 x0\mathbf{x}_{0}에만 의존하므로, 다른 확률 변수에 대해서 적분해도 그 값은 11이라 결과는 같다. 하지만 논문에서는 이런 설명이 전무하므로 읽는 사람이 알아서 눈치껏 잘 읽어야한다.

이제 (8)(8)의 두번째 항을 보자. 첫번째 항과 마찬가지로 q(x0:T)q(\mathbf{x}_{0:T})를 잘 조작해서 q(xt1xt,x0)q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})이 나오도록 해야 KLD 꼴로 나타낼 수 있다.

t=2TEq(x0:T)[logq(xt1xt,x0)pθ(xt1xt)]=t=2Tq(x0:T)logq(xt1xt,x0)pθ(xt1xt)dx0:T=t=2Tq(x0)q(x1:Tx0)logq(xt1xt,x0)pθ(xt1xt)dx0:T=t=2Tq(x0)q(x1:t1,xt+1:Txt,x0)q(xtx0)logq(xt1xt,x0)pθ(xt1xt)dx0:T=t=2Tq(x0)q(x1:t1,xt+1:Txt,x0)q(xtx0)logq(xt1xt,x0)pθ(xt1xt)dx(1:t2,t+1:T)dxt1:tdx0=t=2Tq(x0)q(xt1xt,x0)q(xtx0)logq(xt1xt,x0)pθ(xt1xt)dxt1:tdx0=t=2Tq(x0)q(xtx0)DKL(q(xt1xt,x0)pθ(xt1xt))dxtdx0=q(x0)[t=2Tq(xtx0)DKL(q(xt1xt,x0)pθ(xt1xt))dxt]dx0=Eq(x0)[t=2TEq(xtx0)[DKL(q(xt1xt,x0)pθ(xt1xt))]] \begin{align*} &\sum\limits_{t=2}^{T} \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} \right] \\ &= \sum\limits_{t=2}^{T} \int q(\mathbf{x}_{0:T}) \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} d\mathbf{x}_{0:T} \\ &= \sum\limits_{t=2}^{T} \int q(\mathbf{x}_{0}) q(\mathbf{x}_{1:T} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} d\mathbf{x}_{0:T} \\ &= \sum\limits_{t=2}^{T} \int q(\mathbf{x}_{0}) q(\mathbf{x}_{1:t-1}, \mathbf{x}_{t+1:T} | \mathbf{x}_{t}, \mathbf{x}_{0}) q(\mathbf{x}_{t} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} d\mathbf{x}_{0:T} \\ &= \sum\limits_{t=2}^{T} \int\int\int q(\mathbf{x}_{0}) q(\mathbf{x}_{1:t-1}, \mathbf{x}_{t+1:T} | \mathbf{x}_{t}, \mathbf{x}_{0}) q(\mathbf{x}_{t} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} d\mathbf{x}_{(1:t-2,t+1:T)} d\mathbf{x}_{t-1:t} d\mathbf{x}_{0} \\ &= \sum\limits_{t=2}^{T} \int\int q(\mathbf{x}_{0}) q(\mathbf{x}_{t-1}| \mathbf{x}_{t}, \mathbf{x}_{0}) q(\mathbf{x}_{t} | \mathbf{x}_{0}) \log \dfrac{q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})} d\mathbf{x}_{t-1:t} d\mathbf{x}_{0} \\ &= \sum\limits_{t=2}^{T} \int\int q(\mathbf{x}_{0}) q(\mathbf{x}_{t} | \mathbf{x}_{0}) D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) d\mathbf{x}_{t} d\mathbf{x}_{0} \\ &= \int q(\mathbf{x}_{0}) \left[ \sum\limits_{t=2}^{T} \int q(\mathbf{x}_{t} | \mathbf{x}_{0}) D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) d\mathbf{x}_{t} \right] d\mathbf{x}_{0} \\ &= \mathbb{E}_{q(\mathbf{x}_{0})} \left[ \sum\limits_{t=2}^{T} \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) \Big] \right] \\ \end{align*}

논문에서는 이를 Eq[t=2TDKL(q(xt1xt,x0)pθ(xt1xt))]\displaystyle \mathbb{E}_{q} \left[ \sum\limits_{t=2}^{T} D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) \right]로 표기하고 있음에 주의하라. 첫번째 항에서와 마찬가지로 의존하지 않는 변수로 굳이 적분을 다시 해주면 논문에서의 표기와 같이 바꿔줄 수도 있다.

이제 (8)(8)는 최종적으로 다음과 같이 KLD를 포함하는 식으로 다시 쓸 수 있다.

L=Eq(x0)[DKL(q(xTx0)p(xT))]+Eq(x0)[t=2TEq(xtx0)[DKL(q(xt1xt,x0)pθ(xt1xt))]]Eq(x0:T)[logpθ(x0x1)] \begin{align*} &L = \mathbb{E}_{q(\mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( q(\mathbf{x}_{T} | \mathbf{x}_{0}) \| p(\mathbf{x}_{T}) \right) \Big] \\ &\qquad +\mathbb{E}_{q(\mathbf{x}_{0})} \left[ \sum\limits_{t=2}^{T} \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) \Big] \right] - \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \log p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1}) \right] \end{align*}

물론 위에서 설명한대로 q(xt)f(xt)dxt=f(xt)\int q(\mathbf{x}_{t^{\prime}}) f(\mathbf{x}_{t}) d\mathbf{x}_{t^{\prime}} = f(\mathbf{x}_{t})인 적분트릭을 쓰면 다음과 같이 하나의 항으로 묶어서 표현할 수도 있다.

Eq(x0:T)[DKL(q(xTx0)p(xT))LT+t=2T[DKL(q(xt1xt,x0)pθ(xt1xt))]Lt1logpθ(x0x1)L0] \mathbb{E}_{q(\mathbf{x}_{0:T})} \bigg[ \underbrace{D_{\text{KL}} \left( q(\mathbf{x}_{T} | \mathbf{x}_{0}) \| p(\mathbf{x}_{T}) \right)}_{L_{T}} + \sum\limits_{t=2}^{T} \underbrace{\Big[ D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) \Big]}_{L_{t-1}} - \underbrace{\log p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1})}_{L_{0}} \bigg]

여기에서 q(xt1xt,x0)q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})는 다음과 같이 계산할 수 있다.

조건부 확률의 성질

p(xy,z)=p(x,yz)p(yz) p(\mathbf{x} | \mathbf{y}, \mathbf{z}) = \dfrac{p(\mathbf{x}, \mathbf{y} | \mathbf{z}) }{p(\mathbf{y} | \mathbf{z})}

q(xt1xt,x0)=q(xt,xt1x0)q(xtx0)=q(xtxt1,x0)q(xt1x0)q(xtx0)=q(xtxt1)q(xt1x0)q(xtx0) \begin{align*} q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) &= \dfrac{q(\mathbf{x}_{t}, \mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \\ &= \dfrac{q(\mathbf{x}_{t} | \mathbf{x}_{t-1}, \mathbf{x}_{0}) q(\mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \\ &= \dfrac{q(\mathbf{x}_{t} | \mathbf{x}_{t-1}) q(\mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \end{align*}

마지막 등호는 {xt}\left\{ \mathbf{x}_{t} \right\}가 마코프라 가정했기 때문이 성립한다. 위 식의 확률밀도함수는 (3)(3), (6)(6)에서 구해놨기 때문에 그대로 대입하면 된다.

q(xt1xt,x0)=q(xtxt1)q(xt1x0)q(xtx0)=Cexp(12(xtαtxt1)2(1αt))exp(12(xt1αt1x0)2(1αt1))exp(12(xtαtx0)2(1αt))=Cexp[12(11αtxtTxt2αt1αtxtTxt1+αt1αtxt1Txt1+11αt1xt1Txt12αt11αt1x0Txt1+αt11αt1x0Tx011αtxtTxt+2αt1αtxtTx0αt1αtx0Tx0)] \begin{align*} &q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \\ &= \dfrac{q(\mathbf{x}_{t} | \mathbf{x}_{t-1}) q(\mathbf{x}_{t-1} | \mathbf{x}_{0})}{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \\ &= C \dfrac{\exp\left( - \dfrac{1}{2} \dfrac{\left( \mathbf{x}_{t} - \sqrt{\alpha_{t}}\mathbf{x}_{t-1} \right)^{2}}{(1-\alpha_{t})} \right) \exp\left( - \dfrac{1}{2} \dfrac{\left( \mathbf{x}_{t-1} - \sqrt{\overline{\alpha}_{t-1}}\mathbf{x}_{0} \right)^{2}}{(1-\overline{\alpha}_{t-1})} \right)}{\exp\left( - \dfrac{1}{2} \dfrac{\left( \mathbf{x}_{t} - \sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0} \right)^{2}}{(1-\overline{\alpha}_{t})} \right)} \\ &= C \exp\left[ -\dfrac{1}{2} \left( \dfrac{1}{1-\alpha_{t}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} - \dfrac{2\sqrt{\alpha_{t}}}{1-\alpha_{t}} \mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t-1} + \dfrac{\alpha_{t}}{1-\alpha_{t}} \mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} \right.\right.\\ &\qquad\qquad\qquad \quad + \dfrac{1}{1-\overline{\alpha}_{t-1}}\mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} - \dfrac{2\sqrt{\overline{\alpha}_{t-1}}}{1-\overline{\alpha}_{t-1}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{t-1} + \dfrac{\overline{\alpha_{t-1}}}{1-\overline{\alpha}_{t-1}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0} \\ &\qquad\qquad\qquad\quad \left.\left. - \dfrac{1}{1-\overline{\alpha}_{t}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + \dfrac{2\sqrt{\overline{\alpha}_{t}}}{1-\overline{\alpha}_{t}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} - \dfrac{\overline{\alpha_{t}}}{1-\overline{\alpha}_{t}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0} \right)\right] \tag{9} \end{align*}

여기서 C=1(2π(1αt)(1αt)(1αt))DC = \dfrac{1}{\sqrt{ \left(2\pi \dfrac{(1-\alpha_{t})(1-\overline{\alpha_{t}})}{(1-\overline{\alpha_{t}})} \right)^{D} }}이다. 구하려는 분포가 q(xt1xt,x0)q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0})이므로, 지수 부분을 xt1\mathbf{x}_{t-1}에 대해서 정리하자.

(αt1αt+11αt1)xt1Txt12(αt1αtxtT+αt11αt1x0T)xt1+[(11αt11αt)xtTxt+2αt1αtxtTx0+(αt11αt1αt1αt)x0Tx0] \begin{align*} &\left( \dfrac{\alpha_{t}}{1-\alpha_{t}} + \dfrac{1}{1-\overline{\alpha}_{t-1}} \right) \mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} - 2\left( \dfrac{\sqrt{\alpha_{t}}}{1-\alpha_{t}} \mathbf{x}_{t}^{\mathsf{T}} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}}{1-\overline{\alpha}_{t-1}}\mathbf{x}_{0}^{\mathsf{T}} \right)\mathbf{x}_{t-1} \\ &\qquad + \left[ \left( \dfrac{1}{1-\alpha_{t}} - \dfrac{1}{1-\overline{\alpha}_{t}} \right)\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + 2\dfrac{\sqrt{\overline{\alpha}_{t}}}{1-\overline{\alpha}_{t}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} + \left( \dfrac{\overline{\alpha}_{t-1}}{1-\overline{\alpha}_{t-1}} - \dfrac{\overline{\alpha}_{t}}{1-\overline{\alpha}_{t}} \right)\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0}\right] \end{align*}

덧셈으로 표현된 상수들을 아래와 같이 통분하자.

(αt1αt+11αt1)=αtαtαt1+1αt(1αt)(1αt1)=1αt(1αt)(1αt1) \left( \dfrac{\alpha_{t}}{1-\alpha_{t}} + \dfrac{1}{1-\overline{\alpha}_{t-1}} \right) = \dfrac{\alpha_{t} - \alpha_{t}\overline{\alpha}_{t-1} + 1 - \alpha_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})} = \dfrac{1 - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})}

(11αt11αt)=αtαt(1αt)(1αt)=αt(1αt1)(1αt)(1αt) \left( \dfrac{1}{1-\alpha_{t}} - \dfrac{1}{1-\overline{\alpha}_{t}} \right) = \dfrac{\alpha_{t} - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t})} = \dfrac{\alpha_{t}(1-\overline{\alpha}_{t-1})}{(1-\alpha_{t})(1-\overline{\alpha}_{t})}

(αt11αt1αt1αt)=αt1αt(1αt1)(1αt)=αt1(1αt)(1αt1)(1αt) \left( \dfrac{\overline{\alpha}_{t-1}}{1-\overline{\alpha}_{t-1}} - \dfrac{\overline{\alpha}_{t}}{1-\overline{\alpha}_{t}} \right) = \dfrac{\overline{\alpha}_{t-1} - \overline{\alpha}_{t}}{(1-\overline{\alpha}_{t-1})(1-\overline{\alpha}_{t})} = \dfrac{\overline{\alpha}_{t-1}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t-1})(1-\overline{\alpha}_{t})}

그러면 다음과 같이 정리된다.

1αt(1αt)(1αt1)xt1Txt12(αt1αtxtT+αt11αt1x0T)xt1+[αt(1αt1)(1αt)(1αt)xtTxt+2αt1αtxtTx0+αt1(1αt)(1αt1)(1αt)x0Tx0] \begin{align*} & \dfrac{1 - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})} \mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} - 2\left( \dfrac{\sqrt{\alpha_{t}}}{1-\alpha_{t}} \mathbf{x}_{t}^{\mathsf{T}} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}}{1-\overline{\alpha}_{t-1}}\mathbf{x}_{0}^{\mathsf{T}} \right)\mathbf{x}_{t-1} \\ &\qquad + \left[ \dfrac{\alpha_{t}(1-\overline{\alpha}_{t-1})}{(1-\alpha_{t})(1-\overline{\alpha}_{t})}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + 2\dfrac{\sqrt{\overline{\alpha}_{t}}}{1-\overline{\alpha}_{t}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} + \dfrac{\overline{\alpha}_{t-1}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t-1})(1-\overline{\alpha}_{t})}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0}\right] \end{align*}

xt1Txt1\mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1}항의 상수를 묶어내면,

1αt(1αt)(1αt1)(xt1Txt12((1αt1)αt1αtxtT+(1αt)αt11αtx0T)xt1+[αt(1αt1)2(1αt)2xtTxt+2(1αt)(1αt1)αt(1αt)2xtTx0+αt1(1αt)2(1αt)2x0Tx0])(10) \begin{align*} & \frac{1 - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})} \left( \mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} - 2 \left( \frac{(1-\overline{\alpha}_{t-1})\sqrt{\alpha_{t}}}{1 - \overline{\alpha}_{t}} \mathbf{x}_{t}^{\mathsf{T}} + \frac{(1-\alpha_{t})\overline{\alpha}_{t-1}}{1 - \overline{\alpha}_{t}}\mathbf{x}_{0}^{\mathsf{T}} \right)\mathbf{x}_{t-1} \right. \\ &\qquad +\left. \left[ \frac{\alpha_{t}(1-\overline{\alpha}_{t-1})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + 2\frac{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})\sqrt{\overline{\alpha}_{t}}}{(1 - \overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} + \frac{\overline{\alpha}_{t-1}(1 - \alpha_{t})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0}\right] \right) \end{align*} \tag{10}

위 식의 상수항을 다시 다음과 같이 정리할 수 있다.

[αt(1αt1)2(1αt)2xtTxt+2(1αt)(1αt1)αtαt1(1αt)2xtTx0+αt1(1αt)2(1αt)2x0Tx0]=[αt2(1αt1)2(1αt)2xtTxt+2(1αt)(1αt1)αtαt1(1αt)2xtTx0+αt12(1αt)2(1αt)2x0Tx0]=[αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0]2 \begin{align*} &\left[ \dfrac{\alpha_{t}(1-\overline{\alpha}_{t-1})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + 2\dfrac{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})\sqrt{\alpha_{t}\overline{\alpha}_{t-1}}}{(1 - \overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} + \dfrac{\overline{\alpha}_{t-1}(1 - \alpha_{t})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0}\right] \\ &=\left[ \dfrac{\sqrt{\alpha_{t}}^{2}(1-\overline{\alpha}_{t-1})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{t} + 2\dfrac{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})\sqrt{\alpha_{t}\overline{\alpha}_{t-1}}}{(1 - \overline{\alpha}_{t})^{2}}\mathbf{x}_{t}^{\mathsf{T}}\mathbf{x}_{0} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}^{2}(1 - \alpha_{t})^{2}}{(1-\overline{\alpha}_{t})^{2}}\mathbf{x}_{0}^{\mathsf{T}}\mathbf{x}_{0}\right] \\ &=\left[ \dfrac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0}\right]^{2} \\ \end{align*}

이를 (10)(10)에 대입하면 다음을 얻는다.

1αt(1αt)(1αt1)(xt1Txt12((1αt1)αt1αtxtT+(1αt)αt11αtx0T)xt1+[αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0]2)=1αt(1αt)(1αt1)(xt[αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0])2 \begin{align*} & \dfrac{1 - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})} \left( \mathbf{x}_{t-1}^{\mathsf{T}}\mathbf{x}_{t-1} - 2 \left( \dfrac{(1-\overline{\alpha}_{t-1})\sqrt{\alpha_{t}}}{1 - \overline{\alpha}_{t}} \mathbf{x}_{t}^{\mathsf{T}} + \dfrac{(1-\alpha_{t})\overline{\alpha}_{t-1}}{1 - \overline{\alpha}_{t}}\mathbf{x}_{0}^{\mathsf{T}} \right)\mathbf{x}_{t-1} \right. \\ &\qquad \left. +\left[ \dfrac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0}\right]^{2} \right) \\ &= \dfrac{1 - \overline{\alpha}_{t}}{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})} \left( \mathbf{x}_{t} - \left[ \dfrac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0}\right] \right)^{2} \end{align*}

마지막으로 이 식을 (9)(9)에 대입하면 아래와 같다.

q(xt1xt,x0)=1(2π(1αt)(1αt)(1αt))Dexp[12(xt[αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0])2(1αt)(1αt1)(1αt)] \begin{array}{l} q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \\ = \frac{1}{\sqrt{ \left(2\pi \frac{(1-\alpha_{t})(1-\overline{\alpha_{t}})}{(1-\overline{\alpha_{t}})} \right)^{D} }} \exp\left[ -\dfrac{1}{2} \dfrac{\left( \mathbf{x}_{t} - \left[ \frac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0}\right] \right)^{2}}{\frac{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})}{(1 - \overline{\alpha}_{t})}} \right] \end{array}

이는 다음의의 다변량 정규분포와 같다.

q(xt1xt,x0)=N(αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0,(1αt)(1αt1)(1αt)I)=N(μ~t(xt,x0),β~tI) \begin{align*} q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) &= \mathcal{N} \left( \dfrac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \dfrac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0}, \dfrac{(1-\alpha_{t})(1-\overline{\alpha}_{t-1})}{(1 - \overline{\alpha}_{t})}\mathbf{I} \right) \\ &= \mathcal{N} ( \tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}), \tilde{\beta}_{t} \mathbf{I}) \end{align*}

whereμ~t(xt,x0)=αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0, \text{where}\qquad \tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}) = \frac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0},

β~t=(1αt1)βt(1αt) \tilde{\beta}_{t} = \frac{(1-\overline{\alpha}_{t-1}) \beta_{t}}{(1 - \overline{\alpha}_{t})}

3 Diffusion models and denoising autoencoders

3.1 Forward process and LTL_{T}

논문에서는 확산계수 βt\beta_{t}를 학습할 파라미터가 아닌 상수로 고정한다. LTL_{T}는 아래와 같이 표현되는데, βt\beta_{t}가 상수이면 학습할 파라매터가 없으므로 실제로 손실함수를 구현할 때 이 항을 무시해도 된다.

LT=DKL(q(xTx0)p(xT))=DKL[N(αtx0,(1αt)I)N(0,I)]=12[log(1αt)D+D(1αt)+αtx02D] \begin{align*} L_{T} &= D_{\text{KL}} \left( q(\mathbf{x}_{T} | \mathbf{x}_{0}) \| p(\mathbf{x}_{T}) \right) \\ &= D_{\text{KL}} \Big[ \mathcal{N} \left( \sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0}, (1-\overline{\alpha}_{t}) \mathbf{I} \right) \| \mathcal{N} \left( 0, \mathbf{I} \right) \Big] \\ &= \dfrac{1}{2} \left[ \log (1-\overline{\alpha}_{t})^{D} + D(1-\overline{\alpha}_{t}) + \overline{\alpha}_{t}\mathbf{x}_{0}^{2} - D \right] \end{align*}

3.2 Reverse process and L1:T1L_{1:T-1}

저자는 pθ(xt1xt)=N(μθ(xt,t),Σθ(xt,t))p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) = \mathcal{N}(\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t), \boldsymbol{\Sigma}_{\theta} (\mathbf{x}_{t}, t))에서 공분산행렬은 Σθ(xt,t)=σt2I\boldsymbol{\Sigma}_{\theta} (\mathbf{x}_{t}, t) = \sigma_{t}^{2} \mathbf{I}로 두었다. 즉 학습할 파라미터를 두지 않았다. 실험적으로 아래의 두 환경에 대해서 비슷한 결과를 얻었다고 한다.

σt2=βtorσt2=β~t=1αt11αtβt \sigma_{t}^{2} = \beta_{t} \qquad \text{or} \qquad \sigma_{t}^{2} = \tilde{\beta}_{t} = \dfrac{1 - \overline{\alpha}_{t-1}}{1 - \overline{\alpha}_{t}} \beta_{t}

왼쪽의 세팅은 x0N(0,I)\mathbf{x}_{0} \sim \mathcal{N} (\mathbf{0}, \mathbf{I})로 추출하여 데이터셋에 대해서 학습할 때 최적이고, 오른쪽의 세팅은 고정된 하나의 x0N(x0,I)\mathbf{x}_{0} \sim \mathcal{N} (\mathbf{x}_{0}, \mathbf{I})에 대해서 학습할 때 최적이라고 한다.

이제 손실함수 Lt1L_{t-1}를 살펴보면 다음과 같다.

Lt1=Eq(xtx0)[DKL(q(xt1xt,x0)pθ(xt1xt))]=Eq(xtx0)[DKL(N(μ~t(xt,x0),β~tI)N(μθ(xt,t),σt2I))]=Eq(xtx0)[12(log(β~tσt2)D+Dβ~tσt2+(μ~t(xt,x0)μθ(xt,t))2σt2D)]=Eq(xtx0)[12σt2(μ~t(xt,x0)μθ(xt,t))2]+C2 \begin{align*} L_{t-1} &= \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( q(\mathbf{x}_{t-1} | \mathbf{x}_{t}, \mathbf{x}_{0}) \| p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t}) \right) \Big] \\ &= \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \Big[ D_{\text{KL}} \left( \mathcal{N}( \tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}), \tilde{\beta}_{t} \mathbf{I}) \| \mathcal{N}(\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t), \sigma_{t}^{2} \mathbf{I}) \right) \Big] \\ &= \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \left[ \dfrac{1}{2} \left( \log \left( \dfrac{\tilde{\beta}_{t}}{\sigma_{t}^{2}} \right)^{D} + D\dfrac{\tilde{\beta}_{t}}{\sigma_{t}^{2}} + \dfrac{(\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}) - \boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t))^{2}}{\sigma_{t}^{2}} - D \right) \right] \\ &= \mathbb{E}_{q(\mathbf{x}_{t} | \mathbf{x}_{0})} \left[ \dfrac{1}{2\sigma_{t}^{2}} (\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}) - \boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t))^{2}\right] + C_{2} \end{align*}

여기서 C2C_{2}θ\theta에 의존하지 않는 상수이다. 그래서 μθ\boldsymbol{\mu}_{\theta}μ~t\tilde{\boldsymbol{\mu}}_{t}를 예측하는 모델이다. 여기서 μ~t\tilde{\boldsymbol{\mu}}_{t}를 명시적인 형태로 풀어내어 학습을 대상을 더 명확히 해보자. (5)(5)에 의해서 xt\mathbf{x}_{t}x0\mathbf{x}_{0}ϵ\boldsymbol{\epsilon}의 함수로 보고 xt(x0,ϵ)=αtx0+1αtϵ\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) = \sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0} + \sqrt{1-\overline{\alpha}_{t}}\boldsymbol{\epsilon}로 바꿔주면, μ~t(xt,x0)\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0})는 다음과 같이 바뀐다.

μ~t(xt,x0)=αt(1αt1)(1αt)xt+αt1(1αt)(1αt)x0=αt(1αt1)(1αt)xt(x0,ϵ)+αt1(1αt)(1αt)(1αtxt(x0,ϵ)1αtαtϵ)=(αt(1αt1)(1αt)+αt1(1αt)(1αt)αt)xt(x0,ϵ)αt1(1αt)1αt(1αt)αtϵ=(αt(1αt1)αt(1αt)+(1αt)(1αt)αt)xt(x0,ϵ)(1αt)1αtαtϵ=1αt((αtαt)+(1αt)(1αt)xt(x0,ϵ)βt1αtϵ)=1αt(xt(x0,ϵ)βt1αtϵ) \begin{align*} \tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t}, \mathbf{x}_{0}) &= \frac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t} + \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{0} \\ &= \frac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})}\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) + \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})} \left( \dfrac{1}{\sqrt{\overline{\alpha}_{t}}} \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \dfrac{\sqrt{1-\overline{\alpha}_{t}}}{\sqrt{\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) \\ &= \left( \frac{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t-1})}{(1-\overline{\alpha}_{t})} + \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})\sqrt{\overline{\alpha}_{t}}} \right)\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\sqrt{\overline{\alpha}_{t-1}}(1 - \alpha_{t})\sqrt{1-\overline{\alpha}_{t}}}{(1-\overline{\alpha}_{t})\sqrt{\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \\ &= \left( \frac{\alpha_{t}(1-\overline{\alpha}_{t-1})}{\sqrt{\alpha_{t}}(1-\overline{\alpha}_{t})} + \frac{(1 - \alpha_{t})}{(1-\overline{\alpha}_{t})\sqrt{\alpha_{t}}} \right)\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{(1 - \alpha_{t})}{\sqrt{1-\overline{\alpha}_{t}}\sqrt{\alpha_{t}}}\boldsymbol{\epsilon} \\ &= \dfrac{1}{\sqrt{\alpha_{t}}}\left( \frac{ (\alpha_{t} - \overline{\alpha}_{t}) + (1 - \alpha_{t})}{(1-\overline{\alpha}_{t})} \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) \\ &= \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) \\ \end{align*}

따라서 위의 Lt1L_{t-1}은 다시 다음과 같이 정리된다.

Lt1=Ext(x0,ϵ)[12σt2[1αt(xt(x0,ϵ)βt1αtϵ)μθ(xt(x0,ϵ),t)]2]+C2(11) L_{t-1} = \mathbb{E}_{\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon})} \left[ \dfrac{1}{2\sigma_{t}^{2}} \left[ \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) - \boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}), t) \right]^{2} \right] + C_{2} \tag{11}

그러면 결국 μθ(xt,t)\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t)가 학습해야할 대상은 1αt(xt(x0,ϵ)βt1αtϵ)\dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right)이다. 여기서 xt\mathbf{x}_{t}는 입력으로 주어지고, βt\beta_{t}는 고정된 상수이니 실제로 신경망 μθ(xt,t)\boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t)가 학습해야할 것은 ϵ=ϵt\boldsymbol{\epsilon} = \boldsymbol{\epsilon}_{t}이다. 따라서 파라미터 θ\theta에 의존하는 항은 ϵ\boldsymbol{\epsilon}가 유일하다.

μθ(xt,t)=1αt(xtβt1αtϵθ(xt,t))(12) \boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}, t) = \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t} - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t}, t) \right) \tag{12}

이는 어찌보면 대단히 당연하면서도 직관적인 결과이다. 왜냐하면 xT\mathbf{x}_{T}x0\mathbf{x}_{0}에서 노이즈 ϵt\boldsymbol{\epsilon}_{t}를 계속 더해서 만들어졌으므로, 그 노이즈들을 모두 알 수 있다면 x0\mathbf{x}_{0}를 복원할 수 있기 때문이다. 물론 이 설명 자체는 엄밀하지 않고 직관적이지만, 위의 논리 전개에 의해서 그것이 직관적일 뿐만 아니라 수학적으로도 타당하다는 것을 알 수 있다.

μθ\boldsymbol{\mu}_{\theta}p(xt1xt)=N(μθ,σt2I)p(\mathbf{x}_{t-1} | \mathbf{x}_{t}) = \mathcal{N}( \boldsymbol{\mu}_{\theta}, \sigma_{t}^{2}\mathbf{I})의 평균벡터였다. 따라서 xt\mathbf{x}_{t}가 주어졌을 때 xt1pθ(xt1xt)\mathbf{x}_{t-1} \sim p_{\theta}(\mathbf{x}_{t-1} | \mathbf{x}_{t})는 다음과 같이 샘플링된다. ((3)(3)가 어떻게 나왔는지를 다시 보라.)

xt1=1αt(xtβt1αtϵθ(xt,t))+σtz,zN(0,I) \mathbf{x}_{t-1} = \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t} - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t}, t) \right) + \sigma_{t} \mathbf{z},\qquad \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \\

최종적으로 (12)(12)(11)(11)에 대입하면 다음을 얻는다.

Ext(x0,ϵ)[12σt2[1αt(xt(x0,ϵ)βt1αtϵ)μθ(xt(x0,ϵ),t)]2]=Ext[12σt2[1αt(xtβt1αtϵ)1αt(xtβt1αtϵθ(xt,t))]2]=Ext[12σt2[1αtβt1αtϵ1αtβt1αtϵθ(xt,t)]2]=Ext[βt22σt2αt(1αt)[ϵϵθ(xt,t)]2]=Ex0,ϵ[βt22σt2αt(1αt)[ϵϵθ(αtx0+1αtϵ,t)]2] \begin{align*} & \mathbb{E}_{\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon})} \left[ \dfrac{1}{2\sigma_{t}^{2}} \left[ \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}) - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) - \boldsymbol{\mu}_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0}, \boldsymbol{\epsilon}), t) \right]^{2} \right] \\ &= \mathbb{E}_{\mathbf{x}_{t}} \left[ \dfrac{1}{2\sigma_{t}^{2}} \left[ \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t} - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} \right) - \dfrac{1}{\sqrt{\alpha_{t}}}\left( \mathbf{x}_{t} - \frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t}, t) \right) \right]^{2} \right] \\ &= \mathbb{E}_{\mathbf{x}_{t}} \left[ \dfrac{1}{2\sigma_{t}^{2}} \left[ \dfrac{1}{\sqrt{\alpha_{t}}}\frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon} - \dfrac{1}{\sqrt{\alpha_{t}}}\frac{\beta_{t}}{\sqrt{1-\overline{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t}, t) \right]^{2} \right] \\ &= \mathbb{E}_{\mathbf{x}_{t}} \left[ \dfrac{\beta_{t}^{2}}{2\sigma_{t}^{2}\alpha_{t} (1 - \overline{\alpha}_{t})} \left[ \boldsymbol{\epsilon} - \boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t}, t) \right]^{2} \right] \\ &= \mathbb{E}_{\mathbf{x}_{0}, \boldsymbol{\epsilon}} \left[ \dfrac{\beta_{t}^{2}}{2\sigma_{t}^{2}\alpha_{t} (1 - \overline{\alpha}_{t})} \left[ \boldsymbol{\epsilon} - \boldsymbol{\epsilon}_{\theta}(\sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0} + \sqrt{1-\overline{\alpha}_{t}}\boldsymbol{\epsilon}, t) \right]^{2} \right] \\ \end{align*}

지금까지의 설명을 토대로 훈련과 샘플링 과정을 수도코드로 나타내면 다음과 같다.

3.3 Data scaling, reverse process decoder, and L0L_{0}

지금까지의 논의는 모두 연속 확률밀도함수에 대한 것이었다. 이미지 데이터는 {0,1,,255}\left\{ 0, 1, \dots, 255 \right\}의 값을 갖는 이산 변수이므로 적절한 스케일링이 필요하다. 우선 {0,1,,255}\left\{ 0, 1, \dots, 255 \right\} 값들은 [1,1][-1, 1]로 선형적으로 스케일링된다. 그리고 저자들은 최종적으로 샘플링의 마지막 과정 pθ(x0,x1)p_{\theta}(\mathbf{x}_{0}, \mathbf{x}_{1})를 다음과 같이 두었다.

pθ(x0x1)=i=1Dδ(x0i)δ+(x0i)N(x;μθi(x1,1),σ12)dx p_{\theta}(\mathbf{x}_{0} | \mathbf{x}_{1}) = \prod\limits_{i = 1}^{D} \int\limits_{\delta_{-}(x_{0}^{i})}^{\delta_{+}(x_{0}^{i})} \mathcal{N}(x; \mu_{\theta}^{i}(\mathbf{x}_{1}, 1), \sigma_{1}^{2}) dx

δ+(x)={if x=1x+1255if x<1,δ(x)={x1255if x>1if x=1 \delta_{+}(x) = \begin{cases} \infty & \text{if } x = 1 \\ x + \frac{1}{255} & \text{if } x \lt 1 \end{cases}, \qquad \delta_{-}(x) = \begin{cases} x - \frac{1}{255} & \text{if } x \gt -1 \\ -\infty & \text{if } x = -1 \end{cases}

여기서 x0ix_{0}^{i}x0\mathbf{x}_{0}ii번째 픽셀을 의미한다. 즉 이미지의 픽셀값 xx[x1255,x+1255][x - \frac{1}{255}, x + \frac{1}{255}]인 구간으로 보겠다는 거다.

3.4 Simplified training objective

3.2절에서 ϵ\boldsymbol{\epsilon}을 예측할 수 있도록 Lt1L_{t-1}을 구했지만, 실험적으로는 성능과 구현 모두 앞의 상수를 떼버리고 다음과 같이 사용하는 것이 더 좋았다고 한다.

Lsimple(θ):=Et,x0,ϵ[(ϵϵθ(αtx0+1αtϵ,t))2] L_{\text{simple}}(\theta) := \mathbb{E}_{t, \mathbf{x}_{0}, \boldsymbol{\epsilon}} \left[ \left( \boldsymbol{\epsilon} - \boldsymbol{\epsilon}_{\theta}(\sqrt{\overline{\alpha}_{t}}\mathbf{x}_{0} + \sqrt{1-\overline{\alpha}_{t}}\boldsymbol{\epsilon}, t) \right)^{2} \right]

위의 수도코드에서 나와있듯이 tt11부터 TT까지에서 균등분포로 뽑는다.


  1. Ho, Jonathan, Ajay Jain, and Pieter Abbeel. “Denoising diffusion probabilistic models.” Advances in neural information processing systems 33 (2020): 6840-6851. ↩︎

  2. https://x.com/cyxacxa https://x.com/cyxacxa/status/1903757493987389938/photo/1 ↩︎

  3. Sohl-Dickstein, Jascha, et al. “Deep unsupervised learning using nonequilibrium thermodynamics.” International conference on machine learning. pmlr, 2015. ↩︎

  4. Feller, William. “Retracted chapter: On the theory of stochastic processes, with particular reference to applications.” Selected Papers I. Springer, Cham, 2015. 769-798. ↩︎