diffusion model(扩散模型)DDPM解析

DDPM

前向阶段

在这里插入图片描述

  1. 重复 2-5 步骤
  2. x 0 ∼ q ( x 0 ) \mathbf{x}_0\sim q(\mathbf{x}_0) x0q(x0)从数据集中采样一张图片
  3. t ∼ U n i f o r m ( { 1 , … , T } ) t\sim\mathrm{Uniform}(\{1,\ldots,T\}) tUniform({1,,T}),从 1~T 中随机挑选一个时间步 t
  4. ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I}) ϵN(0,I),选取一个标准正态分布噪声
  5. ∇ θ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 \nabla_\theta\left\|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon},t)\right\|^2 θ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2
  • 其中的 ϵ \epsilon ϵ是目标噪声,也就是 groundtruth
  • ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) \boldsymbol{\epsilon}_{\theta}(\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\boldsymbol{\epsilon},t) ϵθ(αˉt x0+1αˉt ϵ,t)(带 θ \theta θ的都是模型相关)这个公式就是模型根据当前输入的 x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\boldsymbol{\epsilon} xt=αˉt x0+1αˉt ϵ以及时间歩 t 进行噪声的预测 ϵ θ \boldsymbol{\epsilon}_{\theta} ϵθ(这里添加时间步 t 类似于 transformer 的 position embedding,告诉 model 当前的时刻),并于 groundtruth ϵ \epsilon ϵ使用 L2 范数求解损失;
  1. x t x_t xt的求解:在前向的扩散过程中,添加噪声可以按照固定的规则进行添加,并不需要模型进行干预, x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\boldsymbol{\epsilon} xt=αˉt x0+1αˉt ϵ表示第 t 个时间步的图像(也就是下图中的某一张图),其中的 x 0 x_{0} x0是原图, ϵ \epsilon ϵ是符合标准正态分布的噪声,通过调节两者之间的强度,我们就可以调整噪声扩散的程度
    在这里插入图片描述

但在实际中,并不会一步一步的添加噪声,因为添加噪声的规则是固定的,每一个时间步添加噪声的强度是可以直接计算出来的,因此我们可以直接得到任一时间步的扩散图,其推理如下

tip
x t = a t x t − 1 + 1 − α t z 1 x_t=\sqrt{a_t}x_{t-1}+\sqrt{1-\alpha_t}z_1 xt=at xt1+1αt z1 1.1
x t − 1 = a t − 1 x t − 2 + 1 − α t − 1 z 2 x_{t-1}=\sqrt{a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}z_2 xt1=at1 xt2+1αt1 z2 1.2
将 1.2 带入 1.1:
x t = a t ( a t − 1 x t − 2 + 1 − α t − 1 z 2 ) + 1 − α t z 1 x_t =\sqrt{a_t}(\sqrt{a_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}z_2)+\sqrt{1-\alpha_t}z_1 xt=at (at1 xt2+1αt1 z2)+1αt z1 1.3
其中 Z1、z2 均服从标准正态分布,但是由于其前面均乘了系数改变了 σ \sigma σ,因此分别服从于 N ( 0 , a t ( 1 − α t − 1 ) ) \mathcal{N}(0, a_t(1-\alpha_{t-1}) ) N(0,at(1αt1)) N ( 0 , 1 − α t ) \mathcal{N}(0, 1-\alpha_t ) N(0,1αt),根据 N ( 0 , σ 1 2 I ) + N ( 0 , σ 2 2 I ) ∼ N ( 0 , ( σ 1 2 + σ 2 2 ) I ) \mathcal{N}(0,\sigma_1^2\mathbf{I})+\mathcal{N}(0,\sigma_2^2\mathbf{I})\sim\mathcal{N}(0,(\sigma_1^2+\sigma_2^2)\mathbf{I}) N(0,σ12I)+N(0,σ22I)N(0,(σ12+σ22)I),可以得到
a t a t − 1 x t − 2 + a t − a t a t + 1 − a t z t = a t a t − 1 x t − 2 + 1 − α t α t − 1 z t \sqrt{a_ta_{t-1}}x_{t-2}+ \sqrt{a_t-a_ta_t+1-a_t} {z}_t=\sqrt{a_ta_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}{z}_t atat1 xt2+atatat+1at zt=atat1 xt2+1αtαt1 zt 1.4
同理可得
a t a t − 1 . . . a 1 x 0 + 1 − a t a t − 2 . . . a 1 z t \sqrt{a_ta_{t-1}...a_1}x_0+\sqrt{1- a_ta_{t-2}...a_1}{z}_t atat1...a1 x0+1atat2...a1 zt
x t = α ‾ t x 0 + 1 − α ‾ t z t x_t=\sqrt{\overline{\alpha}_t}x_0+\sqrt{1-\overline{\alpha}_t}{z}_t xt=αt x0+1αt zt 1.5 其中 z t ∼ N ( 0 , I ) z_t\sim\mathcal{N}(0,\mathbf{I}) ztN(0,I)A

  • ∇ θ \nabla_{\theta} θ表示根据损失求解梯度;

