本文并非原创,只是个人的学习的笔记,作者只对一些步骤进行了简单的推导。具体内容请参考:

https://lilianweng.github.io/posts/2021-07-11-diffusion-models/

https://www.bilibili.com/video/BV1b541197HX?share_source=copy_web

参数重整化

若希望从高斯分布N(μ,σ2)N(μ,σ^2)N(μ,σ2)中采样,可以先从标准分布N(0,1)N(0,1)N(0,1)采样出zzz,再得到σ∗z+μσ*z+μσ∗z+μ。这样做的好处是将随机性转移到了zzz这个常量上,而σσσ和μμμ则当做放射变换网络的一部分。

前向扩散过程

从真实数据中采样一个数据点x0x_0x0​,满足分布x0∼q(x)x_0 \sim q(x)x0​∼q(x)。让我们定义一个前向传播过程,在该过程中我们通过T步不断地向样本点中添加小量的高斯噪声,生成了一个噪声样本序列x1,x2,…,xTx_1,x_2,\dots,x_Tx1​,x2​,…,xT​。步长的大小是通过一个方差集合{βt∈(0,1)}t=1t\{\beta_t∈(0,1)\}^t_{t=1}{βt​∈(0,1)}t=1t​控制。
该过程是一个马尔可夫链过程

q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(x1:T∣x0)=∏t=1Tq(xt∣xt−1)q(x_t|x_{t-1})=\mathcal {N}(x_t;\sqrt {1-\beta_t} x_{t-1},\beta_t I)\\ q(x_{1:T}|x_0)=\prod^T_{t=1} q(x_t|x_{t-1}) q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)q(x1:T​∣x0​)=t=1∏T​q(xt​∣xt−1​)
随着步长变大,数据样本x0x_0x0​逐渐失去其可区分的特征。最终当TTT趋于无穷时,xTx_TxT​的值是一个各项独立的高斯分布。

我们可以使用参数重整化在任意时间步长ttt来逼近样本xtx_txt​,假设αt=1−βt\alpha_t = 1 - \beta_tαt​=1−βt​,且α‾t=∏i=1Tαi\overline {\alpha}_t = \prod^T_{i=1} \alpha_iαt​=∏i=1T​αi​
Xt=αtXt−1+1−αtZt−1X_t = \sqrt{\alpha_t}X_{t-1} + \sqrt{1 - \alpha_t}Z_{t-1} Xt​=αt​​Xt−1​+1−αt​​Zt−1​
上述过程是我们从q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(x_t|x_{t-1})=\mathcal {N}(x_t;\sqrt {1-\beta_t} x_{t-1},\beta_t I)q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)使用参数重整化得到的,同理我们可以从q(xt−1∣xt−2)=N(xt−1;1−βt−1xt−2,βt−1I)q(x_{t-1}|x_{t-2})=\mathcal {N}(x_{t-1};\sqrt {1-\beta_{t-1}} x_{t-2},\beta_{t-1} I)q(xt−1​∣xt−2​)=N(xt−1​;1−βt−1​​xt−2​,βt−1​I)中得到Xt−1X_{t-1}Xt−1​的值。
Xt−1=αt−1Xt−2+1−αt−1Zt−2X_{t-1}=\sqrt{\alpha_{t-1}}X_{t-2} + \sqrt{1-\alpha_{t-1}}Z_{t-2} Xt−1​=αt−1​​Xt−2​+1−αt−1​​Zt−2​
将Xt−1X_{t-1}Xt−1​的值带入到XtX_tXt​中,可得
Xt=αt(αt−1Xt−2+1−αt−1Zt−2)+1−αtZt−1=αtαt−1Xt−2+αt−αtαt−1Zt−2+1−αtZt−1X_t = \sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}X_{t-2} + \sqrt{1-\alpha_{t-1}}Z_{t-2}) + \sqrt{1 - \alpha_t}Z_{t-1}\\ = \sqrt{\alpha_t \alpha_{t-1}}X_{t-2} + \sqrt{\alpha_t -\alpha_t \alpha_{t-1}}Z_{t-2} + \sqrt{1-\alpha_t}Z_{t-1} Xt​=αt​​(αt−1​​Xt−2​+1−αt−1​​Zt−2​)+1−αt​​Zt−1​=αt​αt−1​​Xt−2​+αt​−αt​αt−1​​Zt−2​+1−αt​​Zt−1​
其中Zt−1,Zt−2,⋯∼N(0,I)Z_{t-1},Z_{t-2},\dots \sim \mathcal{N}(0,I)Zt−1​,Zt−2​,⋯∼N(0,I)。而且,需要注意两个正态分布X∼N(μ1,σ1)X \sim N(μ_1,σ_1)X∼N(μ1​,σ1​)和Y∼N(μ2,σ2)Y \sim N(μ_2,σ_2)Y∼N(μ2​,σ2​)的叠加后的分布aX+bYaX+bYaX+bY的均值为aμ1+bμ2aμ_1+bμ_2aμ1​+bμ2​,方差为a2σ12+b2σ22a^2σ_1^2+b^2σ_2^2a2σ12​+b2σ22​,所以αt−αtαt−1Zt−2+1−αtZt−1\sqrt{\alpha_t -\alpha_t \alpha_{t-1}}Z_{t-2} + \sqrt{1-\alpha_t}Z_{t-1}αt​−αt​αt−1​​Zt−2​+1−αt​​Zt−1​可以参数重整化成只含一个随机变量ZZZ构成的1−αtαt−1Z\sqrt{1-\alpha_t \alpha_{t-1}}Z1−αt​αt−1​​Z的形式。

