当前位置: 首页 > 科技观察

Diffusion和StableDiffusion的数学原理和工作原理详解

时间:2023-03-11 23:25:18 科技观察

扩散模型的兴起可以看作是近期AI生成艺术领域取得突破的主要因素。而稳定的扩散模型的开发使我们能够通过单个文本提示轻松创建精美的艺术插图。因此,在本文中,我将解释它们的工作原理。DiffusionModelDiffusion扩散模型的训练可以分为两部分:前向扩散→给图像加噪声。反向扩散过程→去除图像中的噪声。前向扩散过程前向扩散过程逐渐对输入图像x?加入高斯噪声,共T步。这个过程将产生一系列噪声图像样本x?,…,x_T。当T→∞时,最终结果变成了一个完全有噪声的图像,就像是从各向同性高斯分布中采样的一样。但是,我们可以使用封闭形式的公式在特定时间步长t直接对噪声图像进行采样,而不是设计一种算法来迭代地向图像添加噪声。封闭公式封闭形式的采样公式可以通过重新参数化技术获得。有了这个技巧,我们可以将采样图像x?表示为:然后我们可以递归地扩展它以得到封闭形式的公式:其中ε是i.i.d.(独立同分布)标准正态随机变量。使用不同的符号和下标来区分它们很重要,因为它们是独立的,并且它们的值在采样后可能会有所不同。但是上面的公式是如何从第4行跳到第5行的呢?有些人觉得这一步很难理解。下面我将详细说明它是如何工作的:让我们用X和Y表示这两项。它们可以被视为来自两个不同正态分布的样本。即X~N(0,α?(1-α???)I)和Y~N(0,(1-α?)I)。两个正态分布(独立)的随机变量之和也服从正态分布。也就是说,如果Z=X+Y,则Z~N(0,σ2?+σ2?)。所以我们可以将它们合并在一起并重新参数化组合的正态分布。重复这些步骤将得到一个只与输入图像x?相关的公式:现在我们可以使用这个公式在任何时间步直接对x?进行采样,这使得前向过程更快。反向扩散过程与正向过程不同,不能使用q(x???|x?)来反转噪声,因为它很难处理(无法计算)。所以我们需要训练神经网络pθ(x???|x?)来近似q(x???|x?)。近似的pθ(x???|x?)服从均值和方差设置如下的正态分布:损失函数Loss定义为负对数似然:此设置与VAE中的设置非常相似。我们可以优化变分下界,而不是优化损失函数本身。通过优化可计算的下界,我们可以间接优化棘手的损失函数。通过展开,我们发现它可以用以下三项来表示:1.L_T:常数项由于q没有可学习的参数,p只是一个高斯噪声概率,所以在训练过程中这一项是常数,可以忽略不计.2.L???:Stepwisedenoisingitem这一项是比较目标去噪步长q和近似去噪步长pθ。通过以x?为条件,q(x???|x?,x?)变得易于处理。经过一系列推导,上图为q(x???|x?,x?)的平均值μ′?。为了逼近目标去噪步骤q,我们只需要使用神经网络来逼近其均值。所以我们将近似均值μθ设置为与目标均值μ??相同的形式(使用可学习的神经网络εθ):目标均值和近似值之间的比较可以使用均方误差(MSE)来完成:通过实验,通过忽略加权项并简单地将目标噪声和预测噪声与MSE进行比较,可以获得更好的结果。因此,为了近似所需的去噪步骤q,我们只需要使用神经网络εθ来近似噪声ε?。3.L?:Reconstructionterm这是最后一个去噪步骤的重建损失,在训练过程中可以忽略它,因为:它可以使用与L???中相同的神经网络来近似。省略它会导致更好的样本质量和更容易的实施。因此,最终简化的训练目标如下:我们发现在真实变化边界上训练我们的模型比在简化目标上训练产生更好的代码长度,正如预期的那样,但后者产生了最好的样本质量。[2]与在简化目标上训练相比,通过测试在变分边界上训练模型减少了代码长度,但后者产生了最好的样本质量。[2]U-Net模型在每一轮训练中为每个训练样本(图像)随机选择一个时间步长t。对每个图像应用高斯噪声(对应于t)。将时间步长转换为嵌入(向量)。训练过程的伪代码官方训练算法如上所示,下图说明了训练步骤的工作原理:反向扩散我们可以使用上述算法从噪声中生成图像。下图说明了这一点:在最后一步中,学习的平均值μθ(x?,1)被简单地输出而不添加噪声。反向扩散就是我们所说的采样过程,也就是从高斯噪声中提取图像的过程。扩散模型的速度问题扩散(采样)过程迭代地将全尺寸图像馈送到U-Net以获得最终结果。这使得纯扩散模型在扩散步骤总数T和图像大小时非常慢。StableDiffusion就是为了解决这个问题而设计的。稳定扩散StableDiffusion稳定扩散模型的原名是潜扩散模型(LatentDiffusionModel,LDM)。顾名思义,扩散过程发生在潜在空间中。这就是为什么它比纯扩散模型更快的原因。潜在空间首先训练一个自动编码器,该自动编码器学习将图像数据压缩为低维表示。通过使用经过训练的编码器E,可以将全尺寸图像编码为低维潜在数据(压缩数据)。然后使用经过训练的解码器D将潜在数据解码回图像。潜在空间中的扩散图像编码后,在潜在空间中执行正向扩散和反向扩散的过程。正向扩散过程→向潜在数据添加噪声反向扩散过程→从潜在数据调节/调整中去除噪声稳定扩散扩散模型的真正强大之处在于它可以从文本提示中生成图像。这是通过修改内部扩散模型以接受条件输入来完成的。我们通过使用交叉注意机制增强其去噪U-Net,将内部扩散模型转变为条件图像生成器。上图中的开关用于控制不同类型的条件输入:对于文本输入,首先使用语言模型