第 14 章 无监督学习(Unsupervised learning)
本章一句话:无监督学习只用没有标签的数据 \(\{x_i\}\) 来学习数据自身的结构;其中最重要的一类是“生成模型”——能合成以假乱真的新样本,而本章正是后续四章(GAN/VAE/流/扩散)的总纲与评判标准。
读这章的收获:建立一张无监督模型的分类地图,搞清“一个好的生成模型应满足哪些性质”,并理解为什么“给生成模型打分”格外困难(测试似然、Inception Score、FID、流形精确率/召回率的直觉)。
本章速览
- 承上启下:第 2–9 章讲有监督流水线(学 \(x\to y\) 的映射),第 10–13 章讲各种架构。本章转入无监督学习——只有数据 \(\{x_i\}\)、没有标签,目标是理解数据本身。
- 分类地图:无监督模型 ⊃ 生成模型(能合成新样本)⊃ 概率生成模型(还能给每个样本算概率)。很多模型借助潜变量 \(z\) 在“低维结构”与“高维数据”之间建立映射。
- 生成的统一套路:定义一个简单分布 \(Pr(z)\),从中采样潜变量,再用深度网络映射到数据空间 \(x\),就生成了一个新样本。
- 两条训练路线:GAN 用“真假难辨”的对抗损失训练;VAE / 流 / 扩散是概率模型,通过最大化观测数据的似然(即最小化负对数似然)来训练。
- 好模型的六条性质:高效采样、高质量、覆盖全分布、潜空间平滑、潜空间可解耦、似然可高效计算——但没有任何一个模型能同时满足全部。
- 评估很难:测试似然只适用于部分模型;针对图像有 Inception Score(IS)、Fréchet Inception 距离(FID)、流形精确率/召回率等指标,各有盲区。
14.1 无监督学习模型分类法
无监督学习的定义性特征是:从一批没有标签的观测数据 \(\{x_i\}\) 中学习。所有无监督模型都共享这一点,但目标五花八门——生成逼真新样本、对样本做去噪/插值/压缩/编辑,或揭示数据的内部结构(如聚类),又或判断一个新样本是“同类”还是“离群点”。
14.1.1 潜变量:数据的“压缩版”
无监督学习里一个常用策略,是在数据 \(x\) 与一组看不见的潜变量(latent variable)\(z\) 之间建立映射。潜变量捕捉数据集底层的结构,维度通常比原始数据低。从这个意义上说,潜变量 \(z\) 可以看作数据样本 \(x\) 的压缩版——保留了它的本质特征。
映射方向原则上可以是任意一个方向:
- 从数据到潜变量(\(x \to z\)):典型如 k-means 聚类算法,把每个数据 \(x\) 映射到一个簇编号 \(z\in\{1,2,\dots,K\}\)。
- 从潜变量到数据(\(z \to x\)):先在潜变量上定义一个分布 \(Pr(z)\),于是生成新样本只需两步:(i) 从 \(Pr(z)\) 采样一个 \(z\);(ii) 把它映射回数据空间 \(x\)。这类模型就叫生成模型(generative model)。
配图直觉(图 14.1 分类法):想象三个嵌套的圈。最外层是“无监督学习”(任何无标签训练的模型);里面是“生成模型”(能合成统计上相似的新样本);最里层是“概率生成模型”(不仅能生成,还为数据定义了一个分布、可从中采样)。而“潜变量模型”是一条横切线——它定义潜变量与数据的映射,可以落在上面任意一层里。
14.1.2 两类生成模型
后续第 15–18 章的四个模型,都是基于潜变量的生成模型,但训练哲学分两派:
(1) 对抗式生成模型——GAN(第 15 章)。 它学习从潜变量 \(z\) 生成数据样本 \(x^*\),损失函数鼓励生成的样本与真实样本难以区分。训练过程像图 14.2(a):一开始生成点(橙色)和真实点(青色)泾渭分明,随着训练推进,两者越来越混在一起、无法分辨。GAN 不为样本指定概率。
(2) 概率生成模型——归一化流、VAE、扩散模型(第 16–18 章)。 除了能生成新样本,它们还为每个数据点 \(x\) 赋予一个概率 \(Pr(x|\phi)\)(依赖模型参数 \(\phi\))。训练时最大化观测数据的概率,因此损失就是负对数似然之和:
\[ L[\phi] = -\sum_{i=1}^{I} \log\big[\,Pr(x_i\,|\,\phi)\,\big]. \]
由于概率分布必须积分为一,抬高真实数据的概率,就会隐式压低远离真实数据的样本的概率。如图 14.2(b),训练推进时真实样本在该分布下的似然不断升高。
赋予概率本身也很有用:
- 在测试集上的概率可用来定量比较两个模型;
- 对单个样本的概率设个阈值,就能判断它是同分布数据还是离群点。
补充:并非所有概率生成模型都依赖潜变量。比如 Transformer 解码器(第 12.7 节)也是无标签学习、能生成新样本并赋予概率,但它走的是自回归路线(逐 token 预测),不属于潜变量框架。
14.2 什么是好的生成模型
基于潜变量的生成模型,理想中应具备以下六条性质:
| 性质 | 含义 | 通俗理解 |
|---|---|---|
| 高效采样(Efficient sampling) | 生成样本应计算廉价,并能利用现代硬件的并行性 | 出图要快、能并行 |
| 高质量采样(High-quality sampling) | 样本应与训练真实数据无法区分 | 出图要真 |
| 覆盖(Coverage) | 样本应代表整个训练分布,而不能只像训练集的一小撮 | 出图要全,别只会画一种 |
| 潜空间平滑(Well-behaved latent space) | 每个 \(z\) 都对应一个合理的 \(x\);\(z\) 的平滑变化对应 \(x\) 的平滑变化 | 在潜空间里挪动,图像也平滑过渡 |
| 潜空间可解耦(Disentangled latent space) | 改动 \(z\) 的某一维,只对应改变数据的某个可解释属性 | 在语言模型里,可单独控制话题、时态或啰嗦程度 |
| 似然可高效计算(Efficient likelihood) | 若是概率模型,希望能高效、准确地算出新样本的概率 | 概率算得又快又准 |
配图直觉(图 14.3 性质对照):把四个模型按这六条性质排成一张表,每格打 ✓ / ✗ / ?(n/a 表示不适用)。大致结论是:
- GAN:采样高效 ✓、质量高 ✓、潜空间平滑 ✓,但覆盖差 ✗(容易“模式崩溃”,只会画一部分),不算概率(似然 n/a)。
- VAE:采样高效 ✓、潜空间较好,但样本质量偏糊 ✗,似然只能算下界(✗ 精确计算)。
- 流(Flows):采样高效 ✓、似然可精确高效计算 ✓(独此一家),但样本质量一般 ✗。
- 扩散(Diffusion):样本质量极高 ✓,但采样慢 ✗(要迭代很多步),似然算起来也贵。
精确的打分见仁见智,但绝大多数从业者都同意一句话:没有任何单一模型能同时满足全部理想性质——这也正是后面四章各有取舍、互相竞争的根本原因。
14.3 量化性能
知道了“好模型应有的性质”,接下来的问题是:怎么给生成模型打分? 由于图像数据易得、样本好坏一眼可辨,很多评估实验都用图像,因此下面有些指标只适用于图像。
14.3.1 测试似然(Test likelihood)
对概率模型,最自然的比较方式是看它在测试集上的似然。
注意:不能用训练集似然来评判。因为一个模型完全可以给每个训练点都赋予极高概率、而在点与点之间赋予极低概率——它的训练似然会非常漂亮,却只会复刻训练数据。
测试似然则同时反映了泛化能力和覆盖度:如果模型只把高概率压在训练数据的一小撮上,那它在别处的概率必然偏低,于是会有一部分测试样本拿到很低的概率,分数自然就上不去。
测试似然虽好,却不通用:
- 对 GAN 不适用(它根本不给概率);
- 对 VAE 和扩散模型很难精确估计(只能算对数似然的一个下界);
- 只有归一化流能精确且高效地计算似然。
14.3.2 Inception Score(IS,初始分数)
IS 专为图像设计,理想场景是在 ImageNet 上训练的生成模型。它借助一个预训练分类网络(通常是 “Inception” 模型,名字由此而来),基于两条标准:
- 单张图要像“某一类”:每张生成图 \(x^*\) 应该清晰地像 ImageNet 1000 类中的某一类、且仅一类——即条件分布 \(Pr(y|x^*_i)\) 应在正确类别上尖锐地集中(峰很高)。
- 整体要多样:把所有生成图平均起来,各类别应大致均匀——即边缘分布 \(Pr(y)\) 应该平坦。
IS 衡量的就是这两个分布之间的平均距离:若一个尖锐、一个平坦,距离就大、分数就高。形式上它返回二者 KL 散度 期望的指数:
\[ \text{IS} = \exp\!\left[\frac{1}{I}\sum_{i=1}^{I} D_{KL}\big(Pr(y|x^*_i)\,\|\,Pr(y)\big)\right], \]
其中 \(I\) 是生成样本数,边缘分布为
\[ Pr(y) = \frac{1}{I}\sum_{i=1}^{I} Pr(y|x^*_i). \]
配图直觉(图 14.4):(a) 预训练网络给生成图分类,若图够真,类别概率会在正确类上出现一根尖峰;(b) 若各类都生成得一样频繁,平均下来的类别分布应是平的。IS 度量的就是“尖峰分布”与“平坦分布”之间的平均差距。
IS 的局限:只对 ImageNet 类生成才有意义;对所用分类模型很敏感(换个模型重训,数值会变得很不一样);而且不奖励类内多样性——哪怕每类只会画一个逼真样本,它也能给高分。
14.3.3 Fréchet Inception 距离(FID)
FID 同样针对图像,计算生成样本分布与真实样本分布之间的一个对称距离。
这必然是近似的——因为很难刻画任何一方的分布(事实上,“刻画真实数据的分布”本来就是生成模型自己要干的活)。于是 FID 用多元高斯去近似这两个分布,再用 Fréchet 距离(名字的由来)估计两者之间的距离。
关键在于:它不在原始像素空间比较,而是比较 Inception 分类网络最深层的激活值。这些隐藏单元与物体类别关系最紧密,所以比较发生在语义层面,会忽略图像更细粒度的细节。FID 的优点是考虑了类内多样性;缺点是高度依赖 Inception 网络保留下来的特征——任何被网络丢弃的信息都不计入结果,而其中有些信息对“生成逼真样本”其实仍很重要。
14.3.4 流形精确率 / 召回率(Manifold precision/recall)
FID 对样本的真实度和多样性都敏感,但无法区分这两者。为了把它们拆开,引入两个流形的重叠概念:
- 数据流形:真实样本所在的数据子空间。
- 模型流形:生成样本所在的子空间。
于是借用分类里的两个词:
- 精确率(precision)= 落在数据流形里的模型样本比例——衡量生成样本中有多少是“逼真的”。
- 召回率(recall)= 落在模型流形里的真实样本比例——衡量模型能覆盖多少“真实数据的多样性”。
配图直觉(图 14.5):把真实样本和生成样本各看成一片云。精确率问的是“生成的云有多少落进了真实的云里”(真不真),召回率问的是“真实的云有多少被生成的云罩住了”(全不全)。图中为画图方便用的是恒定半径的超球,实际更常用“到第 \(k\) 近邻的距离”作半径。
怎么近似流形? 围绕每个样本放一个超球,半径取它到第 \(k\) 个最近邻的距离;所有超球的并集就近似出这片流形,判断一个新点是否落入也很容易。这个流形通常也在分类器的特征空间里计算——好处与坏处和 FID 一样(语义层面比较,但受限于网络保留的信息)。
本章小结
- 无监督模型在没有标签的情况下学习数据集的结构。其中一子集是生成模型,能合成新样本;更小的一子集是概率模型,既能生成、又能为观测数据赋予概率。
- 后续四章的模型套路一致:从一个已知分布的潜变量 \(z\) 出发,用一个深度网络把 \(z\) 映射到数据空间 \(x\),从而生成样本。
- 一个好的生成模型理想上应满足六条性质(高效采样、高质量、覆盖、潜空间平滑、潜空间可解耦、似然可高效计算),但现实中没有模型能全占——这是后四章各有侧重的根源。
- 评估生成模型很难:测试似然只对部分概率模型适用;针对图像有 IS、FID、流形精确率/召回率等指标,分别在“多样性(且 IS 还对 ImageNet 与所用分类网络敏感)”“语义保真”“真实度 vs. 多样性拆分”上各有强弱与盲区。
关键术语对照
| 中文 | English | 一句话含义 |
|---|---|---|
| 无监督学习 | Unsupervised learning | 无标签,学数据自身结构 |
| 生成模型 | Generative model | 能合成统计上以假乱真的新样本 |
| 概率(生成)模型 | Probabilistic generative model | 既能生成、又能给样本赋予概率 |
| 潜变量 | Latent variable | 数据的低维“压缩版”底层变量 |
| 潜变量分布 | \(Pr(z)\) | 潜变量所服从的简单已知分布 |
| 负对数似然 | Negative log-likelihood | 概率模型的训练损失 |
| 高效采样 | Efficient sampling | 生成样本又快又能并行 |
| 覆盖 | Coverage | 样本能代表整个训练分布 |
| 潜空间平滑 | Well-behaved latent space | \(z\) 平滑变 → \(x\) 平滑变 |
| 潜空间可解耦 | Disentangled latent space | 一维 \(z\) 对应一个可解释属性 |
| 模式崩溃 | Mode collapse | 只会生成分布的一小撮(覆盖差) |
| 测试似然 | Test likelihood | 用测试集似然衡量泛化与覆盖 |
| Inception Score | Inception score (IS) | 单图够像某类 + 整体够多样 |
| Fréchet Inception 距离 | Fréchet inception distance (FID) | 在语义特征空间比较真假分布距离 |
| 流形精确率/召回率 | Manifold precision/recall | 拆开衡量样本的真实度与多样性 |
| KL 散度 | KL divergence | 衡量两个分布差异的非对称度量 |
返回目录 | 上一章:第 13 章 图神经网络 | 下一章:第 15 章 生成对抗网络