扩散模型的数学原理

文章详细介绍了扩散模型的工作原理,包括扩散阶段和逆扩散阶段。在扩散阶段,数据样本逐渐添加高斯噪声变成独立高斯分布;在逆扩散过程中,通过神经网络预测减噪声策略,从高斯样本生成符合原始数据分布的样本。文章还涵盖了高斯分布的性质、重参数化技巧和贝叶斯公式在模型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速理解

[说明]:此节使用通俗语言进行扩散模型的总体概述,用词较为冗杂,某些概念为简易性做了些许牺牲,可能略有偏颇。深入理解请继续阅读后续章节,概念定义也以后续章节为准。

扩散模型是一类生成模型,在训练此类模型时,它可以被分为两个阶段,分别称为扩散阶段逆扩散阶段扩散阶段主要对训练数据样本x0x_0x0不断添加高斯噪声,在重复足够的次数(一般表示为TTT步)后,此数据样本变为各项独立的高斯样本xTx_TxT,这与VAE中的编码过程神似。逆扩散过程是主要是对一个高斯样本xTx_TxT不断的进行减高斯噪声的操作,在TTT步后将获得一个符合训练数据分布的样本x0′x'_0x0,这与VAE中解码神似。如果此过程被确定,则在推理阶段我们能使用任意的高斯样本逆扩散为一个符合训练数据分布的样本(这达到了生成模型的目的)。此训练过程可以用下图表示:
扩散过程(右到左)与逆扩散过程(左到右)
在训练过程,我们将确定一个加入噪声的策略,这被称作nois_schedule,由于高斯噪声的主要影响参数为均值(μ\muμ)和标准差(σ\sigmaσ),此策略主要决定的是当前步数(ttt)时,加入高斯噪声的均值和标准差。在此策略和训练样本x0x_0x0被确定的情况下,我们的扩散过程能被逐步推出。所以更重要的是逆扩散过程。
在逆扩散过程中,需要做的是逐步减高斯噪声,如果我们将其定义为直接减去扩散过程中加入的那个高斯噪声则在经过TTT步后就能还原数据样本x0x_0x0。但这样的定义将毫无意义,因为在推理阶段(从随机高斯样本逆扩散到样本数据),我们并没有加噪声策略的记录,也就无法获得减噪声的策略,逆扩散过程将无法进行。
所以,在训练阶段的逆扩散过程,我们需要使用神经网络来预测这个减噪声的策略,当此策略满足训练集样本的极大似然估计的时侯,推理阶段就可使用此神经网络来生成减噪声策略,从而用随机高斯样本生成符合训练集分布的生成样本。
神经网络损失函数的定义至关重要。在训练过程,由于已知样本数据x0x_0x0和加噪声策略,我们能轻易求出xTx_TxTxT−1x_{T-1}xT1。所以神经网络可以设定为接收已知的信息xTx_TxTTTT为输入,预测其减噪声后的结果xT−1′x'_{T-1}xT1。已知预测值xT−1′x'_{T-1}xT1和真实值xT−1x_{T-1}xT1,损失函数则呼之欲出。(注意,此处不具有数学严谨性,只为描述神经网络的建模想法

数学基础

[说明]:下章节开始介绍扩散模型数学原理,对此数学基础的掌握必不可少。为简单起见,读者可不深究此节相关内容,但需要在阅读下节时实时翻阅,以作为推到的理论基础。

高斯分布表示 (数1)

符号表示:N(μ,σ2)N(\mu, \sigma^2)N(μ,σ2)。 其中μ\muμ为均值,σ\sigmaσ为标准差。
概率密度函数:
f(x)=12πσexp(−12(x−μ)2σ2)=12πσexp(−12(1σ2x2−2μσ2x+μ2σ2)) f(x) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2}\frac{(x-\mu)^2}{\sigma^2})= \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2}(\frac{1}{\sigma^2}x^2-\frac{2\mu}{\sigma^2}x+\frac{\mu^2}{\sigma^2})) f(x)=2πσ1exp(21σ2(xμ)2)=2πσ1exp(21(σ21x2σ22μx+σ2μ2))

高斯分布线性叠加 (数2)

两个高斯分布X∼N(μ1,σ12)X\sim N(\mu_1, \sigma^2_1)XN(μ1,σ12)Y∼N(μ2,σ22)Y\sim N(\mu_2, \sigma^2_2)YN(μ2,σ22)进行线性组合仍然为高斯分布,表示为:
aX+bY∼N(aμ1+bμ2,a2σ12+b2σ22) aX+ bY \sim N(a\mu_1+b\mu_2, a^2\sigma^2_1+b^2\sigma^2_2) aX+bYN(aμ1+bμ2,a2σ12+b2σ22)

