GPT-4o图像生成的「核燃料」找到了!万字长文拆解潜在变量,网友:原来AI在另一个维度作画

编辑:刘欣

上个月, GPT-4o 的图像生成功能爆火,掀起了以吉卜力风为代表的广泛讨论,生成式 AI 的热潮再次席卷网络。

而在这股浪潮背后,潜在空间(Latent Space)作为生成模型的核心驱动力,点燃了图像与视频创作的无限想象。

知名研究者 Andrej Karpathy 最近转发了一篇来自 Google DeepMind 研究科学家 Sander Dielman 的博客文章,探讨了生成模型(如图像、音频和视频生成模型)如何通过利用潜在空间来提高生成效率和质量。

image.png

博客链接:https://sander.ai/2025/04/15/latents.html

Sander Dielman 自 2015 年加入 DeepMind 以来,参与了包括 WaveNet、AlphaGo、Imagen 3 和 Veo 在内的多个项目,涵盖深度学习、生成模型及表征学习(Representation Learning)。

在这篇文章中,他将潜在变量比喻为「数据的精髓」—— 通过压缩复杂信息实现图像、语音等生成。他还深入对比变分自编码器(VAEs)、生成对抗网络(GANs)和扩散模型,展示了潜在变量如何支持这些模型生成逼真内容。

例如,Dielman 参与开发的 WaveNet 就利用潜在变量成功实现了高质量语音合成,并在谷歌多个产品中得到广泛应用。他还以 VQ-VAE 为例,说明离散潜在空间如何提升图像生成效率。

这篇文章兼具理论深度与直观洞察,适合对生成模型感兴趣的读者深入研究。

配方

image.png

在潜在空间中训练生成模型通常分为两个阶段:

1. 用输入信号训练自编码器。自编码器是一个神经网络,包含两个子网络:编码器和解码器。编码器将输入信号映射到相应的潜在表征(编码),解码器则将潜在表征映射回输入域(解码)。

2. 在潜在表征上训练生成模型。这一步骤涉及使用第一阶段的编码器来提取训练数据的潜在表征,然后直接在这些潜在表征上训练生成模型。当前主流的生成模型通常是自回归模型或扩散模型。

一旦第一阶段训练好了自编码器,在第二阶段其参数将不再改变:学习过程第二阶段的梯度不会反向传播到编码器中。换句话说,在第二阶段,编码器的参数会被冻结。

请注意,在训练的第二阶段,自编码器的解码器部分不发挥作用,但在从生成模型采样时需要用到它,因为这将生成潜在空间中的输出。解码器使我们能够将生成的潜在向量映射回原始输入空间。

下面是说明这种两阶段训练方法的示意图。在相应阶段学习参数的网络标有 「∇」 符号,因为这几乎总是使用基于梯度的学习方法。参数被冻结的网络标有雪花符号。

image.png

潜在生成模型的训练方法:两阶段训练。

在两个训练阶段中涉及几种不同的损失函数,这在图中以红色标出:

为确保编码器和解码器能够高保真地将输入表征转换为潜在向量再转换回来,多个损失函数用于约束重建(解码器输出)与输入的关系。这些通常包括简单的回归损失、感知损失和对抗损失。

为了限制潜在向量的容量,在训练期间通常会直接对它们应用额外的损失函数,尽管并非总是如此。我们将此称为瓶颈损失,因为潜在表征在自编码器网络中形成了一个瓶颈。

在第二阶段,生成模型使用其自身的损失函数进行训练,这与第一阶段使用的损失函数分开。这通常是负对数似然损失(用于自回归模型)或扩散损失。

深入观察基于重建的损失函数,我们有以下几种:

回归损失:有时是在输入空间(例如像素空间)中测量的平均绝对误差(MAE),但更常见的是均方误差(MSE)。

感知损失:形式多样,但通常利用另一个冻结的预训练神经网络来提取感知特征。该损失函数鼓励重建和输入之间的这些特征相匹配,从而更好地保留回归损失大多忽视的高频内容。对于图像处理,LPIPS 是一种流行的选择。

对抗损失:使用与自编码器协同训练的判别网络,类似于生成对抗网络(GAN)的方法。判别网络负责区分真实输入信号和重建信号,而自编码器则努力欺骗判别网络使其出错。目的是提高输出的真实性,即使这意味着进一步偏离输入信号。在训练开始时,通常会暂时禁用对抗损失,以避免训练过程中的不稳定。

以下是一个更详细的示意图,展示了第一阶段的训练过程,并明确显示了在此过程中通常发挥作用的其他网络。

image.png

这是第一训练阶段的更详细版本的图,展示了所有参与的网络。

不言而喻,这个通用方法在音频和视频等应用中常常会有各种变体,但我试图总结出在大多数现代实际应用中常见的主要元素。

我们是如何走到这一步的

image.png

如今,自回归和扩散模型这两种主要的生成模型范式,最初都是应用于「原始」数字感知信号的,即像素(pixels)与波形(waveforms)。例如,PixelRNN 和 PixelCNN 是逐像素生成图像的,而 WaveNet 和 SampleRNN 则是逐样本生成音频波形的。在扩散模型方面,最初引入和建立这种建模范式的作品都是通过像素来生成图像的,早期的研究如 WaveGrad 和 DiffWave 则是通过生成波形来产生声音的。

然而,人们很快意识到这种策略在扩展性方面存在很大挑战。其主要原因可以概括为:感知信号大多由不可察觉的噪声组成。换句话说,在给定信号的总信息量中,只有一小部分真正影响我们的感知。因此,确保我们的生成模型能够高效利用其容量,并专注于建模这一小部分信息是非常重要的。这样,我们就可以使用更小、更快且更便宜的生成模型,同时不牺牲感知质量。

潜在自回归模型

随着具有里程碑意义的 VQ-VAE 论文的发表,图像自回归模型取得了巨大飞跃。该论文提出了一种实用策略,通过在自编码器中插入矢量量化瓶颈层,利用神经网络学习离散表征。为了学习图像的离散潜在表征,一个具有多个下采样阶段的卷积编码器生成了一个矢量的空间网格,其分辨率比输入图像低 4 倍(在高度和宽度上均为输入图像的 1/4,因此空间位置减少了 16 倍),然后这些矢量通过瓶颈层进行量化。