反向阶段

在这里插入图片描述

  1. 从标准正态分布中采样一个 x T x_T xT
  2. 进行 3、4 步并循环 T 个时间步
  3. 再次采样一个噪声 z z z
  4. 通过 x t x_t xt推导 x t − 1 x_{t-1} xt1: x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z \mathbf{x}_{t-1}=\frac1{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\right)+\sigma_t\mathbf{z} xt1=αt 1(xt1αˉt 1αtϵθ(xt,t))+σtz

在这里插入图片描述

tip
这里加上 σ t z \sigma_tz σtz的噪音是为了提高模型生成的稳定性,如果去掉会导致模型生成的图片的能力失效,可以理解为如果不添加一点随机性,那么模型的输出将变得固定。

tip
注解 贝叶斯公式:,其中 P(Bk)是先验概率,而 P(Bk|A)是当 A 发生后的 P(Bk)称为后验概率,也就是通过旧事件推导新事件

P ( B K ∣ A ) = P ( B K . A ) P ( A ) = P ( B K ) P ( A ∣ B K ) P ( B 1 ) P ( A ∣ B 1 ) + + . . . . . . + P ( B i ) P ( A ∣ B i ) = 乘法公式 全概率公式 P(B_K\mid A)=\frac{P(B_K.A)}{\mathrm{P(A)}}=\frac{P(B_K)P(\mathrm{A}|B_K)}{P(B_1)P(A\mid B_1)++......+P(B_i)P(A\mid B_i)}=\frac{\text{乘法公式}}{\text{全概率公式}} P(BKA)=P(A)P(BK.A)=P(B1)P(AB1)++......+P(Bi)P(ABi)P(BK)P(ABK)=全概率公式乘法公式

因为在生成阶段,我们只有采样出的噪声 x T x_T xT,通过当前时刻去预测上一时刻的分布 x t − 1 x_{t-1} xt1,根据贝叶斯公式可知,根据之前的状态我们可以推导出下一时间的状态,但是此处需要根据当前时刻的结果去逆推上一时刻的状态,也是可以通过贝叶斯公式进行反推。也就是最终得到了

x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) \mathbf{x}_{t-1}=\frac1{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\right) xt1=αt 1(xt1αˉt 1αtϵθ(xt,t)) 2.1 (其中的 ϵ θ ( x t , t ) \boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t) ϵθ(xt,t)就是扩散时模型预测噪音的阶段等价于 ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) \boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon},t) ϵθ(αˉt x0+1αˉt ϵ,t)

该公式的推导过程如下