重参数化技巧 (数3)

设标准高斯分布N(0,1)N(0, 1)N(0,1)随机采样的样本为zzz,高斯分布N(μ,σ2)N(\mu, \sigma^2)N(μ,σ2)随机采样的样本表示为z′z'z。使用重参数化技巧,可以将z′z'z表示为:
z′=σz+μ z' = \sigma z + \mu z=σz+μ

贝叶斯公式 (数4)

p(A∣B)=p(B∣A)p(A)p(B) p(A|B) = p(B|A)\frac{p(A)}{p(B)} p(AB)=p(BA)p(B)p(A)

指数乘除法 (数5)

exp(a)∗exp(b)/exp(c)=exp(a+b−c) exp(a) * exp(b) / exp(c) = exp(a+b-c) exp(a)exp(b)/exp(c)=exp(a+bc)

扩散过程

给定初始分布x0∼q(x)x_0\sim q(x)x0q(x)(其中x0x_0x0代表某各训练样本,q(x)q(x)q(x)代表训练数据集分布),可以不断向其中加入高斯噪声。规定此策略为:在ttt时刻,对xt−1x_{t-1}xt1进行1−βt\sqrt{1 - \beta_t}1βt倍的数值缩放,并向其中加入βt\beta_tβt倍标准高斯噪声zt−1z_{t-1}zt1得到数据xtx_txt。此过程表示为:
xt=1−βtxt−1+βtzt−1   (1) x_t = \sqrt{1-\beta_t}x_{t-1} +\sqrt{\beta_t}z_{t-1} \ \ \ (1) xt=1βtxt1+βtzt1   (1)
随着t不断增大,最终达到T时,样本数据(xTx_TxT)成了一个各项独立的高斯分布。且由于策略已知,xTx_TxT能通过迭代计算求得。为了节约计算资源并为一些后续工作做准备,可以通过公式推导求得xtx_txtx0x_0x0之间的关系,这使得任意时刻的xtx_txt能通过公式一步求得。具体公式推导如下:
为方便表示,令αt=1−βt\alpha_t = 1-\beta_tαt=1βtαˉt=∏i=1Tαi\bar{\alpha}_t=\prod^{T}_{i=1}\alpha_iαˉt=i=1Tαi。要求给定xt−1x_{t-1}xt1情况下xtx_txt的分布函数q(xt∣xt−1)q(x_t|x_{t-1})q(xtxt1)。由(1)和(数3)进行比对可得:
q(xt∣xt−1)=N(1−βtxt−1,βt) (2)=N(αtxt−1,1−αt) (3) \begin{aligned} q(x_t|x_{t-1}) &= N(\sqrt{1-\beta_t}x_{t-1},\beta_t) \ (2)\\ &=N(\sqrt{\alpha_t}x_{t-1}, 1-\alpha_t) \ (3) \\ \end{aligned} q(xtxt1)=N(1βtxt1,βt) (2)=N(αtxt1,1αt) (3)
xtx_txt进行递归拆解:
xt=αtxt−1+1−αtzt−1 (5)   where zt−1,zt−2,...,z∼N(0,1)=αt(αt−1xt−2+1−αt−1zt−2)+1−αtzt−1 (6)=αtαt−1xt−2+αt−αtαt−1zt−2+1−αtzt−1 (7)=αtαt−1xt−2+1−αtαt−1zt−2 (8)=...=αˉtx0+1−αˉtz (9) \begin{aligned} x_t &= \sqrt{\alpha_t}x_{t-1} + \sqrt{1-\alpha_t}z_{t-1} \ (5) \ \ \ where\ z_{t-1},z_{t-2},...,z \sim N(0,1)\\ &=\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} \ (6)\\ &=\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} \ (7) \\ &=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}z_{t-2} \ (8) \\ &=... \\ &= \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}z \ (9) \end{aligned} xt=αtxt1+1αtzt1 (5)   where zt1,zt2,...,zN(0,1)=αt(αt1xt2+1αt1zt2)+1αtzt1 (6)=αtαt1xt2+αtαtαt1zt2+1αtzt1 (7)=αtαt1xt2+1αtαt1zt2 (8)=...=αˉtx0+1αˉtz (9)
式(7)到式(8)的解释:
由(数3)及(数2)可知,α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αt1zt2+1αtzt1可重参数化为一个只含标准高斯zzz1−αtαt−1z\sqrt{1-\alpha_t\alpha_{t-1}}z1αtαt1z,又因为zt−2,zz_{t-2}, zzt2,z都是标准高斯,进行等效替换后为1−αtαt−1zt−2\sqrt{1-\alpha_t\alpha_{t-1}}z_{t-2}1αtαt1zt2

