13.5 VAE 的优点、局限与后续发展
前面几节里,我们已经分别讨论了:
- AutoEncoder 如何通过压缩与重建学习 latent representation
- VAE 如何把 latent representation 放进概率建模框架
- ELBO 为什么会成为 VAE 的训练目标
- VAE 在训练中会出现哪些典型现象,比如潜空间插值以及模式坍塌
到这里,我们应该已经能够回答 VAE 是什么以及 VAE 为什么这样设计。但是,为什么 VAE 没有成为今天图像生成的主流方法呢?它的优点和局限又是什么呢?
这一节,我们来看看 VAE 的优点与局限性,然后看看它在生成模型领域的位置。
13.5.1 VAE 的优点:为什么它很重要
VAE 之所以经典,不只是因为它能生成图片,是因为它把几个非常关键的思想第一次自然地结合在了一起:
- 潜变量建模
- 用神经网络参数化复杂分布
- 变分推断
- 端到端训练
也就是说,VAE 不是简单在 AutoEncoder 上加一个噪声,而是把表示学习、概率建模和神经网络训练统一到了一个框架里。这让它在历史上具有很强的奠基意义。
训练相对稳定
和很多后来的生成模型相比,VAE 的一个巨大优点就是:训练相对稳定。它的目标函数来自清晰的概率推导,通常就是优化 ELBO,也就是:
\[ \mathcal{L}(\theta,\phi;x) = \mathbb{E}_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)] - D_{\mathrm{KL}}(q_\phi(z\mid x)\,\|\,p(z)) \]
这意味着它不像 GAN 那样需要两个网络进行对抗博弈。没有 generator 和 discriminator 之间的拉扯,也没有那么明显的训练震荡、模式坍塌等问题。所以,从训练的角度来看,VAE 是一个相对友好的生成模型。这也是为什么 VAE 很适合作为生成模型入门的重要原因。
有明确的概率解释
普通 AutoEncoder 也能重建,也能学 latent representation,但它缺少一个明确的概率语义。而 VAE 的每一部分都可以放进概率图模型的语言里理解:
- \(p(z)\):先验分布
- \(p_\theta(x\mid z)\):生成模型
- \(q_\phi(z\mid x)\):近似后验
- ELBO:对对数似然的可优化下界
所以,我们知道 VAE 在假设什么,知道损失函数从哪里来,知道为什么采样生成是合理的,知道每一项正则化在约束什么。这往往比 GAN 那种“黑箱式”的生成更容易理解和分析。
潜空间连续、可解释、可插值
VAE 最吸引人的地方之一,是它学到的 latent space 往往比普通 AE 更规整。由于 KL 项的存在,模型会被鼓励让编码分布贴近先验(通常是标准正态):
\[ q_\phi(z\mid x) \approx \mathcal{N}(0, I) \]
这意味着潜空间通常会具备一些很有用的性质:
- 连续性:附近的 latent code 往往对应相似样本
- 平滑性:沿着潜空间移动,生成结果会逐渐变化
- 可插值性:两个样本之间做 latent interpolation,往往会出现自然的过渡
这也是为什么很多关于生成模型的教学,都会拿 VAE 来展示潜空间几何。
13.5.2 VAE 的局限:为什么生成结果经常偏模糊
尽管 VAE 很优雅,但它也有一些非常典型的局限。其中最常被提到的一点就是:
VAE 生成的图像往往比较平滑,甚至有些模糊。
这是很多初学者第一次跑 VAE 时最直观的感受。看起来模型懂了大概轮廓,但细节不够锐利,边缘也不如 GAN 或后来的 Diffusion 清晰。这并不是偶然的,而是和 VAE 的目标函数、概率假设、以及训练方式都有关系。
重建目标更偏向“平均意义上的合理”
VAE 常常通过最大化对数似然来训练,而在很多实现里,这等价于最小化某种逐像素的重建误差,比如 MSE 或 BCE。当一个输入可能对应多种细节时,逐像素损失往往会鼓励模型输出一种平均化的结果。
例如,对于一张脸图像:
- 某些局部纹理可能有多种合理取值
- 头发的微小走向可能不唯一
- 背景细节可能有不确定性
如果模型试图在像素层面同时兼顾多种可能,最安全的做法往往就是输出一个折中平均的结果。而这种平均化,视觉上就会表现为模糊。所以,VAE 的模糊并不一定说明它没学会,而更多是在说明它优化的是概率似然和整体结构,而不是视觉上最锐利的样本质量。
KL 正则会压缩表达能力
VAE 的另一个关键目标是让编码分布接近先验:
\[ D_{\mathrm{KL}}(q_\phi(z\mid x)\,\|\,p(z)) \]
这一项让潜空间更规整,但它也意味着模型不能无限制地把每个样本都编码得特别个性化。换句话说,KL 项在鼓励模型,不要把每个样本都藏在潜空间非常偏僻的角落,不要让后验分布太过复杂,尽量用一个更紧凑、更统一的方式来表达数据。这当然有助于生成时从先验采样,但代价是,某些高频细节、局部差异和精细纹理可能会被牺牲。
所以,VAE 就在做一种平衡,又想让重建更像原图,又想让 latent space 更规整。这两者并不总是完全一致。
Decoder 太强时,latent variable 可能被忽略
这会引出一个更深一点的问题:后验坍塌(posterior collapse)。
所谓后验坍塌,是指模型在训练中逐渐出现这样一种情况:
\[ q_\phi(z\mid x) \approx p(z) \]
也就是说,不管输入 \(x\) 是什么,encoder 输出的后验都差不多像先验。这意味着 latent variable 几乎没有携带与 \(x\) 相关的信息。如果这时 decoder 足够强,它可能只依赖自身的建模能力去重建数据,而不太使用 \(z\)。
这样的后果就是,KL 项变得很小,潜变量失去信息量,模型表面上还能训练,但 latent representation 变得没有意义。这在序列建模、文本建模里尤其常见,因为强大的 autoregressive decoder 很容易绕开 latent variable。
13.5.3 VAE 的几类常见改进
VAE 的经典结构已经很优雅,但研究者很快就发现,如果想进一步提高表示质量、生成质量,或者让潜变量更有语义结构,就需要做各种扩展。下面列几个最常见、也最值得知道的方向。
\(\beta\)-VAE:更强调潜空间规整 (Higgins et al. 2017)
\(\beta\)-VAE 在标准 VAE 的基础上,把 KL 项前面乘上一个系数 \(\beta\):
\[ \mathcal{L}_{\beta\text{-VAE}} = \mathbb{E}_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)] - \beta D_{\mathrm{KL}}(q_\phi(z\mid x)\,\|\,p(z)) \]
当 \(\beta > 1\) 时,模型会更强地被要求贴近先验。这样,潜空间会变得更规整、更容易分解出独立因素,但代价是重建质量可能会下降。这里的独立因素,指的就是潜空间里不同维度更可能对应不同的语义属性,比如姿态、缩放、旋转、光照、颜色等。这类表示通常被称为 解耦表示(disentangled representation)。
Conditional VAE:带条件的生成 (Sohn et al. 2015)
如果我们希望模型不只是随机生成,而是按条件生成,就可以把条件变量 \(y\) 加进模型中。例如,给定类别标签、属性、文本描述等条件,生成对应的图像。这时,生成过程会变成:
\[ p_\theta(x\mid z, y) \]
而 encoder 也可以写成:
\[ q_\phi(z\mid x, y) \]
这样模型就不只是学数据总体长什么样,而是在学在某个条件下,数据会怎么变化。
Conditional VAE 也是很多条件生成方法的一个基础起点。
VQ-VAE:把连续 latent 变成离散码本 (Oord et al. 2018)
标准 VAE 使用连续潜变量,通常假设是高斯分布。而 VQ-VAE (Vector Quantized VAE) 则走了另一条路:把 latent representation 离散化。
简单来说,它会维护一个码本(codebook),encoder 输出一个连续向量后,再把它映射到最近的离散 embedding 上。这样,潜变量就可以更像离散符号,从而更适合与自回归模型或 token-based 模型结合。VQ-VAE 在图像、语音、离散表征学习里都有很大的影响力,后来的很多视觉 token 方法,其思想都能和 VQ-VAE 联系起来。
13.5.4 VAE 在生成模型发展史中的位置
学到这里,我们先来把几种生成模型放在一起比较一下:
| 模型 | 核心思想 | 优点 | 局限 |
|---|---|---|---|
| GAN | 生成器与判别器对抗训练 | 样本锐利、逼真 | 训练不稳定,容易模式坍塌 |
| AutoEncoder | 压缩并重建输入 | 结构简单,适合表示学习 | 潜空间不规整,不适合直接采样 |
| VAE | 潜变量概率建模和变分推断 | 训练稳定,潜空间平滑,可采样 | 结果偏模糊,可能存在后验坍塌 |
| Diffusion | 逐步加噪与去噪生成 | 质量高,训练较稳 | 采样慢,系统较复杂 |
所以,VAE 不是追求最强视觉质量的模型,而是追求一种更规整、更可解释、更有概率意义的生成框架。所以,如果我们的问题是,怎么把概率建模和表示学习结合起来,怎么让潜空间更有结构,那么 VAE 几乎是绕不过去的一步。
VAE 是生成模型发展史上的一个重要里程碑。在 VAE 出现之前,人们已经知道可以利用 AutoEncoder 学习数据表示,可以借助概率图模型进行隐变量建模,也可以用变分方法近似复杂后验分布。而 VAE 的关键贡献在于,它将这些思想统一到同一个框架中,形成了一个端到端可训练的生成模型。在 VAE 之后,扩散模型逐渐成为主流。LDM (Latent Diffusion Model) 进一步提出,先将数据压缩到一个更紧凑、结构更清晰的 latent space,再在这一潜空间中完成生成过程,可以显著提升生成效率。这一思路也催生了首个广泛商业化的图像生成模型:Stable Diffusion。从某种意义上说,Stable Diffusion 所依赖的 latent space,正是由一个 VAE 学习得到的潜在表示。
下一章,我们来讲生成模型的最后一部分:Diffusion Model。