tip
已知 x t x_t xt求解 x t − 1 x_{t-1} xt1,相当于已知 x t x_t xt的概率,求解 x t − 1 x_{t-1} xt1的条件概率,也就是 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt1Xt),根据贝叶斯公式可知
q ( X t − 1 ∣ X t ) = q ( X t , X t − 1 ) q ( X t ) = q ( X t ∣ X t − 1 ) q ( X t − 1 ) q ( X t ) q(X_{t-1}|X_t)=\frac{q(X_t,X_{t-1})}{q(X_t)}=\frac{q(X_t|X_{t-1})q(X_{t-1})}{q(X_t)} q(Xt1Xt)=q(Xt)q(Xt,Xt1)=q(Xt)q(XtXt1)q(Xt1)2.2
给定 X t − 1 的条件下的 X t X_{t-1}的条件下的X_t Xt1的条件下的Xt X t = α t ⋅ X t − 1 + 1 − α t ⋅ ϵ X_t=\sqrt{\alpha_t}\cdot X_{t-1}+\sqrt{1-\alpha_t}\cdot\epsilon Xt=αt Xt1+1αt ϵ ϵ ∼ N ( 0 , I ) \epsilon \sim N(0,I) ϵN(0,I)(补充:正态分布加上某值等于均值加上某值,乘以某值等于方差乘以某值)
均值:0+ α t ⋅ X t − 1 \sqrt{\alpha_t}\cdot X_{t-1} αt Xt1
方差:I* 1 − α t \sqrt{1-\alpha_t} 1αt
q ( X t ∣ X t − 1 ) ∼ N ( α t ∗ X t − 1 , ( 1 − α t ) ∗ I ) q(X_{t} |X_{t-1})\quad\sim N(\sqrt{\alpha_{t}} *X_{t-1} ,(1-\alpha_{t} )*I) q(XtXt1)N(αt Xt1,(1αt)I) 2.3
X 0 一次扩散到 X t X_0一次扩散到X_t X0一次扩散到Xt X t = α t ‾ ∗ X 0 + 1 − α t ‾ ∗ Z Z ∼ N ( α t ∗ X 0 , ( 1 − α t ‾ ) ∗ I ) X_{t}=\sqrt{\overline{\alpha_{t}}} * X_{0} + \sqrt{1-\overline{\alpha_{t}}} * Z\quad Z\sim N(\sqrt{\alpha_{t}} * X_{0},(1-\overline{\alpha_{t}} )*I) Xt=αt X0+1αt ZZN(αt X0,(1αt)I) 2.4
X t − 1 扩散到 X t X_{t-1}扩散到X_{t} Xt1扩散到Xt : X t = α t ∗ X t − 1 + 1 − α t ∗ Z t Z ∼ N ( α t ∗ X t − 1 , ( 1 − α t ) ∗ I ) X_t=\sqrt{\alpha_t}*X_{t-1}+\sqrt{1-\alpha_t}*Z_t\quad Z\sim N(\sqrt{\alpha_t}*X_{t-1},(1-\alpha_t)*I) Xt=αt Xt1+1αt ZtZN(αt Xt1,(1αt)I) 2.5
因为正态分布概率密度为 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 \frac1{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} 2πσ2 1e2σ2(xμ)2,由于方差是已知的,因此 1 2 π σ 2 \frac1{\sqrt{2\pi\sigma^2}} 2πσ2 1为常数项,故 N ( μ , σ 2 ) ∝ e ( 1 2 ∗ ( x − μ ) 2 σ 2 ) N(\mu,\sigma^2)\propto e^{(\frac12*\frac{(x-\mu)^2}{\sigma^2})} N(μ,σ2)e(21σ2(xμ)2).将 2.3,2.4,2.5 带入到 2.2 中
q ( X t ∣ X t − 1 ) q ( X t − 1 ) q ( X t ) ∝ e x p { − 1 2 ( ∗ ( x t − α t ∗ X t − 1 ) 2 1 − α t + ( x t − 1 − α t − 1 ‾ ∗ X 0 ) 2 1 − α t − 1 − ( x t − α t ‾ ∗ X 0 ) 2 1 − α t ‾ ) } \frac{q(X_t|X_{t-1})q(X_{t-1})}{q(X_t)}\propto exp\{-\frac12(*\frac{(x_t-\sqrt{\alpha_t}*X_{t-1})^2}{1-\alpha_t}+\frac{(x_{t-1}-\sqrt{\overline{\alpha_{t-1}}}*X_0)^2}{1-\alpha_{t-1}}-\frac{(x_t-\sqrt{\overline{\alpha_t}}*X_0)^2}{1-\overline{\alpha_t}})\} q(Xt)q(XtXt1)q(Xt1)exp{21(1αt(xtαt Xt1)2+1αt1(xt1αt1 X0)21αt(xtαt X0)2)}2.6
我们需要通过 X T X_T XT求得 X t − 1 X_t-1 Xt1,因此最后的式子只能出现 X_T

