DDPM 이해해보기 - 2

BSH·2024년 1월 20일

논문 리뷰

목록 보기
8/8

DDPM 이해해보기 - 1에서는 Sampling 함수와 Forward, Reverse Process에 대해 간단히 보았고 PθP_{\theta}가 qq를 보고 배운다라는 것을 수식을 통해 확인해 보았습니다.

그러면 이제 intractable한 식을 tractable하게 바꿔주는 작업을 보겠습니다.

뒤에 나올 내용을 미리 말하자면 XtX_{t}만을 이용해 Xt−1X_{t-1}를 찾는 건 어렵기 때문에 X0X_{0}를 추가 조건으로 주어 tractable하게 만듭니다. 이를 인지하면서 아래 식을 보면 될 것 같습니다.

DDPM Loss

DDPM Loss

다시 NLL부터 보도록 하겠습니다.

ExT∼q(xt∣x0)[−logPθ(x0)]=ExT∼q(xt∣x0)[−logPθ(x0, x1, ..., xT)Pθ(x1, x2, ..., xT∣x0)]=ExT∼q(xt∣x0)[−logPθ(x0, x1, ..., xT)Pθ(x1, x2, ..., xT∣x0)⋅q(x1:T∣x0)q(x1:T∣x0)]=ExT∼q(xt∣x0)[−logPθ(x0, x1, ..., xT)q(x1:T∣x0)]−KL(q∣∣Pθ)∵KL(P∣∣Q)=∫P(x)logP(x)Q(x)dx=Ex[logP(x)Q(x)]≤ExT∼q(xt∣x0)[−logPθ(x0, x1, ..., xT)q(x1:T∣x0)]\begin{aligned} \mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-logP_{\theta}(x_{0})]&=\mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P_{\theta}(x_{0},\,x_{1},\,...,\,x_{T})}\over{P_{\theta}(x_{1},\,x_{2},\,...,\,x_{T}|x_{0})}}]\\ &=\mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P_{\theta}(x_{0},\,x_{1},\,...,\,x_{T})}\over{P_{\theta}(x_{1},\,x_{2},\,...,\,x_{T}|x_{0})}}\cdot {{q(x_{1:T}|x_{0})}\over{q(x_{1:T}|x_{0})}}]\\ &=\mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P_{\theta}(x_{0},\,x_{1},\,...,\,x_{T})}\over{q(x_{1:T}|x_{0})}}]-KL(q||P_{\theta})\quad\because KL(P||Q)=\int{P(x)}log{{P(x)}\over{Q(x)}}dx=\mathbb{E_{x}}[log{{P(x)}\over{Q(x)}}]\\ &\leq \mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P_{\theta}(x_{0},\,x_{1},\,...,\,x_{T})}\over{q(x_{1:T}|x_{0})}}]\\ \end{aligned}

더 이어가기 전에 전개에 필요한 내용 먼저 보겠습니다.
마르코프 성질에 의한 식 3개:

1:Pθ(x0:T)=P(xT)∏t=1TPθ(xt−1∣xt)2:q(x1:T∣x0)=∏t=1Tq(xt∣xt−1)1: P_{\theta}(x_{0:T})=P(x_{T})\prod_{t=1}^{T}P_{\theta}(x_{t-1}|x_{t})\\ 2: q(x_{1:T}|x_{0})=\prod_{t=1}^{T}q(x_{t}|x_{t-1})
3:q(xt∣xt−1)=q(xt∣xt−1,x0)=q(xt−1∣xt,x0)⋅q(xt∣x0)q(xt−1∣x0)∵bayes rule\begin{aligned} 3: q(x_{t}|x_{t-1})&=q(x_{t}|x_{t-1}, x_{0})\\ &=q(x_{t-1}|x_{t}, x_{0})\cdot{{q(x_{t}|x_{0})}\over{q(x_{t-1}|x_{0})}}\quad \because bayes\ rule \end{aligned}

이제 위 식들을 통해 전개에 필요한 변형에 필요한 내용은 숫자로 간단하게 표기하면서 넘어가고, 이어서 진행해보겠습니다.

