今天我们要学习的内容是Diffusion扩散模型
关于扩散模型(Diffusion Models)有很多种理解
什么是Diffusion Model?
我们将Diffusion与其他生成模型(如Normalizing Flows、GAN或VAE)进行比较,它并没有那么复杂,它们都将噪声从一些简单分布转换为数据样本,Diffusion也是从纯噪声开始通过一个神经网络学习逐步去噪,最终得到一个实际图像。
Diffusion对于图像的处理包括以下两个过程:
-
我们选择的固定(或预定义)正向扩散过程 𝑞 :它逐渐将高斯噪声添加到图像中,直到最终得到纯噪声
-
一个学习的反向去噪的扩散过程 𝑝𝜃:通过训练神经网络从纯噪声开始逐渐对图像去噪,直到最终得到一个实际的图像
扩散模型实现原理
Diffusion 前向过程
前向过程,即向图片上加噪声的过程。虽然这个步骤无法做到图片生成,但这是理解diffusion model以及构建训练样本至关重要的一步。 首先我们需要一个可控的损失函数,并运用神经网络对其进行优化。
如图
Diffusion 逆向过程
为了解决上述问题,我们将利用神经网络来近似(学习)这个条件概率分布 𝑝𝜃(𝐱𝑡−1|𝐱𝑡)(−1|) , 其中 𝜃是神经网络的参数。
如图
换句话说:
-
我们从真实未知和可能复杂的数据分布中随机抽取一个样本 𝑞(𝐱0)(0)
-
我们均匀地采样11和𝑇之间的噪声水平𝑡(即,随机时间步长)
-
我们从高斯分布中采样一些噪声,并使用上面定义的属性在 𝑡时间步上破坏输入
-
神经网络被训练以基于损坏的图像 𝐱𝑡 来预测这种噪声,即基于已知的时间表 𝐱𝑡 上施加的噪声
实际上,所有这些都是在批数据上使用随机梯度下降来优化神经网络完成的。
接下来我们了解一下U-Net神经网络预测噪声
文本末尾附上打卡时间