= exp ⁡ { − 1 2 [ ( − 2 α t x t x t − 1 + α t x t − 1 2 ) 1 − α t + ( x t − 1 2 − 2 α t − 1 x t − 1 x 0 ) 1 − α ˉ t − 1 + C ( x t , x 0 ) ] } =\exp\left\{-\frac12\left[\frac{(-2\sqrt{\alpha_t}\boldsymbol{x}_t\boldsymbol{x}_{t-1}+\alpha_t\boldsymbol{x}_{t-1}^2)}{1-\alpha_t}+\frac{(\boldsymbol{x}_{t-1}^2-2\sqrt{\alpha_{t-1}}\boldsymbol{x}_{t-1}\boldsymbol{x}_0)}{1-\bar{\alpha}_{t-1}}+C(\boldsymbol{x}_t,\boldsymbol{x}_0)\right]\right\} =exp{21[1αt(2αt xtxt1+αtxt12)+1αˉt1(xt122αt1 xt1x0)+C(xt,x0)]}

∝ exp ⁡ { − 1 2 [ − 2 α t x t x t − 1 1 − α t + α t x t − 1 2 1 − α t + x t − 1 2 1 − α ˉ t − 1 − 2 α ˉ t − 1 x t − 1 x 0 1 − α ˉ t − 1 ] } = exp ⁡ { − 1 2 [ ( α t 1 − α t + 1 1 − α ˉ t − 1 ) x t − 1 2 − 2 ( α t x t 1 − α t + α ˉ t − 1 x 0 1 − α ˉ t − 1 ) x t − 1 ] } = exp ⁡ { − 1 2 [ α t ( 1 − α ˉ t − 1 ) + 1 − α t ( 1 − α t ) ( 1 − α ˉ t − 1 ) x t − 1 2 − 2 ( α t x t 1 − α t + α ˉ t − 1 x 0 1 − α ˉ t − 1 ) x t − 1 ] } = exp ⁡ { − 1 2 [ α t − α ˉ t + 1 − α t ( 1 − α t ) ( 1 − α ˉ t − 1 ) x t − 1 2 − 2 ( α t x t 1 − α t + α ˉ t − 1 x 0 1 − α ˉ t − 1 ) x t − 1 ] } = exp ⁡ { − 1 2 [ 1 − α ˉ t ( 1 − α t ) ( 1 − α ˉ t − 1 ) x t − 1 2 − 2 ( α t x t 1 − α t + α ˉ t − 1 x 0 1 − α ˉ t − 1 ) x t − 1 ] } = exp ⁡ { − 1 2 ( 1 − α ˉ t ( 1 − α t ) ( 1 − α ˉ t − 1 ) ) [ x t − 1 2 − 2 ( α t x t 1 − α t + α t − 1 x 0 1 − α ˉ t − 1 ) 1 − α ˉ t ( 1 − α t ) ( 1 − α ˉ t − 1 ) x t − 1 ] } = exp ⁡ { − 1 2 ( 1 − α ˉ t ( 1 − α t ) ( 1 − α ˉ t − 1 ) ) [ x t − 1 2 − 2 ( α t x t 1 − α t + α ˉ t − 1 x 0 1 − α ˉ t − 1 ) ( 1 − α t ) ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t − 1 ] } = exp ⁡ { − 1 2 ( 1 ( 1 − α t ) ( 1 − α ˉ t − 1 ) 1 − α ˉ t ) [ x t − 1 2 − 2 α t ( 1 − α ˉ t − 1 ) x t + α ˉ t − 1 ( 1 − α t ) x 0 1 − α ˉ t x t − 1 ] } \begin{aligned} &\propto\exp\left\{-\frac{1}{2}\left[-\frac{2\sqrt{\alpha_{t}}\boldsymbol{x}_{t}\boldsymbol{x}_{t-1}}{1-\alpha_{t}}+\frac{\alpha_{t}\boldsymbol{x}_{t-1}^{2}}{1-\alpha_{t}}+\frac{\boldsymbol{x}_{t-1}^{2}}{1-\bar{\alpha}_{t-1}}-\frac{2\sqrt{\bar{\alpha}_{t-1}}\boldsymbol{x}_{t-1}\boldsymbol{x}_{0}}{1-\bar{\alpha}_{t-1}}\right]\right\} \\ &=\exp\left\{-\frac{1}{2}\left[(\frac{\alpha_{t}}{1-\alpha_{t}}+\frac{1}{1-\bar{\alpha}_{t-1}})x_{t-1}^{2}-2\left(\frac{\sqrt{\alpha_{t}}x_{t}}{1-\alpha_{t}}+\frac{\sqrt{\bar{\alpha}_{t-1}}x_{0}}{1-\bar{\alpha}_{t-1}}\right)x_{t-1}\right]\right\} \\ &=\exp\left\{-\frac12\left[\frac{\alpha_t(1-\bar{\alpha}_{t-1})+1-\alpha_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}x_{t-1}^2-2\left(\frac{\sqrt{\alpha_t}\boldsymbol{x}_t}{1-\alpha_t}+\frac{\sqrt{\bar{\alpha}_{t-1}}\boldsymbol{x}_0}{1-\bar{\alpha}_{t-1}}\right)\boldsymbol{x}_{t-1}\right]\right\} \\ &=\exp\left\{-\frac12\left[\frac{\alpha_t-\bar{\alpha}_t+1-\alpha_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}\boldsymbol{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t}\boldsymbol{x}_t}{1-\alpha_t}+\frac{\sqrt{\bar{\alpha}_{t-1}}\boldsymbol{x}_0}{1-\bar{\alpha}_{t-1}}\right)\boldsymbol{x}_{t-1}\right]\right\} \\ &=\exp\left\{-\frac12\left[\frac{1-\bar{\alpha}_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}\boldsymbol{x}_{t-1}^2-2\left(\frac{\sqrt{\alpha_t}\boldsymbol{x}_t}{1-\alpha_t}+\frac{\sqrt{\bar{\alpha}_{t-1}}\boldsymbol{x}_0}{1-\bar{\alpha}_{t-1}}\right)\boldsymbol{x}_{t-1}\right]\right\} \\ &=\exp\left\{-\frac{1}{2}\left(\frac{1-\bar{\alpha}_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}\right)\left[x_{t-1}^2-2\frac{\left(\frac{\sqrt{\alpha_t}\boldsymbol{x}_t}{1-\alpha_t}+\frac{\sqrt{\alpha_{t-1}}\boldsymbol{x}_0}{1-\bar{\alpha}_{t-1}}\right)}{\frac{1-\bar{\alpha}_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}}x_{t-1}\right]\right\} \\ &=\exp\left\{-\frac12\left(\frac{1-\bar{\alpha}_t}{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}\right)\left[x_{t-1}^2-2\frac{\left(\frac{\sqrt{\alpha_t}\boldsymbol{x}_t}{1-\alpha_t}+\frac{\sqrt{\bar{\alpha}_{t-1}}\boldsymbol{x}_0}{1-\bar{\alpha}_{t-1}}\right)(1-\alpha_t)(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_{t-1}\right]\right\} \\ &=\exp\left\{-\frac12\left(\frac1{\frac{(1-\alpha_t)(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}}\right)\left[x_{t-1}^2-2\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})x_t+\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)x_0}{1-\bar{\alpha}_t}x_{t-1}\right]\right\} \end{aligned} exp{21[1αt2αt xtxt1+1αtαtxt12+1αˉt1xt121αˉt12αˉt1 xt1x0]}=exp{21[(1αtαt+1αˉt11)xt122(1αtαt xt+1αˉt1αˉt1 x0)xt1]}=exp{21[(1αt)(1αˉt1)αt(1αˉt1)+1αtxt122(1αtαt xt+1αˉt1αˉt1 x0)xt1]}=exp{21[(1αt)(1αˉt1)αtαˉt+1αtxt122(1αtαt xt+1αˉt1αˉt1 x0)xt1]}=exp{21[(1αt)(1αˉt1)1αˉtxt122(1αtαt xt+1αˉt1αˉt1 x0)xt1]}=exp 21((1αt)(1αˉt1)1αˉt) xt122(1αt)(1αˉt1)1αˉt(1αtαt xt+1αˉt1αt1 x0)xt1 =exp 21((1αt)(1αˉt1)1αˉt) xt1221αˉt(1αtαt xt+1αˉt1αˉt1 x0)(1αt)(1αˉt1)xt1 =exp{21(1αˉt(1αt)(1αˉt1)1)[xt1221αˉtαt (1αˉt1)xt+αˉt1 (1αt)x0xt1]}

