共计 3565 个字符,预计需要花费 9 分钟才能阅读完成。
扩散模型的衰亡能够被视为人工智能生成艺术畛域最近获得冲破的次要因素。而稳固扩散模型的倒退使得咱们能够通过一个文本提醒轻松地创立美好的艺术插图。所以在本文中,我将解释它们是如何工作的。
扩散模型 Diffusion
扩散模型的训练能够分为两局部:
- 正向扩散→在图像中增加噪声。
- 反向扩散过程→去除图像中的噪声。
正向扩散过程
正向扩散过程逐渐对输出图像 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, σ²ₓ+σ²ᵧ)。因而咱们能够将它们合并在一起并以从新以参数化的模式示意合并后的正态分布。
反复这些步骤将为失去只与输出图像 x₀ 相干的公式:
当初咱们能够应用这个公式在任何工夫步骤间接对 xₜ进行采样,这使得向前的过程更快。
反向扩散过程
与正向过程不同,不能应用 q(xₜ₋₁|xₜ)来反转噪声,因为它是难以解决的 (无奈计算)。所以咱们须要训练神经网络 pθ(xₜ₋₁|xₜ) 来近似 q(xₜ₋₁|xₜ)。近似 pθ(xₜ₋₁|xₜ)遵从正态分布,其均值和方差设置如下:
损失函数
损失定义为负对数似然:
这个设置与 VAE 中的设置十分类似。咱们能够优化变分的下界,而不是优化损失函数自身。
通过优化一个可计算的下界,咱们能够间接优化不可解决的损失函数。
通过开展,咱们发现它能够用以下三项示意:
1、L_T:常数项
因为 q 没有可学习的参数,p 只是一个高斯噪声概率,因而这一项在训练期间将是一个常数,因而能够疏忽。
2、Lₜ₋₁:逐渐去噪项
这一项是比拟指标去噪步骤 q 和近似去噪步骤 pθ。通过以 x₀ 为条件,q(xₜ₋₁|xₜ, x₀) 变得易于解决。
通过一系列推导,上图为 q(xₜ₋₁|xₜ,x₀)的平均值 μ′ₜ。为了近似指标去噪步骤 q,咱们只须要应用神经网络近似其均值。所以咱们将近似均值 μθ 设置为与指标均值 μ̃ₜ 雷同的模式(应用可学习的神经网络 εθ):
指标均值和近似值之间的比拟能够应用均方误差 (MSE) 进行:
通过试验,通过疏忽加权项并简略地将指标噪声和预测噪声与 MSE 进行比拟,能够取得更好的后果。所以为了迫近所需的去噪步骤 q,咱们只须要应用神经网络 εθ 来迫近噪声 εₜ。
3、L₀:重构项
这是最初一步去噪的重建损失,在训练过程中能够疏忽,因为:
- 能够应用 Lₜ₋₁ 中的雷同神经网络对其进行近似。
- 疏忽它会使样本品质更好,并更易于施行。
所以最终简化的训练指标如下:
咱们发现在实在变分界上训练咱们的模型比在简化指标上训练产生更好的码长,正如预期的那样,但后者产生了最好的样本品质。[2]
通过测试在变分边界上训练模型比在简化指标上训练会缩小代码的长度,但后者产生最好的样本品质。[2]
U-Net 模型
在每一个训练轮次
- 每个训练样本 (图像) 随机抉择一个工夫步长 t。
- 对每个图像利用高斯噪声(对应于 t)。
- 将工夫步长转换为嵌入(向量)。
训练过程的伪代码
官网的训练算法如上所示,下图是训练步骤如何工作的阐明:
反向扩散
咱们能够应用上述算法从噪声中生成图像。上面的图表说明了这一点:
在最初一步中,只是输入学习的平均值 μθ(x₁,1),而没有增加噪声。反向扩散就是咱们说的采样过程,也就是从高斯噪声中绘制图像的过程。
扩散模型的速度问题
扩散 (采样) 过程会迭代地向 U -Net 提供残缺尺寸的图像取得最终后果。这使得纯扩散模型在总扩散步数 T 和图像大小较大时极其迟缓。
稳固扩散就是为了解决这一问题而设计的。
稳固扩散 Stable Diffusion
稳固扩散模型的原名是潜扩散模型(Latent Diffusion Model, LDM)。正如它的名字所指出的那样,扩散过程产生在潜在空间中。这就是为什么它比纯扩散模型更快。
潜在空间
首先训练一个自编码器,学习将图像数据压缩为低维示意。
通过应用训练过的编码器 E,能够将全尺寸图像编码为低维潜在数据(压缩数据)。而后通过应用经过训练的解码器 D,将潜在数据解码回图像。
潜在空间的扩散
将图像编码后,在潜在空间中进行正向扩散和反向扩散过程。
- 正向扩散过程→向潜在数据中增加噪声
- 反向扩散过程→从潜在数据中去除噪声
条件作用 / 调节
稳固扩散模型的真正弱小之处在于它能够从文本提醒生成图像。这是通过批改外部扩散模型来承受条件输出来实现的。
通过应用穿插留神机制加强其去噪 U-Net,将外部扩散模型转变为条件图像生成器。
上图中的开关用于在不同类型的调节输出之间进行管制:
- 对于文本输出,首先应用语言模型 𝜏θ(例如 BERT、CLIP)将它们转换为嵌入(向量),而后通过(多头)Attention(Q, K, V) 映射到 U-Net 层。
- 对于其余空间对齐的输出(例如语义映射、图像、修复),能够应用连贯来实现调节。
训练
训练指标 (损失函数) 与纯扩散模型中的训练指标十分类似。惟一的变动是:
- 输出潜在数据 zₜ而不是图像 xₜ。
- U-Net 减少条件输出𝜏θ(y)。
采样
因为潜在数据的大小比原始图像小得多,所以去噪过程会快得多。
架构的比拟
比拟纯扩散模型和稳固扩散模型 (潜在扩散模型) 的整体架构。
Diffusion Model
Stable Diffusion (Latent Diffusion Model)
疾速总结一下:
- 扩散模型分为正向扩散和反向扩散两局部。
- 正扩散能够用关闭模式的公式计算。
- 反向扩散能够用训练好的神经网络来实现。
- 为了近似所需的去噪步骤 q,咱们只须要应用神经网络 εθ 近似噪声 εₜ。
- 在简化损失函数上进行训练能够取得更好的样本品质。
- 稳固扩散 (潜扩散模型) 是在潜空间中进行扩散过程,因而比纯扩散模型快得多。
- 纯扩散模型被批改为承受条件输出,如文本、图像、语义等。
援用
[1] K. Roose,“An a.i.-generated picture won an art prize. artists aren’t happy.,”The New York Times, 02-Sep-2022.
[2] J. Ho, A. Jain, and P. Abbeel,“Denoising Diffusion Probabilistic models,”arXiv.org, 16-Dec-2020.
[3] N. A. Sergios Karagiannakos,“How diffusion models work: The math from scratch,”AI Summer, 29-Sep-2022.
[4] L. Weng,“What are diffusion models?,”Lil’Log, 11-Jul-2021.
[5] A. Seff,“What are diffusion models?,”YouTube, 20-Apr-2022.
[6] Outlier,“Diffusion models | paper explanation | math explained,”YouTube, 06-Jun-2022.
[7] R. Rombach, A. Blattmann, D. Lorenz, P. Esser, and B. Ommer,“High-resolution image synthesis with Latent Diffusion Models,”arXiv.org, 13-Apr-2022.
[8] J. Alammar,“The Illustrated Stable Diffusion,”The Illustrated Stable Diffusion — Jay Alammar — Visualizing machine learning one concept at a time.
[9] A. Gordić,“Stable diffusion: High-resolution image synthesis with latent diffusion models | ML coding series,”YouTube, 01-Sep-2022.
https://avoid.overfit.cn/post/d46c23ece6024970af77acae1c36f8b8
作者:Steins