昇思25天学习打卡营第23天|Diffusion扩散模型

相关知识

Diffusion扩散模型

这是一类生成模型,用于生成高质量的数据样本如图像、音频等。基本思想是通过模拟数据从噪声逐步变为目标数据的过程,来生成新的数据样本。diffusion对图像的处理包括

  • 预定义的正向扩散过程q,将高斯噪声添加到图像中,最终得到纯噪声
  • 学习的反向去噪的扩散过程:训练神经网络从噪声开始逐渐去噪,最终得到实际图像
    t t t 索引的正向和反向过程都发生在某些有限时间步长 T T T(DDPM作者使用 T = 1000 T=1000 T=1000)内。从 t = 0 t=0 t=0开始,在数据分布中采样真实图像 x 0 \mathbf{x}_0 x0,正向过程在每个时间步长 t t t 都从高斯分布中采样一些噪声,再添加到上一个时刻的图像中。
    假定给定一个足够大的 T T T 和一个在每个时间步长添加噪声的良好时间表,
    最终会在 t = T t=T t=T 通过渐进的过程得到所谓的[各向同性的高斯分布]

实现原理

前向过程

这里就是给图片加噪声的过程。前向过程中每个时刻t只和时刻t-1有关。而随着时间步的增大,图像xt就越来越接近纯高斯噪声。
那么,如果我们知道条件概率分布 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} | \mathbf{x}_t) p(xt1xt) ,我们就可以反向运行这个过程:通过采样一些随机高斯噪声 x T \mathbf{x}_T xT,然后逐渐去噪它,最终得到真实分布 x 0 \mathbf{x}_0 x0 中的样本。但是,我们不知道条件概率分布 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} | \mathbf{x}_t) p(xt1xt) 。这很棘手,因为需要知道所有可能图像的分布,才能计算这个条件概率。

逆向过程

为了解决上述问题,我们将利用神经网络来近似(学习)这个条件概率分布 p θ ( x t − 1 ∣ x t ) p_\theta (\mathbf{x}_{t-1} | \mathbf{x}_t) pθ(xt1xt) , 其中 θ \theta θ 是神经网络的参数。前向是加噪的过程,逆向是去噪推理过程,而通过神经网络学习并表示 p θ ( x t − 1 ∣ x t ) p_\theta (\mathbf{x}_{t-1} | \mathbf{x}_t) pθ(xt1xt) 的过程就是Diffusion 逆向去噪的核心。

现在,我们知道了需要一个神经网络来学习逆向过程的(条件)概率分布。我们假设这个反向过程也是高斯的,任何高斯分布都由2个参数定义:

  • μ θ \mu_\theta μθ 参数化的平均值

  • μ θ \mu_\theta μθ 参数化的方差

平均值和方差也取决于噪声水平 t t t ,神经网络需要通过学习来表示这些均值和方差。

  • 注意,DDPM的作者决定保持方差固定,让神经网络只学习(表示)这个条件概率分布的平均值 μ θ \mu_\theta μθ

为了导出一个目标函数来学习反向过程的平均值,作者观察到 q q q p θ p_\theta pθ 的组合可以被视为变分自动编码器(VAE)。因此,变分下界(也称为ELBO)可用于最小化真值数据样本 x 0 \mathbf{x}_0 x0 的似然负对数(有关ELBO的详细信息,请参阅VAE论文(Kingma等人,2013年)),该过程的ELBO是每个时间步长的损失之和 L = L 0 + L 1 + . . . + L T L=L_0+L_1+...+L_T L=L0+L1+...+LT ,其中,每项的损失 L t L_t Lt (除了 L 0 L_0 L0 )实际上是2个高斯分布之间的KL发散,可以明确地写为相对于均值的L2-loss!

如Sohl-Dickstein等人所示,构建Diffusion正向过程的直接结果是我们可以在条件是 x 0 \mathbf{x}_0 x0 (因为高斯和也是高斯)的情况下,在任意噪声水平上采样 x t \mathbf{x}_t xt ,而不需要重复应用 q q q 去采样 x t \mathbf{x}_t xt ,这非常方便。使用

α t : = 1 − β t α ˉ t : = Π s = 1 t α s \\\alpha_t := 1 - \beta_t\\\\\bar{\alpha}t := \Pi_{s=1}^{t} \alpha_s\\ αt:=1βtαˉt:=Πs=1tαs

我们就有

q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(\mathbf{x}_t | \mathbf{x}_0) = \cal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1- \bar{\alpha}_t) \mathbf{I}) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)

这意味着我们可以采样高斯噪声并适当地缩放它,然后将其添加到 x 0 \mathbf{x}_0 x0 中,直接获得 x t \mathbf{x}_t x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值