# 第 9 章　无监督学习

> 来源：https://deeplearning.bnuai.com/chapters/09-unsupervised-learning ｜ 作者：唐志清（北京师范大学） ｜ 更新：2026-11-01 ｜ 内容依据邱锡鹏《神经网络与深度学习》（https://nndl.ai/）及作者公开课件

## 学习目标

<div class="goals">

- 了解无监督学习的三类典型问题：无监督特征学习、概率密度估计、聚类；
- 掌握主成分分析的优化目标与求解（协方差矩阵的特征向量）；
- 理解字典、编码、完备与过完备等概念，掌握稀疏编码的目标函数与交替优化；
- 掌握自编码器及其稀疏、降噪变体；
- 掌握参数密度估计的最大似然解，理解直方图、核密度估计和 K 近邻三种非参数方法。

</div>

## 课件幻灯片

> 本章课件共 28 页，可在网页中逐页浏览：https://deeplearning.bnuai.com/chapters/09-unsupervised-learning；PDF 下载：https://deeplearning.bnuai.com/pdf/nndl-ch09.pdf

## 讲义

### 9.1 无监督学习概述

**无监督学习**是指从无标签的数据中学习出一些有用的模式。与监督学习不同，它不需要人工标注，因此能利用海量的无标注数据。典型的无监督学习问题有：[幻灯片 3](#slide-3) [幻灯片 4](#slide-4)

- **无监督特征学习**：从无标签数据中挖掘有效的特征或表示，常用于降维、数据可视化或监督学习前的预处理；
- **概率密度估计**：根据一组训练样本估计样本空间的概率密度 $p(\boldsymbol x)$；
- **聚类**：把一组样本按一定准则划分为不同的组（簇），如 K 均值、谱聚类等。

为什么需要无监督学习？Hinton 有一个著名的说法：大脑约有 $10^{14}$ 个突触，而人只活约 $10^9$ 秒，参数远多于数据——因此大量学习必须是无监督的。LeCun 的“蛋糕”比喻也说明了这一点：强化学习是樱桃，监督学习是糖霜，自监督（无监督）学习才是蛋糕本身。[幻灯片 5](#slide-5)

### 9.2 主成分分析

**主成分分析**（PCA）是最常用的数据降维方法，使得在转换后的空间中数据的**方差最大**。[幻灯片 7](#slide-7) 设样本 $\boldsymbol x^{(n)}\in\mathbb R^D$ 已中心化，把它投影到单位向量 $\boldsymbol w$ 上得到 $z^{(n)}=\boldsymbol w^\top\boldsymbol x^{(n)}$，投影后的方差为

$$
\sigma(\boldsymbol w)=\frac1N\sum_{n=1}^{N}\big(\boldsymbol w^\top\boldsymbol x^{(n)}-\boldsymbol w^\top\bar{\boldsymbol x}\big)^2=\boldsymbol w^\top\boldsymbol\Sigma\boldsymbol w,
$$

其中 $\boldsymbol\Sigma$ 是样本协方差矩阵。在约束 $\boldsymbol w^\top\boldsymbol w=1$ 下最大化方差，引入拉格朗日乘子并令梯度为零，得

$$
\boldsymbol\Sigma\boldsymbol w=\lambda\boldsymbol w,\qquad \sigma(\boldsymbol w)=\lambda .
$$

所以 $\boldsymbol w$ 是协方差矩阵的特征向量，方差等于对应的特征值。要降到 $D'$ 维，只需取最大的 $D'$ 个特征值对应的特征向量组成投影矩阵 $\boldsymbol W$。PCA 也可以等价地理解为**最小化重构误差**。它是一种无监督方法，降维后的特征不一定最利于分类——这时可以考虑有监督的**线性判别分析**（LDA）。

下面的演示包括 PCA（主成分方向、解释方差与投影）和 K 均值聚类的逐步迭代：

> （此处为交互演示，请在网页中使用：https://deeplearning.bnuai.com/chapters/09-unsupervised-learning）

<p class="demo-link">在单独页面中打开：<a href="/demos/kmeans-pca">K 均值与 PCA</a></p>

### 9.3 稀疏编码

**（线性）编码**。给定一组基向量 $\boldsymbol A=[\boldsymbol a_1,\cdots,\boldsymbol a_M]$（称为**字典**），把输入表示为基向量的线性组合：[幻灯片 8](#slide-8)

$$
\boldsymbol x=\sum_{m=1}^{M}z_m\boldsymbol a_m=\boldsymbol A\boldsymbol z,
$$

$\boldsymbol z$ 称为输入 $\boldsymbol x$ 的**编码**。如果 $M$ 个基向量刚好能支撑 $D$ 维空间，称为**完备**的；如果 $M>D$ 且能支撑 $D$ 维空间，称为**过完备**的。过完备基向量一般不是线性独立的，编码不唯一，需要额外的约束。[幻灯片 9](#slide-9)

**稀疏编码**受哺乳动物视觉系统“少数神经元被激活”的启发，要求编码尽可能稀疏：[幻灯片 10](#slide-10)

$$
\min_{\boldsymbol A,\boldsymbol Z}\ \sum_{n=1}^{N}\Big(\big\|\boldsymbol x^{(n)}-\boldsymbol A\boldsymbol z^{(n)}\big\|^2+\eta\,\rho\big(\boldsymbol z^{(n)}\big)\Big)+\lambda\|\boldsymbol A\|^2,
$$

稀疏性衡量函数 $\rho(\cdot)$ 可以取 $\ell_0$ 范数（非零元素个数，不可导），常用的替代有 $\ell_1$ 范数 $\sum_m|z_m|$、对数函数 $\sum_m\log(1+z_m^2)$、指数函数 $\sum_m-\exp(-z_m^2)$。

**训练过程**采用交替优化：[幻灯片 11](#slide-11)

1. 固定字典 $\boldsymbol A$，对每个样本求最优编码 $\boldsymbol z^{(n)}$（一个 Lasso 类问题）；
2. 固定编码 $\boldsymbol Z$，更新字典 $\boldsymbol A$（一个最小二乘问题）。

**稀疏编码的优点**：[幻灯片 12](#slide-12) **计算量**小——稀疏表示中大部分元素为 0，便于后续计算；**可解释性**——只有少数基被激活，相当于把输入分解为少数几个“模式”；**特征选择**——自动选择与输入相关的少数特征，降低噪声、减轻过拟合。在自然图像上学到的字典非常类似于初级视觉皮层的 Gabor 状感受野。

### 9.4 自编码器

**自编码器**通过无监督的方式学习一组数据的有效编码，由编码器 $f:\mathbb R^D\to\mathbb R^M$ 和解码器 $g:\mathbb R^M\to\mathbb R^D$ 两部分组成，目标是最小化重构误差：[幻灯片 13](#slide-13)

$$
\mathcal L=\sum_{n=1}^{N}\big\|\boldsymbol x^{(n)}-g\big(f(\boldsymbol x^{(n)})\big)\big\|^2 .
$$

最简单的是两层网络：$\boldsymbol z=f(\boldsymbol W^{(1)}\boldsymbol x+\boldsymbol b^{(1)})$，$\boldsymbol x'=f(\boldsymbol W^{(2)}\boldsymbol z+\boldsymbol b^{(2)})$。如果令 $\boldsymbol W^{(2)}=\boldsymbol W^{(1)\top}$，称为**捆绑权重**，可以减少参数、起到正则化作用。编码维数 $M<D$ 时，自编码器相当于一种降维（线性激活 + 平方误差时，它学到的子空间与 PCA 相同）；$M\ge D$ 时，需要额外的约束避免学到恒等映射。

```mermaid
flowchart LR
  X["输入 x"] --> E["编码器 f"]
  E --> Z["编码 z"]
  Z --> D["解码器 g"]
  D --> R["重构 x'"]
  R -. 重构误差 ‖x − x'‖² .-> X
```

**稀疏自编码器**：让隐藏层维数大于输入维数，同时约束编码稀疏：[幻灯片 14](#slide-14)

$$
\mathcal L=\sum_{n=1}^{N}\big\|\boldsymbol x^{(n)}-\boldsymbol x'^{(n)}\big\|^2+\eta\,\rho(\boldsymbol Z)+\lambda\|\boldsymbol W\|^2 .
$$

稀疏性常用 KL 散度度量：设第 $j$ 个隐藏神经元的平均活性为 $\hat\rho_j=\frac1N\sum_n z_j^{(n)}$，希望它接近一个很小的值 $\rho^*$（如 0.05），则 $\rho(\boldsymbol Z)=\sum_{j=1}^{M}\mathrm{KL}(\rho^*\,\|\,\hat\rho_j)=\sum_j\Big(\rho^*\log\frac{\rho^*}{\hat\rho_j}+(1-\rho^*)\log\frac{1-\rho^*}{1-\hat\rho_j}\Big)$。

**降噪自编码器**：通过引入噪声来增加编码鲁棒性。对输入 $\boldsymbol x$ 随机把一部分维度置零（或加高斯噪声）得到损坏的输入 $\tilde{\boldsymbol x}$，然后让自编码器从 $\tilde{\boldsymbol x}$ 重构出**原始的**无损输入 $\boldsymbol x$。这迫使模型学习数据的内在结构，而不是简单地复制输入。[幻灯片 15](#slide-15)

自编码器也可以堆叠成深层结构（**堆叠自编码器**），逐层训练后用于初始化深度网络；第 13 章的**变分自编码器**则把它推广为生成模型。

### 9.5 概率密度估计

**参数密度估计**：假设数据服从某个参数化分布 $p(\boldsymbol x;\theta)$，用最大似然估计参数：$\theta^{ML}=\arg\max_\theta\sum_{n=1}^N\log p(\boldsymbol x^{(n)};\theta)$。[幻灯片 18](#slide-18)

- **正态分布**：$\boldsymbol\mu^{ML}=\frac1N\sum_n\boldsymbol x^{(n)}$，$\boldsymbol\Sigma^{ML}=\frac1N\sum_n(\boldsymbol x^{(n)}-\boldsymbol\mu^{ML})(\boldsymbol x^{(n)}-\boldsymbol\mu^{ML})^\top$；
- **多项分布**：设 $K$ 个取值中第 $k$ 个出现了 $m_k$ 次，则 $\mu_k^{ML}=\dfrac{m_k}{N}$（用拉格朗日乘子处理 $\sum_k\mu_k=1$ 的约束）。[幻灯片 19](#slide-19)

参数密度估计存在以下问题：[幻灯片 20](#slide-20) **模型选择**——真实分布往往难以用简单分布刻画；**不可观测变量**——数据可能由隐变量生成（如混合模型，需要 EM 算法，见第 11 章）；**维度灾难**——高维数据的参数估计需要大量样本，例如 $D$ 维高斯的协方差有 $O(D^2)$ 个参数。

**非参数密度估计**不假设分布的具体形式。对点 $\boldsymbol x$ 附近体积为 $V$ 的小区域 $\mathcal R$，若 $N$ 个样本中有 $K$ 个落入该区域，当 $N$ 足够大、$V$ 足够小时：[幻灯片 21](#slide-21)

$$
p(\boldsymbol x)\approx\frac{K}{NV}.
$$

由此有两种做法：固定 $V$ 统计 $K$（直方图、核密度估计），或固定 $K$ 求 $V$（K 近邻）。

- **直方图方法**：把每一维划分为若干**箱**，统计每个箱中的样本数。简单直观，但对箱宽敏感，且箱的数量随维数指数增长，一般只适用于低维。[幻灯片 22](#slide-22)
- **核密度估计**（Parzen 窗方法）：以 $\boldsymbol x$ 为中心定义一个宽度为 $H$ 的超立方体，用核函数 $\phi(\boldsymbol z)=1$（若 $|z_i|<\frac12,\ \forall i$），否则为 0。落入超立方体的样本数为 $K=\sum_n\phi\big(\frac{\boldsymbol x-\boldsymbol x^{(n)}}{H}\big)$，于是 $p(\boldsymbol x)=\frac{K}{NH^D}$。为得到更平滑的估计，可改用高斯核 $\phi(\boldsymbol z)=\frac{1}{(2\pi)^{D/2}}\exp\big(-\frac12\|\boldsymbol z\|^2\big)$。[幻灯片 23](#slide-23)
- **K 近邻方法**：固定 $K$，找一个以 $\boldsymbol x$ 为中心、恰好包含 $K$ 个样本的最小区域，用其体积 $V$ 估计密度。在样本稠密处区域小，稀疏处区域大，能自适应地调整“窗宽”。[幻灯片 24](#slide-24)

## 本章小结

- 无监督学习包括特征学习、密度估计和聚类，不依赖标注，能利用海量数据。
- PCA 取协方差矩阵最大特征值的特征向量；稀疏编码学习过完备字典与稀疏编码，交替优化。
- 自编码器最小化重构误差；稀疏自编码器约束隐层活性，降噪自编码器从损坏的输入重构原始输入。
- 参数密度估计用最大似然，非参数密度估计基于 $p(\boldsymbol x)\approx K/(NV)$：直方图、核密度估计固定 $V$，K 近邻固定 $K$。[幻灯片 27](#slide-27)

## 思考题与习题 {#exercises}

<div class="exercise-list">

1. **（推导）** 证明 PCA 中“最大化投影方差”与“最小化重构误差”是等价的。
2. **（计算）** 二维数据的协方差矩阵为 $\boldsymbol\Sigma=\begin{bmatrix}3&1\\1&3\end{bmatrix}$，求第一主成分方向及其解释的方差比例。
3. **（分析）** 对比稀疏编码与自编码器：二者各自的“编码器”是什么？推断（求编码）时的计算代价有何不同？
4. **（概念）** 为什么过完备（$M>D$）的自编码器如果不加约束容易学到恒等映射？列举三种避免方式。
5. **（推导）** 推导多项分布参数的最大似然估计 $\mu_k=m_k/N$。
6. **（思考，课件第 25 页）** 核密度估计中窗宽 $H$ 过大或过小分别会带来什么问题？如何选择 $H$？
7. **（编程）** 在 MNIST 上训练一个隐层维数为 32 的自编码器和降噪自编码器，比较重构效果，并用 t-SNE 可视化编码。

</div>

**部分提示**

- 第 2 题：特征值为 4 和 2，第一主成分方向 $\frac{1}{\sqrt2}[1,1]^\top$，解释方差比例 $4/6\approx66.7\%$。
- 第 4 题：瓶颈结构（$M<D$）、稀疏约束、输入加噪声、正则化（如收缩自编码器）。
- 第 6 题：$H$ 过大则过度平滑、丢失细节；过小则估计尖锐、方差大。可用交叉验证（最大化验证集对数似然）选择。

## 延伸阅读

- 交互：[K 均值与 PCA](https://deeplearning.bnuai.com/demos/kmeans-pca)。
- 教材：邱锡鹏《神经网络与深度学习》第 9 章「无监督学习」。
- Olshausen B A, Field D J. Emergence of simple-cell receptive field properties by learning a sparse code for natural images, Nature 1996；Vincent P, et al. Extracting and composing robust features with denoising autoencoders, ICML 2008。
- Bishop C M. Pattern Recognition and Machine Learning, 第 2.5 节（非参数方法）、第 12 章（PCA）。
- 第二版对应章节：第 10 章「无监督学习」。