则XtX_tXt​可以写为
Xt=αtαt−1Xt−2+1−αtαt−1Z‾t−1X_t = \sqrt{\alpha_t \alpha_{t-1}}X_{t-2} + \sqrt{1-\alpha_t \alpha_{t-1}}\overline{Z}_{t-1} Xt​=αt​αt−1​​Xt−2​+1−αt​αt−1​​Zt−1​
因为α‾t=∏i=1Tαi\overline {\alpha}_t = \prod^T_{i=1} \alpha_iαt​=∏i=1T​αi​,XtX_tXt​最终可写为:
Xt=α‾tX0+1−α‾tzX_t = \sqrt{\overline{\alpha}_t}X_0 + \sqrt{1 - \overline{\alpha}_t}z Xt​=αt​​X0​+1−αt​​z
这样就得到了q(xt∣x0)=N(xt;α‾tx0,(1−α‾t)I)q(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\overline{\alpha}_t}x_0, (1 - \overline{\alpha}_t)I)q(xt​∣x0​)=N(xt​;αt​​x0​,(1−αt​)I)

通常情况下,在样本加噪时我们可以提供一个大的更新步长,即β1<β2<⋯<βT\beta_1 \lt \beta_2 \lt \dots \lt \beta_Tβ1​<β2​<⋯<βT​,那么则会有α‾1>⋯>α‾T\overline{\alpha}_1 \gt \dots \gt \overline{\alpha}_Tα1​>⋯>αT​

逆扩散过程

如果我们反转上述过程,尝试从q(Xt−1∣Xt)q(X_{t-1}|X_t)q(Xt−1​∣Xt​)中采样,我们将能够从一个高斯噪声输入XT∼N(0,I)X_T \sim \mathcal{N}(0,I)XT​∼N(0,I)中重构出真实的样本。(逆过程是从高斯噪声中恢复原始数据)

逆扩散过程也是一个马尔科夫链过程。

需要注意的是,如果βt\beta_tβt​的值足够小,那么q(Xt−1∣Xt)q(X_{t-1}|X_t)q(Xt−1​∣Xt​)也将是一个高斯分布。但不幸的是,我们无法简单的估计q(Xt−1∣Xt)q(X_{t-1}|X_t)q(Xt−1​∣Xt​),因为其估计需要使用到整个数据集。因此,我们需要学习一个模型pθp_θpθ​去逼近这些条件概率以运行这个逆扩散过程。
pθ(X0:T)=p(XT)∏t=1Tpθ(Xt−1∣Xt)pθ(Xt−1∣Xt)=N(Xt−1;μθ(Xt,t),∑θ(Xt,t))p_θ(X_{0:T}) = p(X_T)\prod^T_{t=1}p_θ(X_{t-1}|X_t)\\ p_θ(X_{t-1}|X_t) = \mathcal{N}(X_{t-1};μ_θ(X_t,t),\sum_θ(X_t,t)) pθ​(X0:T​)=p(XT​)t=1∏T​pθ​(Xt−1​∣Xt​)pθ​(Xt−1​∣Xt​)=N(Xt−1​;μθ​(Xt​,t),θ∑​(Xt​,t))

