快速理解
[说明]:此节使用通俗语言进行扩散模型的总体概述,用词较为冗杂,某些概念为简易性做了些许牺牲,可能略有偏颇。深入理解请继续阅读后续章节,概念定义也以后续章节为准。
扩散模型是一类生成模型,在训练此类模型时,它可以被分为两个阶段,分别称为扩散阶段
和逆扩散阶段
。扩散阶段
主要对训练数据样本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_TxT和xT−1x_{T-1}xT−1。所以神经网络可以设定为接收已知的信息xTx_TxT和TTT为输入,预测其减噪声后的结果xT−1′x'_{T-1}xT−1′。已知预测值xT−1′x'_{T-1}xT−1′和真实值xT−1x_{T-1}xT−1,损失函数则呼之欲出。(注意,此处不具有数学严谨性,只为描述神经网络的建模想法)
数学基础
[说明]:下章节开始介绍扩散模型数学原理,对此数学基础的掌握必不可少。为简单起见,读者可不深究此节相关内容,但需要在阅读下节时实时翻阅,以作为推到的理论基础。
高斯分布表示 (数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)X∼N(μ1,σ12),Y∼N(μ2,σ22)Y\sim N(\mu_2, \sigma^2_2)Y∼N(μ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+bY∼N(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(A∣B)=p(B∣A)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+b−c)
扩散过程
给定初始分布x0∼q(x)x_0\sim q(x)x0∼q(x)(其中x0x_0x0代表某各训练样本,q(x)q(x)q(x)代表训练数据集分布),可以不断向其中加入高斯噪声。规定此策略为:在ttt时刻,对xt−1x_{t-1}xt−1进行1−βt\sqrt{1 - \beta_t}1−βt倍的数值缩放,并向其中加入βt\beta_tβt倍标准高斯噪声zt−1z_{t-1}zt−1得到数据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−βtxt−1+βtzt−1 (1)
随着t不断增大,最终达到T时,样本数据(xTx_TxT)成了一个各项独立的高斯分布。且由于策略已知,xTx_TxT能通过迭代计算求得。为了节约计算资源并为一些后续工作做准备,可以通过公式推导求得xtx_txt和x0x_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}xt−1情况下xtx_txt的分布函数q(xt∣xt−1)q(x_t|x_{t-1})q(xt∣xt−1)。由(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(xt∣xt−1)=N(1−βtxt−1,βt) (2)=N(αtxt−1,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=α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)
式(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αt−1zt−2+1−αtzt−1可重参数化为一个只含标准高斯zzz的1−αtαt−1z\sqrt{1-\alpha_t\alpha_{t-1}}z1−αtαt−1z,又因为zt−2,zz_{t-2}, zzt−2,z都是标准高斯,进行等效替换后为1−αtαt−1zt−2\sqrt{1-\alpha_t\alpha_{t-1}}z_{t-2}1−αtαt−1zt−2。
逆扩散过程
如果你已经能理解上一节的内容,那祝贺你拥有非凡的语文阅读能力及数学理解能力。这一节的内容可能略难,我对自己的表达能力与数学水平并不是很自信,但拥有如此理解能力的你想必也能轻松阅读这一节,让我们开始吧。
故名思意,逆扩散过程必定是扩散过程的反过程。在上一节中,我们成功求出了q(xt∣xt−1)q(x_t|x_{t-1})q(xt∣xt−1)的表达式,这使得我们可以轻松求得任何扩散时刻下的结果。同样,如果我们在逆过程中能求得q(xt−1∣xt)q(x_{t-1}|x_{t})q(xt−1∣xt)的表达式,这个逆过程也将成为我们的囊中之物。下面让我们开始吧:
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(xt−1∣xt)=q(xt∣xt−1)∗q(xt)q(xt−1) (10) ...由(数4)可知=(αtxt−1+1−αtzt−1)∗αˉtx0+1−αˉtzαˉt−1x0+1−αˉt−1z (11) ...由(5),(9)可知=(αtxt−1+βtzt−1)∗αˉtx0+1−αˉtzαˉt−1x0+1−αˉt−1z (12)∝exp(−2βt(xt−αtxt−1)2)∗exp(−2(1−αˉt−1)(xt−1−αˉt−1x0)2)/exp(−2(1−αˉt)(xt−αˉtx0)2) (13) ...由(数3),(数1)可知=exp[−21(βt(xt−αtxt−1)2+1−αˉt−1(xt−1−αˉt−1x0)2−1−αˉt(xt−αˉtx0)2)] (14) ...由(数5)可知=exp[−21(βtxt2−2αtxtxt−1+αtxt−12+1−αˉt−1xt−12−2αˉt−1x0xt−1+αˉt−1x02−1−αˉt(xt−αˉtx0)2)] (15)=exp[−21((βtαt+1−αˉt−11)xt−12−(βt2αtxt+1−αˉt−12αˉt−1x0)xt−1+C)] (16) ...由于x0,xt不含xt−1项被整合为常数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−αˉt−11βt2αtxt+1−αˉt−12αˉt−1x0q(xt−1∣xt)⇔σ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−αˉt−1αˉt−1x0=(βtαt+1−αˉt−11)μ (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−αˉt−11βtαtxt+1−αˉt−1αˉt−1x0 (20)=(1−αˉt−1)αt+βt(1−αˉt−1)αtxt+βtαˉt−1x0=αt−αˉt−1αt+1−αt(1−αˉt−1)αtxt+βtαˉt−1x0 (21)=1−αˉt−1αt(1−αˉt−1)αtxt+βtαˉt−1x0 (22)=1−αˉt(1−αˉt−1)αtxt+βtαˉt−1x0 (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(xt−1−αˉ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−αˉt−1)αtxt+βtαˉt−1αˉt1(xt−1−αˉtz) (24)=1−αˉt(1−αˉt−1)αtxt+βtαt1(xt−1−αˉtz) (25)=(1−αˉt)αt(1−αˉt−1)αtxt+βt(xt−1−αˉtz) (26)=(1−αˉt)αt(1−αˉt−1)αt+βtxt−(1−αˉt)αtβt1−αˉtz (27)=at1(1−αˉt(1−αˉt−1)αt+βtxt−1−αˉtβt1−αˉtz) (28)=at1(1−αˉtαt−αˉt+1−αtxt−1−αˉtβtz) (29)=at1(1−αˉt1−αˉtxt−1−αˉtβtz) (30)=at1(xt−1−αˉ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−αˉt−1)αt(1−αˉt−1)+βt (32)=αt(1−αˉt−1)+βtβt(1−αˉt−1) (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αˉt≈0,所以(33)到(34)公式成立。
如果μ,σ\mu,\sigmaμ,σ表达式已知,则条件概率分布q(xt−1∣xt)=N(μ,σ)q(x_{t-1}|x_{t})=N(\mu,\sigma)q(xt−1∣xt)=N(μ,σ)已知,使得我们从一个随机高斯样本xtx_txt通过循环迭代能求得符合真实数据分布的样本x0x_0x0。
事实上,我们离上诉描述已经很接近了,但在μ\muμ的表达式中,我们存在唯一一个未知量,这就是zzz。在训练时由于策略已知,zzz可以人为是已知量。但在推理阶段,减噪声策略未知,zzz被视为未知量。此时,神经网络出场了。在训练阶段,我们只需训练一个模型用来预测z′z'z′,通过与已知的zzz做损失对比,完成训练后,使用此网络来求得一系列的z′z'z′就能完成整个逆扩散过程。根据论文,模型的输入被定义为xt和tx_t和txt和t,损失函数则可表示为下式:
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 \
xt−1=αt1(xt−1−α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