文章

被AIGC时代复活的VAE生成模型学习

VAE起源

VAE(Variational Autoencoder,变分自编码器)其实不是“新生物”,它最早出现在 2013–2014 年,由 Kingma 和 Welling 在一篇经典论文 “Auto-Encoding Variational Bayes” (2013, ICLR 2014 发表) 中提出。这篇论文首次系统化地把 概率图模型 与 深度学习的自编码器 结合起来,用 随机推断(variational inference)+ reparameterization trick 解决了采样不可导的问题,使得端到端的生成建模成为可能。

为什么在 AIGC 时代(2021–至今)又复活了?

主要原因是VAE有如下优点:

  • 潜在空间压缩 (Latent space compression)
  • 与扩散、流模型 (Flow) 兼容的概率建模与可控性(SD系列到现在大火FLUX系列)
  • 可逆双向映射:encoder ↔ decoder
  • VAE + stable Diffusion+其他微调技术,在工程实现上是友好的,聪明的工程师都喜欢个性化,所以呢,就需要能算法定制,比GAN的黑盒子有明显的工程优势。

VAE是图像生成模型的典型算法。其核心思想:将原始数据映射到一个已知分布,然后从已知分布中随机采样,通过生成模型得到与原始数据近似的数据。其本质上是对数据分布的拟合,然后从分布中采样得到新数据。

很明显,是映射分布,而不是仅仅学习分布。VAE可以生成与原始数据类似但不完全相同的数据。比如我们可以用其来生成图像、文本、音频等。具体方法为在潜在空间中随机采样数据,通过模型生成新的样本数据。VAE可以控制潜在空间(编码数据)不同维度数据的大小,使生成数据按照规则发生改变,从而扩充数据的多样性。例如,我们可以改变特征空间中人脸特征数值大小(微笑、肤色、眼镜、胡须等特征大小)而生成新样本。

图1

AE和VAE的区别在于编码空间的不同。AE编码值为离散值,VAE编码值为连续的数据分布。那变分的含义是什么?

VAE 之所以叫 “变分” 自编码器,是因为它使用了变分推断(Variational Inference, VI)来逼近潜在变量的后验分布。在标准的自编码器(AE)中,编码器直接输出一个固定的低维向量,而在 VAE 中,编码器学习的是一个概率分布,并使用变分推断的方法来进行优化。

VAE把数据映射到一个已知的分布,通常是高斯分布,但是不一定所有的训练集都能映射到高斯分布。

另外,我们在生成的时候,是通过在构建的分布上进行采样,经过解码器生成新的数据。假设我们在采样的时候,引进text或者image的控制信息,是不是也就会和SD+controlNet一样,实现可控生成呢?(此时先不考虑生成能力的差别)。

不管是AE还是VAE,都需要学习一个潜在变量的表示,在PCA分析中,我们也是想找到一个空间可以把当前空间下无法聚合的数据,能分开。这种类似的隐变量理论,在量子力学中也是不是有类似的作用?就是我们通过隐变量可以捕捉到显变量不能捕捉的系统性质?(隐变量-隐空间)

隐空间的存在是生成模型能进行控制的基础。对于图像而言,像素空间要进行风格,内容的控制将很复杂,像素点的聚合关系比较复杂,但是在隐空间里,由于特征表示更为解耦合了,所以进行有针对性的插值操作就方便了很多。

但是,此时的问题是:VAE和其他生成式模型里,都是压缩的形式进行编码到隐空间中,并不是相反的方向。原因之一是:隐藏表示到底是降维还是升维,主要取决于输入的数据冗余是不是很高,很明显图像的冗余信息很高,所以进行压缩实现隐空间表示。

为什么通过假设隐变量的分布 $p(z \lvert x)$ 是标准正态分布,并在实际训练中,让编码器学习到的潜在分布向标准正态分布上靠拢,就可以实现隐变量的连续分布呢?