现在,我们可以使用类似 PixelCNN 的模型一次生成一个潜在向量,而不是逐像素生成图像。这显著减少了所需的自回归采样步骤数量,但更重要的是,在潜在空间而不是像素空间中测量似然损失,有助于避免在不可察觉的噪声上浪费模型容量。这实际上是一种不同的损失函数,更侧重于感知相关的信号内容,因为许多感知无关的信号内容在潜在向量中并不存在(关于这个问题,可以参阅我在典型性方面的博客文章)。该论文展示了从在 ImageNet 上训练的模型生成的 128×128 图像,这种分辨率在当时只有 GANs 才能达到。

离散化对于其成功至关重要,因为当时的自回归模型在离散输入下表现更好。但或许更重要的是,潜在表征的空间结构使得现有的基于像素的模型可以非常容易地进行适配。在此之前,变分自编码器(VAEs)通常会将整个图像压缩到一个单一的潜在向量中,导致表征没有任何拓扑结构。现代潜在表征的网格结构与「原始」输入表征的网格结构相镜像,生成模型的网络架构利用这种结构来提高效率(例如,通过卷积、循环或注意力层)。

VQ-VAE 2 进一步将分辨率提高到 256×256,并通过扩大规模和使用多层次的潜在网格(以层次化结构组织)显著提升了图像质量。随后,VQGAN 将 GANs 的对抗学习机制与 VQ-VAE 架构相结合。这使得分辨率降低因子从 4 倍增加到 16 倍(与像素输入相比,空间位置减少了 256 倍),同时仍然能够生成锐利且逼真的重建图像。对抗损失在其中发挥了重要作用,即使无法紧密遵循原始输入信号,也能鼓励生成逼真的解码器输出。

VQGAN 成为近五年来我们在感知信号生成建模方面取得快速进展的核心技术。其影响怎么强调都不为过 —— 我甚至可以说,这可能是 GANs 在 2024 年 NeurIPS 大会上获得「时间考验奖」的主要原因。VQGAN 论文提供的「助攻」,使 GANs 即使在被扩散模型几乎完全取代用于媒体生成的基础任务之后,依然保持着相关性。

值得一提的是,上一节中提到的许多方法在这个论文中都被构思出来了。如今,迭代生成器通常不是自回归的(Parti、xAI 最近的 Aurora 模型以及 OpenAI 的 GPT-4o 是显著例外),量化瓶颈也被替代了,但其他一切都还在。尤其是简单的回归损失、感知损失和对抗损失的组合,尽管看似复杂,却一直顽固地存在。在快速发展的机器学习领域,这种持久性极为罕见 —— 也许只有基本未变的 Transformer 架构和 Adam 优化器能与之媲美!

(虽然离散表征在使潜在自回归模型在大规模应用中发挥作用方面至关重要,但我想指出,最近连续空间中的自回归模型也取得了良好的效果。)

潜在扩散

随着潜在自回归模型在 2010 年代后期逐渐崭露头角,以及扩散模型在 2020 年代初期取得突破,将这两种方法的优势相结合成为了顺理成章的下一步。如同许多应运而生的想法一样,我们在 2021 年下半年见证了一系列探讨这一主题的论文在 arXiv 上接连发布。其中最为人熟知的是 Rombach 等人的《High-Resolution Image Synthesis with Latent Diffusion Models》,他们沿用了先前的 VQGAN 研究成果,并将自回归 Transformer 换成基于 UNet 的扩散模型,这一成果构成了稳定扩散模型的基础。其他相关工作虽然规模较小,或者针对的是非图像类数据,但也进行了类似探索。

这种方法主流化花了点时间。早期商业文生图模型使用所谓分辨率级联,即基础扩散模型直接在像素空间生成低分辨率图像,一个或多个上采样扩散模型则基于低分辨率输入生成高分辨率输出。典型例子包括 DALL-E 2 和 Imagen 2。稳定扩散模型问世后,大多转为基于潜在空间的方法(包括 DALL-E 3 和 Imagen 3)。

自回归模型和扩散模型一个关键区别在于训练所用的损失函数。自回归模型训练相对简单,最大化似然即可(尽管也曾尝试过其他方法)。扩散模型则复杂些,其损失函数是针对所有噪声级别的期望,这些噪声级别的相对权重显著影响模型学习内容。这为将典型的扩散损失解释为一种感知损失函数提供了依据,这种损失函数更强调在感知上更为显著的信号内容。

初看之下,这会让两阶段方法显得多余,因其与扩散损失函数的方式类似,即过滤掉感知无关信号内容,避免浪费模型容量。但实际中这两种机制相当互补,原因如下:

小尺度和大尺度下的感知工作机制似乎有根本区别,尤其是视觉领域。例如,建模纹理和细粒度细节需要单独处理,对抗方法可能更适合。我将在下文详细讨论。

训练大型强大扩散模型计算密集,使用更紧凑的潜在空间可避免处理笨重的输入表征,有助于减少内存需求,加快训练和采样速度。

早期确实有工作尝试端到端方法,联合学习潜在表征和扩散先验,但未流行。尽管从实用角度看,避免多阶段训练的序列依赖是可取的,但感知和计算优势使这些麻烦值得。

为什么需要两个阶段?

image.png

如前所述,确保感知信号的生成模型能够高效利用其容量至关重要,因为这能使它们更具成本效益。这基本上就是两阶段方法所实现的目标:通过提取更紧凑的表征,专注于信号内容中与感知相关部分,并对这一表征进行建模而非原始表征,我们能够使相对较小的生成模型发挥超越其规模的效果。

大多数感知信号中的信息实际上在感知上并不重要,这并非新发现:这也是有损压缩背后的关键思想,它使我们能够以更低的成本存储和传输这些信号。像 JPEG 和 MP3 这样的压缩算法利用了信号中的冗余以及我们对低频比高频更敏感的事实,从而用更少的比特表征感知信号。(还有其他感知效应,例如听觉掩蔽,但非均匀的频率敏感性是最重要的。)

那么,我们为什么不以这些有损压缩技术为基础来构建生成模型呢?这并非一个坏主意,一些研究确实为此目的使用了这些算法或其部分组件。但我们很自然地倾向于用更多的机器学习来解决问题,看看是否能超越这些 “手工设计” 的算法。