∝ N ( x t − 1 ; α t ( 1 − α ˉ t − 1 ) x t + α ˉ t − 1 ( 1 − α t ) x 0 1 − α ˉ t ⏟ μ q ( x t , x 0 ) , ( 1 − α t ) ( 1 − α ˉ t − 1 ) 1 − α ˉ t I ) ⏟ Σ q ( ι ) \propto\mathcal{N}(x_{t-1};\underbrace{\frac{\sqrt{\alpha_{t}}(1-\bar{\alpha}_{t-1})x_{t}+\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_{t})x_{0}}{1-\bar{\alpha}_{t}}}_{\mu_{q}(\boldsymbol{x}_{t},\boldsymbol{x}_{0})},\underbrace{\frac{(1-\alpha_{t})(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_{t}}\mathbf{I})}_{\boldsymbol{\Sigma}_{q}(\iota)} N(xt1;μq(xt,x0) 1αˉtαt (1αˉt1)xt+αˉt1 (1αt)x0,Σq(ι) 1αˉt(1αt)(1αˉt1)I)2.7
x t = α ˉ t x 0 + 1 − α ˉ t ε x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon xt=αˉt x0+1αˉt ε可以推出 x 0 = x t − 1 − α ˉ t ε α ˉ t x_0=\frac{x_t-\sqrt{1-\bar{\alpha}_t}\varepsilon}{\sqrt{\bar{\alpha}_t}} x0=αˉt xt1αˉt ε 2.8
将 2.8 带入到 2.7