值得注意的是,当给定X0X_0X0​时,这个逆条件概率是易处理的
q(Xt−1∣Xt,X0)=N(Xt−1;μ~(Xt,X0),β~tI)q(X_{t-1}|X_t,X_0)=\mathcal N(X_{t-1};\tilde μ(X_t,X_0),\tilde \beta_t I) q(Xt−1​∣Xt​,X0​)=N(Xt−1​;μ~​(Xt​,X0​),β~​t​I)
使用贝叶斯规则,我们可以得到
q(Xt−1∣Xt,X0)=q(Xt,Xt−1,X0)q(Xt,X0)=q(Xt,Xt−1,X0)q(Xt−1,X0)∗q(Xt−1,X0)q(Xt,X0)=q(Xt∣Xt−1,X0)∗q(Xt−1∣X0)q(Xt∣X0)\begin{aligned} q(X_{t-1}|X_t,X_0) &= \frac{q(X_t,X_{t-1},X_0)}{q(X_t,X_0)}\\ &=\frac{q(X_t,X_{t-1},X_0)}{q(X_{t-1},X_0)}*\frac{q(X_{t-1},X_0)}{q(X_t,X_0)}\\ &=q(X_t|X_{t-1},X_0)*\frac{q(X_{t-1}|X_0)}{q(X_t|X_0)} \end{aligned} q(Xt−1​∣Xt​,X0​)​=q(Xt​,X0​)q(Xt​,Xt−1​,X0​)​=q(Xt−1​,X0​)q(Xt​,Xt−1​,X0​)​∗q(Xt​,X0​)q(Xt−1​,X0​)​=q(Xt​∣Xt−1​,X0​)∗q(Xt​∣X0​)q(Xt−1​∣X0​)​​
由于扩散过程也是一个马尔科夫链过程,所以q(Xt∣Xt−1,X0)=q(Xt∣Xt−1)∼N(Xt;αtXt−1,βtI)q(X_t|X_{t-1},X_0)=q(X_t|X_{t-1})\sim \mathcal N(X_t;\sqrt \alpha_tX_{t-1},\beta_tI)q(Xt​∣Xt−1​,X0​)=q(Xt​∣Xt−1​)∼N(Xt​;α​t​Xt−1​,βt​I),后面的分式可根据前向扩展过程中的结论得到答案。
q(Xt−1∣Xt,X0)=q(Xt∣Xt−1,X0)∗q(Xt−1∣X0)q(Xt∣X0)∝exp(−12((Xt−αtXt−1)2βt+(Xt−1−α‾t−1X0)21−α‾t−1−(Xt−α‾tX0)21−α‾t)=exp(−12((αtβt+11−α‾t−1)Xt−12−(2αtβtXt+2α‾t1−α‾tX0)Xt−1+C(Xt,X0)))\begin{aligned} q(X_{t-1}|X_t,X_0) &= q(X_t|X_{t-1},X_0)*\frac{q(X_{t-1}|X_0)}{q(X_t|X_0)}\\ &∝exp(-\frac{1}{2}(\frac{(X_t-\sqrt{\alpha_t}X_{t-1})^2}{\beta_t}+\frac{(X_{t-1}-\sqrt{\overline{\alpha}_{t-1}}X_0)^2}{1-\overline{\alpha}_{t-1}}-\frac{(X_t-\sqrt{\overline{\alpha}_t}X_0)^2}{1-\overline{\alpha}_t})\\ &=exp(-\frac{1}{2}((\frac{\alpha_t}{\beta_t}+\frac{1}{1-\overline{\alpha}_{t-1}})X_{t-1}^2-(\frac{2\sqrt{\alpha_t}}{\beta_t}X_t+\frac{2\sqrt{\overline{\alpha}_t}}{1-\overline{\alpha}_t}X_0)X_{t-1}+C(X_t,X_0))) \end{aligned} q(Xt−1​∣Xt​,X0​)​=q(Xt​∣Xt−1​,X0​)∗q(Xt​∣X0​)q(Xt−1​∣X0​)​∝exp(−21​(βt​(Xt​−αt​​Xt−1​)2​+1−αt−1​(Xt−1​−αt−1​​X0​)2​−1−αt​(Xt​−αt​​X0​)2​)=exp(−21​((βt​αt​​+1−αt−1​1​)Xt−12​−(βt​2αt​​​Xt​+1−αt​2αt​​​X0​)Xt−1​+C(Xt​,X0​)))​
其中(αtβt+11−α‾t−1)Xt−12−(2αtβtXt+2α‾t1−α‾tX0)Xt−1(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\overline{\alpha}_{t-1}})X_{t-1}^2-(\frac{2\sqrt{\alpha_t}}{\beta_t}X_t+\frac{2\sqrt{\overline{\alpha}_t}}{1-\overline{\alpha}_t}X_0)X_{t-1}(βt​αt​​+1−αt−1​1​)Xt−12​−(βt​2αt​​​Xt​+1−αt​2αt​​​X0​)Xt−1​可以看作是ax2−bx=a(x−b2a)2+Cax^2-bx=a(x-\frac{b}{2a})^2+Cax2−bx=a(x−2ab​)2+C。

高斯分布的概率密度函数是
f(x)=12πσe−(x−μ)22σ2f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^-\frac{(x-μ)^2}{2\sigma^2} f(x)=2π​σ1​e−2σ2(x−μ)2​
所以(分母没有2是因为已经提出去了)
a(x−b2a)2=(x−b2a)21a=(x−μ)2σ2a(x-\frac{b}{2a})^2=\frac{(x-\frac{b}{2a})^2}{\frac{1}{a}}=\frac{(x-μ)^2}{\sigma^2} a(x−2ab​)2=a1​(x−2ab​)2​=σ2(x−μ)2​
即q(Xt−1∣Xt,X0)=N(Xt−1;μ~(Xt,X0),β~tI)q(X_{t-1}|X_t,X_0)=\mathcal{N}(X_{t-1};\tilde{μ}(X_t,X_0),\tilde{\beta}_tI)q(Xt−1​∣Xt​,X0​)=N(Xt−1​;μ~​(Xt​,X0​),β~​t​I)中的μ~(Xt,X0)\tilde{μ}(X_t,X_0)μ~​(Xt​,X0​)和β~t\tilde{\beta}_tβ~​t​可以分别写为
β~t=1a=1αtβt+11−α‾t−1=1−α‾t−1αt−αtα‾t−1+1−αtβt=1−α‾t−11−α‾tβt\begin{aligned} \tilde{\beta}_t &= \frac{1}{a} \\ &=\frac{1}{\frac{\alpha_t}{\beta_t}+\frac{1}{1-\overline{\alpha}_{t-1}}}\\ &=\frac{1-\overline{\alpha}_{t-1}}{\alpha_t-\alpha_t\overline{\alpha}_{t-1}+1-\alpha_t}\beta_t\\ &=\frac{1-\overline{\alpha}_{t-1}}{1-\overline{\alpha}_t}\beta_t \end{aligned} β~​t​​=a1​=βt​αt​​+1−αt−1​1​1​=αt​−αt​αt−1​+1−αt​1−αt−1​​βt​=1−αt​1−αt−1​​βt​​

μ~t(Xt,X0)=b2a=2(αtβtXt+α‾t1−α‾tX0)2(αtβt+11−α‾t−1)=αt(1−α‾t−1)1−α‾tXt+α‾t−1βt1−α‾tX0\begin{aligned} \tilde{μ}_t(X_t,X_0) &= \frac{b}{2a} \\ &=\frac{2(\frac{\sqrt{\alpha_t}}{\beta_t}X_t+\frac{\sqrt{\overline{\alpha}_t}}{1-\overline{\alpha}_t}X_0)}{2(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\overline{\alpha}_{t-1}})}\\ &=\frac{\sqrt{\alpha_t}(1-\overline{\alpha}_{t-1})}{1-\overline{\alpha}_t}X_t+\frac{\sqrt{\overline{\alpha}_{t-1}}\beta_t}{1-\overline{\alpha}_t}X_0 \end{aligned} μ~​t​(Xt​,X0​)​=2ab​=2(βt​αt​​+1−αt−1​1​)2(βt​αt​​​Xt​+1−αt​αt​​​X0​)​=1−αt​αt​​(1−αt−1​)​Xt​+1−αt​αt−1​​βt​​X0​​

又因为在前向扩散过程中我们得到Xt=α‾tX0+1−α‾tzX_t = \sqrt{\overline{\alpha}_t}X_0 + \sqrt{1 - \overline{\alpha}_t}zXt​=αt​​X0​+1−αt​​z,则
X0=1α‾t(Xt−1−α‾tZt)X_0=\frac{1}{\sqrt{\overline{\alpha}_t}}(X_t-\sqrt{1-\overline{\alpha}_t}Z_t) X0​=αt​​1​(Xt​−1−αt​​Zt​)
将X0X_0X0​代入到μ~(Xt,X0)\tilde{μ}(X_t,X_0)μ~​(Xt​,X0​)中,可得
μ~t(Xt,X0)=αt(1−α‾t−1)1−α‾tXt+α‾t−1βt1−α‾t1α‾t(Xt−1−α‾tZt)=1αt(Xt−βt1−α‾tZt)\begin{aligned} \tilde{μ}_t(X_t,X_0) &= \frac{\sqrt{\alpha_t}(1-\overline{\alpha}_{t-1})}{1-\overline{\alpha}_t}X_t+\frac{\sqrt{\overline{\alpha}_{t-1}}\beta_t}{1-\overline{\alpha}_t}\frac{1}{\sqrt{\overline{\alpha}_t}}(X_t-\sqrt{1-\overline{\alpha}_t}Z_t)\\ &=\frac{1}{\sqrt{\alpha_t}}(X_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}Z_t) \end{aligned} μ~​t​(Xt​,X0​)​=1−αt​αt​​(1−αt−1​)​Xt​+1−αt​αt−1​​βt​​αt​​1​(Xt​−1−αt​​Zt​)=αt​​1​(Xt​−1−αt​​βt​​Zt​)​