这不仅仅是机器学习研究者的自大:实际上,使用学习得到的潜在表征而非预先存在的压缩表征有一个非常好的理由。与压缩设置不同,在压缩设置中越小越好,尺寸是唯一重要的因素,生成建模的目标还施加了其他约束:某些表征比其他表征更容易建模。至关重要的是,表征中保留了一些结构,我们可以通过赋予生成模型适当的归纳偏置来加以利用。这一要求在重建质量和潜在表征的可建模性之间创造了权衡,我们将在下一节中探讨这一点。

潜在表征有效性的另一个重要原因是它们如何利用我们感知在不同尺度上不同工作的事实。在音频领域,这一点显而易见:幅度的快速变化会产生音高的感知,而在较粗时间尺度上的变化(例如鼓点)则可以被单独辨别。鲜为人知的是,这种现象在视觉感知中也扮演着重要角色:颜色和强度的快速局部波动被感知为纹理。我曾在 Twitter 上尝试解释这一点,并在此处改写该解释:

一种思考方式是纹理与结构的对比,或者有时人们称之为东西与物体的对比。

在一张狗在田野中的图像里,草的纹理(东西)是高熵的,但我们不善于感知这种纹理各个实例间的差异,我们只是将其感知为不可数的「草」。我们无需逐一把每一根草叶看在眼里,就能确定我们看到的是田野。

这种纹理的实现如果稍有不同,我们通常无法察觉,除非把图像直接叠在一起。用对抗自编码器做实验很有趣:当把原始图像和重建图像并排放在一起比较时,它们往往看起来一模一样。但如果把它们叠在一起,来回切换查看,常常会发现图像之间的差异,尤其是在纹理丰富的区域。

对于物体(有形的东西)来说,情况则不同,例如狗的眼睛,类似程度的差异会立刻显现出来。 一个好的潜在表征会抽象化纹理,但尽量保留结构。这样一来,在重建中对草纹理的表现可以与原始不同,而不会明显影响重建的保真度。这使得自编码器能够舍弃许多模式(即同一纹理的其他表现形式),并在其潜在空间中更简洁地表征该纹理的存在。

这反过来也应该使潜在空间中的生成建模变得更容易,因为它现在可以对纹理的有无进行建模,而无需捕捉与该纹理相关的所有复杂变化。

image.png

一张狗在田野中的图片。图片的上半部分熵值很低:组成天空的像素可以从其相邻像素中很容易地预测出来。而下半部分熵值很高:草地的纹理使得附近的像素很难被预测。

由于两阶段方法提供的显著效率提升,我们似乎愿意忍受它带来的额外复杂性 —— 至少目前是这样。这种效率的提升不仅使训练运行更快、更便宜,而且更重要的是,它还可以大大加速采样。对于执行迭代细化的生成模型来说,这种显著的成本降低非常受欢迎,因为生成单个样本需要多次通过模型进行前向传播。

权衡重建质量和可建模性

image.png

深入探讨有损压缩和潜在表征学习之间的差异是值得的。虽然机器学习可以用于两者,但如今广泛使用的大多数有损压缩算法并没有使用机器学习。这些算法通常基于率失真理论,该理论形式化并量化了我们能够压缩信号的程度(率)与我们允许解压缩信号与原始信号偏离的程度(失真)之间的关系。

对于潜在表征学习,我们可以通过引入可建模性或可学习性的概念来扩展这种权衡,该概念描述了生成模型捕捉这种表征分布的难度。这导致了一个三方的率失真可建模性权衡,这与 Tschannen 等人在表征学习的背景下讨论的率失真有用性权衡密切相关。(在机器学习背景下,另一种流行的扩展这种权衡的方式是率失真感知权衡,它明确区分了重建保真度和感知质量。为了避免过于复杂,我在这里不会做这种区分,而是将失真视为在感知空间中测量的量,而不是输入空间。)

为什么这甚至是一个权衡并不立即显而易见 —— 为什么可建模性与失真相冲突?要理解这一点,考虑有损压缩算法的工作方式:它们利用已知的信号结构来减少冗余。在这个过程中,这种结构通常从压缩表征中被移除,因为解压缩算法能够重建它。但输入信号中的结构也在现代生成模型中被广泛利用,例如以架构归纳偏差的形式,这些偏差利用信号属性,如平移等变性或频率谱的特定特征。

如果我们有一个神奇的算法,能够高效地从输入信号中移除几乎所有冗余,我们将使生成模型捕捉压缩信号中剩余的无结构变异性变得非常困难。如果我们的目标仅仅是压缩,这是完全可以的,但如果我们要进行生成建模,就不是这样了。因此,我们必须找到一个平衡:一个好的潜在表征学习算法会检测并移除一些冗余,但同时也会保留一些信号结构,以便为生成模型留下一些可以利用的东西。

在这种情况下,一个不好的例子是熵编码,它实际上是一种无损压缩方法,但也被用作许多有损方案的最后阶段(例如 JPEG/PNG 中的霍夫曼编码,或 H.265 中的算术编码)。熵编码算法通过为频繁出现的模式分配更短的表征来减少冗余。这并没有移除任何信息,但它破坏了结构。因此,输入信号中的小变化可能导致相应的压缩信号发生更大的变化,从而使熵编码序列的建模难度大大增加。

相比之下,潜在表征倾向于保留大量的信号结构。下面的图展示了一些图像的 Stable Diffusion 潜在表征的可视化(取自 EQ-VAE 论文)。仅通过视觉检查潜在表征,就可以很容易地识别出动物。它们基本上看起来像是带有扭曲颜色的噪声低分辨率图像。这就是为什么我喜欢将图像潜在表征视为仅仅是「高级像素」,捕捉了一些普通像素不会捕捉的额外信息,但大部分仍然像像素一样表现。

image.png

从几幅图像中提取的 Stable Diffusion 潜在表征的可视化,取自 EQ-VAE 论文。潜在空间的前三个主成分分别对应于颜色通道。从潜在表征的视觉检查中,图像中的动物仍然大多可以被识别出来,这表明编码器保留了大量原始信号的结构。