μ q ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) x t + α ˉ t − 1 ( 1 − α t ) x 0 1 − α ˉ t = α t ( 1 − α ˉ t − 1 ) x t + α ˉ t − 1 ( 1 − α t ) x t − 1 − α ˉ t ϵ 0 α ˉ t 1 − α ˉ t = α t ( 1 − α ˉ t − 1 ) x t + ( 1 − α t ) x t − 1 − α ˉ t ϵ 0 α t 1 − α ˉ t = α t ( 1 − α ˉ t − 1 ) x t 1 − α ˉ t + ( 1 − α t ) x t ( 1 − α ˉ t ) α t − ( 1 − α t ) 1 − α ˉ t ϵ 0 ( 1 − α ˉ t ) α t = ( α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t + 1 − α t ( 1 − α ˉ t ) α t ) x t − ( 1 − α t ) 1 − α ˉ t ( 1 − α ˉ t ) α t ϵ θ = ( α t ( 1 − α ˉ t − 1 ) ( 1 − α ˉ t ) α t + 1 − α t ( 1 − α ˉ t ) α t ) x t − 1 − α t 1 − α ˉ t α t ϵ θ = α t − α ˉ t + 1 − α t ( 1 − α ˉ t ) α t x t − 1 − α t 1 − α ˉ t α t ϵ θ = 1 − α ˉ t ( 1 − α ˉ t ) α t x t − 1 − α t 1 − α ˉ t α t ϵ θ = 1 α t x t − 1 − α t 1 − α ˉ t α t ϵ θ = 1 α t ∗ ( X t − β t 1 − α t ‾ ∗ ϵ θ ) \begin{aligned} \mu_{q}(x_{t},x_{0})& =\frac{\sqrt{\alpha_{t}}(1-\bar{\alpha}_{t-1})x_{t}+\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_{t})x_{0}}{1-\bar{\alpha}_{t}} \\ &=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})x_t+\sqrt{\bar{\alpha}_{t-1}}(1-\alpha_t)\frac{\boldsymbol{x}_t-\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_0}{\sqrt{\bar{\alpha}_t}}}{1-\bar{\alpha}_t} \\ &=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})\boldsymbol{x}_t+(1-\alpha_t)\frac{\boldsymbol{x}_t-\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_0}{\sqrt{\alpha_t}}}{1-\bar{\alpha}_t} \\ &=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})x_t}{1-\bar{\alpha}_t}+\frac{(1-\alpha_t)x_t}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}}-\frac{(1-\alpha_t)\sqrt{1-\bar{\alpha}_t}\epsilon_0}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}} \\ &=\left(\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}+\frac{1-\alpha_t}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}}\right)\boldsymbol{x}_t-\frac{(1-\alpha_t)\sqrt{1-\bar{\alpha}_t}}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}}\boldsymbol{\epsilon}_\theta \\ &=\left(\frac{\alpha_t(1-\bar{\alpha}_{t-1})}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}}+\frac{1-\alpha_t}{(1-\bar{\alpha}_t)\sqrt{\alpha_t}}\right)\boldsymbol{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}\sqrt{\alpha_t}}\boldsymbol{\epsilon}_\theta \\ &=\frac{\alpha_{t}-\bar{\alpha}_{t}+1-\alpha_{t}}{(1-\bar{\alpha}_{t})\sqrt{\alpha_{t}}}x_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}\sqrt{\alpha_{t}}}\epsilon_\theta \\ &=\frac{1-\bar{\alpha}_{t}}{(1-\bar{\alpha}_{t})\sqrt{\alpha_{t}}}x_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}\sqrt{\alpha_{t}}}\epsilon_\theta \\ &=\frac1{\sqrt{\alpha_t}}\boldsymbol{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}\sqrt{\alpha_t}}\boldsymbol{\epsilon}_\theta \\ &=\frac1{\sqrt{\alpha_t}} *(X_t - \frac{\beta_t}{\sqrt{1-\overline{\alpha_t}}} *{\epsilon}_\theta) \end{aligned} μq(xt,x0)=1αˉtαt (1αˉt1)xt+αˉt1 (1αt)x0=1αˉtαt (1αˉt1)xt+αˉt1 (1αt)αˉt xt1αˉt ϵ0=1αˉtαt (1αˉt1)xt+(1αt)αt xt1αˉt ϵ0=1αˉtαt (1αˉt1)xt+(1αˉt)αt (1αt)xt(1αˉt)αt (1αt)1αˉt ϵ0=(1αˉtαt (1αˉt1)+(1αˉt)αt 1αt)xt(1αˉt)αt (1αt)1αˉt ϵθ=((1αˉt)αt αt(1αˉt1)+(1αˉt)αt 1αt)xt1αˉt αt 1αtϵθ=(1αˉt)αt αtαˉt+1αtxt1αˉt αt 1αtϵθ=(1αˉt)αt 1αˉtxt1αˉt αt 1αtϵθ=αt 1xt1αˉt αt 1αtϵθ=αt 1(Xt1αt βtϵθ)

