第17章 机器学会生成:从自编码器到 GAN

给模型看几万张手写数字,要求它判断每张是几,这是分类问题。给模型一个随机向量,要求它画出一张从未见过、却像真实手写数字的新图片,是另一类问题。

分类器学习“输入属于哪个类别”。生成模型试图学习“什么样的输入可能来自这类数据”。它不仅要找到区分类别的边界,还要刻画笔画、形状、颜色、姿态等变化怎样共同形成样本。

这听起来像记住训练集再随机挑一张。真正有用的生成模型需要更进一步:它应压缩训练样本中的可复用规律,并用新的组合产生未逐项存储的结果。

本章沿三条重要路线理解这个问题:自编码器通过压缩与重建学习表示;变分自编码器给潜空间加入概率结构;生成对抗网络让生成器与判别器在竞争中共同改进。

判别边界与数据分布不是同一个目标

假设平面上有猫和狗两类样本。判别模型只需找到一条能区分两类的边界。边界两侧很远的空白区域是否像真实动物,对分类可能并不重要。

生成模型则要回答更完整的问题:猫的样本通常出现在哪里,不同姿态之间怎样变化,哪些像素组合几乎不可能出现。常用概率语言是学习数据分布 \(p_{data}(x)\),或带类别条件的分布 \(p(x\mid y)\)

“学习分布”不表示模型得到一张精确的世界真相地图。真实分布未知,我们只有有限样本;模型结构、损失和训练过程又会强调某些规律、忽略另一些。最终能生成什么,取决于训练数据覆盖了什么。

生成模型也不只用于画图。它可以生成文本、声音、视频、分子、动作轨迹和缺失数据;还可以做压缩、去噪、异常检测与表示学习。

自编码器先学会把输入恢复出来

自编码器(autoencoder)由两个部分组成:

  • 编码器 \(f\) 把输入 \(x\) 压成潜在表示 \(z\)
  • 解码器 \(g\)\(z\) 重建输入,得到 \(\hat x\)

\[ z=f_\phi(x),\qquad \hat x=g_\theta(z) \]

训练目标是让重建结果接近原输入。例如对连续像素,可以使用平方误差:

\[ L_{rec}=\lVert x-\hat x\rVert_2^2 \]

误差通过解码器传到编码器。模型没有类别标签,却被迫寻找能够恢复样本的信息,因此属于自监督表示学习的一种形式。早期误差反传研究已经用编码-解码结构学习内部表示。(Rumelhart 等 1986年)

若输入有 784 个像素,潜变量只有 32 维,模型必须压缩。相似数字可能在潜空间中落到相近区域,解码器再从这些坐标恢复笔画。

核心机制

自编码器把输入送入编码器得到潜变量,再由解码器重建输入。瓶颈或其他约束迫使模型保留可复用结构;若没有足够约束,网络可能只学会复制,而不是形成有用表示。

瓶颈为什么可能学到结构

一个容量不受限制的自编码器可以把每个输入原样传给输出。它的重建损失很低,却没有发现任何规律。

因此,自编码器必须受到约束:

  • 潜变量维度小于输入,形成欠完备瓶颈
  • 向输入加入噪声,再要求恢复干净样本;
  • 惩罚表示对输入的剧烈变化;
  • 让大部分潜单元保持稀疏;
  • 限制网络容量或加入正则化。

深层自编码器曾用于把高维数据压到低维表示。(Hinton 和 Salakhutdinov 2006年) 去噪自编码器则通过破坏输入再重建,迫使模型学习训练数据附近的稳定结构,而不是简单复制像素。(Vincent 等 2008年)

约束选择决定表示。压得太小会丢失细节;容量太大又可能记忆训练样本。重建任务还会保留所有有助于复原的信息,其中一些可能与下游任务无关。

技术深潜:重建目标没有唯一表示

给定数据集 \(\{x_i\}_{i=1}^{N}\),普通自编码器可以最小化:

\[ \min_{\phi,\theta} \frac{1}{N}\sum_{i=1}^{N} L\bigl(x_i,g_\theta(f_\phi(x_i))\bigr) \]

即使所有样本都能完美重建,潜空间仍可能有很多等价编码。把全部潜向量经过一个可逆变换,再让解码器执行相反变换,重建结果可以不变。

因此,潜变量的某一维不天然等于“笔画粗细”或“旋转角度”。可解释结构需要数据变化、模型偏置、独立性约束、监督信号或后续分析共同支持。

重建误差也必须与数据匹配。平方误差对应一种高斯噪声假设,二值交叉熵更适合特定归一化数据。损失选择会改变模型认为哪些差异重要。

会重建不等于会从零生成

普通自编码器只保证训练样本编码出的 \(z\) 能被解码。它没有规定潜空间其他位置应该是什么。