可以说,这些潜在表征相当低层次。传统的变分自编码器(VAE)会将整个图像压缩成一个特征向量,通常会得到一个能够进行语义操作的高级表征,而现代用于图像生成建模的潜在表征实际上更接近像素层面。它们具有更高的容量,继承了输入的网格结构(尽管分辨率较低)。网格中的每个潜在向量可能会抽象掉一些低层次的图像特征,例如纹理,但它并没有捕捉到图像内容的语义。这也是为什么大多数自编码器并不使用任何额外的条件信号,例如文字描述,因为这些信号主要约束的是高层次的结构(尽管也有例外)。

可控性

image.png

两个关键的设计参数控制着具有网格结构的潜在空间的容量:下采样因子和表征的通道数。如果潜在表征是离散的,码本大小也很重要,因为它对潜在表征能够包含的信息位数施加了一个硬性限制。(除了这些,正则化策略也起着重要作用,但我们将在下一节讨论它们的影响。)

以一个示例来说,编码器可能会接收一张 256×256 像素的图像作为输入,并生成一个带有 8 个通道的 32×32 连续潜在向量网格。这可以通过使用跨步卷积堆栈或补丁大小为 8 的视觉转换器(ViT)来实现。降采样因子会同时降低宽度和高度方向的维度,因此潜在向量的数量比像素少 64 倍 —— 但每个潜在向量有 8 个分量,而每个像素只有 3 个(RGB)。

总体而言,潜在表征的张量组件数量(即浮点数)比表征原始图像的张量少。我喜欢将这个数字称为张量尺寸缩减因子(TSR),以避免与空间或时间降采样因子混淆。

image.png

展示文本中描述的输入和潜在维度的示意图。

如果我们把编码器的下采样因子增加 2 倍,潜在网格的大小就会变成 16×16,然后我们可以把通道数增加 4 倍到 32 个通道,以保持相同的 TSR(总空间冗余)。对于给定的 TSR,通常有几种不同的配置在重建质量方面表现得大致相当,尤其是在视频的情况下,我们可以分别控制时间和空间的下采样因子。然而,如果我们改变 TSR(通过改变下采样因子而不改变通道数,或者反之),这通常会对重建质量和可建模性产生深远的影响。

从纯数学角度来看,这是令人惊讶的:如果潜在变量是实值的,网格的大小和通道的数量就不应该有关系,因为单个数字的信息容量已经是无限的(这被 Tupper 的自指公式巧妙地证明了)。但当然,有一些实际的限制因素限制了潜在表征的单个组成部分能够携带的信息量:

我们使用浮点数来表征实数,而浮点数的精度是有限的;

在许多公式中,编码器会添加一定量的噪声,这进一步限制了有效的精度;

神经网络并不擅长学习其输入的高非线性函数。

第一个原因显而易见:如果用 32 位(单精度)来表征一个数字,那么它最多也只能传递 32 位的信息。加入噪声会进一步减少可用的位数,因为一些低位数字会被噪声掩盖。

最后一个限制其实更为严格,但目前理解还不够充分:难道神经网络不就是为了学习非线性函数吗?确实如此,但神经网络天然倾向于学习相对简单的函数。这通常是一个优点,而不是缺点,因为它增加了学习到的函数能够泛化到未见数据的概率。但如果我们要把大量信息压缩到几个数字中,这很可能需要高度的非线性。虽然有一些方法可以帮助神经网络学习更复杂的非线性函数(例如傅里叶特征),但在我们的场景中,高度非线性的映射实际上会对可建模性产生负面影响:它们会掩盖信号结构,因此这不是一个好的解决方案。具有更多组件的表征会提供更好的权衡。

同样的道理也适用于离散潜在表征:离散化对表征的信息内容设定了一个硬性上限,但是否能够高效地利用这一容量主要取决于编码器的表达能力以及量化策略在实际中的效果(即是否通过尽可能均匀地使用不同码字来实现高码本利用率)。目前最常用的仍然是 VQ-VAE 中的原始 VQ 瓶颈,但最近一种通过「旋转技巧」提供更好梯度估计的改进方法在码本利用率和端到端性能方面似乎很有前景。一些不使用显式学习码本的替代方案也逐渐受到关注,例如有限标量量化(FSQ)、无查找量化(LFQ)和二进制球面量化(BSQ)。

总结来说,选择合适的 TSR(总空间冗余)至关重要:更大的潜在表征能够带来更好的重建质量(更高的率,更低的失真),但可能会对可建模性产生负面影响。更大的表征意味着有更多的信息位需要建模,因此需要生成模型具备更高的容量。在实践中,这种权衡通常是通过经验来调整的。这可能是一个成本较高的过程,因为目前还没有任何可靠且计算成本低的可建模性代理指标。因此,需要反复训练足够大的生成模型才能得到有意义的结果。

Hansen-Estruch 等人最近对潜在空间容量及其各种影响因素进行了广泛的探索(他们的关键发现已在文中明确突出显示)。目前有一个趋势是增加空间下采样因子,并相应地增加通道数以保持 TSR,以便在更高分辨率下进行图像和视频生成(例如 LTX-Video 中的 32×、GAIA-2 中的 44×,以及 DCAE 中的 64×)。

梳理和塑造潜在空间

image.png

到目前为止,我们已经讨论了潜在表征的容量,即应该在其中包含多少位信息。同样重要的是,要精确控制原始输入信号中的哪些位信息应该被保留在潜在表征中,以及这些信息是如何呈现的。我将前者称为梳理潜在空间,后者称为塑造潜在空间 —— 这种区分虽然微妙,但很重要。许多正则化策略已经被设计出来,用于塑造、梳理和控制潜在表征的容量。我将专注于连续情况,但其中许多考虑同样适用于离散潜在表征。

VQGAN 与 KL 正则化潜变量

Rombach 等人提出了两种针对连续潜在空间的正则化策略:

遵循原始 VQGAN 的设计理念,并将量化步骤重新解释为解码器的一部分(而非编码器的一部分),从而获得连续潜在表征(即 VQ 正则化,VQ-reg);

完全移除 VQGAN 中的量化操作,转而像标准变分自编码器(Variational Autoencoder,VAE)那样引入 KL 散度惩罚项(即 KL 正则化,KL-reg)。

这种只对 VQGAN 作出最小改动、以适配扩散模型(Diffusion Model)而生成连续潜变量的思路可谓巧妙:此类结构在自回归模型(Autoregressive Model)中表现良好,而训练过程中的量化步骤也起到了某种「安全阀」作用,防止潜变量携带过多的信息。