目标数据分布的似然函数

我们可以在负对数似然函数的基础上加上一个KL散度,于是就构成了负对数似然的上界了,上界越小,负对数似然自然也就越小,那么对数似然就越大了。
−logpθ(X0)≤−logpθ(X0)+DKL(q(X1:T∣X0)∣∣pθ(X1:T∣X0))=−logpθ(X0)+EX1:T∼1(X1:T∣X0)[logq(X1:T∣X0)pθ(X0:T)/pθ(X0)]=−logpθ(X0)+Eq[logq(X1:T∣X0)pθ(X0:T)+logpθ(X0)]=Eq[logq(X1:T∣X0)pθ(X0:T)]\begin{aligned} -logp_θ(X_0) &\le -logp_θ(X_0)+D_{KL}(q(X_{1:T}|X_0)||p_θ(X_{1:T}|X_0)) \\ &= -logp_θ(X_0)+E_{X_{1:T}\sim 1(X_{1:T}|X_0)}[log\frac{q(X_{1:T}|X_0)}{p_θ(X_{0:T})/p_θ(X_0)}] \\ &= -logp_θ(X_0)+E_q[log\frac{q(X_{1:T}|X_0)}{p_θ(X_{0:T})}+logp_θ(X_0)] \\ &= E_q[log\frac{q(X_{1:T}|X_0)}{p_θ(X_{0:T})}] \end{aligned} −logpθ​(X0​)​≤−logpθ​(X0​)+DKL​(q(X1:T​∣X0​)∣∣pθ​(X1:T​∣X0​))=−logpθ​(X0​)+EX1:T​∼1(X1:T​∣X0​)​[logpθ​(X0:T​)/pθ​(X0​)q(X1:T​∣X0​)​]=−logpθ​(X0​)+Eq​[logpθ​(X0:T​)q(X1:T​∣X0​)​+logpθ​(X0​)]=Eq​[logpθ​(X0:T​)q(X1:T​∣X0​)​]​

