Generative AI 新世界 | 文生图(Text-to-Image)领域论文解读

机器学习
大语言模型
生成式人工智能
0
0
在上期文章,我们开始探讨生成式 AI(Generative AI)的另一个进步迅速的领域:[文生图(Text-to-Image)领域](https://dev.amazoncloud.cn/column/article/645c5c3f4b2abb2a7506e229)。概述了 CLIP、OpenCLIP、扩散模型、DALL-E-2 模型、Stable Diffusion 模型等文生图(Text-to-Image)的基本内容。 本期内容将进行文生图(Text-to-Image)方向的主要论文解读。 # 变分自编码器 VAE (Variational Auto-Encoder) 论文解读 ## 自编码器 (Auto-Encoder) 架构 自编码器(Auto-Encoder)是一种无监督学习的神经网络,用于学习输入数据的压缩表示。具体而言,可以将其分为两个部分: **编码器**:负责将数据压缩为低维表示; **解码器**:负责将低维表示恢复为原始数据。 ![e23c6d711236bbd6863c55a2f85089e8.png](https://dev-media.amazoncloud.cn/f90a585ae0d14c8f97e9ec64a37d514a_e23c6d711236bbd6863c55a2f85089e8.png "e23c6d711236bbd6863c55a2f85089e8.png") Source:https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798?trk=cndc-detail 读到这里,可能有读者会问:既然解码器只需要输入某些低维向量,就能够输出高维的图片数据;那我们是否可以把解码器模型直接当做生成模型呢?比如:在低维空间中随机生成某些向量,再送给解码器来生成图片。 不这样做的原因是,**绝大多数随机生成是无意义的噪声,由于没有显性的对分布进行建模,我们并不知道那些向量能够生成有用的图片**;我们用来训练的数据集通常是有限的,因此只会具有有限响应。而整个低维空间很大,如果只在这个空间上随机采样的话,恰好采样到能够生成有用图片的概率不高。 而 VAE(自变分编码器,Variational Auto-Encoders)就是在 AE 的基础上,显性对分布进行建模,帮助自编码器成为一个合格甚至优秀的生成模型。 ## 降维(Dimensionality Reduction)和潜在空间(latent space) 上一节中我们谈到了一个降维(Dimensionality Reduction)的概念,这个概念在所有生成式 AI 领域都非常重要。在本节中我会做一个通俗的解释。 在机器学习中,降维是减少描述某些数据的特征数量的过程。这种减少可以通过选择(仅保留部分现有特征)或提取(减少基于旧特征创建的新要素数量)来实现,在许多需要低维数据的情况下(数据可视化、数据存储、大量计算等)很有用。 首先,让我们称编码器为从 “旧特征” 表示形式(通过选择或提取)生成 “新特征” 表示的过程,并对反向过程进行解码。然后,降维可以解释为数据压缩,其中编码器压缩数据(**从初始空间到编码空间,也称为潜在空间,即 latent space**),而解码器则对其进行解压缩。当然,根据初始数据分布、潜在空间维度和编码器定义,这种压缩可能会有损失,这意味着部分信息在编码过程中会丢失,在解码时无法恢复。 ![6fc82bac2183241bcb317c22be417149.png](https://dev-media.amazoncloud.cn/828d8f43ff6548c3884cc515e241c7cf_6fc82bac2183241bcb317c22be417149.png "6fc82bac2183241bcb317c22be417149.png") Source: https://theaisummer.com/latent-variable-models/?trk=cndc-detail 而**自编码器(Auto-Encoder)使用了神经网络来降低维度**。自动编码器的总体思路非常简单,包括将编码器和解码器设置为神经网络,并使用迭代优化过程学习最佳的编码解码方案。因此,**在每次迭代中,我们向自动编码器架构(编码器后面是解码器)提供一些数据,将编码解码后的输出与初始数据进行比较,然后通过架构反向传播错误以更新网络的权重。** 整个自动编码器架构确保了只有信息的主要结构部分才能通过和重建。从总体框架来看,考虑的编码器家族 E 由编码器网络架构定义,考虑的解码器 D 族由解码器网络架构定义;而以最大限度地减少重构误差,是通过对这些网络的参数进行梯度下降(Gradient Decent)来完成的。如下图所示: ![8ff737fddb1bec8b08888be28fee2f97.png](https://dev-media.amazoncloud.cn/284ed79d9b0d4e769ed507f636a5b585_8ff737fddb1bec8b08888be28fee2f97.png "8ff737fddb1bec8b08888be28fee2f97.png") Source:https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73?trk=cndc-detail 这种自动编码器结构,在现实世界中会面临两个主要挑战。 首先,在没有重建损失的情况下进行重要的降维往往是有代价的,潜在空间中缺乏可解释和可利用的结构,或者更简单来说,缺乏规律性;其次,在大多数情况下,降维的最终目的不仅是减少数据的维度数,同时也将数据结构信息的大部分保留在简化表示中。 基于这两个原因,在现实世界中我们必须根据降维的最终目的,仔细控制和调整潜在空间的尺寸和自动编码器(定义压缩程度和质量)的 “深度”。如下图所示: ![cc0e5fab49c8ef4e5b65d40373a6333b.png](https://dev-media.amazoncloud.cn/fea92d22c9ca4030898c1c60d85f26b5_cc0e5fab49c8ef4e5b65d40373a6333b.png "cc0e5fab49c8ef4e5b65d40373a6333b.png") Source:https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73?trk=cndc-detail ## 变分自编码器 Variational Auto-Encoder 铺垫完前面的知识基础,终于可以来探究 VAE 这篇论文的精华了。 ![c339e2801eed788910fd4cb0f5851844.png](https://dev-media.amazoncloud.cn/90b98532033d47d2a7141d3c1ce70db0_c339e2801eed788910fd4cb0f5851844.png "c339e2801eed788910fd4cb0f5851844.png") Source: https://arxiv.org/pdf/1312.6114.pdf?trk=cndc-detail 到目前为止,我们已经讨论了降维问题,并介绍了自动编码器,这些编码器是可以通过梯度下降进行训练的编码器-解码器架构。现在让我们把内容生成问题的关联起来,看看自动编码器在解决这个问题时的局限性,然后请变分自编码器(Variational Auto-Encoder)闪亮登场。 关于内容生成和自动编码器的结合,我们可能会想到,如果潜在空间有足够规则,我们是否可以从潜在空间中随机取点解码以获得新的内容?如下图所示: ![83b4300daafc7007407dca7de2076b26.png](https://dev-media.amazoncloud.cn/21c9a41768d244ce9f644d7d201fdb12_83b4300daafc7007407dca7de2076b26.png "83b4300daafc7007407dca7de2076b26.png") Source:https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73?trk=cndc-detail #### 变分自编码器的定义 因此,为了能够将自动编码器的解码器用于生成目的,我们必须确保潜在空间足够规律。获得这种规律性的一个可能的解决方案是在训练过程中引入明确的正则化。**变分自动编码器可以定义为自动编码器,其训练经过正则化,以避免过度拟合,并确保潜在空间具有良好的特性,从而实现生成过程**。 就像标准的自动编码器一样,变分自动编码器是一种由编码器和解码器组成的架构,经过训练可以最大限度地减少编码解码的数据和初始数据之间的重建错误。但是,为了对潜在空间进行一些正则化,我们对编码-解码过程进行了细微的修改:**我们没有将输入编码为单点,而是将其编码为潜在空间上的分布**。然后按如下方式训练模型: 1. 输入被编码为在潜在空间上的分布 2. 潜在空间中的一个点是从该分布中采样的 3. 对采样点进行解码,可以计算出重构误差 4. 重构误差通过网络反向传播 如下图所示: ![31611ae95034966dcb688a64455f1d95.png](https://dev-media.amazoncloud.cn/77a704288a2a4ee29791aa6c55e6116c_31611ae95034966dcb688a64455f1d95.png "31611ae95034966dcb688a64455f1d95.png") Source:https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73?trk=cndc-detail 实际上,选择编码分布为正态分布,这样就可以训练编码器返回描述这些高斯分布的均值和协方差矩阵。之所以将输入编码为具有一定方差的分布而不是单点分布,是因为它可以非常自然地表达潜在空间正则化。通过这种方式,确保了潜在空间的局部正则化和全局正则化(方差控制局部正则化,均值控制全局正则化)。 因此,训练 VAE 时最小化的损失函数由 “重构项”(位于最后一层)和 “正则化”(位于潜在层)组成,后者倾向于通过使编码器返回的分布接近标准正态分布来规范潜在空间的组织。该正则化表示为返回分布和标准高斯分布之间的 KL 散度(Kulback-Leibler Divergence),由于两个高斯分布之间的 KL 散度具有封闭形式,可以直接用两个分布的均值和协方差矩阵表示。如下图所示: ![5eb05ba232a70b9cf18c1a36c55445d7.png](https://dev-media.amazoncloud.cn/c8e21470960848c5b656868851c6d543_5eb05ba232a70b9cf18c1a36c55445d7.png "5eb05ba232a70b9cf18c1a36c55445d7.png") Source:https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73?trk=cndc-detail 关于 VAE 我个人的理解是:VAE 架构的核心是两个 Encoder,一个用来计算均值,一个用来计算方差;这个均值和方差,VAE 架构会用神经网络来计算。 VAE 本质上就是在我们常规的自编码器的基础上,**对 Encoder 的结果(在 VAE 中对应着计算均值的网络)加上了“高斯噪声”,使得结果 Decoder 能够对噪声有鲁棒性**;而额外的 KL loss(目的是让均值为 0,方差为 1),事实上就是相当于对 Encoder 的一个正则项,希望 Encoder 出来的东西均有零均值。 **另外一个 Encoder(对应着计算方差的网络)用来动态调节噪声强度**。当 Decoder 还没有训练好时(重构误差远大于 KL loss,KL 是 Kullback-Leibler 的缩写,它作为经典函数用来度量概率分布相似度的指标),就会适当降低噪声(KL loss 增加),使得拟合更容易(重构误差开始下降);反之,如果 Decoder 训练得还不错时(重构误差小于 KL loss),这时噪声就会增加(KL loss 减少),使得拟合更困难(重构误差开始增加),推动 Decoder 想办法提高它的生成能力。 这个本质,在 VAE 的论文中它用了一个精妙的数学公式来做了阐述,如下论文截图: ![af7fb5211fdced94ea614dc8de7acab4.png](https://dev-media.amazoncloud.cn/16d43125f72340068724dce81213c3ee_af7fb5211fdced94ea614dc8de7acab4.png "af7fb5211fdced94ea614dc8de7acab4.png") Source: https://arxiv.org/pdf/1312.6114.pdf?trk=cndc-detail ## VAE 论文的观点 VAE 这篇论文的主要观点有: - 降维是减少描述某些数据的特征数量的过程(要么仅选择初始特征的子集,要么将它们合并为减少数量的新要素),因此,可以将其视为编码过程 - 自动编码器是由编码器和解码器组成的神经网络架构,编码器和解码器构成了数据穿越的瓶颈,并且经过训练,可以在编码-解码过程中丢失最少量的信息(通过梯度下降迭代进行训练,目的是减少重建错误) - 由于过度拟合,自动编码器的潜在空间可能非常不规则(潜在空间中的近点可以提供截然不同的解码数据,潜在空间的某些点解码后可能会提供毫无意义的内容);而且我们无法真正定义一个生成过程,该过程仅包括从潜在空间采样一个点并使其通过解码器获得新数据 - 变分自动编码器 (VAE) 是自动编码器,**它通过使编码器返回潜在空间上的分布而不是单点的分布,并在损失函数中添加针对该返回分布的正则化项来解决潜在空间不规则性问题,以确保更好地组织潜在空间** - 假设使用简单的底层概率模型来描述我们的数据,则可以特别使用变分推理(variational inference)的统计技术(因此被命名为变分自动编码器)谨慎地推导出由重构项和正则化项组成的 VAE 的损失函数 # 扩散模型(Diffusion Models)系列论文解读 在扩散模型成为文生图领域的主流模型之前,曾经出现过三种类型的生成模型。它们是: - GAN(Generative Adversarial Network) - VAE (Variational Auto-Encode) - 基于流的模型(Flow-based models) 这些模型在生成高质量样本方面都取得过巨大成功,但每个样本都有其自身的局限性。众所周知,由于其对抗训练性质,GAN 模型的训练可能不稳定,生成多样性较低;VAE 依赖于++代理损失(Surrogate Loss)函数++;而流模型必须使用专门的架构来构造可逆变换。 - 代理损失(Surrogate Loss)函数:https://baike.baidu.com/item/%E4%BB%A3%E7%90%86%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0/22787203?trk=cndc-detail 扩散模型(Diffusion Models)受到非平衡热力学的启发。他们定义了马尔可夫扩散链,以缓慢地向数据添加随机噪声,然后学会逆向扩散过程,从噪声中构造出所需的数据样本。与 VAE 或基于流的模型不同,扩散模型是通过固定的过程学习的,潜在变量(Latent Variable)具有高维度(与原始数据的维度相同)。如下图所示: ![88e8703cf3aa60f5f92440499803701f.png](https://dev-media.amazoncloud.cn/bc23d7045cf74931ae3bfddcc3cf1289_88e8703cf3aa60f5f92440499803701f.png "88e8703cf3aa60f5f92440499803701f.png") Source: https://lilianweng.github.io/posts/2021-07-11-diffusion-models/?trk=cndc-detail 而扩散模型的重要贡献之一就是:**在训练的过程中(例如 DDPM 的训练过程),通过噪声估计模型 $ϵ_θ (x_t,t)$ 来预测真实噪声,以最小化估计噪声与真实噪声之间的差距**。后面我们会详细阐述这一贡献。 ## 扩散模型概述 基于扩散生成模型的主要几篇论文,其思想都比较相似,包括扩散概率模型(++Sohl-Dickstein 等人,2015 年++)、噪声条件评分网络(NCSN;++Yang & Ermon,2019 年++)和去噪扩散概率模型(DDPM;++Ho 等人,2020 年++)。 - Sohl-Dickstein 等人,2015 年: https://arxiv.org/abs/1503.03585?trk=cndc-detail - Yang & Ermon,2019 年: https://arxiv.org/abs/1907.05600?trk=cndc-detail - Ho 等人,2020 年: https://arxiv.org/abs/2006.11239?trk=cndc-detail ### 1. 正向扩散过程 Forward diffusion process 给定从真实数据分布中采样的数据点 $x_0∼q(x)$,让我们定义一个正向扩散过程。在该过程中,我们在步骤 T 时添加少量的高斯噪声到样本中,以产生一系列嘈杂的样本 $x_1,…,x_T$, 其步长由方差计划控制 ${β_t∈(0,1)}_(t=1)^T$ ![b03cd48298a84fc368df847762edf929.jpg](https://dev-media.amazoncloud.cn/a9c2d3b38e2b412fb251f1d35f27ec01_b03cd48298a84fc368df847762edf929.jpg "b03cd48298a84fc368df847762edf929.jpg") 数据样本 $x_0$ 随着步骤 t 变大,逐渐失去其显著特征。当 T→∞ 时,$x_T$ 等同于各向同性高斯分布。如下图所示: ![0cdac52901cb4ec4c2b2bd4fa36dd27e.png](https://dev-media.amazoncloud.cn/d38938baafa149499334eeb2a1eb05d3_0cdac52901cb4ec4c2b2bd4fa36dd27e.png "0cdac52901cb4ec4c2b2bd4fa36dd27e.png") The Markov chain of forward (reverse) diffusion process of generating a sample by slowly adding (removing) noise. (Image source: Ho et al. 2020 with a few additional annotations) 正向扩散和逆扩散过程都是++马尔可夫过程++,唯一的区别就是: **正向扩散过程**里每一个条件概率的高斯分布的均值和方差都是已经确定的(依赖于 $β_t$ 和 $x_0$ ),而**逆扩散过程**里面的均值和方差需要通过神经网络学出来。 - 马尔可夫过程: https://zhuanlan.zhihu.com/p/426290103?trk=cndc-detail 上述过程的还有一个不错的特性是:可以使用重新参数化技巧(Reparameterised trick)以封闭形式对任意时间步骤 $x_t$ 进行采样,如下图所示: ![aa035fbb857fc3258668eff55cc0902f.png](https://dev-media.amazoncloud.cn/054e32bf93ab421c8e10c9a986c475f6_aa035fbb857fc3258668eff55cc0902f.png "aa035fbb857fc3258668eff55cc0902f.png") Illustration of how the reparameterization trick makes the � sampling process trainable.(Image source: Slide 12 in Kingma’s NIPS 2015 workshop talk) 重新参数化技巧也适用于其他类型的分布,而不仅仅是高斯分布。在多变量高斯的情况下,通过使用如上图描述的重新参数化技巧,以及学习分布的均值 μ 和方差 σ 来使模型可训练,而随机性在随机变量 ∈~Ν(0,Ι) 中体现。下图就是使用多变量高斯假设的变分自动编码器模型示意图,这个变分自动编码器模型,我在前一章里曾详细探讨过。 ![d862ff66d2a74c76ca126a76e4cfea21.png](https://dev-media.amazoncloud.cn/4cf7f50ce470423fb2d8e60d1c98688f_d862ff66d2a74c76ca126a76e4cfea21.png "d862ff66d2a74c76ca126a76e4cfea21.png") Source: https://lilianweng.github.io/posts/2018-08-12-vae/#reparameterization-trick?trk=cndc-detail 正向扩散过程的数学推导过程,我就不在这个篇幅里详细展开了,有兴趣的同学可以参考以下文章的 “Forward diffusion process” 这个小节的内容: https://lilianweng.github.io/posts/2021-07-11-diffusion-models/?trk=cndc-detail 此处仅做小结: 与标准随机梯度下降(SGD)的方法相比,扩散模型中参考了随机梯度 Langevin 动力学(stochastic gradient Langevin dynamics)的方法,**该方法可以在参数更新中注入高斯噪声,以避免崩溃为局部最小值**。 ### 2. 反向扩散过程 Reverse diffusion process 如果能逆转上述过程并从 $q(x_(t-1) |x_t)$ 中取样,就能够从高斯噪声输入 $x_T~Ν(0,Ι)$ 中重新创建真实样本。请注意,如果 $β_t$ 足够小,$q(x_(t-1) |x_t)$ 也将是高斯分布。但是,由于无法轻易估算出 $q(x_(t-1) |x_t)$ ,因为估算它需要使用整个数据集,如下图所示: ![0cdac52901cb4ec4c2b2bd4fa36dd27e.png](https://dev-media.amazoncloud.cn/779d4e2615b24d4ca529b598730078a4_0cdac52901cb4ec4c2b2bd4fa36dd27e.png "0cdac52901cb4ec4c2b2bd4fa36dd27e.png") Image source: ++Ho et al. 2020++ with a few additional annotations 因此需要训练一个模型 $ρ_θ$,来近似出这些条件概率,以运行反向扩散过程: ![4bfba43b729ca0920536e6a155b547ee.jpg](https://dev-media.amazoncloud.cn/9e24a4a692834b928eb761d7b45485a0_4bfba43b729ca0920536e6a155b547ee.jpg "4bfba43b729ca0920536e6a155b547ee.jpg") 下图为 “++Sohl-Dickstein et al., 2015++” 论文中,训练扩散模型以建模二维瑞士轧辊数据的示例。 - Sohl-Dickstein et al., 2015 https://arxiv.org/abs/1503.03585?trk=cndc-detail ![cd9c9a9494a679f6736cbbe2f4a2ecc1.png](https://dev-media.amazoncloud.cn/1fa30dbf60224aff9afda4ee445882d6_cd9c9a9494a679f6736cbbe2f4a2ecc1.png "cd9c9a9494a679f6736cbbe2f4a2ecc1.png") Image source: ++Sohl-Dickstein et al., 2015++ 第一行显示了从正向轨迹 $q(x_(0:T))$ 开始的时间片段。数据分布从左侧经历高斯扩散,在右侧高斯扩散逐渐将其转换为**特征协方差高斯分布(identity-covariance Gaussian)。** 中间一行显示了经过训练的反向轨迹 ρθ(x0:T) 的相应时间片段。特征协方差高斯分布(右)通过学到的均值和协方差函数经历高斯扩散过程,并逐渐转换还原回原始数据分布(左)。 最后一行显示了相同反向扩散过程的漂移项 $μ_θ(x_t,t)—x_t$ 的情况。 ### 3. DDPM 论文和参数化 $L_t$ 如前所述,我们需要学习一个神经网络来近似逆向扩散过程中的条件概率分布: ![c5d9e83efbb40ff14eae6a82bf63ed1b.jpg](https://dev-media.amazoncloud.cn/08c8b80df0c54d1794676c08352a08e5_c5d9e83efbb40ff14eae6a82bf63ed1b.jpg "c5d9e83efbb40ff14eae6a82bf63ed1b.jpg") 我们想训练 $μ_θ$ 来预测: ![81fc17b2317a5044e5672a2d80ef2e3d.jpg](https://dev-media.amazoncloud.cn/ce7447aa3eb04ccc874ef75ecd6fa857_81fc17b2317a5044e5672a2d80ef2e3d.jpg "81fc17b2317a5044e5672a2d80ef2e3d.jpg") 由于 $x_t$ 在训练时可用作输入,因此可以改为重新参数化高斯噪声项,使其在时间步骤 t 从输入 $x_t$ 中预测 $∈_t$: ![4ab8387509e5a31397950ff584eac253.jpg](https://dev-media.amazoncloud.cn/926595d5704a4193b6673dab64d218d9_4ab8387509e5a31397950ff584eac253.jpg "4ab8387509e5a31397950ff584eac253.jpg") 后面还可以通过一些数学公式做简化,具体的数学推导过程有兴趣的读者可以参考以下文章:https://lilianweng.github.io/posts/2021-07-11-diffusion-models/?trk=cndc-detail 简化的结果可以参考如下 DDPM 论文: ![cd4ccbc21f73b8884cd2e5e00d2febf0.png](https://dev-media.amazoncloud.cn/b49d6f907074477d913d9acdc7c569da_cd4ccbc21f73b8884cd2e5e00d2febf0.png "cd4ccbc21f73b8884cd2e5e00d2febf0.png") Source: https://arxiv.org/abs/2006.11239?trk=cndc-detail ![76f735f83e88d59d2060c2ad396bccdf.png](https://dev-media.amazoncloud.cn/15510f18de8143d882230013d7cc51d9_76f735f83e88d59d2060c2ad396bccdf.png "76f735f83e88d59d2060c2ad396bccdf.png") The training and sampling algorithms in DDPM (Image source: ++Ho et al. 2020++) 以上简化结果的得出的原因,在 DDPM 这篇论文中提到,主要是 ++Ho 等人(2020)++根据经验发现,如果使用忽略加权(weighting)项的简化目标,则训练扩散模型效果更好: ![10e7f7484f8bbffffb909a99d6e5158f.jpg](https://dev-media.amazoncloud.cn/c8211585681348e39c65889ca4b7d436_10e7f7484f8bbffffb909a99d6e5158f.jpg "10e7f7484f8bbffffb909a99d6e5158f.jpg") 最终的简化公式是: ![2f53bc7b0d7ae6aedc4b5950a64f8e46.jpg](https://dev-media.amazoncloud.cn/9949ea44ee2545f7bdcf0a3b2885dc0c_2f53bc7b0d7ae6aedc4b5950a64f8e46.jpg "2f53bc7b0d7ae6aedc4b5950a64f8e46.jpg") 其中 C 是一个不依赖于 θ 的常数。 - Ho 等人(2020): https://arxiv.org/abs/2006.11239?trk=cndc-detail ## 扩散模型的加速采样 Speed up Diffusion Model Sampling ### 1. DDIM 论文解读 通过遵循反向扩散过程的马尔可夫链(Markov chain)从 DDPM 生成样本非常缓慢,因为最多可以是几千步。来自 ++Song 等人的 2020 年 DDIM 论文++中的数据指出:“例如,从 DDPM 采样 5 万张大小为 32×32 的图像大约需要 20 个小时,但从 Nvidia 2080 Ti GPU 上的 GAN 采样不到一分钟。” - Song 等人的 2020 年 DDIM 论文: https://arxiv.org/abs/2010.02502?trk=cndc-detail ![1f0328b6e8959ac7939c8dedf59bb0ba.png](https://dev-media.amazoncloud.cn/f784956271024df6be4a6bebddef5abe_1f0328b6e8959ac7939c8dedf59bb0ba.png "1f0328b6e8959ac7939c8dedf59bb0ba.png") Source: https://arxiv.org/pdf/2010.02502.pdf?trk=cndc-detail DDIM 具有相同的边际噪声分布,但会确定性地将噪声映射回原始数据样本。在生成过程中,我们仅对扩散步骤的子集 {τ1,…,τS} 进行采样,DDIM 的推理过程变为: ![47c3195acf774ac2c8a9aa58c570bac5.jpg](https://dev-media.amazoncloud.cn/277d38f204bc486a8b2e55c38ed98e50_47c3195acf774ac2c8a9aa58c570bac5.jpg "47c3195acf774ac2c8a9aa58c570bac5.jpg") 虽然所有模型在实验中都使用 Τ=1000 扩散步长进行训练,但他们观察到,当 S 较小时 DDIM (η=0) 可以产生最优质的样本,而 DDPM (η=1) 在小 S 上的表现要差得多。当我们有能力运行完全的反向马尔可夫扩散步骤 (S=Τ=1000) 时,DDPM 的表现会更好。 而使用 DDIM 之后,可以将扩散模型训练到任意数量的前进步数,但只能从生成过程中的一部分步骤中采样。DDPM 和 DDIM 在论文中的对比测试结果,如下图所示: ![cbd90788de2d1395a119904c3d4a694f.png](https://dev-media.amazoncloud.cn/1f7d0be98eb54381b3cc0b0a9b278557_cbd90788de2d1395a119904c3d4a694f.png "cbd90788de2d1395a119904c3d4a694f.png") Source: https://arxiv.org/pdf/2010.02502.pdf?trk=cndc-detail DDIM 和 DDPM 的对比小结如下: - 使用更少的步骤生成更高质量的样本 - 因为生成过程确定,意味着以同一个潜在变量为条件的多个样本具有相似的高级特征 - 由于一致性,DDIM 可在潜在变量中进行有意义的语义插值(meaningful interpolation) ### 2. LDM 论文解读 另一篇重要论文是潜在扩散模型(++LDM: Rombach & Blattmann 等人,2022++)的论文(如下图所示),该论文提出在潜在空间而不是像素空间中运行扩散过程,从而降低训练成本,加快推理速度。 - LDM: Rombach & Blattmann 等人,2022 https://arxiv.org/abs/2112.10752?trk=cndc-detail ![c373c4ef3ca0fda268536c4c49155e5e.png](https://dev-media.amazoncloud.cn/bd585ac9ebf84b0b8576b231cf834df0_c373c4ef3ca0fda268536c4c49155e5e.png "c373c4ef3ca0fda268536c4c49155e5e.png") Source: https://arxiv.org/pdf/2112.10752.pdf?trk=cndc-detail 论文动机是**观察到图像的大部分都是感知细节,而语义和概念构图在积极压缩后仍然存在**。LDM 通过生成建模学习松散地分解感知压缩和语义压缩,方法是首先使用自动编码器削减像素级冗余,然后在学习的潜在上使用扩散过程操作/生成语义概念。 ![50924e116eda3d957f9ab5a79288bbf1.png](https://dev-media.amazoncloud.cn/25ee550c953f4774ba260f6d855cca26_50924e116eda3d957f9ab5a79288bbf1.png "50924e116eda3d957f9ab5a79288bbf1.png") #### 说明感知和语义压缩(illustrating perceptual and semantic compression) **数字图像的大多数部分对应于难以察觉的细节。** 尽管扩散模型已经通过最大限度地减少损失项,来抑制这些在语义上毫无意义的信息,但仍需要在所有像素上评估梯度(训练期间)和神经网络主干(训练和推断),这会导致多余的计算和不必要的昂贵的优化和推断。 因此,DDIM 论文建议将潜在扩散模型 (LDM) 作为有效的生成模型,并采用单独的轻度压缩阶段。 DDIM 感知压缩过程依赖于自动编码器模型。编码器用于将输入图像 x∈RH×W×3 压缩为较小的 2D 潜在矢量 z=ε(x)∈Rh×w×c,其中向下采样率 f=H/h=W/w=2m,m∈N,然后解码器 D 从潜在矢量 x ̃=D(z) 中重建图像。 扩散和去噪过程发生在潜在向量 Z 上。去噪模型是一种时效条件下的 U-Net,增强了交叉注意力机制,用于处理图像生成的灵活条件信息(例如类别标签、语义地图、图像的模糊变体)。该设计等同于通过交叉注意力机制将不同模态的表示融合到模型中。每种类型的调理信息都与特定领域编码器 τθ 配对,用于将调理输入 y 投影为中间表示形式,该中间表示形式可以映射到交叉注意力分量 τθ(y)∈R(M×dτ ): ![e54a4f8be696d27b92ad08c54a826b15.jpg](https://dev-media.amazoncloud.cn/87d4c0e1594b4eb19599ece19aa1e742_e54a4f8be696d27b92ad08c54a826b15.jpg "e54a4f8be696d27b92ad08c54a826b15.jpg") ![90d9303511107d842ded8970cf556d40.png](https://dev-media.amazoncloud.cn/e05aaf34935546f1930bc56c8db0f2fc_90d9303511107d842ded8970cf556d40.png "90d9303511107d842ded8970cf556d40.png") The architecture of latent diffusion model. (Image source: ++Rombach & Blattmann, et al. 2022++) ## 扩散模型的条件生成 (Conditioned Generation) 在使用 ImageNet 数据集等条件信息的图像上训练生成模型时,通常会根据类别标签或一段描述性文本生成样本。 ### 1. 扩散模型的分类器指导(Classifier Guided Diffusion) GLIDE 论文(如下图所示)阐述了它在扩散模型的分类器指导领域的最新工作。 ![e2bc8c221f7422022db1a57f70a6053c.png](https://dev-media.amazoncloud.cn/38d7f1ef41c9409c9600ff51b709471f_e2bc8c221f7422022db1a57f70a6053c.png "e2bc8c221f7422022db1a57f70a6053c.png") Source: https://arxiv.org/pdf/2112.10741.pdf?trk=cndc-detail 为了将类别信息明确纳入模型扩散过程,++Dhariwal & Nichol (2021)++ 在噪声图像 $x_t$ 上训练了分类器 $f_ϕ (y|x_t,t)$,并使用梯度 $∇_xlog⁡f_ϕ (y|x_t)$ 通过改变噪声预测来引导扩散采样过程向条件信息 y(例如目标类别标签)发展。由此产生的消融扩散模型 (ADM) 和具有额外分类器指导的模型 (ADM-G) 能够获得比 SOTA 生成模型(例如 BigGAN)更好的结果。 - Dhariwal & Nichol (2021) https://arxiv.org/abs/2105.05233?trk=cndc-detail ![d2cd2519a8c73e9eddf8e0c416b95eb4.png](https://dev-media.amazoncloud.cn/fce92fe18f7d43859c4d0f5fea87ad5f_d2cd2519a8c73e9eddf8e0c416b95eb4.png "d2cd2519a8c73e9eddf8e0c416b95eb4.png") The algorithms use guidance from a classifier to run conditioned generation with DDPM and DDIM. (Image source: ++Dhariwal & Nichol, 2021]++) ### 2. 扩散模型的无分类指导(Classifier-Free Guidance) 另外,GLIDE 论文中,还阐述了使用无分类器指导从 GLIDE 中选择样本。从论文提供的样本图像数据中可以观察到,GLIDE 模型可以生成带有阴影和反射的逼真图像,可以组合多个概念,生成新概念的艺术渲染等。 ![50c403ed79535900abc217405e958313.png](https://dev-media.amazoncloud.cn/d89aa08a998e4d17a8e34454f2ddb14f_50c403ed79535900abc217405e958313.png "50c403ed79535900abc217405e958313.png") ![0971943677a79e97dea4e50f6241e4e7.png](https://dev-media.amazoncloud.cn/d4bd45566d3144499f857d3b6dcac49f_0971943677a79e97dea4e50f6241e4e7.png "0971943677a79e97dea4e50f6241e4e7.png") Source: https://arxiv.org/pdf/2112.10741.pdf?trk=cndc-detail GLIDE 论文中,还详细探讨了指导策略、CLIP 指导和无分类指导,发现后者更受欢迎。 ## 扩散模型的高分辨率和图像质量 ### 1. CDM 论文 论文 “++Cascaded Diffusion Models for High Fidelity Image Generation++” 建议使用一系列分辨率更高的多个扩散模型。流水线模型之间的**噪声调节增强**(Noise conditioning augmentation)对最终图像质量至关重要,即对每个超分辨率模型 $p_θ(x|z)$ 的调节输入 z 应用强大的数据增强,调节噪声有助于减少管道设置中的复合误差。 - Cascaded Diffusion Models for High Fidelity Image Generation: https://arxiv.org/abs/2106.15282?trk=cndc-detail ![1d32a55fb0a190b4bffcfaede1895acc.png](https://dev-media.amazoncloud.cn/7137332a932e4de4b23db93bfb6b6300_1d32a55fb0a190b4bffcfaede1895acc.png "1d32a55fb0a190b4bffcfaede1895acc.png") Source: https://arxiv.org/pdf/2106.15282.pdf?trk=cndc-detail 在生成高分辨率图像的扩散建模中,U-Net 是模型架构的常见选择。论文里谈到在级联扩散模型(Cascaded Diffusion Models)的管道中,其每个模型都是使用的 U-Net 架构。如下图所示: ![46f246d09f9a6752c88fb595dd80fce3.png](https://dev-media.amazoncloud.cn/da5a449d5cc14f278f5ea086dddf4091_46f246d09f9a6752c88fb595dd80fce3.png "46f246d09f9a6752c88fb595dd80fce3.png") Source: https://arxiv.org/pdf/2106.15282.pdf?trk=cndc-detail 该论文还指出,他们发现最有效的噪声是在低分辨率下施加高斯噪声(Gaussian noise),在高分辨率下施加高斯模糊(Gaussian blur)。此外,他们还探索了两种形式的条件增强,需要对训练过程进行少量修改。条件噪声仅适用于训练,不适用于推理。 ### 2. UnCLIP 论文 在两阶段扩散模型 UnCLIP(++Ramesh et al. 2022++)论文中,其建议利用 CLIP 文本编码器来生成高质量的文本引导图像。 - Ramesh et al. 2022 https://arxiv.org/abs/2204.06125?trk=cndc-detail ![bbbbe4d71e97457fc5cea7d45b6abb6d.png](https://dev-media.amazoncloud.cn/fcb4d97380a840ba922409f22564f437_bbbbe4d71e97457fc5cea7d45b6abb6d.png "bbbbe4d71e97457fc5cea7d45b6abb6d.png") Source: https://arxiv.org/abs/2204.06125?trk=cndc-detail 给定预训练的 CLIP 模型 c 和扩散模型 (x, y) 的配对训练数据,其中 x 是图像,y 是相应的标题,我们可以分别计算 CLIP 文本和图像的向量表示 $C^t(y)$ 和 $C^i(x)$ 。 UnCLIP 同时学习两个模型: 1. **先验模型** $p(c^i|y)$:给定文本 y,输出 $c^i$ 的 CLIP 图像向量表示; 2. **解码器** $p(x|c^i,[y])$ :给定 CLIP 图像向量表示 $c^i$ 以及原始文本 y(可选),输出图像 x。 这两个模型支持条件生成,因为: ![a52dfb8eb1ddbfc901fce10a7eec6217.jpg](https://dev-media.amazoncloud.cn/7db72b7755a9430f95dade30e9046c41_a52dfb8eb1ddbfc901fce10a7eec6217.jpg "a52dfb8eb1ddbfc901fce10a7eec6217.jpg") ![19efd60f309eb218c5d9a4411c29483f.png](https://dev-media.amazoncloud.cn/604abe644de8422298e4f33ee2bc517e_19efd60f309eb218c5d9a4411c29483f.png "19efd60f309eb218c5d9a4411c29483f.png") The architecture of unCLIP. (Image source: Ramesh et al. 2022) ### 3. Imagen 论文 而 Imagen 的论文 Imagen (++Saharia et al. 2022++) 却未使用 CLIP 模型,而是使用预先训练的大型 LM(冻结的 T5-XXL 文本编码器)对文本进行编码以生成图像。 - Saharia et al. 2022 https://arxiv.org/abs/2205.11487?trk=cndc-detail ![2e3141873c8d024d738ddfa91d93fc0f.png](https://dev-media.amazoncloud.cn/4c386303fea9400a88a18a9df117d55d_2e3141873c8d024d738ddfa91d93fc0f.png "2e3141873c8d024d738ddfa91d93fc0f.png") Source: https://arxiv.org/pdf/2205.11487.pdf?trk=cndc-detail 普遍的趋势是,较大的模型尺寸可以带来更好的图像质量和文本图像对齐方式。该论文研究团队发现 T5-XXL 和 CLIP 文本编码器在 MS-COCO 上实现了相似的性能。 ![6b7aad1e30e15f4b16ee51d7af5b6a05.png](https://dev-media.amazoncloud.cn/23ece582afb04e9782128370931bbbae_6b7aad1e30e15f4b16ee51d7af5b6a05.png "6b7aad1e30e15f4b16ee51d7af5b6a05.png") Source: https://arxiv.org/pdf/2205.11487.pdf?trk=cndc-detail Imagen 修改了 U-net 中的多项设计以使其高效 U-Net。例如: - 通过为较低的分辨率添加更多的残差锁(residual locks),将模型参数从高分辨率模块转移到低分辨率模块 - 扩大 skip connections 的规模到 1/√2 倍 - 调转向下采样(在卷积之前移动)和向上采样操作(卷积后移动)的顺序,以提高向前传递的速度 该论文团队的经验总结包括: - 噪声调节增强、动态阈值和高效的 U-Net 对图像质量至关重要 - 缩放文本编码器大小比 U-Net 大小更重要 # 小结 本期我们开始探讨了文生图(Text-to-Image)方向的主要论文解读,包括:VAE、DDPM、DDIM、GLIDE、Imagen、UnCLIP、CDM、LDM 等主要扩散模型领域的发展状况。 由我们的分析可知,扩散模型的主要优点和缺点如下: **优点**:可追溯性和灵活性是生成建模中两个相互矛盾的目标。可处理的模型可以通过分析进行评估并有效地拟合数据(例如通过高斯或拉普拉斯),但它们无法轻松描述丰富数据集中的结构。灵活的模型可以拟合数据中的任意结构,但是从这些模型中进行评估、训练或采样通常很昂贵。而扩散模型,则可以在分析上既可实现可追溯性,又不失灵活性; **缺点**:扩散模型依赖于长链的马尔可夫扩散步骤来生成样本,因此在时间和计算方面可能较昂贵。虽然目前已经出现一些使过程加速的新方法,但采样速度仍然比 GAN 慢。 下期我们将进入动手实践环节,我会带领大家使用亚马逊云科技的 SageMaker 等服务,在云中体验构建文生图(Text-to-Image)领域大模型的应用,敬请期待。 请持续关注 Build On Cloud 微信公众号,了解更多面向开发者的技术分享和云开发动态! ### 往期推荐 [#机器学习洞察](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mzg1NDc2NQ==&action=getalbum&album_id=2674381074877399043#wechat_redirect?trk=cndc-detail) [#架构模型最佳实践](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mzg1NDc2NQ==&action=getalbum&album_id=2799534956091031552#wechat_redirect?trk=cndc-detail) [#GitOps 最佳实践](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5Mzg1NDc2NQ==&action=getalbum&album_id=2859985378815229960#wechat_redirect?trk=cndc-detail) ![cd6582e4bddd66e6122e6ff8977a7c0a.jpg](https://dev-media.amazoncloud.cn/7b87fc8744a0405f87ed8a8ef52247d6_cd6582e4bddd66e6122e6ff8977a7c0a.jpg "cd6582e4bddd66e6122e6ff8977a7c0a.jpg")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭
contact-us