然而,正如我们之前所讨论的,这种机制在多数情况下可能并非真正必要,因为编码器的表达能力往往才是生成模型性能的瓶颈所在。

相比之下,KL 正则化本身是传统 VAE 架构的核心组成部分:它是构成证据下界(Evidence Lower Bound,ELBO)的两项损失之一。ELBO 是对数据似然的下界,用于间接地、但在数值上可行地最大化样本的对数似然。该项正则化鼓励潜变量服从某一预设先验分布(通常为高斯分布)。

但关键在于,ELBO 仅在 KL 项前未引入缩放超参数(scale parameter)的前提下,才是真正意义上的似然下界。然而在实际应用中,为了训练稳定性及重建质量的考虑,KL 正则项几乎总是被大幅缩放(通常缩小几个数量级),这几乎切断了它与变分推断原始语境之间的联系。

造成这一调整的原因也很直接:未经缩放的 KL 项具有过强的限制作用,会显著压缩潜在空间的容量,继而严重影响图像重建质量。出于工程可行性上的考虑,业界普遍的做法是显著降低其在总损失函数中的权重。

(顺便提一下:在某些更关注语义可解释性或潜变量解耦(disentanglement)质量、而非重建效果的任务中,增加 KL 权重也是一种有效且常见的策略,例如 β-VAE)。

接下来属于明显的主观观点,但我认为当前关于 KL 项效果的讨论中还存在相当多的 “神秘化思维”。例如,KL 项被广泛认为能引导潜变量服从高斯分布 —— 然而在实际应用中的缩放因子下,这一效果微弱到几乎可以忽略。即使是在 “真正的” VAE 中,总体后验分布(aggregate posterior)也很少呈现出标准高斯形态。

因此,在我看来,「VAE」中那个「V」(即 「Variational」,变分)如今几乎已失去实质意义 —— 其存在意义更多是历史遗留。与其如此,我们倒不如将这类模型称为「KL 正则化自编码器」(KL-regularised autoencoders),这在概念上对当前主流实践更贴切。

在这种设定下,KL 项最主要的作用,是抑制潜变量分布中的离群点,并在一定程度上约束其数值尺度。换句话说:尽管 KL 项通常被当作限制潜变量容量的机制来阐述,其在现实中起到的作用,更多是对潜变量形状的轻度限制 —— 而这种限制也远没有想象中那么强。

调整重建损失

重建损失的「三件套」(即回归损失(regression loss)、感知损失(perceptual loss)与对抗损失(adversarial loss))在最大程度提高重建信号质量方面无疑发挥着关键作用。

然而,值得进一步研究的是,这些损失项如何影响潜在变量(latents),特别是在「内容筛选」(curation,即潜变量学会编码哪些信息)方面的作用。如第 3 节(为什么需要两个阶段?)所讨论的,在视觉领域中,一个良好的潜在空间应在一定程度上实现对纹理的抽象(abstraction)。这些损失是如何帮助实现这一目标的?

一个有启发性的思维实验是,假设我们将感知损失和对抗损失去除,仅保留回归损失,如传统的变分自编码器(VAE)所采用的做法。这种设置通常会导致模糊的重建结果。回归损失在设计上不会偏向于特定类型的信号内容,因此在图像任务中,往往会更关注于低频信息,原因仅仅是这种信息在图像中占比较大。

在自然图像中,不同空间频率的能量通常与其频率的平方成反比 —— 频率越高,能量越小(有关该现象的图示分析,请参阅我先前的博文)。由于高频成分在总信号能量中所占比例极小,因此使用回归损失时,模型更倾向于准确地预测低频分量,而非高频部分。

然而,从人类感知的角度看,高频信息的主观重要性远远高于它们在信号能量中所占的比例,这也就导致了大家熟知的「模糊感」重建结果。

图片来自 VQGAN 论文。与仅使用回归损失训练的 DALL-E VAE 的对比展示了感知与对抗损失所带来的显著影响。

由于纹理主要由这些高频成分构成,而回归损失几乎忽略这些高频信息,最终我们得到的潜在空间不仅无法做出纹理抽象,反而是直接抹去了与纹理相关的信息。从感知质量的角度讲,这是一种很差的潜在空间结构。这也直接说明了感知损失与对抗损失的重要性:它们确保潜在变量中能够编码一定的纹理信息。

既然回归损失具有上述这些不理想的性质,并且往往需要其他损失项来加以弥补,那我们是否可以干脆将其完全舍弃呢?事实证明,这种做法也不可行。因为感知损失与对抗损失的优化过程更为复杂,且容易陷入病态的局部最优解(毕竟,这些损失通常是基于预训练神经网络构建的)。在训练过程中,回归损失起到某种「正则化器」的角色,持续为优化过程提供约束与指引,避免模型陷入错误的参数空间。

当前已有诸多策略尝试采用不同形式的重建损失,以下仅列举部分文献中的实例,展示该方向的多样性:

前文提到的 DCAE46 模型,其方法在整体上与原始的 VQGAN 配方差异不大,只是将 L2 回归损失(均方误差,MSE)替换为 L1 损失(平均绝对误差,MAE)。它依然保留了 LPIPS 感知损失(Learned Perceptual Image Patch Similarity)以及 PatchGAN49 判别器。该方法的不同之处在于其采用了多阶段训练,仅在最后阶段启用对抗损失。

ViT-VQGAN50 模型结合了两种回归损失:L2 损失与 logit-Laplace 损失 51,并使用 StyleGAN52 判别器以及 LPIPS 感知损失。

LTX-Video44 模型引入了一种基于离散小波变换(Discrete Wavelet Transform,DWT)的「视频感知损失」,并提出了其独特的对抗损失策略,称为 reconstruction-GAN。

正如经典菜肴千人千味,在这种「配方」问题上,每位研究者都有各自的解法!

表征学习 vs 重建

此前我们探讨的诸多设计选择,不仅影响重建质量,同时也深刻影响所学习的潜在空间的性质。其中,重建损失事实上承担了双重任务:既保证了解码器输出的高质量,又在潜在空间的形成中发挥了关键作用。这不禁引出一个问题:像我们现在这样「一石二鸟」的做法,真的合适吗?我认为答案是否定的。