想象编码后的数字“1”集中在一座岛,数字“8”集中在另一座岛,中间大片区域从未出现。若随机选一个中间坐标交给解码器,可能得到无意义图案。

在两个已知样本的潜向量之间插值,有时会看到平滑变化。这很吸引人,却不能证明整个空间都可采样。潜表示可能弯曲、断裂或有空洞,插值路径也可能穿过训练数据几乎不会出现的区域。

要把编码器-解码器真正变成可采样生成模型,需要让潜变量遵循某种已知分布,并让训练样本的编码区域与它匹配。变分自编码器正是这样做的。

VAE 把潜变量写成概率模型

变分自编码器(variational autoencoder, VAE)假设数据由一个看不见的潜变量 \(z\) 生成:

  1. 先从简单先验 \(p(z)\) 抽取潜变量,常用标准正态分布;
  2. 解码器定义 \(p_\theta(x\mid z)\),从潜变量生成数据;
  3. 编码器近似给定数据后的潜变量分布 \(q_\phi(z\mid x)\)

Kingma 与 Welling、Rezende 等人的工作让这类模型能够用反向传播高效训练。(Kingma 和 Welling 2014年; Rezende 等 2014年)

与普通自编码器输出一个确定坐标不同,VAE 编码器通常输出均值 \(\mu(x)\) 和标准差 \(\sigma(x)\)。同一个输入对应潜空间中的一小片概率区域,而不是一个孤立点。

训练同时追求两件事:

  • 从采样的 \(z\) 重建输入;
  • 让编码分布不要偏离预设先验太远。

第二项促使各样本的近似后验靠近先验覆盖的区域,减少从先验采样时落入潜空间空洞的风险。但它不保证潜空间被均匀填满;聚合后的编码分布仍可能与先验存在差异。

证据下界在权衡什么

我们希望提高数据的对数概率 \(\log p_\theta(x)\),但其中需要对所有可能潜变量积分,通常无法直接计算。VAE 转而最大化一个可计算下界,常写成:

\[ \begin{aligned} \mathcal{L}_{VAE}(x)={}& \mathbb{E}_{q_\phi(z\mid x)} [\log p_\theta(x\mid z)] \\ &-D_{KL}\bigl(q_\phi(z\mid x)\,\|\,p(z)\bigr) \end{aligned} \]

第一项奖励重建或解释数据;第二项惩罚近似后验偏离先验。\(D_{KL}\) 是 KL 散度。

若只重视重建,每个样本可以占据彼此分离的狭小区域,难以随机采样;若正则过强,编码器可能忽略输入,让所有样本都接近同一先验,重建细节下降。

这不是“质量越高越好”的单轴问题,而是数据保真与潜空间结构之间的权衡。

技术深潜:随机采样怎样反向传播

直接写成 \(z\sim q_\phi(z\mid x)\) 时,随机采样节点似乎截断了对编码器参数 \(\phi\) 的普通反向传播。

VAE 使用重参数化技巧:先从与参数无关的标准正态分布采样噪声,再进行可微变换:

\[ \epsilon\sim\mathcal{N}(0,I) \]

\[ z=\mu_\phi(x)+ \sigma_\phi(x)\odot\epsilon \]

随机性被移到 \(\epsilon\),而 \(z\)\(\mu\)\(\sigma\) 的变换可微。一次训练只用有限噪声样本估计期望,因此梯度仍有随机方差,但可以用普通自动微分计算。

实践中常让编码器输出 \(\log\sigma^2\),避免直接优化必须为正的标准差。数值稳定、KL 权重和解码分布选择都会显著影响结果。

VAE 为什么常显得平滑甚至模糊

若图像解码器用独立高斯像素与平方误差表示 \(p(x\mid z)\),面对多个合理细节时,平均预测可能得到平滑边缘。例如同一位置既可能是向左笔画,也可能是向右笔画,像素平均会产生模糊。

这不是所有 VAE 必然模糊,而是解码分布、网络容量、潜变量和训练权衡的共同结果。更强的层次潜变量、自回归解码器和感知损失可以改变表现。

VAE 的优势在于目标与概率模型联系清楚、潜空间通常较连续,并提供可计算的对数似然下界;代价是生成锐度和复杂分布表达可能受限。

GAN 不再要求逐像素重建

2014 年,Ian Goodfellow 等人提出生成对抗网络(generative adversarial network, GAN)。(Goodfellow 等 2014年)

GAN 包含两个网络:

  • 生成器 \(G\) 把随机噪声 \(z\) 变成假样本 \(G(z)\)
  • 判别器 \(D\) 尝试区分真实样本与生成样本。

训练像一场不断升级的竞赛:判别器寻找假样本的破绽,生成器根据这些破绽调整输出。生成器不必与某张输入逐像素对应,只需让整体生成分布越来越难与真实分布区分。