ExT∼q(xt∣x0)[−logPθ(x0)]≤ExT∼q(xt∣x0)[−logPθ(x0:T)q(x1:T∣x0)]=ExT∼q(xt∣x0)[−logP(xT)∏t=1TPθ(xt−1∣xt)∏t=1Tq(xt∣xt−1)]∵1,2=ExT∼q(x1:t∣x0)[−logP(xT)−∑t=2TlogPθ(xt−1∣xt)q(xt∣xt−1)−logPθ(x0∣x1)q(x1∣x0)]=ExT∼q(x1:t∣x0)[−logP(xT)−∑t=2TlogPθ(xt−1∣xt)q(xt−1∣xt,x0)⋅q(xt−1∣x0)q(xt∣x0)−logPθ(x0∣x1)q(x1∣x0)]∵3=ExT∼q(x1:t∣x0)[−logP(xT)−∑t=2TlogPθ(xt−1∣xt)q(xt−1∣xt,x0)−∑t=2Tlogq(xt−1∣x0)q(xt∣x0)−logPθ(x0∣x1)q(x1∣x0)]=ExT∼q(x1:t∣x0)[−logP(xT)−∑t=2TlogPθ(xt−1∣xt)q(xt−1∣xt,x0)−log⁡q(x1∣x0)q(xT,x0)−logPθ(x0∣x1)q(x1∣x0)]=ExT∼q(x1:t∣x0)[−logP(x)q(xT∣x0)−∑t=2TlogPθ(xt−1∣xt)q(xt−1∣xt,x0)−logPθ(x0∣x1)]=ExT∼q(x1:t∣x0)[DKL(q(xT∣x0)∣∣P(xT))+∑t>1TDKL(q(xt−1∣xt,x0)∣∣Pθ(xt−1∣xt))−logPθ(x0∣x1)]\begin{aligned} \mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-logP_{\theta}(x_{0})]&\leq\mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P_{\theta}(x_{0:T})}\over{q(x_{1:T}|x_{0})}}]\\ &=\mathbb{E_{x_{T}\sim q(x_{t}|x_{0})}}[-log{{P(x_{T})\prod_{t=1}^{T}P_{\theta}(x_{t-1}|x_{t})}\over{\prod_{t=1}^{T}q(x_{t}|x_{t-1})}}]\quad \because 1, 2\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[-logP(x_{T})-\sum_{t=2}^{T}log{{P_{\theta}(x_{t-1}|x_{t})}\over{q(x_{t}|x_{t-1})}}-log{{P_{\theta}(x_{0}|x_{1})}\over{q(x_{1}|x_{0}})}]\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[-logP(x_{T})-\sum_{t=2}^{T}log{{P_{\theta}(x_{t-1}|x_{t})}\over{q(x_{t-1}|x_{t}, x_{0})}}\cdot{{q(x_{t-1}|x_{0})}\over{q(x_{t}|x_{0})}}-log{{P_{\theta}(x_{0}|x_{1})}\over{q(x_{1}|x_{0}})}]\quad \because 3\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[-logP(x_{T})-\sum_{t=2}^{T}log{{P_{\theta}(x_{t-1}|x_{t})}\over{q(x_{t-1}|x_{t}, x_{0})}}-\sum_{t=2}^{T}log{{q(x_{t-1}|x_{0})}\over{q(x_{t}|x_{0})}}-log{{P_{\theta}(x_{0}|x_{1})}\over{q(x_{1}|x_{0}})}]\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[-logP(x_{T})-\sum_{t=2}^{T}log{{P_{\theta}(x_{t-1}|x_{t})}\over{q(x_{t-1}|x_{t}, x_{0})}}-\log{{q(x_{1}|x_{0})}\over{q(x_{T}, x_{0})}}-log{{P_{\theta}(x_{0}|x_{1})}\over{q(x_{1}|x_{0}})}]\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[-log{{P(x)}\over{q(x_{T}|x_{0}})}-\sum_{t=2}^{T}log{{P_{\theta}(x_{t-1}|x_{t})}\over{q(x_{t-1}|x_{t}, x_{0})}}-logP_{\theta}(x_{0}|x_{1})]\\ &=\mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[D_{KL}(q(x_{T}|x_{0})||P(x_{T}))+\sum_{t>1}^{T}D_{KL}(q(x_{t-1}|x_{t}, x_{0})||P_{\theta}(x_{t-1}|x_{t}))-logP_{\theta(x_{0}|x_{1})}] \end{aligned}

Loss Term

이렇게 NLL로 부터 유도된 Loss는 마지막 줄 과 같습니다.