一方面,为生成建模(generative modelling)学习出良好且紧凑的表征;另一方面,将这一表征解码回原始输入空间,这其实是两项截然不同的任务。而现代自动编码器通常被期望能同时完成这两项任务。

尽管从实践角度看,这种做法效果相当不错,无疑也简化了流程(毕竟自动编码器训练已经是完整系统中第一阶段的训练部分,我们自然希望尽可能避免进一步复杂化,尽管训练多个阶段的自动编码器也并非闻所未闻。但这一方法实则混淆了两个任务,其间某些适用于一个任务的设计,或许在另一个任务上并不理想。

当解码器采用自回归架构时,这种任务合并的问题尤为突出,因此我们提出使用一个独立的非自回归(non-autoregressive)辅助解码器(auxiliary decoder)来为编码器提供学习信号。

主解码器(main decoder)则完全不会影响潜在表征,因为其梯度在训练中不会反传至编码器。这使其专注于优化重建质量,而辅助解码器则承担起潜在空间的塑造任务。整个自动编码器各组件仍可联合训练,因此增加的训练复杂度非常有限。虽然辅助解码器会增加训练成本,但它在训练完成后即可被舍弃。

image.png

这种带有两个解码器的自动编码器结构中:主解码器仅用于重建,其梯度不回传到编码器(通常我们用虚线来表示这一点)辅助解码器则专注于构建潜在空间,它可以采用不同的架构、优化不同的损失函数,或者两者兼而有之。

尽管我们在那篇论文中使用自回归解码器来处理像素空间的想法,如今已经不再适用(可以说很不合时宜),但我仍然相信将表征学习与重建任务分开的这一策略在当前仍具有高度相关性。

一个辅助解码器,如果它优化的是另一种损失,或者采用了与主解码器不同的架构(抑或两者兼具),就可能为表征学习提供更有效的训练信号,从而带来更优的生成建模效果。

Zhu 等人最近也得出了同样的结论(见其论文第 2.1 节),他们使用 K-means 对 DINOv2 提取的特征进行离散化建模,并结合一个单独训练的解码器。在生成建模中复用自监督学习(self-supervised learning)得到的表征,这一思路在音频建模领域早已较为普遍 —— 可能是因为音频领域研究者原本就习惯于训练声码器(vocoder),将预定义的中间表征(例如梅尔频谱图)转换回波形信号。

通过正则化提升模型能力

对潜在变量容量的塑造、梳理和限制都会影响其可建模性:

容量限制决定了潜在变量中的信息量。容量越高,生成模型就必须越强大,才能充分捕捉其包含的所有信息;

塑造对于实现高效建模至关重要。相同的信息可以用多种不同的方式表征,有些方式比其他方式更容易建模。缩放和标准化对于正确建模至关重要(尤其是对于扩散模型而言),但高阶统计量和相关结构也同样重要;

梳理会影响可建模性,因为某些类型的信息比其他类型的信息更容易建模。如果潜在变量编码了输入信号中不可预测的噪声信息,那么它们的可预测性也会降低。

以下是一条有趣的推文,展示了这如何影响稳定扩散 XL VAE:

SCR-20250421-owvo.png

图源:https://x.com/rgilman33/status/1911712029443862938

在这里,我想将其与 Xu et al. 提出的 V-information 联系起来,它扩展了互信息的概念,使其能够考虑计算约束。换句话说,信息的可用性取决于观察者辨别信息的计算难度,我们可以尝试量化这一点。如果一条信息需要强大的神经网络来提取,那么输入中的 V-information 量就会低于使用简单线性探测的情况 —— 即使以比特为单位的绝对信息量相同。

显然,最大化潜在表征的 V-information 量是可取的,以便最大限度地降低生成模型理解潜在表征所需的计算需求。我之前提到的 Tschannen et al. 描述的速率 - 失真 - 实用性权衡也支持同样的结论。

如前所述,KL 惩罚对高斯化或平滑潜在空间的作用可能不如许多人认为的那么大。那么,我们可以做些什么来使潜在模型更容易建模呢?

使用生成先验:与自动编码器共同训练一个(轻量级)潜在生成模型,并通过将生成损失反向传播到编码器中,使潜在模型易于建模,就像在 LARP 或 CRT 中一样。这需要仔细调整损失权重,因为生成损失和重构损失相互矛盾:当潜在模型完全不编码任何信息时,它们最容易建模!

使用预训练的表征进行监督:鼓励潜在模型对现有高质量表征(例如 DINOv2 特征)进行预测,就像在 VA-VAE、MAETok 或 GigaTok 中一样。

鼓励等变性:使输入的某些变换(例如重缩放、旋转)产生相应的潜在表征,这些表征也进行类似变换,就像在 AuraEquiVAE、EQ-VAE 和 AF-VAE 中一样。我在第 4 部分中使用的 EQ-VAE 论文中的图表展示了这种约束对潜在空间的空间平滑度产生的深远影响。Skorokhodov et al. 基于潜在空间的谱分析得出了相同的结论:等变性正则化使潜在谱与像素空间输入的谱更相似,从而提高了可建模性。

这只是一些可能的正则化策略的一小部分,所有这些策略都试图以某种方式增加潜在向量的 V-information。

向下扩散

一类用于学习潜在表征的自编码器值得深入研究:带有扩散解码器的自编码器。虽然更典型的解码器架构采用前馈网络,该网络在一次前向传递中直接输出像素值,并且采用对抗式训练,但一种越来越流行的替代方案是使用扩散来完成潜在解码任务以及对潜在表征的分布进行建模。这不仅会影响重构质量,还会影响学习到的表征类型。

SWYCC、ϵ-VAE 和 DiTo 是近期一些探索这种方法的研究成果,它们从几个不同的角度阐述了这一方法:

使用扩散解码器学习的潜在特征提供了一种更具原则性、理论基础的层级生成建模方法;

它们可以仅使用 MSE 损失进行训练,这简化了过程并提高了鲁棒性(毕竟对抗性损失的调整相当棘手);

将迭代改进的原理应用于解码可以提高输出质量。

我无法反驳这些观点,但我确实想指出扩散解码器的一个显著弱点:它们的计算成本及其对解码器延迟的影响。我认为,目前大多数商业部署的扩散模型都是潜在模型的一个关键原因是:紧凑的潜在表征有助于我们避免在输入空间进行迭代细化,而这种做法既慢又贵。在潜在空间中执行迭代采样过程,然后在最后通过一次前向传播回到输入空间,速度要快得多。考虑到这一点,在我看来,在解码任务中重新引入输入空间迭代细化,在很大程度上违背了两阶段方法的初衷。如果我们要付出这样的代价,不妨选择一些简单的扩散方法来扩展单阶段生成模型。

你可能会说,别急 —— 我们难道不能使用众多扩散蒸馏方法来减少所需的步骤数吗?在这样的设置中,由于具有非常丰富的条件信号(即潜在表征),这些方法确实被证明是有效的,甚至在单步采样机制下也是如此:条件越强,获得高质量蒸馏结果所需的步骤就越少。

DALL-E 3 的一致性解码器就是一个很好的实践案例:他们重用了稳定扩散潜在空间,并训练了一个基于扩散的新解码器,然后通过一致性蒸馏将其精简为仅两个采样步骤。虽然在延迟方面,它的开销仍然比原始对抗解码器更高,但输出的视觉保真度得到了显著提升。

image.png

DALL-E 3 基于 Stable Diffusion 潜在空间的一致性解码器显著提高了视觉保真度,但代价是延迟更高。

Music2Latent 是这种方法的另一个例子,它基于音乐音频的声谱图表征进行操作。它们的自编码器带有一致性解码器,采用端到端训练(不同于 DALL-E 3 的自编码器,后者复用了预训练的编码器),并且能够一步生成高保真输出。这意味着解码过程再次只需要一次前向传递,就像对抗性解码器一样。

FlowMo 是一款带有扩散解码器的自编码器,它使用后训练阶段来鼓励模式搜索行为。如前所述,对于解码潜在表征的任务,丢失模态以及专注于真实性而非多样性实际上是可取的,因为它需要的模型容量较少,并且不会对感知质量产生负面影响。对抗性损失往往会导致模态丢失,但基于扩散的损失则不会。这种两阶段训练策略使扩散解码器能够模拟这种行为 —— 尽管仍然需要大量的采样步骤,因此计算成本远高于典型的对抗性解码器。

一些早期关于扩散自编码器的研究,例如 Diff-AE 和 DiffuseVAE,更侧重于学习类似于老式 VAE 的高级语义表征,没有拓扑结构,并且注重可控性和解耦。DisCo-Diff 介于两者之间,它利用一系列离散潜在表征来增强扩散模型,这些潜在表征可以通过自回归先验建模。

消除对抗训练的必要性无疑会简化事情,因此扩散自编码器在这方面是一个有趣(最近也相当流行)的研究领域。然而,在延迟方面,与对抗性解码器竞争似乎颇具挑战性,所以我认为我们还没有准备好放弃它们。我非常期待一个更新的方案:它不需要对抗性训练,但在视觉质量和延迟方面却能与当前的对抗解码器相媲美!

网格统治一切

image.png

感知模态的数字表征通常采用网格结构,因为它们是底层物理信号的均匀采样(和量化)版本。图像产生二维像素网格,视频产生三维网格,音频信号产生一维网格(即序列)。均匀采样意味着相邻网格位置之间存在着固定的量子(即距离或者时间量)。

从统计意义上讲,感知信号在时间和空间上也趋于近似平稳。与均匀采样相结合,这产生了丰富的拓扑结构,我们在设计用于处理它们的神经网络架构时会充分利用这种结构:使用广泛的权重共享来利用不变性和等变性等特性,这些特性通过卷积、循环和注意力机制来实现。

毫无疑问,对网格结构的利用正是我们能够构建如此强大的机器学习模型的关键原因之一。由此推论,在设计潜在空间时保留这种结构是一个绝佳的主意。我们最强大的神经网络设计在架构上依赖于它,因为它们最初就是为直接处理这些数字信号而构建的。如果潜在表征具有相同的结构,它们将更擅长处理这些表征。

网格结构也为学习生成潜在空间的自编码器带来了显著的优势:由于平稳性,并且它们只需要学习局部信号结构,因此可以在较小的裁剪图像或输入信号片段上进行训练。如果我们施加正确的架构约束(限制编码器和解码器中每个位置的感受野),它们将能够开箱即用地泛化到比训练时更大的网格。这有可能大大降低第一阶段的训练成本。

然而,事情并非总是那么美好:我们已经讨论过感知信号是如何高度冗余的,遗憾的是,这种冗余分布不均。信号的某些部分可能包含大量感知上显著的细节,而其他部分则几乎没有信息。在我们之前使用的田野里狗的图像中,考虑一个以狗的头部为中心的 100×100 像素块,然后将其与图像右上角仅包含蓝天的 100×100 像素块进行比较。

image.png

田野里的狗的图像,其中突出显示了两个具有不同冗余度的 100×100 像素块。

如果我们构建一个继承输入二维网格结构的潜在表征,并用它来编码这幅图像,则必然会使用完全相同的容量来编码这两个图像块。如果我们让表征足够丰富,能够捕捉到狗头所有相关的感知细节,那么将浪费大量容量来编码类似大小的天空图像块。换句话说,保留网格结构会显著降低潜在表征的效率。

这就是我所说的「网格统治一切」:我们用神经网络处理网格结构数据的能力已经非常成熟,偏离这种结构会增加复杂性,使建模任务变得更加困难,并且对硬件的兼容性也更差,所以通常不会这样做。但就编码效率而言,这实际上相当浪费,因为视听信号中感知显著的信息分布并不均匀。

Transformer 架构实际上相对适合对抗这种统治:虽然我们通常将其视为序列模型,但它实际上是为处理集值(set-valued)数据而设计的,任何将集合元素相互关联的附加拓扑结构都通过位置编码来表达。这使得偏离常规网格结构比卷积或循环架构更为实用。几年前,我和同事探索了使用可变速率离散表征进行语音生成的这个想法。在两阶段生成模型的背景下,放松潜在空间的拓扑结构似乎最近越来越受到关注,包括如下:

TiTok 和 FlowMo 从图像中学习序列结构化的潜在表征,将网格维度从二维降低到一维。大型语言模型的发展为我们带来了极其强大的序列模型,因此这是一种合理的目标结构;

One-D-Piece 和 FlexTok 也采用了类似的方法,但使用了嵌套的 dropout 机制,在潜在序列中引入了由粗到细的结构。这使得序列长度能够根据每个输入图像的复杂度以及重建所需的细节级别进行调整。CAT 也探索了这种自适应性,但仍然保留了二维网格结构,并且仅调整其分辨率;

TokenSet 更进一步,使用了一种生成「token 袋」的自动编码器,完全摒弃了网格。

除了 CAT 之外,所有这些方法的共同点在于:它们学习的潜在空间在语义上比我们目前主要讨论的那些要高级得多。就抽象层次而言,它们可能介于「高级像素」和老式 VAE 的矢量值潜在空间之间。FlexTok 的一维序列编码器需要使用现有二维网格结构编码器的低级潜在空间作为输入,实际上是在现有低级潜在空间之上构建了一个额外的抽象层。TiTok 和 One-D-Piece 也利用现有的二维网格结构潜在空间作为多阶段训练方法的一部分。一个相关的思路是:将语言域重用为图像的高级潜在表征。

在离散环境下,一些工作利用语言 tokenisation 的思想,研究了网格中常见的 token 模式是否可以组合成更大的子单元:DiscreTalk 是语音领域的一个早期示例,它在 VQ token 之上使用了 SentencePiece。Zhang et al 的 BPE Image Tokenizer 是这一思路的较新体现,它在 VQGAN token 上使用了一种增强的字节对编码算法。

其他模态的潜在变量

image.png

到目前为止,我们主要关注视觉领域,仅在一些地方简要提及音频。这是因为学习图像的潜在特征是我们已经非常擅长的事情,而且近年来,使用两阶段方法的图像生成已经得到了广泛的研究并投入生产!。我们在感知损失方面拥有成熟的研究体系,以及大量的判别器架构,使对抗训练能够专注于感知相关的图像内容。

对于视频,我们仍然停留在视觉领域,但引入了时间维度,这带来了一些挑战。人们可以简单地重复使用图像的潜在特征并逐帧提取它们来获得潜在的视频表征,但这可能会导致时间伪影(例如闪烁)。更重要的是,它无法利用时间冗余。我认为我们用于时空潜在表征学习的工具还远远不够完善,而且目前人们对如何利用人类对运动的感知来提高效率的理解也不够深入。尽管视频压缩算法都利用运动估计来提高效率,但情况仍然如此。

音频也是如此:虽然两阶段方法已被广泛采用,但对于使其适用于这种模态所需的修改,似乎并未达成广泛的共识。如前所述,对于音频,更常见的做法是重用通过自监督学习习得的表征。

那么语言呢?语言并非感知模态,但两阶段方法或许也能提高大型语言模型的效率吗?事实证明,这并非易事。语言本质上比感知信号更难压缩:它作为一种高效的沟通方式发展起来,因此冗余度要低得多。但这并不意味着语言就不存在:香农曾有一个著名的估计:英语的冗余度为 50%。但请记住,图像、音频和视频可以在相对较小的感知失真下压缩几个数量级,而语言则不可能在不丢失细微差别或重要语义信息的情况下做到这一点。

用于语言模型的 Tokeniser 往往是无损的(例如 BPE、SentencePiece),因此生成的 token 通常不被视为「潜在 token」(然而,Byte Latent Transformer 在其动态 tokenisation 策略中确实使用了这种框架)。然而,语言中相对缺乏冗余并没有阻止人们尝试学习有损的高级表征!用于感知信号的技术可能无法沿用,但人们已经探索了几种其他用于学习句子或段落级别表征的方法。

端到端会是最后赢家吗?

image.png

当深度学习兴起时,主流观点是:我们将尽可能用端到端学习取代手工构建的特征。联合学习所有处理阶段将使这些阶段能够相互适应和协作,从而最大限度地提高性能,同时从工程角度简化流程。这或多或少也正是计算机视觉和语音处理领域最终发生的事情。从这个角度来看,颇具讽刺意味的是,当今感知信号的主流生成建模范式是两阶段方法。虽然两个阶段都倾向于学习,但并非完全端到端!

如今产品中部署的文本转图像、文本转视频和文本转音频模型大多使用中间潜在表征。值得思考的是,这种现状是暂时的,还是会持续下去?毕竟,两阶段训练确实引入了相当多的复杂性,除了更加优雅之外,端到端学习还可以帮助确保系统的所有部分都与单一的总体目标完美地保持一致。

如上所述,输入空间的迭代细化速度慢且成本高昂,我认为这种情况可能会持续一段时间 —— 尤其是在我们不断提升生成信号的质量、分辨率和 / 或长度的情况下。我们不太可能放弃潜在层在训练效率和采样延迟方面的优势,目前尚无可行的替代方案被证明能够大规模应用。这是一个颇具争议的观点,因为一些研究人员似乎认为是时候转向端到端方法了。我个人认为现在还为时过早。

那么,我们何时才能准备好回归单阶段生成模型呢?像简单扩散、Ambient Space Flow、Transformers 和 PixelFlow 这样的方法已经证明:即使在相对较高的分辨率下,这种方法也能很好地发挥作用,只是目前还不够划算。但硬件正以惊人的速度不断改进和提升,因此我推测我们最终会达到一个临界点:即相对低效的输入空间模型在经济上优于工程复杂性日益增加的潜在空间模型。至于何时实现,则取决于具体模态、硬件改进的速度以及研究的进展,因此我不会做出具体的预测。

过去,我们需要潜在向量来确保生成模型专注于学习感知相关的信号内容,同时忽略视觉上不显著的熵。回想一下,输入空间中的似然损失在这方面尤其糟糕,而切换到在潜在空间中测量似然值可以显著改善基于似然模型的结果。可以说,这种情况已不再存在,因为我们已经找到了如何在感知上重新加权自回归和扩散模型的似然损失函数,从而消除了扩展的一个重要障碍。尽管如此,潜在空间模型的计算效率优势仍然一如既往地重要。

第三种替代方案,我目前为止只是简要提到过,是分辨率级联方法。这种方法不需要表征学习,但仍然将生成模型问题分解为多个阶段。一些早期的商业模型曾使用这种方法,但它似乎已经不再受欢迎了。我认为这是因为不同阶段之间的分工不够完善 —— 上采样模型必须完成太多的工作,这使得它们更容易在各个阶段积累错误。

打开APP阅读更多精彩内容