LetLVLB=Eq(X0:T)[logq(X1:T∣X0)pθ(X0:T)]≥−Eq(X0)logpθ(X0)Let \ \ L_{VLB}=E_{q(X_{0:T})}[log\frac{q(X_{1:T}|X_0)}{p_θ(X_{0:T})}]\ge-E_{q(X_0)}logp_θ(X_0) Let  LVLB​=Eq(X0:T​)​[logpθ​(X0:T​)q(X1:T​∣X0​)​]≥−Eq(X0​)​logpθ​(X0​)

进一步可以写出如上公式的交叉熵的上界,接下来,我们可以对交叉熵的上界进行化简。

tips:
q(Xt−1∣Xt,X0)=q(Xt∣Xt−1,X0)q(Xt−1∣X0)q(Xt∣X0)=q(Xt∣Xt−1)q(Xt−1∣X0)q(Xt∣X0)\begin{aligned} q(X_{t-1}|X_t,X_0)=q(X_t|X_{t-1},X_0)\frac{q(X_{t-1}|X_0)}{q(X_t|X_0)}\\=q(X_t|X_{t-1})\frac{q(X_{t-1}|X_0)}{q(X_t|X_0)} \end{aligned} q(Xt−1​∣Xt​,X0​)=q(Xt​∣Xt−1​,X0​)q(Xt​∣X0​)q(Xt−1​∣X0​)​=q(Xt​∣Xt−1​)q(Xt​∣X0​)q(Xt−1​∣X0​)​​