经典目标要求生成器最小化、判别器最大化同一个函数:

\[ \min_G\max_D\;V(D,G) \]

把真实样本项与生成样本项分开写为:

\[ V_{real}(D)= \mathbb{E}_{x\sim p_{data}}[\log D(x)] \]

\[ \ell_{fake}(z)=\log(1-D(G(z))) \]

\[ V_{fake}(D,G)= \mathbb{E}_{z\sim p(z)}[\ell_{fake}(z)] \]

\[ V(D,G)=V_{real}(D)+V_{fake}(D,G) \]

判别器提高真实样本得分、降低假样本得分;生成器改变 \(G(z)\),使判别器更容易把它当真。实际训练通常交替更新两者,并常把生成器的饱和目标改为最大化 \(\log D(G(z))\)。这个非饱和目标具有相同的理想固定点,但在判别器很强时能提供更有用的梯度,并非原极小极大目标的逐点等价改写。

判别器不是最终产品的鉴伪警察

GAN 训练完成后,通常只保留生成器用于采样。判别器的工作是在训练中提供可学习的差异信号,而不是在部署时给每张图盖“真实”印章。

判别器也不是客观审美标准。它只学习当前训练数据与当前生成器之间的区别。如果训练集偏窄,判别器会奖励符合这套偏窄统计的输出;如果它过强,生成器可能收不到有用梯度;如果太弱,又无法指出问题。

卷积结构、归一化和训练经验使 GAN 在图像上逐步稳定。DCGAN 总结了一组有效的卷积架构选择,并展示了较平滑的潜空间操作。(Radford 等 2016年)

对抗训练为什么容易失衡

普通监督学习面对相对固定的数据目标。GAN 的目标会随着对手变化:生成器刚学会修复一种缺陷,判别器又转向新的线索。

常见问题包括:

  • 模式坍塌:生成器反复输出少数几种样本,质量看似不错却缺少多样性;
  • 梯度消失:判别器过快识破假样本,生成器得到的改进信号很弱;
  • 振荡:两方策略来回追逐,损失不稳定;
  • 评价困难:判别损失不直接对应人眼质量或分布覆盖;
  • 超参数敏感:学习率、更新次数、归一化和批次都会改变平衡。

Wasserstein GAN 用与 Wasserstein-1 距离相关的目标改善梯度行为,并要求评分函数满足 1-Lipschitz 约束;原始工作用权重裁剪近似实施这一约束。(Arjovsky 等 2017年) 它缓解了一些训练问题,却没有让模式覆盖、评价和数据偏差自动消失。

三条路线究竟有什么不同

方法 训练输入 主要目标 怎样生成 典型困难
普通自编码器 样本 \(x\) 重建同一 \(x\) 潜空间采样没有统一保证 复制、潜空间空洞
VAE 样本 \(x\) 重建加先验约束 \(p(z)\) 采样再解码 重建与正则权衡
GAN 真实样本与噪声 欺骗可训练判别器 噪声经生成器映射 不稳定、模式坍塌
图 1: 普通自编码器把输入编码后重建,优化重建误差;VAE 同时优化重建与潜变量先验约束,使从先验采样有明确入口;GAN 让生成器根据判别器对真实样本和生成样本的比较反馈改进。三者即使使用相似模块,训练目标、采样保证和失败模式也不同。

三者都可能包含编码器、解码器或潜向量,但相同模块名称不代表相同训练目标。

自编码器适合学习表示与压缩;VAE 提供明确的概率潜变量和可采样空间;GAN 擅长产生锐利样本,却更难训练和评价。实际系统还会混合多种目标。

“新样本”与“记住训练数据”怎样区分

神经网络参数当然会吸收训练数据的信息。生成结果与训练样本相似,是学习分布的目的之一;问题在于相似到什么程度。

模型可能:

  • 学到可组合的笔画、纹理和形状;
  • 对常见模式合理插值;
  • 复制罕见训练样本或个人信息;
  • 在训练分布外拼出不合理结构;
  • 用看似逼真的局部纹理掩盖整体错误。

判断是否记忆不能只凭肉眼找到一张相似图片。需要最近邻分析、成员推断、重复样本检查、训练-测试比较和隐私评估。即使没有逐像素复制,训练数据的版权、同意与代表性问题仍然存在。

逼真不等于真实,也不等于覆盖完整

一张人脸可以纹理逼真,却有不可能的耳环或背景;一组生成样本可以都很漂亮,却遗漏老年人、少数姿态或罕见类别。

生成质量至少包含两个维度:

  • 保真度:单个样本看起来是否像真实数据;
  • 多样性或覆盖:模型是否覆盖真实分布中的不同模式。

