DDPM
前向阶段
- 重复 2-5 步骤
- x 0 ∼ q ( x 0 ) \mathbf{x}_0\sim q(\mathbf{x}_0) x0∼q(x0)从数据集中采样一张图片
- t ∼ U n i f o r m ( { 1 , … , T } ) t\sim\mathrm{Uniform}(\{1,\ldots,T\}) t∼Uniform({1,…,T}),从 1~T 中随机挑选一个时间步 t
- ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I}) ϵ∼N(0,I),选取一个标准正态分布噪声
- ∇ θ ∥ ϵ − ϵ θ ( α ˉ 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 ∇θ ϵ−ϵθ(αˉtx0+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) ϵθ(αˉtx0+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=αˉtx0+1−αˉtϵ以及时间歩 t 进行噪声的预测 ϵ θ \boldsymbol{\epsilon}_{\theta} ϵθ(这里添加时间步 t 类似于 transformer 的 position embedding,告诉 model 当前的时刻),并于 groundtruth ϵ \epsilon ϵ使用 L2 范数求解损失;
- 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=αˉtx0+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=atxt−1+1−αtz1 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 xt−1=at−1xt−2+1−αt−1z2 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(at−1xt−2+1−αt−1z2)+1−αtz1 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−αt−1))、 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 atat−1xt−2+at−atat+1−atzt=atat−1xt−2+1−αtαt−1zt 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 atat−1...a1x0+1−atat−2...a1zt
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=αtx0+1−αtzt 1.5 其中 z t ∼ N ( 0 , I ) z_t\sim\mathcal{N}(0,\mathbf{I}) zt∼N(0,I)A
- ∇ θ \nabla_{\theta} ∇θ表示根据损失求解梯度;
反向阶段
- 从标准正态分布中采样一个 x T x_T xT
- 进行 3、4 步并循环 T 个时间步
- 再次采样一个噪声 z z z
- 通过 x t x_t xt推导 x t − 1 x_{t-1} xt−1: 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} xt−1=αt1(xt−1−αˉt1−α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(BK∣A)=P(A)P(BK.A)=P(B1)P(A∣B1)++......+P(Bi)P(A∣Bi)P(BK)P(A∣BK)=全概率公式乘法公式
因为在生成阶段,我们只有采样出的噪声 x T x_T xT,通过当前时刻去预测上一时刻的分布 x t − 1 x_{t-1} xt−1,根据贝叶斯公式可知,根据之前的状态我们可以推导出下一时间的状态,但是此处需要根据当前时刻的结果去逆推上一时刻的状态,也是可以通过贝叶斯公式进行反推。也就是最终得到了
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) xt−1=αt1(xt−1−αˉt1−α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) ϵθ(αˉtx0+1−αˉtϵ,t))
该公式的推导过程如下
tip
已知 x t x_t xt求解 x t − 1 x_{t-1} xt−1,相当于已知 x t x_t xt的概率,求解 x t − 1 x_{t-1} xt−1的条件概率,也就是 q ( X t − 1 ∣ X t ) q(X_{t-1}|X_t) q(Xt−1∣Xt),根据贝叶斯公式可知
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(Xt−1∣Xt)=q(Xt)q(Xt,Xt−1)=q(Xt)q(Xt∣Xt−1)q(Xt−1)2.2
给定 X t − 1 的条件下的 X t X_{t-1}的条件下的X_t Xt−1的条件下的Xt: $X_t=\sqrt{\alpha_t}\cdot X_{t-1}+\sqrt{1-\alpha_t}\cdot\epsilon $ ϵ ∼ N ( 0 , I ) \epsilon \sim N(0,I) ϵ∼N(0,I)(补充:正态分布加上某值等于均值加上某值,乘以某值等于方差乘以某值)
均值:0+ α t ⋅ X t − 1 \sqrt{\alpha_t}\cdot X_{t-1} αt⋅Xt−1
方差: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(Xt∣Xt−1)∼N(αt∗Xt−1,(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∗ZZ∼N(αt∗X0,(1−αt)∗I) 2.4
从 X t − 1 扩散到 X t X_{t-1}扩散到X_{t} Xt−1扩散到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∗Xt−1+1−αt∗ZtZ∼N(αt∗Xt−1,(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πσ21e−2σ2(x−μ)2,由于方差是已知的,因此 1 2 π σ 2 \frac1{\sqrt{2\pi\sigma^2}} 2πσ21为常数项,故 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(Xt∣Xt−1)q(Xt−1)∝exp{−21(∗1−αt(xt−αt∗Xt−1)2+1−αt−1(xt−1−αt−1∗X0)2−1−αt(xt−αt∗X0)2)}2.6
我们需要通过 X T X_T XT求得 X t − 1 X_t-1 Xt−1,因此最后的式子只能出现 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αtxtxt−1+αtxt−12)+1−αˉt−1(xt−12−2αt−1xt−1x0)+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αtxtxt−1+1−αtαtxt−12+1−αˉt−1xt−12−1−αˉt−12αˉt−1xt−1x0]}=exp{−21[(1−αtαt+1−αˉt−11)xt−12−2(1−αtαtxt+1−αˉt−1αˉt−1x0)xt−1]}=exp{−21[(1−αt)(1−αˉt−1)αt(1−αˉt−1)+1−αtxt−12−2(1−αtαtxt+1−αˉt−1αˉt−1x0)xt−1]}=exp{−21[(1−αt)(1−αˉt−1)αt−αˉt+1−αtxt−12−2(1−αtαtxt+1−αˉt−1αˉt−1x0)xt−1]}=exp{−21[(1−αt)(1−αˉt−1)1−αˉtxt−12−2(1−αtαtxt+1−αˉt−1αˉt−1x0)xt−1]}=exp⎩ ⎨ ⎧−21((1−αt)(1−αˉt−1)1−αˉt) xt−12−2(1−αt)(1−αˉt−1)1−αˉt(1−αtαtxt+1−αˉt−1αt−1x0)xt−1 ⎭ ⎬ ⎫=exp⎩ ⎨ ⎧−21((1−αt)(1−αˉt−1)1−αˉt) xt−12−21−αˉt(1−αtαtxt+1−αˉt−1αˉt−1x0)(1−αt)(1−αˉt−1)xt−1 ⎭ ⎬ ⎫=exp{−21(1−αˉt(1−αt)(1−αˉt−1)1)[xt−12−21−αˉtαt(1−αˉt−1)xt+αˉt−1(1−αt)x0xt−1]}
∝ 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(xt−1;μq(xt,x0) 1−αˉtαt(1−αˉt−1)xt+αˉt−1(1−αt)x0,Σq(ι) 1−αˉt(1−αt)(1−αˉt−1)I)2.7
由 $x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon $可以推出 x 0 = x t − 1 − α ˉ t ε α ˉ t x_0=\frac{x_t-\sqrt{1-\bar{\alpha}_t}\varepsilon}{\sqrt{\bar{\alpha}_t}} x0=αˉtxt−1−αˉ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−αˉt−1)xt+αˉt−1(1−αt)x0=1−αˉtαt(1−αˉt−1)xt+αˉt−1(1−αt)αˉtxt−1−αˉtϵ0=1−αˉtαt(1−αˉt−1)xt+(1−αt)αtxt−1−αˉtϵ0=1−αˉtαt(1−αˉt−1)xt+(1−αˉt)αt(1−αt)xt−(1−αˉt)αt(1−αt)1−αˉtϵ0=(1−αˉtαt(1−αˉt−1)+(1−αˉt)αt1−αt)xt−(1−αˉt)αt(1−αt)1−αˉtϵθ=((1−αˉt)αtαt(1−αˉt−1)+(1−αˉt)αt1−αt)xt−1−αˉtαt1−αtϵθ=(1−αˉt)αtαt−αˉt+1−αtxt−1−αˉtαt1−αtϵθ=(1−αˉt)αt1−αˉtxt−1−αˉtαt1−αtϵθ=αt1xt−1−αˉtαt1−αtϵθ=αt1∗(Xt−1−α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(Xt−1∣Xt)∼N(αt1(Xt−1−αtβt∗ϵθ,1−αt1−αt−1∗β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) xt−1=αt1(xt−1−αˉt1−αtϵθ(xt,t))
Unet
源码解析
参考
- 李宏毅老师 ppt
- 迪哥讲解
- Denoising Diffusion Probabilistic Models
- What are Diffusion Models?
- https://zhuanlan.zhihu.com/p/612730273