LVLB=Eq(X0:T)[logq(X1:T∣X0)pθ(X0:T)]=Eq[log∏t=1Tq(Xt∣Xt−1)pθ(XT)∏t=1Tpθ(Xt−1∣Xt)]=Eq[−logpθ(XT)+∑t=1Tlogq(Xt∣Xt−1)pθ(Xt−1∣Xt)]=Eq[−logpθ(XT)+∑t=2Tlogq(Xt∣Xt−1)pθ(Xt−1∣Xt)+logq(X1∣X0)pθ(X0∣X1)]=Eq[−logpθ(XT)+∑t=2Tlog(q(Xt−1∣Xt,X0)pθ(Xt−1∣Xt)∗q(Xt∣X0)q(Xt−1∣X0))+logq(X1∣X0)pθ(X0∣X1)]=Eq[−logpθ(XT)+∑t=2Tlogq(Xt−1∣Xt,X0)pθ(Xt−1∣Xt)+∑t=2Tlogq(Xt∣X0)q(Xt−1∣X0)+logq(X1∣X0)pθ(X0∣X1)]=Eq[−logpθ(XT)+∑t=2Tlogq(Xt−1∣Xt,X0)pθ(Xt−1∣Xt)+logq(XT∣X0)q(X1∣X0)+logq(X1∣X0)pθ(X0∣X1)]=Eq[logq(XT∣X0)pθ(XT)+∑t=1Tq(Xt−1∣Xt,X0)pθ(Xt−1∣Xt)−logpθ(X0∣X1)]=Eq[DKL(q(XT∣X0)∣∣pθ(XT))+∑t=2TDKL(q(xt−1∣Xt,X0)∣∣pθ(Xt−1∣Xt))−logpθ(X0∣X1)]\begin{aligned} L_{VLB} &= E_{q(X_{0:T})}[log\frac{q(X_{1:T}|X_0)}{p_θ(X_{0:T})}] \\ &= E_q[log\frac{\prod_{t=1}^Tq(X_t|X_{t-1})}{p_θ(X_T)\prod_{t=1}^Tp_θ(X_{t-1}|X_t)}] \\ &= E_q[-logp_θ(X_T)+\sum_{t=1}^Tlog\frac{q(X_t|X_{t-1})}{p_θ(X_{t-1}|X_t)}] \\ &= E_q[-logp_θ(X_T)+\sum_{t=2}^Tlog\frac{q(X_t|X_{t-1})}{p_θ(X_{t-1}|X_t)}+log\frac{q(X_1|X_0)}{p_θ(X_0|X_1)}] \\ &= E_q[-logp_θ(X_T)+\sum_{t=2}^Tlog(\frac{q(X_{t-1}|X_t,X_0)}{p_θ(X_{t-1}|X_t)}*\frac{q(X_t|X_0)}{q(X_{t-1}|X_0)})+log\frac{q(X_1|X_0)}{p_θ(X_0|X_1)}] \\ &= E_q[-logp_θ(X_T)+\sum_{t=2}^Tlog\frac{q(X_{t-1}|X_t,X_0)}{p_θ(X_{t-1}|X_t)}+\sum_{t=2}^Tlog\frac{q(X_t|X_0)}{q(X_{t-1}|X_0)}+log\frac{q(X_1|X_0)}{p_θ(X_0|X_1)}] \\ &= E_q[-logp_θ(X_T)+\sum_{t=2}^Tlog\frac{q(X_{t-1}|X_t,X_0)}{p_θ(X_{t-1}|X_t)}+log\frac{q(X_T|X_0)}{q(X_1|X_0)}+log\frac{q(X_1|X_0)}{p_θ(X_0|X_1)}] \\ &=E_q[log\frac{q(X_T|X_0)}{p_θ(X_T)}+\sum_{t=1}^T\frac{q(X_{t-1}|X_t,X_0)}{p_θ(X_{t-1}|X_t)}-logp_θ(X_0|X_1)] \\ &= E_q[D_{KL}(q(X_T|X_0)||p_θ(X_T))+\sum_{t=2}^TD_{KL}(q(x_{t-1}|X_t,X_0)||p_θ(X_{t-1}|X_t))- logp_θ(X_0|X_1)] \end{aligned} LVLB​​=Eq(X0:T​)​[logpθ​(X0:T​)q(X1:T​∣X0​)​]=Eq​[logpθ​(XT​)∏t=1T​pθ​(Xt−1​∣Xt​)∏t=1T​q(Xt​∣Xt−1​)​]=Eq​[−logpθ​(XT​)+t=1∑T​logpθ​(Xt−1​∣Xt​)q(Xt​∣Xt−1​)​]=Eq​[−logpθ​(XT​)+t=2∑T​logpθ​(Xt−1​∣Xt​)q(Xt​∣Xt−1​)​+logpθ​(X0​∣X1​)q(X1​∣X0​)​]=Eq​[−logpθ​(XT​)+t=2∑T​log(pθ​(Xt−1​∣Xt​)q(Xt−1​∣Xt​,X0​)​∗q(Xt−1​∣X0​)q(Xt​∣X0​)​)+logpθ​(X0​∣X1​)q(X1​∣X0​)​]=Eq​[−logpθ​(XT​)+t=2∑T​logpθ​(Xt−1​∣Xt​)q(Xt−1​∣Xt​,X0​)​+t=2∑T​logq(Xt−1​∣X0​)q(Xt​∣X0​)​+logpθ​(X0​∣X1​)q(X1​∣X0​)​]=Eq​[−logpθ​(XT​)+t=2∑T​logpθ​(Xt−1​∣Xt​)q(Xt−1​∣Xt​,X0​)​+logq(X1​∣X0​)q(XT​∣X0​)​+logpθ​(X0​∣X1​)q(X1​∣X0​)​]=Eq​[logpθ​(XT​)q(XT​∣X0​)​+t=1∑T​pθ​(Xt−1​∣Xt​)q(Xt−1​∣Xt​,X0​)​−logpθ​(X0​∣X1​)]=Eq​[DKL​(q(XT​∣X0​)∣∣pθ​(XT​))+t=2∑T​DKL​(q(xt−1​∣Xt​,X0​)∣∣pθ​(Xt−1​∣Xt​))−logpθ​(X0​∣X1​)]​
那么就可以得到
LVLB=LT+LT−1+⋯+L0whereLT=DKL(q(XT∣X0)∣∣pθ(XT))Lt=DKL(q(Xt∣Xt+1,X0)∣∣pθ(Xt∣Xt+1))for1≤t≤T−1L0=−logpθ(X0∣X1)\begin{aligned} L_{VLB} &= L_T+L_{T-1}+\dots+L_0 \\ where L_T &= D_{KL}(q(X_T|X_0)||p_θ(X_T)) \\ L_t &= D_{KL}(q(X_{t}|X_{t+1},X_0)||p_θ(X_{t}|X_{t+1})) for\ 1 \le t \le T-1 \\ L_0 &= - logp_θ(X_0|X_1) \end{aligned} LVLB​whereLT​Lt​L0​​=LT​+LT−1​+⋯+L0​=DKL​(q(XT​∣X0​)∣∣pθ​(XT​))=DKL​(q(Xt​∣Xt+1​,X0​)∣∣pθ​(Xt​∣Xt+1​))for 1≤t≤T−1=−logpθ​(X0​∣X1​)​