Loss=ExT∼q(x1:t∣x0)[DKL(q(xT∣x0)∣∣P(xT))+∑t>1TDKL(q(xt−1∣xt,x0)∣∣Pθ(xt−1∣xt))−logPθ(x0∣x1)]Loss = \mathbb{E_{x_{T}\sim q(x_{1:t}|x_{0})}}[D_{KL}(q(x_{T}|x_{0})||P(x_{T}))+\sum_{t>1}^{T}D_{KL}(q(x_{t-1}|x_{t}, x_{0})||P_{\theta}(x_{t-1}|x_{t}))-logP_{\theta(x_{0}|x_{1})}]

Regularization Term

LT=DKL(q(xT∣x0)∣∣P(xT))L_{T}=D_{KL}(q(x_{T}|x_{0})||P(x_{T}))는 Regularization Term으로 xTx_{T}가 얼마나 가우시안 분포에 가까운지를 나타냅니다. 이는 파라미터가 존재하지 않으므로 무시할 수 있습니다.
논문에서도 β\beta를 선형적으로 증가시키면서 q(xT∣x0)q(x_{T}|x_{0})를 자동적으로 가우시안 분포를 따라가게 된다고 합니다.

Denoising Process

L1:T=∑t>1TDKL(q(xt−1∣xt,x0)∣∣Pθ(xt−1∣xt))L_{1:T}=\sum_{t>1}^{T}D_{KL}(q(x_{t-1}|x_{t}, x_{0})||P_{\theta}(x_{t-1}|x_{t}))에서 알고싶은 것은 Pθ(xt−1∣xt)P_{\theta}(x_{t-1}|x_{t})가 동일해지고 싶은 분포인 q(xt−1∣xt,x0)q(x_{t-1}|x_{t}, x_{0})입니다.
q(xt−1∣xt,x0)q(x_{t-1}|x_{t}, x_{0})는 N(xt−1;μt~(xt,x0),βt~I)\mathcal{N}(x_{t-1};\tilde{\mu_{t}}(x_{t}, x_{0}),\tilde{\beta_{t}}I)형태로 나타낼 수 있으며 증명은 아래와 같습니다.

q(xt−1∣xt,x0)=q(xt∣xt−1)⋅q(xt−1∣x0)q(xt∣x0)q(x_{t-1}|x_{t}, x_{0})=q(x_{t}|x_{t-1})\cdot{{q(x_{t-1}|x_{0})}\over{q(x_{t}|x_{0})}}\\

qq는 이전에 가우시안으로 정의하였기 때문에

N(x,μ,Σ)=1(2π)DβDexp⁡(−12β(x−μ)T(x−μ))(Σ=βI)\mathcal{N}(x, \mu, \Sigma)={{1}\over{(\sqrt{2\pi})^D\sqrt{\beta}^D}}\exp(-{{1}\over{2\beta}}(x-\mu)^T(x-\mu))\quad(\Sigma=\beta I)

로 나타낼 수 있습니다. (DD는 xx의 차원입니다)
q(xt∣xt−1), q(xt−1∣x0), q(xt∣x0)q(x_{t}|x_{t-1}),\ q(x_{t-1}|x_{0}),\ q(x_{t}|x_{0})들은 이미 알고 있으므로 정규분포로 변환해 대입하고 정리해서 나타내면 아래의 식이 나옵니다.