答:每次epoch训练,我们都会在当前加载的数据上有一个 $p(z \lvert x)$ ,虽然多轮次训练,$p(z \lvert x)$ 会趋于一个整体,但是这个不能保证 $p(z \lvert x)$ 就是连续的,因为很可能 $p(z \lvert x)$ 是把每个局部的拟合分布拼接到一起,在数学上也容易理解,这样的拼接很难保证连续。如果不能连续,就没有办法进行后续的插值和采样。

分布的连续性质和微积分里的概念一致,就是如果下x1和x2距离很近,那么,他们被函数f作用之后也应该比较接近。在这里输入的图片就是x1,x2,学习的隐变量分布就是作用函数f,我们希望学习到一个局连续的f。

为什么一些有限的离散点,学习到一个连续的分布f,之后在这个连续分布上的所有点就都是有意义的呢?

因为后续需要在这个连续分布上进行采样,如果采样的没有意义,就会出现模式崩溃。

Transformer 的计算空间与隐空间的关系

对比维度TransformerVAE / GAN / 扩散模型
计算空间高维表示空间 (Representation Space)隐空间 (Latent Space)
隐变量的概率结构没有显式的概率结构有明确的隐变量分布
主要任务生成、变换数据生成、变换数据
学习方式通过注意力机制学习上下文信息通过隐变量映射学习数据结构
是否可以采样?不能直接采样可以从隐空间采样新样本

尽管标准 Transformer 没有显式的隐空间建模,但一些变体确实结合了隐变量建模,比如:

  • VAE + Transformer(VAE-Transformer)先用 VAE 提取隐变量,再用 Transformer 建模隐变量的分布。(如文本生成任务中,使用 Transformer 处理 VAE 的潜在变量)。
  • 扩散模型(Diffusion Models)+ Transformer  - DALL·E 3 这样的模型用 Transformer 作为扩散模型的去噪网络,某种程度上是在隐空间上进行操作。
  • Latent Bottleneck in Transformers一些 Transformer 变体(如 BERT、GPT)会用一个“瓶颈层”来强制模型学习紧凑的表示,这类似于隐空间建模。

问题:是先进行VAE降维,然后通过Transformer升维好,还是先进行Transformer升维,然后进行VAE降维好呢?哪个是合理的?

另外Transformer没有显式的概率结构,这件事的弊端是什么?是不是说明了注意力机制其实只是在离散token上构建了彼此之间的相互关系,这个离散相关关系的问题是什么?就是说注意力矩阵中的全体元素att(i,j)仅仅只能构成一个离散矩阵,无法构成一个连续分布的函数,这个的优缺点是什么?

如果站在场论的角度,我们可以通过构建一个场,或者多尺度场,来统一给出一个连续函数field(x,y),因为具备连续性了,所以采样就是可行的。能够采样的注意力的好处是什么?

1
 FNet+FFT  /  场论 + Fourier变换

为了降低计算复杂度,我们可以引入一个连续的场表示,定义 Token 之间的交互为一个积分方程:

\[A(x) = \int K(x, y) V(y) \, dy\]

其中:

  • $ A(x) $ 表示 $ x $ 处的注意力响应
  • $ K(x, y) $ 是 $ x $ 位置受到 $ y $ 位置影响的“场强”
  • $ V(y) $ 是 $ y $ 位置的特征信息
  • 积分替代了离散求和,使得计算复杂度降低

这个方程类似于电磁场、引力场的计算方式:

\[F(x) = \int \rho(y) G(x, y) \, dy\]

其中 $ G(x, y) $ 是 Green’s function,描述场的传播方式。

2026-03-16-note

1) LLM 所建模的对象是离散的语言,离散化建模,就意味着不支持连续采样;

SD 又采取的是连续建模,支持连续采样。

多模态融合中假设包含离散信息,连续信息,怎样才能将离散信息与连续信息进行混合?

强行把图像离散化,仿照LLM 自回归的建模,有什么问题?

本文由作者按照 CC BY 4.0 进行授权