损失函数

代码后续给出

Diffusion Model扩散模型原理相关推荐

  1. 【CV】Latent diffusion model 扩散模型体验

    note 文章目录 note 一.diffusion模型 1.1 Stable Diffusion简介 1.2 和GAN对比的优势 二.Latent diffusion model原理 2.1 潜在空 ...

  2. Diffusion Model (扩散生成模型)的基本原理详解(三)Stochastic Differential Equation(SDE)

    本篇是<Diffusion Model (扩散生成模型)的基本原理详解(二)Score-Based Generative Modeling(SGM)>的续写,继续介绍有关diffusion ...

  3. Diffusion Model (扩散生成模型)的基本原理详解(一)Denoising Diffusion Probabilistic Models(DDPM)

    本章开始笔者来陆续的介绍最近爆火的Diffusion Model的近期发展. 本篇的学习内容与图片均来自于对文章Diffusion Models: A Comprehensive Survey of ...

  4. 【diffusion】扩散模型详解!理论+代码

    0.项目视频详解 视频教程见B站https://www.bilibili.com/video/BV1e8411a7mz 1.diffusion模型理论(推导出损失函数) 1.1.背景 随着人工智能在图 ...

  5. AI绘画爆火背后:扩散模型原理及实现

    Datawhale干货 技术:Diffusion扩散模型 最近爆火的AI绘图,相信大家并不陌生了. 从AI绘图软件生成的作品打败一众人类艺术家,斩获数字艺术类冠军,到如今DALL.E.Imagen.n ...

  6. 2022年11月100篇 diffusion models 扩散模型 汇总!

    在生成图像方面,自从NIPS 2014的一篇开山之作: Generative Adversarial Nets 论文:https://proceedings.neurips.cc/paper/2014 ...

  7. Diffusion Models扩散模型简单讲解与简单实现

    Diffusion Models 图中: x 0 x_0 x0​为图像, z z z为采样自正态分布的噪音 扩散模型**是受非平衡热力学的启发.它们定义一个扩散步骤的马尔可夫链,逐渐向数据添加随机噪声 ...

  8. 一文读懂扩散模型原理、推断加速和可控生成

    在刚刚过去的2022年,扩散模型(Diffusion Models)成为了深度生成模型中新的SOTA.近期,中国人民大学助理教授李崇轩和清华大学博士生鲍凡在由智源社区主办的"2022大模型创 ...

  9. 井喷式爆发!2022年11月100篇 diffusion models 扩散模型 汇总!

    点击上方"摸鱼吧算法工程师"卡片,关注星标 获取有趣.好玩的前沿干货! 001  (2022-11-30) Maximum Likelihood Estimation for a ...

  10. Diffusion Models - 扩散模型(一)

    常见的生成模型(Generative Models)如 GAN.VAE 和基于流( Flow-based )的模型.他们在生成高质量样本方面取得了巨大成功,但每个都有其自身的局限性. GAN 因其对抗 ...