最终得到结论 q ( X t − 1 ∣ X t ) ∼ N ( 1 α t ( X t − β t 1 − α t ‾ ∗ ϵ θ , 1 − α t − 1 ‾ 1 − α t ‾ ∗ β t ) q(X_{t-1} |X_t )\sim N(\frac{1}{\sqrt{\alpha_t}} (X_t -\frac{\beta_t}{\sqrt{1-\overline{\alpha_t}}} *{\epsilon}_\theta,\quad\frac{1-\overline{\alpha_{t-1}}}{1-\overline{\alpha_t}} *\beta_t ) q(Xt1Xt)N(αt 1(Xt1αt βtϵθ,1αt1αt1βt) ** **其中 ϵ θ = M o d e l ( X t , t ) ϵ ∼ N ( 0 , I ) \epsilon_\theta =Model(X_t,t)\quad \epsilon\sim N(0,I) ϵθ=Model(Xt,t)ϵN(0,I) 2.9
数据的生成过程中,均值给定的是一个确定的生成方向,方差和噪声给定的是一个不确定的方向。
因此最后得到 x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) \mathbf{x}_{t-1}=\frac1{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\right) xt1=αt 1(xt1αˉt 1αtϵθ(xt,t))

Unet

源码解析

参考

  1. 李宏毅老师 ppt
  2. 迪哥讲解
  3. Denoising Diffusion Probabilistic Models
  4. What are Diffusion Models?
  5. https://zhuanlan.zhihu.com/p/612730273
  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warren@伟~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值