逆扩散过程

如果你已经能理解上一节的内容,那祝贺你拥有非凡的语文阅读能力及数学理解能力。这一节的内容可能略难,我对自己的表达能力与数学水平并不是很自信,但拥有如此理解能力的你想必也能轻松阅读这一节,让我们开始吧。
故名思意,逆扩散过程必定是扩散过程的反过程。在上一节中,我们成功求出了q(xt∣xt−1)q(x_t|x_{t-1})q(xtxt1)的表达式,这使得我们可以轻松求得任何扩散时刻下的结果。同样,如果我们在逆过程中能求得q(xt−1∣xt)q(x_{t-1}|x_{t})q(xt1xt)的表达式,这个逆过程也将成为我们的囊中之物。下面让我们开始吧:
q(xt−1∣xt)=q(xt∣xt−1)∗q(xt−1)q(xt)  (10)   ...由(数4)可知=(αtxt−1+1−αtzt−1)∗αˉt−1x0+1−αˉt−1zαˉtx0+1−αˉtz  (11)   ...由(5),(9)可知=(αtxt−1+βtzt−1)∗αˉt−1x0+1−αˉt−1zαˉtx0+1−αˉtz  (12)∝exp(−(xt−αtxt−1)22βt)∗exp(−(xt−1−αˉt−1x0)22(1−αˉt−1))/exp(−(xt−αˉtx0)22(1−αˉt))  (13)   ...由(数3),(数1)可知=exp[−12((xt−αtxt−1)2βt+(xt−1−αˉt−1x0)21−αˉt−1−(xt−αˉtx0)21−αˉt)]  (14)   ...由(数5)可知=exp[−12(xt2−2αtxtxt−1+αtxt−12βt+xt−12−2αˉt−1x0xt−1+αˉt−1x021−αˉt−1−(xt−αˉtx0)21−αˉt)]  (15)=exp[−12((αtβt+11−αˉt−1)xt−12−(2αtβtxt+2αˉt−11−αˉt−1x0)xt−1+C)]  (16)  ...由于x0,xt不含xt−1项被整合为常数C \begin{aligned} q(x_{t-1}|x_{t}) &= q(x_t|x_{t-1}) * \frac{q(x_{t-1})}{q(x_t)} \ \ (10) \ \ \ ...由(数4)可知\\ &=(\sqrt{\alpha_t}x_{t-1} + \sqrt{1-\alpha_t}z_{t-1}) *\frac{ \sqrt{\bar{\alpha}_{t-1}}x_0 + \sqrt{1 - \bar{\alpha}_{t-1}}z}{ \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}z} \ \ (11) \ \ \ ...由(5),(9)可知\\ &=(\sqrt{\alpha_t}x_{t-1} + \sqrt{\beta_t}z_{t-1}) *\frac{ \sqrt{\bar{\alpha}_{t-1}}x_0 + \sqrt{1 - \bar{\alpha}_{t-1}}z}{ \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}z} \ \ (12) \\ &\propto exp(-\frac{(x_t-\sqrt{\alpha_t}x_{t-1})^2}{2\beta_t}) * exp(-\frac{(x_{t-1}-\sqrt{\bar{\alpha}_{t-1}}x_0)^2}{2(1- \bar{\alpha}_{t-1})}) / exp(-\frac{(x_{t}-\sqrt{\bar{\alpha}_{t}}x_0)^2}{2(1- \bar{\alpha}_{t})}) \ \ (13) \ \ \ ...由(数3),(数1)可知\\ &= exp[-\frac{1}{2}(\frac{(x_t-\sqrt\alpha_t x_{t-1})^2}{\beta_t}+\frac{(x_{t-1}-\sqrt{\bar{\alpha}_{t-1}} x_{0})^2}{1-\bar{\alpha}_{t-1} }-\frac{(x_{t}-\sqrt{\bar{\alpha}_t} x_{0})^2}{1-\bar{\alpha}_{t} })] \ \ (14) \ \ \ ...由(数5)可知\\ &=exp[-\frac{1}{2}(\frac{x_t^2-2\sqrt\alpha_tx_t x_{t-1}+\alpha_tx_{t-1}^2}{\beta_t}+\frac{x_{t-1}^2-2\sqrt{\bar{\alpha}_{t-1}} x_{0}x_{t-1}+\bar{\alpha}_{t-1}x_0^2}{1-\bar{\alpha}_{t-1} }-\frac{(x_{t}-\sqrt{\bar{\alpha}_t} x_{0})^2}{1-\bar{\alpha}_{t} })] \ \ (15) \\ &=exp[-\frac{1}{2}((\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}})x_{t-1}^2-(\frac{2\sqrt\alpha_t}{\beta_t}x_t+\frac{2\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0)x_{t-1} +C)]\ \ (16) \ \ ...由于x_0,x_t不含x_{t-1}项被整合为常数C\\ \end{aligned} q(xt1xt)=q(xtxt1)q(xt)q(xt1)  (10)   ...(4)可知=(αtxt1+1αtzt1)αˉtx0+1αˉtzαˉt1x0+1αˉt1z  (11)   ...(5),(9)可知=(αtxt1+βtzt1)αˉtx0+1αˉtzαˉt1x0+1αˉt1z  (12)exp(2βt(xtαtxt1)2)exp(2(1αˉt1)(xt1αˉt1x0)2)/exp(2(1αˉt)(xtαˉtx0)2)  (13)   ...(3),(1)可知=exp[21(βt(xtαtxt1)2+1αˉt1(xt1αˉt1x0)21αˉt(xtαˉtx0)2)]  (14)   ...(5)可知=exp[21(βtxt22αtxtxt1+αtxt12+1αˉt1xt122αˉt1x0xt1+αˉt1x021αˉt(xtαˉtx0)2)]  (15)=exp[21((βtαt+1αˉt11)xt12(βt2αtxt+1αˉt12αˉt1x0)xt1+C)]  (16)  ...由于x0,xt不含xt1项被整合为常数C
与(数1)公式进行对比,可知:
αtβt+11−αˉt−1⇔1σ2  (17)2αtβtxt+2αˉt−11−αˉt−1x0⇔2μσ2  (18)q(xt−1∣xt)=N(μ,σ) \begin{aligned} \frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}}&\Leftrightarrow \frac{1}{\sigma^2} \ \ (17) \\ \\ \frac{2\sqrt\alpha_t}{\beta_t}x_t+\frac{2\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0&\Leftrightarrow\frac{2\mu}{\sigma^2} \ \ (18)\\ \\ q(x_{t-1}|x_{t}) &=N(\mu, \sigma) \end{aligned} βtαt+1αˉt11βt2αtxt+1αˉt12αˉt1x0q(xt1xt)σ21  (17)σ22μ  (18)=N(μ,σ)
将(17)带入(18)得:
αtβtxt+αˉt−11−αˉt−1x0=(αtβt+11−αˉt−1)μ  (19) \frac{\sqrt\alpha_t}{\beta_t}x_t+\frac{\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0=(\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}}){\mu} \ \ (19) βtαtxt+1αˉt1αˉt1x0=(βtαt+1αˉt11)μ  (19)
进行整理得:
μ=αtβtxt+αˉt−11−αˉt−1x0αtβt+11−αˉt−1  (20)=(1−αˉt−1)αtxt+βtαˉt−1x0(1−αˉt−1)αt+βt=(1−αˉt−1)αtxt+βtαˉt−1x0αt−αˉt−1αt+1−αt  (21)=(1−αˉt−1)αtxt+βtαˉt−1x01−αˉt−1αt  (22)=(1−αˉt−1)αtxt+βtαˉt−1x01−αˉt  (23) \begin{aligned} \mu &= \frac{\frac{\sqrt\alpha_t}{\beta_t}x_t+\frac{\sqrt{\bar{\alpha}_{t-1}}}{1-\bar{\alpha}_{t-1}}x_0}{\frac{\alpha_t}{\beta_t}+\frac{1}{1-\bar{\alpha}_{t-1}}} \ \ (20) \\ &=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\sqrt{\bar{\alpha}_{t-1}}x_0}{(1-\bar{\alpha}_{t-1})\alpha_t+\beta_t} \\ &=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\sqrt{\bar{\alpha}_{t-1}}x_0}{\alpha_t-\bar{\alpha}_{t-1}\alpha_t+1-\alpha_t} \ \ (21) \\ &= \frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\sqrt{\bar{\alpha}_{t-1}}x_0}{1-\bar{\alpha}_{t-1}\alpha_t} \ \ (22) \\ &=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\sqrt{\bar{\alpha}_{t-1}}x_0}{1-\bar{\alpha}_{t}} \ \ (23) \end{aligned} μ=βtαt+1αˉt11βtαtxt+1αˉt1αˉt1x0  (20)=(1αˉt1)αt+βt(1αˉt1)αtxt+βtαˉt1x0=αtαˉt1αt+1αt(1αˉt1)αtxt+βtαˉt1x0  (21)=1αˉt1αt(1αˉt1)αtxt+βtαˉt1x0  (22)=1αˉt(1αˉt1)αtxt+βtαˉt1x0  (23)
将(9)变形得x0=1αˉt(xt−1−αˉtz)x_0 = \frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar{\alpha}_t}z)x0=αˉt1(xt1αˉtz),(23)中可用xtx_txt代替x0x_0x0变为:
μ=(1−αˉt−1)αtxt+βtαˉt−11αˉt(xt−1−αˉtz)1−αˉt  (24)=(1−αˉt−1)αtxt+βt1αt(xt−1−αˉtz)1−αˉt  (25)=(1−αˉt−1)αtxt+βt(xt−1−αˉtz)(1−αˉt)αt  (26)=(1−αˉt−1)αt+βt(1−αˉt)αtxt−βt1−αˉt(1−αˉt)αtz  (27)=1at((1−αˉt−1)αt+βt1−αˉtxt−βt1−αˉt1−αˉtz)  (28)=1at(αt−αˉt+1−αt1−αˉtxt−βt1−αˉtz)  (29)=1at(1−αˉt1−αˉtxt−βt1−αˉtz)  (30)=1at(xt−βt1−αˉtz)  (31) \begin{aligned} \mu &=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\sqrt{\bar{\alpha}_{t-1}} \frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar{\alpha}_t}z)}{1-\bar{\alpha}_{t}} \ \ (24)\\ &=\frac{(1-\bar{\alpha}_{t-1})\sqrt{\alpha_t}x_t+\beta_t\frac{1}{\sqrt{\alpha_t}}(x_t-\sqrt{1-\bar{\alpha}_t}z)}{1-\bar{\alpha}_{t}} \ \ (25)\\ &=\frac{(1-\bar{\alpha}_{t-1}){\alpha_t}x_t+\beta_t(x_t-\sqrt{1-\bar{\alpha}_t}z)}{(1-\bar{\alpha}_{t})\sqrt{\alpha_t}} \ \ (26)\\ &=\frac{(1-\bar{\alpha}_{t-1}){\alpha_t}+\beta_t }{(1-\bar{\alpha}_{t})\sqrt{\alpha_t}}x_t - \frac{\beta_t\sqrt{1-\bar{\alpha}_t}}{(1-\bar{\alpha}_{t})\sqrt{\alpha_t}}z\ \ (27) \\ &=\frac{1}{\sqrt{a_t}}(\frac{(1-\bar{\alpha}_{t-1}){\alpha_t}+\beta_t }{1-\bar{\alpha}_{t}}x_t - \frac{\beta_t\sqrt{1-\bar{\alpha}_t}}{1-\bar{\alpha}_{t}}z)\ \ (28) \\ &=\frac{1}{\sqrt{a_t}}(\frac{\alpha_t-\bar{\alpha}_{t}+1-\alpha_t }{1-\bar{\alpha}_{t}}x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_{t}}}z)\ \ (29) \\ &=\frac{1}{\sqrt{a_t}}(\frac{1-\bar{\alpha}_{t}}{1-\bar{\alpha}_{t}}x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_{t}}}z) \ \ (30)\\ &=\frac{1}{\sqrt{a_t}}(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_{t}}}z)\ \ (31) \\ \end{aligned} μ=1αˉt(1αˉt1)αtxt+βtαˉt1αˉt1(xt1αˉtz)  (24)=1αˉt(1αˉt1)αtxt+βtαt1(xt1αˉtz)  (25)=(1αˉt)αt(1αˉt1)αtxt+βt(xt1αˉtz)  (26)=(1αˉt)αt(1αˉt1)αt+βtxt(1αˉt)αtβt1αˉtz  (27)=at1(1αˉt(1αˉt1)αt+βtxt1αˉtβt1αˉtz)  (28)=at1(1αˉtαtαˉt+1αtxt1αˉtβtz)  (29)=at1(1αˉt1αˉtxt1αˉtβtz)  (30)=at1(xt1αˉtβtz)  (31)
σ\sigmaσ的求解更为简单,直接对(17)进行变形即可:
1σ2=αt(1−αˉt−1)+βtβt(1−αˉt−1)  (32)σ2=βt(1−αˉt−1)αt(1−αˉt−1)+βt  (33)≈βtαt+βt=βt  (34)   ...由αt=1−βt可知σ=βt   (35) \begin{aligned} \frac{1}{\sigma^2} &= \frac{\alpha_t(1-\bar{\alpha}_{t-1})+\beta_t}{\beta_t(1-\bar{\alpha}_{t-1})} \ \ (32)\\ \sigma^2 &= \frac{\beta_t(1-\bar{\alpha}_{t-1})}{\alpha_t(1-\bar{\alpha}_{t-1})+\beta_t} \ \ (33) \\ &\approx \frac{\beta_t}{\alpha_t+\beta_t} = \beta_t \ \ (34) \ \ \ ...由\alpha_t=1-\beta_t可知 \\ \sigma&=\sqrt{\beta_t} \ \ \ (35) \end{aligned} σ21σ2σ=βt(1αˉt1)αt(1αˉt1)+βt  (32)=αt(1αˉt1)+βtβt(1αˉt1)  (33)αt+βtβt=βt  (34)   ...αt=1βt可知=βt   (35)
由于0<αt<10<\alpha_t<10<αt<1,当t足够大有αˉt≈0\bar{\alpha}_t \approx 0αˉt0,所以(33)到(34)公式成立。
如果μ,σ\mu,\sigmaμ,σ表达式已知,则条件概率分布q(xt−1∣xt)=N(μ,σ)q(x_{t-1}|x_{t})=N(\mu,\sigma)q(xt1xt)=N(μ,σ)已知,使得我们从一个随机高斯样本xtx_txt通过循环迭代能求得符合真实数据分布的样本x0x_0x0
事实上,我们离上诉描述已经很接近了,但在μ\muμ的表达式中,我们存在唯一一个未知量,这就是zzz。在训练时由于策略已知,zzz可以人为是已知量。但在推理阶段,减噪声策略未知,zzz被视为未知量。此时,神经网络出场了。在训练阶段,我们只需训练一个模型用来预测z′z'z,通过与已知的zzz做损失对比,完成训练后,使用此网络来求得一系列的z′z'z就能完成整个逆扩散过程。根据论文,模型的输入被定义为xt和tx_t和txtt,损失函数则可表示为下式:
Lsimple=Et,xt,z[∥z−ϵθ(xt,t)∥2]=Et,x0,z[∥z−ϵθ(αˉtx0+1−αˉtz,t)∥2] \begin{aligned} \mathcal{L}_{\text{simple}} &=\mathbb{E}_{t, \mathbf{x}_{t},z}\left[ \Vert z- \epsilon_{\theta}(x_t, t) \Vert^{2} \right] \\ &=\mathbb{E}_{t, \mathbf{x}_{0},z}\left[ \Vert z - \epsilon_{\theta}(\sqrt{\bar{\alpha}_{t}}x_{0} + \sqrt{1 - \bar{\alpha}_{t}}z, t) \Vert^{2} \right] \end{aligned} Lsimple=Et,xt,z[zϵθ(xt,t)2]=Et,x0,z[zϵθ(αˉtx0+1αˉtz,t)2]
至此,我们的扩散过程与逆扩散过程可被公式完整表达(其中zzz表示随机高斯采样):
正向
xt=αˉtx0+1−αˉtz  x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}z \ xt=αˉtx0+1αˉtz 
逆向:
xt−1=1αt(xt−1−αt1−αtˉϵθ(xt,t))+βtz  x_{t-1} = \frac{1}{\sqrt{\alpha_{t}}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha_t}}}\epsilon_{\theta}(x_t, t)) + \sqrt{\beta_t} z \ xt1=αt1(xt1αtˉ1αtϵθ(xt,t))+βtz 

代码

https://colab.research.google.com/drive/179Se6GXKB30RQnVt7uqvS-vKsBQnRAee

参考链接

https://t.bilibili.com/700526762586538024?spm_id_from=333.999.0.0
https://zhuanlan.zhihu.com/p/586362713

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值