概率扩散模型 Probabilistic Diffusion Model

主要参考文献:

[1] Denoising Diffusion Probabilistic Models

[2] Deep Unsupervised Learning using Nonequilibrium Thermodynamics

一、扩散模型

首先确定的是扩散模型是一个生成模型,过程简单来说就是去拟合目标数据的分布,之后根据这个拟合后的分布去生成数据。扩散模型的工作原理是学习由于噪声引起的信息衰减,然后使用学习到的模式来生成图像。 该概念也适用于潜在变量,因为它试图学习噪声分布而不是数据分布。

训练模型的过程:假设我们有N张训练集图片,第一个过程就是将这N张真实图片扩散(diffusion)成N张噪声图,之后可以根据这N张训练整个重建(reverse)的过程。

推理模型的过程:有了已经训练好的reverse过程,我们只需要在高斯分布上进行采样获得高斯噪声,在这个采样获得的噪声上进行翻转,最终可以得到生成的结果。

概率扩散模型 Probabilistic Diffusion Model_第1张图片

基础公式

贝叶斯公式:

P(A|B)=P(B|A)*P(A)/P(B)

P(A,B,C)=P(C|B,A)P(B,A)=P(C|B,A)P(B|A)P(A)

P(B,C|A)=P(B|A)P(C|B,A)

满足A->B->C的马尔可夫链概率:

P(A,B,C)=P(C|B,A)P(A,B)=P(C|B)P(B|A)P(A)

P(B,C|A)=P(B|A)P(C|B,A)

参数重整化:希望从N(\mu , \sigma)中采样,若这个参数是从神经网络中预测出来的,在反向传播的过程中可能存在梯度消失的问题,主要是因为采样的过程是不可导的。为了解决这个问题,我们可以直接从N(0,1)中采样出z,进而得到\sigma * z + \mu,这个过程相当于作了一次仿射变换,进而将随机性转移到常量z上。

二、扩散过程

概率扩散模型 Probabilistic Diffusion Model_第2张图片

 整个扩散过程是在真实图像X_0上不断加入高斯噪声,最终得到目标噪声图X_t。在第t个加噪的过程给定一个常数\beta _t,我们会得到:

X_t = \sqrt{1-\beta_t}X_{t-1}+\sqrt{\beta_t}Z_t, \;\;\;\;\;\; Z_t\sim N(0,I)

设真实图像X_0 服从一个分布q(X),在向前传导的过程中我们不断将一个小的高斯噪声加入到前一张噪声图中,我们会得到某一阶段的分布:

q(X_t|X_{t-1})=N(X_t;\sqrt{1-\beta_t}X_{t-1},\beta_t I)

q(X_{1:T}|X_0)=\prod_{t=1}^{T}q(X_t|X_{t-1})

这个分布属于高斯分布,真实图像X_0随着t的增大逐渐失去可辨别性,当T\rightarrow\infty时,最终图像X_t会成为一个各向独立的高斯噪声图。

我们已经得到了一个从t-1到t过程的扩散公式,进而我们可以以这个公式作为基础进行推广,推广到从0到T过程的扩散公式:

概率扩散模型 Probabilistic Diffusion Model_第3张图片

 三、重建过程

由扩散过程我们可知,从真实图像我们是通过T次加噪的过程获得最终的噪声图,在反向重构图像的过程往往也要求通过T个过程一步一步构建图像。如下图所示,我们将每一阶段得到的噪声图X_t通过UNet得到一个参数重整化后的随机正态分布变量\tilde{Z_t},之后再通过\tilde{Z_t}重建t-1时刻的噪声图X_{t-1},不断重复这个过程得到原始图像。

概率扩散模型 Probabilistic Diffusion Model_第4张图片

那么如何用已知的 \tilde{Z_t}重构出X_{t-1}是整个重构过程的关键。首先重构过程仍然是一个马尔科夫链过程,后验扩散条件概率q(X_{t-1}|X_t,X_0)是可计算的:

q(X_{t-1}|X_t,X_0)=N(X_{t-1};\tilde{\mu }(X_t,X_0),\tilde{\beta}I)

由高斯分布概率密度函数正比于exp(-\frac{1}{2} \frac{(x-\mu )^2}{2 \sigma ^2})

概率扩散模型 Probabilistic Diffusion Model_第5张图片

 最终我们得到其后验条件分布概率的方差是一个参数已知的数,而均值是与X_tX_0有关的数值。由扩散过程我们已知X_0=\frac{1}{\sqrt{\bar{\alpha_t}}}(X_t-\sqrt{1-\bar{\alpha_t}}\tilde{Z_t}),回代到计算均值的公式中我们可以最终得到:

\tilde{\mu _t}(X_t,X_0)=\frac{1}{\sqrt{\alpha_t}}(X_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha_t}}}\tilde{Z_t})

由此,我们获得了最终的后验条件分布概率,以及X_{t-1}重构结果:

q(X_{t-1}|X_t,X_0)=N(\frac{1}{\sqrt{\alpha_t}}(X_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha_t}}}\tilde{Z_t}),\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha_t}}\beta_t)

X_{t-1}=\frac{1}{\sqrt{\alpha_t}}(X_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha_t}}}\tilde{Z_t})+\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha_t}}\beta_t\cdot Z

其中\tilde{Z_t}是UNet学习到的分布,Z\sim N(0,I)的随机采样,添加这样的一个噪声目的的使整个学习过程中增加不确定性,是模拟布朗运动的一个过程。在推理过程中也是同样的一个过程,先通过在高斯分布上采样得到噪声图,再通过学习好的模型,重构出图像。

概率扩散模型 Probabilistic Diffusion Model_第6张图片

四、算法分析

概率扩散模型 Probabilistic Diffusion Model_第7张图片

 DDPM这篇文章中明确给出了训练和推理的算法。

训练过程中,从目标图像域q(X_0)得到真实图像X_0,之后在1到T之间采样出t表示在t轮的运算过程。\epsilon \sim N(0,I)为采样出来的目标值,\epsilon _\theta(X_t,t)为一个训练的过程,这里表示UNet的训练结果,所计算的Loss含义为UNet在第t个过程中训练得出的\tilde{Z_t}与高斯噪声的差值,目的是使UNet尽量去模拟扩散过程中添加的高斯噪声。

推理过程便是在高斯分布中采样出X_T,迭代T轮,逐步计算下一轮的恢复图像,整体和上述重构过程相同。这里需要注意当t=1时无需再加噪声来得到最终清晰图像。

 

 

 

你可能感兴趣的:(计算机视觉)