只追求保真度容易选择少数安全模式,只追求多样性又可能生成大量无效样本。常用指标如 FID 也只是特定特征空间中的统计距离,会受样本量、预处理和领域变化影响。

生成模型还改变了证据环境。图像、声音和视频可以低成本合成后,媒体看起来真实不再足以证明事件发生。水印、来源记录、检测器和平台规则能提供帮助,但生成与检测会共同演化,不能依赖单一技术永久解决。

这些模型为后来的生成式 AI 留下了什么

自编码器确立了“编码到潜空间,再从潜空间解码”的常用结构。VAE 展示了怎样把深度网络、潜变量概率模型和可微采样结合。GAN 证明可学习的判别反馈能替代固定像素损失,推动了高质量图像生成。

后来的扩散模型会采用另一条路线:逐步给数据加噪,再学习反向去噪过程。大型语言模型则通过自回归预测直接定义序列概率。它们的训练方式不同,却仍面对相同基本问题:数据分布怎样表示、采样怎样进行、质量与覆盖怎样权衡、训练数据中的偏差和记忆怎样进入输出。

本章小实验将在后续实践阶段用低维数据或小图像比较自编码器、VAE 与 GAN 的潜空间和失败模式。实践后置,不作为第 18 章的先修要求。

下一章回到强化学习。第 12 章中的 Q-learning 用表格保存每个状态动作价值;当状态变成屏幕像素,表格立即失效。深度网络将负责学习表示和价值,自我对弈与搜索再把这种能力推向围棋。

本章小结

  • 判别模型主要学习输入到标签的边界,生成模型试图刻画哪些样本可能来自数据分布。
  • 自编码器通过编码、瓶颈和重建学习表示;没有约束时,它可能只学会复制。
  • 普通自编码器只保证已编码样本能够重建,不保证任意潜空间位置都能生成有效样本。
  • VAE 用近似后验、潜变量先验和证据下界组织可采样空间,在重建质量与分布约束之间权衡。
  • 重参数化把随机性移到独立噪声,使编码器参数能够通过采样路径接受梯度。
  • GAN 让生成器与判别器交替竞争,用可学习反馈推动生成分布接近真实数据。
  • 对抗训练容易出现梯度消失、振荡和模式坍塌;视觉锐利不保证覆盖完整分布。
  • 生成结果既可能组合规律,也可能记忆训练样本;逼真、真实、原创和安全是不同判断。

思考问题

  1. 一个自编码器训练集重建误差接近零,为什么仍可能没有学到可用的潜空间?
  2. VAE 若把 KL 项权重设得极大,编码器和重建结果可能发生什么?
  3. GAN 每张生成图片都很逼真,但只会生成三个几乎相同的人脸,这个模型在哪个维度失败了?

延伸阅读

参考文献

Arjovsky, Martin, Soumith Chintala, 和 Léon Bottou. 2017年. 《Wasserstein Generative Adversarial Networks》. Proceedings of the 34th International Conference on Machine Learning, Proceedings of Machine Learning Research, 卷 70: 214~23.
Goodfellow, Ian, Jean Pouget-Abadie, Mehdi Mirza, 等. 2014年. 《Generative Adversarial Nets》. Advances in Neural Information Processing Systems 27, 2672~80.
Hinton, Geoffrey E., 和 Ruslan R. Salakhutdinov. 2006年. 《Reducing the Dimensionality of Data with Neural Networks》. Science 313 (5786): 504~7. https://doi.org/10.1126/science.1127647.
Kingma, Diederik P., 和 Max Welling. 2014年. 《Auto-Encoding Variational Bayes》. 2nd International Conference on Learning Representations. https://arxiv.org/abs/1312.6114.
Radford, Alec, Luke Metz, 和 Soumith Chintala. 2016年. 《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》. 4th International Conference on Learning Representations. https://arxiv.org/abs/1511.06434.
Rezende, Danilo Jimenez, Shakir Mohamed, 和 Daan Wierstra. 2014年. 《Stochastic Backpropagation and Approximate Inference in Deep Generative Models》. Proceedings of the 31st International Conference on Machine Learning, Proceedings of Machine Learning Research, 卷 32: 1278~86.
Rumelhart, David E., Geoffrey E. Hinton, 和 Ronald J. Williams. 1986年. 《Learning Internal Representations by Error Propagation》. 收入 Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Volume 1, 编辑 David E. Rumelhart, James L. McClelland, 和 the PDP Research Group. MIT Press.
Vincent, Pascal, Hugo Larochelle, Yoshua Bengio, 和 Pierre-Antoine Manzagol. 2008年. 《Extracting and Composing Robust Features with Denoising Autoencoders》. Proceedings of the 25th International Conference on Machine Learning, 1096~103. https://doi.org/10.1145/1390156.1390294.