q(xt−1∣xt,x0)=Kexp⁡(−12(xt−αtxt−1)2βt+(xt−1−α~t−1x0)21−α~t−1−(xt−α~tx0)21−α~t)=Kexp⁡(−12((αtβt+11−α~t−1)xt−12−2(αtβtxt+α~t−11−α~t−1x0)xt−1+C(xt,x0))\begin{aligned} q(x_{t-1}|x_{t}, x_{0})&= K\exp(-{{1}\over{2}}{({x_{t}-\sqrt{\alpha_{t}}x_{t-1})^2}\over{\beta_{t}}}+{{(x_{t-1}-\sqrt{\tilde{\alpha}_{t-1}}x_{0})^2}\over{1-\tilde{\alpha}_{t-1}}}-{{(x_{t}-\sqrt{\tilde{\alpha}_{t}}x_{0})^2}\over{1-\tilde{\alpha}_{t}}})\\ &=K\exp(-{{1}\over{2}}(({{\alpha_{t}}\over{\beta_{t}}}+{{1}\over{1-\tilde{\alpha}_{t-1}}})x_{t-1}^2-2({{\sqrt{\alpha_{t}}}\over{\beta_{t}}}x_{t}+{{\sqrt{\tilde{\alpha}_{t-1}}}\over{1-\tilde{\alpha}_{t-1}}}x_{0})x_{t-1}+C(x_{t},x_{0}))\\ \end{aligned}

이 식을 끔찍하게 복잡하게 풀어서 아래와 같은 정규분포로 모양으로 나타낼 수 있습니다.

A(xt,x0)exp⁡(−12β~t(xt−1−μ~t(xt,x0))2)A(x_{t}, x_{0})\exp(-{{1}\over{2\tilde{\beta}_{t}}}(x_{t-1}-\tilde{\mu}_{t}(x_{t}, x_{0}))^2)\\

그렇게 나온 식을 가져와서 대응시켜보면μt~\tilde{\mu_{t}}와 βt~\tilde{\beta_{t}}를 알 수 있습니다.

β~t=1−α~t−11−α~βtμ~t(xt,x0)=α~t−1βt1−α~tx0+αt(1−α~t−1)1−α~txt\tilde{\beta}_{t}={{1-\tilde{\alpha}_{t-1}}\over{1-\tilde{\alpha}}}\beta_{t}\\ \tilde{\mu}_{t}(x_{t},x_{0})={{\sqrt{\tilde{\alpha}_{t-1}}\beta_{t}}\over{1-\tilde{\alpha}_{t}}}x_{0}+{{\sqrt{\alpha_{t}}(1-\tilde{\alpha}_{t-1})}\over{1-\tilde{\alpha}_{t}}}x_{t}

이제 최종 Loss까지 얼마남지 않았습니다.

DKL(q(xt−1∣xt,x0)∣∣Pθ(xt−1∣xt))=DKL(N(xt−1;μ~t(xt,x0),β~tI)∣∣N(xt−1;μθ(xt,t),σt2I))=12σt2∥μ~t(xt,x0)−μθ(xt,t)∥2+C\begin{aligned} D_{KL}(q(x_{t-1}|x_{t}, x_{0})||P_{\theta}(x_{t-1}|x_{t}))&=D_{KL}(\mathcal{N}(x_{t-1};\tilde{\mu}_{t}(x_{t}, x_{0}),\tilde{\beta}_{t}I)||\mathcal{N}(x_{t-1};\mu_{\theta}(x_{t}, t), \sigma_{t}^{2}I))\\ &={{1}\over{2\sigma_{t}^2}}\lVert\tilde{\mu}_{t}(x_{t}, x_{0})-\mu_{\theta}(x_{t}, t)\rVert^2+C \end{aligned}
∴Lt−1=Eq[12σt2∥μ~t(xt,x0)−μθ(xt,t)∥2]+C\therefore L_{t-1}=\mathbb{E}_{q}[{{1}\over{2\sigma_{t}^2}}\lVert\tilde{\mu}_{t}(x_{t}, x_{0})-\mu_{\theta}(x_{t}, t)\rVert^2]+C

이제 이 식의 목적이 확고해졌습니다. μ~t(xt,x0)\tilde{\mu}_{t}(x_{t}, x_{0})가 μθ(xt,t)\mu_{\theta}(x_{t}, t)에 가까워 지도록 하는 것입니다.

여기서 더 나아가 reparameterizing을 해볼 수 있습니다.

recall : xt(x0,ϵ)=α~tx0+1−α~tϵϵ∼N(0,I)recall\ : \ x_{t}(x_{0}, \epsilon)=\sqrt{\tilde{\alpha}_{t}}x_{0}+\sqrt{1-\tilde{\alpha}_{t}}\epsilon \quad \epsilon \sim\mathcal{N}(0,I)\\

x0x_{0}를 좌변에 두고 식을 변형

x0=1α~t(xt(x0,ϵ)−1−α~tϵ)x_{0}={{1}\over{\sqrt{\tilde{\alpha}_{t}}}}(x_{t}(x_{0}, \epsilon)-\sqrt{1-\tilde{\alpha}_{t}}\epsilon)
Lt−1−C=Ex0,ϵ[∥ μ~t(xt(x0,ϵ), 1α~t(xt(x0,ϵ)−(1−α~t)ϵ))−μθ(xt(x0,ϵ),t) ∥2]L_{t-1}-C=\mathbb{E}_{x_{0}, \epsilon}[\lVert\ \tilde{\mu}_{t}(x_{t}(x_{0}, \epsilon),\ {{1}\over{\sqrt{\tilde{\alpha}_{t}}}}(x_{t}(x_{0}, \epsilon)-\sqrt{(1-\tilde{\alpha}_{t})}\epsilon))-\mu_{\theta}(x_{t}(x_{0}, \epsilon), t)\ \rVert^{2}]\\
μ~t(xt(x0,ϵ),x0)=α~t−1βt1−α~tx0+αt(1−α~t−1)1−α~txt=α~t−1βt1−α~t(1α~t(xt(x0,ϵ)−1−α~tϵ))+αt(1−α~t−1)1−α~txt=...=1αt(xt(x0,ϵ)−βt1−α~tϵ)\begin{aligned} \tilde{\mu}_{t}(x_{t}(x_{0}, \epsilon), x_{0})&={{\sqrt{\tilde{\alpha}_{t-1}}\beta_{t}}\over{1-\tilde{\alpha}_{t}}}x_{0}+{{\sqrt{\alpha_{t}}(1-\tilde{\alpha}_{t-1})}\over{1-\tilde{\alpha}_{t}}}x_{t}\\ &={{\sqrt{\tilde{\alpha}_{t-1}}\beta_{t}}\over{1-\tilde{\alpha}_{t}}}({{1}\over{\sqrt{\tilde{\alpha}_{t}}}}(x_{t}(x_{0}, \epsilon)-\sqrt{1-\tilde{\alpha}_{t}}\epsilon))+{{\sqrt{\alpha_{t}}(1-\tilde{\alpha}_{t-1})}\over{1-\tilde{\alpha}_{t}}}x_{t}\\ &=...\\ &={{1}\over{\sqrt{\alpha_{t}}}}(x_{t}(x_{0}, \epsilon)-{{\beta_{t}}\over{\sqrt{1-\tilde{\alpha}_{t}}}}\epsilon) \end{aligned}

복잡한 전개를 생략하면 결과는 가장 아래 줄의 식과 같습니다.

위에서 나온 결과를 대입을 하면 아래식이 나옵니다.

Lt−1−C=Ex0,ϵ[∥ 1αt(xt(x0,ϵ)−βt1−α~tϵ)−μθ(xt(x0,ϵ),t) ∥2]L_{t-1}-C=\mathbb{E}_{x_{0}, \epsilon}[\lVert\ {{1}\over{\sqrt{\alpha_{t}}}}(x_{t}(x_{0}, \epsilon)-{{\beta_{t}}\over{\sqrt{1-\tilde{\alpha}_{t}}}}\epsilon)-\mu_{\theta}(x_{t}(x_{0}, \epsilon), t)\ \rVert^{2}]

이제 μθ\mu_{\theta}는 1αt(xt(x0,ϵ)−βt1−α~tϵ){{1}\over{\sqrt{\alpha_{t}}}}(x_{t}(x_{0}, \epsilon)-{{\beta_{t}}\over{\sqrt{1-\tilde{\alpha}_{t}}}}\epsilon)를 예측하는 문제가 되었습니다. 이걸 바로 예측해도 되지만 실험 결과 실험 초기에 생성되는 이미지의 퀄리티가 좋지못하다고 합니다. 그래서 μθ\mu_{\theta}가 noise ϵ\epsilon을 예측하도록 parameterization합니다. xtx_{t}는 forward 연산에서 바로 입력으로 넣어줄 수 있고, ϵθ\epsilon_{\theta}는 function approximator입니다.

μθ(xt,t)=μ~t(xt,1αt(xt−1−α~tϵθ(xt)))=1αt(xt−βt1−α~tϵθ(xt,t))\mu_{\theta}(x_{t}, t)=\tilde{\mu}_{t}(x_{t}, {{1}\over{\sqrt{\alpha_{t}}}}(x_{t}-{\sqrt{1-\tilde{\alpha}_{t}}}\epsilon_{\theta}(x_{t})))={{1}\over{\sqrt{\alpha_{t}}}}(x_{t}-{{\beta_{t}}\over{\sqrt{1-\tilde{\alpha}_{t}}}}\epsilon_{\theta}(x_{t}, t))

Pθ(xt−1∣xt)P_{\theta}(x_{t-1}|x_{t})에서 샘플링 계산은 아래와 같습니다.

xt−1=1αt(xt−βt1−α~tϵθ(xt,t))+σtzz∼N(0,I)x_{t-1}={{1}\over{\sqrt{\alpha}_{t}}}(x_{t}-{{\beta_{t}}\over{\sqrt{1-\tilde{\alpha}_{t}}}}\epsilon_{\theta}(x_{t}, t))+\sigma_{t}z \quad z\sim\mathcal{N}(0, I)

이제 이렇게 구한 μθ\mu_{\theta}를 Loss에 대입하면 최종 Loss를 얻게 됩니다.(사실 최종까지 조금 더 남았습니다)

Lt−1−C=Ex0,ϵ[βt22σt2αt(1−α~t)∥ ϵ−ϵθ(α~tx0+1−α~tϵ, t)∥2]L_{t-1}-C=\mathbb{E}_{x_{0}, \epsilon}[{{\beta_{t}^{2}}\over{2\sigma_{t}^{2}\alpha_{t}(1-\tilde{\alpha}_{t})}}\lVert\ \epsilon - \epsilon_{\theta}(\sqrt{\tilde{\alpha}_{t}}x_{0}+\sqrt{1-\tilde{\alpha}_{t}}\epsilon,\,t) \rVert^{2}]

Reconstruction Term

−logPθ(x0∣x1)-logP_{\theta(x_{0}|x_{1})}에서 x1x_{1}에서 x0x_{0}로 가는 과정은 노이즈가 있는 이미지에서 노이즈가 없는 이미지로 가는 과정이기 때문에 디코더로 해석할 수 있습니다.

디코더는 입력으로 x1x_{1}를 출력으로 x0x_{0}를 받습니다. 이 때 likelihood가 최대_(NLL이 최소)_가 되도록 θ\theta를 설정하는 과정이 디코더를 학습하는 과정이 됩니다.

디코더의 loss function은 아래와 같습니다.

Pθ(x0∣x1)=∏i=1D∫δ−(x0i)δ+(x0i)N(x;μθi(x1,1),σ12)dxδ+={∞if x=1x+1255if x<1δ−={−∞if x=−1x−1255if x>−1P_{\theta}(x_{0}|x_{1})=\prod_{i=1}^{D}\int_{\delta_{-}(x_{0}^{i})}^{\delta_{+}(x_{0}^{i})}\mathcal{N}(x;\mu_{\theta}^{i}(x_{1}, 1), \sigma_{1}^{2})dx\\ \delta_{+}= \begin{cases} \infin & if\ x = 1\\ x+{{1}\over{255}} & if\ x < 1\\ \end{cases} \quad \delta_{-}= \begin{cases} -\infin & if\ x = -1\\ x-{{1}\over{255}} & if\ x >- 1\\ \end{cases}

ii는 픽셀 인덱스를 가리킵니다. 이전에 정의한 리버스 프로세스를 그대로 사용하지만 몇가지 다른 점이 있습니다.

  1. 모든 픽셀이 독립이라는 가정
    모든 픽셀은 종속적인게 맞아 종속성을 고려하면 더 좋은 성능이 나오지만 이는 future work으로 남겨둔다고 합니다. 그러면 왜 픽셀을 독립으로 했을까 하면 픽셀에 대한 확률 값을 곱하면 likelihood가 되도록 하기 위해서 입니다.

  2. 최종이미지는 이산확률변수
    x0x_{0}의 ii번째 픽셀은 x1x_{1}으로부터 평균μθi(x1,1)\mu_{\theta}^{i}(x_{1}, 1)를 평균으로 하는 정규분포를 따릅니다. 그래서 확률 변수의 특정값에 대한 확률을 구하기 위해 적분이 필요합니다. x0ix_{0}^{i}에서 좌우로 12551\over255씩 구간을 설정해 적분합니다. 픽셀이 가질 수 있는 값은 256이며 값 사이 구간이 255개 있기 때문에 구간을 이와 같이 사용합니다.


논문에 나와있는 훈련과 샘플링 과정입니다.

손실함수 단순화

Lsimple=Et,x0,ϵ[∥ ϵ−ϵθ(α~tx0+1−α~tϵ, t)∥2]L_{simple}=\mathbb{E}_{t, x_{0}, \epsilon}[\lVert\ \epsilon - \epsilon_{\theta}(\sqrt{\tilde{\alpha}_{t}}x_{0}+\sqrt{1-\tilde{\alpha}_{t}}\epsilon,\,t) \rVert^{2}]

  • denoising score matching over multiple noise scales
  • Langevin-like reverse process
  • Langevin dynamics

참고 링크

영상

블로그

논문

profile
컴공생

0개의 댓글