目录测试过程也叫采样过程,是从噪音\(\mathbf{x}_T\)中慢慢去噪,最终生成图片的过程
1. 扩散模型的测试过程
在论文中,扩散模型的测试过程如下
测试过程第1步
生成噪音\(\mathbf{x}_T\)
测试过程第3步
生成噪音\(\mathbf{z}\)。特别的,当\(t=1\)时,\(\mathbf{z} = 0\)
测试过程第4步
-
目的:根据\(\mathbf{x}_t\),生成去噪后的图片\(\mathbf{x}_{t-1}\)
-
公式讲解:
-
\(\boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\):\(\boldsymbol{\epsilon}_\theta\)是预测噪音的模型,它有两个输入,分别是图片\(\mathbf{x}_t\)和时刻\(t\)
-
\(\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\):
在第二篇文章中,我们知道,在前向过程中,在已知 \(\mathbf{x}_{t-1}\) 的条件下, \(\mathbf{x}_t\) 的概率密度函数 \(q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}\right)\);在已知 \(\mathbf{x}_0\) 的条件下, \(\mathbf{x}_t\) 的概率密度函数 \(q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right)\)。
根据贝叶斯公式,我们可以得到,在已知 \(\mathbf{x}_{t}\) 的条件下, \(\mathbf{x}_{t-1}\) 的概率密度函数\(q(\mathbf{x_{t-1}|\mathbf{x}_t})\)。推导之后,我们可以发现,\(q(\mathbf{x_{t-1}|\mathbf{x}_t})\)也服从正态分布,其方差为常数,均值为$ \frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}\right)\(,其中\)\boldsymbol{\epsilon}\(为从\)\mathbf{x}_0\(到\)\mathbf{x}_t$添加的噪音之和。
我们设:在反向过程中,在已知 \(\mathbf{x}_{t}\) 的条件下, \(\mathbf{x}_{t-1}\) 的概率密度函数\(p_\theta(\mathbf{x_{t-1}|\mathbf{x}_t})\)。
我们想要让反向过程和正向过程尽可能保持一致,因此可以让\(p_\theta(\mathbf{x_{t-1}|\mathbf{x}_t})\)尽可能的接近\(q(\mathbf{x_{t-1}|\mathbf{x}_t})\)。也就是说,我们可以让\(p_\theta(\mathbf{x_{t-1}|\mathbf{x}_t})\)也是正态分布,其方差为常数,均值为\(\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\),其中\(\boldsymbol{\epsilon}_\theta\left(\mathrm{x}_t, t\right)\)是对$$\boldsymbol{\epsilon}$$的预测值
在正态分布\(N(x;\mu,\sigma^2)\)中,当\(x = \mu\)时,概率密度函数取得最大值。
因此,\(\mathbf{x}_{t-1} =\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\)时,\(p_\theta(\mathbf{x_{t-1}|\mathbf{x}_t})\)取得最大值。也就是说,在已知\(\mathbf{x}_t\)的情况下,\(\mathbf{x}_{t-1}\)最有可能取到\(\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\)这个值。
更为详细的推导过程见上一篇文章
-
\(\mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)+\sigma_t \mathbf{z}\)
但是在最终,我们在\(\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\)后面又加上了噪声\(\sigma_t \mathbf{z}\)(其中,\(\sigma_t^2\)为\(p_\theta(\mathbf{x_{t-1}|\mathbf{x}_t})\)的方差)作为\(\mathbf{x}_{t-1}\)的推测值。
为什么这么干呢?因为在真实世界中,会有很多随机扰动,加入噪音的目的就是为了模拟这些扰动,以防止模型过拟合。
经过实验,如果我们令\(\sigma_t = 0\),那么扩散模型是无法生成图片的。
-