Diffusion

生成模型目前有四个流派,分别是生成对抗网络(Generative Adversarial Models,GAN),变分自编码器(Variance Auto-Encoder,VAE),标准化流模型(Normalization Flow, NF)以及这里要介绍的扩散模型(Diffusion Models,DM)。


扩散模型的基本思想是通过迭代前向扩散过程,系统地、缓慢地破坏数据分布中的结构。然后,我们学习反向扩散过程,恢复数据结构,产生高度灵活且易于处理的数据生成模型。扩散模型的算法理论基础是通过变分推断(Variational Inference)训练参数化的马尔可夫链(Markov Chain)。生成模型的本质是通过一个已知的概率模型来拟合输入样本,得到一个带参数的分布,使得生成的数据和训练数据的分布尽可能相似。

主流的生成模型主要有上述4种:

1. GAN:通过生成器和辨别器的博弈,让生成器能生成足够以假乱真的图像;

2. VAE:由编码器和解码器组成,编码器将输入图像编码为特征向量,并学习特征的高斯分布的均值和方差;解码器根据特征向量生成图像,侧重于生成能力。

3. FM: 首先将输入图像提取特征,然后使用一系列逆变换将特征转化为特定的目标分布。

4. Diffusion: 前向过程一步步像输入图像加入噪声,反向过程预测每一步加入的噪声,通过去掉每一步添加的噪声,逐步恢复得到无噪声图像。

由于Xt-1符合高斯分布,噪声也符合高斯分布,因此xt也符合高斯分布。每一步先生成高斯分布噪声\epsilon,然后由\sqrt{\beta _{t}}控制每一步添加的噪声量,以及\sqrt{1-^{\beta _{t}}}d控制使用x_{t-1}的量,即:

\alpha _{t}=1-\beta _{t}

则根据正态分布的可加性得到xt和x0的关系:

由于高斯分布的概率密度函数形式是 ,其中μ是均值,σ是标准差。因此,上面几个分布可以写成如下的概率形式:

展开得

化简得:

P(xt−1​∣xt​,x0​) =

因此:

目的是通过xt求xt-1然后求xt-2,直到求出x0。但是上式包含待求的x0,可通过下式进行转换。

因此可得x0,,代人上面式子可得

上式中只有从x 0到xt加入的噪声ϵ是未知的。从上式可以知道,给定xt,只要知道前向过程从xt-1到xt加入的噪声ϵ,就可以在反向过程根据xt计算出xt-1的概率分布p(xt-1|xt,x0)。

上式的均值部分可以进一步简化如下:

因此可得

因此只需要使用神经网络,输入xt 时刻的图像,预测此图像相对于x0加入的噪声ϵ。

反向过程的训练流程如下:

Step1: 在神经网络中,输入xt图像,训练网络预测此图像相对于x0(因为前面推到的是xt与x0的关系)加入的噪声ϵ 

​ Step2: 将噪声ϵ 代入到xt−1的概率密度函数P ( x t − 1 ∣ x t , x 0 ) 

​ Step3: 从x t − 1 的概率密度函数P ( x t − 1 ∣ x t , x 0 ) 中随机采样,得到x t − 1  (即t-1时刻对应的图像),这个采样过程如下:

​ Step4: 将x t − 1作为神经网络的输入,代入到Step1中,循环Step1 ~ Step3,直到得到x0

噪声的分布是 ,但是由于 非常接近0,因此有很多代码使用N(0, 1)代替。

扩散模型中最重要的思想根基是马尔可夫链,它的一个关键性质是平稳性。即一个概率随时间变化,那么再马尔可夫链的作用下,它会趋向于某种平稳分布,时间越长,分布越平稳。在扩散过程中不断添加噪声,直到图像变成纯噪声。添加的噪声符合马尔科夫链,即每个时间步仅取决于前一个时间步。马尔可夫性质定义如下:

P(Xₙ = iₙ | Xₙ₋₁)

任意满足上述条件的随机变量序列X₀,X₁,X2,…,Xₙ都可以被视为马尔可夫链。使用马尔科夫链这个假设使得学习添加的噪声变得容易处理。

扩散模型的流程为:首先不断向图像添加噪声,直到只剩下纯粹的噪声。然后我们训练一个神经网络来消除噪音。因此扩散模型由两个阶段组成:

  1. 前向扩散过程
  2. 反向逆扩散过程

前向扩散过程是数据结构被破坏的过程。这是通过向图像中添加从正态分布采样的噪声来完成的,最终图像将收敛到纯噪声 z ~ N(0, 1)。每个时间步添加的噪声量不是恒定的。使用时间表来缩放噪声的平均值和方差。 OpenAI 的原始 DDPM 论文应用了线性调度。但 OpenAI 的研究人员发现线性调度的噪声会导致许多冗余的扩散步骤。因此,在他们的《改进的去噪扩散概率模型》论文中,他们实现了自己的余弦计划。

前向过程定义为 q(xₜ|xₜ₋₁)。该函数只是在每个时间步 t 添加噪声。

训练过程

训练过程每次都是直接使用噪声ϵ根据x0生成xt,反向过程也是预测xt相对于x0添加的噪声。

具体流程如下

由于diffusion的每一个step对应的网络都相同且共享参数,因此需要像transformer一样使用位置编码,让模型知道当前是哪个step。DDPM采用了正弦位置嵌入对时间t进行了编码,这使得模型在预测噪声时知道它预测的是哪个时间步添加的噪声。此外,U-Net中的降采样和上采样操作,DDPM分别选择了步长为2的卷积以及反卷积。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值