第 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” 模型,名字由此而来),基于两条标准:

  1. 单张图要像“某一类”:每张生成图 \(x^*\) 应该清晰地像 ImageNet 1000 类中的某一类、且仅一类——即条件分布 \(Pr(y|x^*_i)\) 应在正确类别上尖锐地集中(峰很高)。
  2. 整体要多样:把所有生成图平均起来,各类别应大致均匀——即边缘分布 \(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\),从而生成样本。
  • 一个好的生成模型理想上应满足六条性质(高效采样、高质量、覆盖、潜空间平滑、潜空间可解耦、似然可高效计算),但现实中没有模型能全占——这是后四章各有侧重的根源。
  • 评估生成模型很难:测试似然只对部分概率模型适用;针对图像有 ISFID流形精确率/召回率等指标,分别在“多样性(且 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 章 生成对抗网络