最新文章

  1. ai皮肤检测分数_智能AI皮肤检测仪三步走话术
  2. 程序员弃码投中医?还做成了不错的生意! | 极客视频
  3. 洛谷P2068 统计和题解
  4. nginx 安装及使用命令
  5. 国内油价今日将迎九连跌 出租车燃油费望调整
  6. 自定义Interpolator
  7. python用语句输入一个3*3的二维矩阵_python中二维数组的建立,输入和输出
  8. php访问url json,PHP操作URL和PHP操作json
  9. SharePoint 2013异常信息的查看
  10. RabbitMQ MQTT协议和AMQP协议
  11. EF/SQL/新闻中分页应用
  12. react的导出是怎么实现的_不到一百行代码,我们来实现一个简简简简简简简简简简版react库...
  13. 越南也自研5G设备,有这么容易?
  14. hprose java 下载_Hprose Java下载
  15. 50年的追踪拍摄:社会阶级能被逾越吗?
  16. linux libodbc.so.1,关于C#:Testprintenv:加载共享库时出错:libodbc.so.1:无法打开共享对象文件...
  17. C++几个常用的排序
  18. python全局代理_Python3 中代理使用方法总结
  19. CSS中的圆角与倒角
  20. matlab三维绘图注释,Matlab三维绘图与图形处理

热门文章

  1. AutoCAD2022 安装说明
  2. 【Python】使用Labelme标注自己的数据集并由json生成Ground Truth
  3. 服务器系统如何清理,服务器清理内存怎么清理
  4. 威纶通触摸屏离线模拟正常,为什么下载到屏幕后部分按钮开关等不显示?
  5. (四)BP神经网络预测(上)
  6. 查看硬件配置信息 lshw
  7. hypersion oracle_Oracle Hyperion财务管理之合并报表
  8. 教学管理系统java_Java 实现简易教务管理系统的代码
  9. 最完美的matlab绘图教程集合
  10. 谈谈我来到CSDN社区的感受