8812 字
44 分钟
OceanAI-Chapter5:无监督学习

概述#

这一章的核心是:

当训练数据没有人工标签时,仍然可以利用数据之间的相似性、方差结构和概率结构,从中发现类别、提取主要特征,或估计含有隐变量的模型参数。

本章形成三条主线:

  1. 聚类:用 K 均值把相似数据归到同一类。
  2. 降维与表示学习:用 PCA、SVD、特征人脸和潜在语义分析提取少量主要成分。
  3. 隐变量参数估计:用 EM 算法在部分信息不可见时交替估计隐变量与模型参数。

整章可以概括为:

无标签数据
├─ 寻找“哪些样本相似” → K-means 聚类
├─ 寻找“哪些方向最重要” → PCA / SVD
├─ 寻找“数据背后的潜在语义” → LSA
└─ 寻找“不可见变量与模型参数” → EM

目录#


机器学习回顾#

机器学习在学习什么#

机器学习的基本任务,是从已有数据中找出一种规律,使计算机能够处理新的数据。

可以把它写成一个映射:

f:原始数据任务目标f:\text{原始数据}\longrightarrow\text{任务目标}

例如:

  • 输入一张图像,输出 persondog 等类别;
  • 输入一篇文本,输出“喜悦”“愤怒”等情感类别;
  • 输入房屋面积、位置等特征,输出房价预测值。

机器学习通常包含两个过程:

  1. 从原始数据中提取可计算的特征;
  2. 根据训练数据学习映射函数 ff,再利用 ff 处理新数据。

插图占位:插入 PPT 第 3 页“图像/文本数据通过映射函数进入任务空间”的示意图。

机器学习的主要类型#

类型数据特点典型任务学习信号
监督学习有标签分类、回归正确答案
无监督学习无标签聚类、降维、隐变量学习数据自身结构
强化学习智能体与环境交互序列决策奖励
半监督学习少量有标签、大量无标签分类等标签与数据结构共同作用

本章集中讨论 无监督学习

监督学习的三个基本要素#

监督学习可以用三个问题来理解:

  • 学什么:带标签的数据;
  • 如何学:选择并训练学习模型;
  • 学得怎样:利用损失函数衡量预测与真实标签之间的差异。

当模型把训练数据中的偶然噪声也记住时,会出现 过拟合:训练集表现很好,新数据表现变差。无监督学习虽然没有标签,同样可能受到模型复杂度、初始化和噪声的影响。


无监督学习#

定义与基本假设#

无监督学习从 没有标签的数据样本 出发,寻找数据中蕴含的模式。

它依赖一个基本假设:

数据是内容、概念和语义的载体;表达相似内容的数据,通常具有相似的数据模式。

例如,两篇都讨论机器学习的论文,可能频繁出现 optimizationregressionnetwork 等词;两张同一个人的人脸照片,在像素结构上也会存在共同特征。

无监督学习需要算法自行判断:

  • 哪些样本彼此相似;
  • 哪些特征最重要;
  • 哪些不可见因素可能生成了观测数据。

因此,特征表示和数据质量非常关键。输入数据不能表达真实问题时,再复杂的算法也难以得到有意义的结构。

无监督学习的主要任务#

  1. 聚类(clustering)
    把相似样本划入同一集合,例如客户分群、文档分类。

  2. 降维(dimensionality reduction)
    用少量新特征表达高维数据,例如 PCA、人脸压缩。

  3. 潜在结构学习(latent structure learning)
    从观测数据中推断隐藏的类别、语义或模型参数,例如 LSA、EM。

一个直观例子#

给出一组没有标签的三角形和矩形,算法可以采用不同标准聚类:

  • 按颜色分为两组;
  • 按形状分为两组。

这说明聚类结果依赖于选取的特征和相似性标准。同一批数据可以存在多种合理结构。

插图占位:插入 PPT 第 8 页“按颜色聚类/按形状聚类”的无监督学习示意图。


K-means 聚类#

问题定义#

给定 nn 个没有标签的 dd 维数据:

D={x1,x2,,xn},xiRdD=\{x_1,x_2,\ldots,x_n\},\qquad x_i\in\mathbb R^d

预先指定聚类数目 KK,K-means 要把这些数据分成 KK 个类簇:

G1,G2,,GKG_1,G_2,\ldots,G_K

并满足:

  • 每个样本只属于一个类簇;
  • 同一类簇中的数据尽量相似;
  • 不同类簇的数据尽量分开。

输入与输出可以概括为:

输入:n 个无标签数据 + 类簇数 K
输出:K 个类簇及其质心

距离与相似性#

K-means 通常用欧氏距离衡量两个数据的差异:

dist(xi,cj)=o=1d(xi,ocj,o)2\operatorname{dist}(x_i,c_j) = \sqrt{\sum_{o=1}^{d}(x_{i,o}-c_{j,o})^2}

其中 cjc_j 是第 jj 个类簇的质心。

  • 距离越小,算法认为两个数据越相似;
  • 距离越大,算法认为两个数据越不同。
WARNING

欧氏距离只比较数值坐标。它是否有意义,取决于特征如何定义、各维度的单位以及尺度是否可比。

例如“身高 170 cm”和“体重 60 kg”不能直接按照原始数值等权比较,通常要先标准化,并结合任务判断各特征的重要程度。

课堂上用座位位置作了直观说明:若只把教室中的平面坐标作为特征,坐得近的同学会被判为相似;若换成专业、兴趣或成绩作为特征,同一批同学可能形成完全不同的分组。

算法流程#

K-means 不断重复“分配样本—更新中心”两步。

第一步:初始化 KK 个聚类质心#

C={c1,c2,,cK},cjRdC=\{c_1,c_2,\ldots,c_K\},\qquad c_j\in\mathbb R^d

初始质心可以从数据点中随机选择。初始值会影响最终结果。

第二步:将每个样本分配给最近的质心#

对每个 xix_i,计算它到全部质心的距离,并选择最近的一个:

cluster(xi)=argmin1jKdist(xi,cj)\operatorname{cluster}(x_i) = \arg\min_{1\leq j\leq K}\operatorname{dist}(x_i,c_j)

第三步:更新每个类簇的质心#

若第 jj 个类簇为 GjG_j,新质心取该类簇全部样本的均值:

cj=1GjxiGjxic_j=\frac{1}{|G_j|}\sum_{x_i\in G_j}x_i

第四步:继续迭代#

使用新质心重新分配样本,再更新质心,直到满足停止条件:

  • 达到预设最大迭代次数;
  • 前后两次的质心基本不再变化;
  • 或目标函数下降量已经很小。
初始化质心
把样本分给最近质心
计算每一类的新均值
是否收敛?──否──→继续分配
输出聚类结果

插图占位:插入 PPT 第 12—15 页“K-means 初始化、分配、更新、迭代”流程图。

为什么要更新为均值#

固定某个类簇中的样本后,希望找一个中心 cc,使所有样本到它的平方距离之和最小:

mincxiGxic2\min_c\sum_{x_i\in G}\|x_i-c\|^2

cc 求导并令导数为零,得到:

c=1GxiGxic=\frac{1}{|G|}\sum_{x_i\in G}x_i

因此,均值正是使类内平方误差最小的中心。这也解释了名称 K-means:算法维护 KK 个均值中心。

目标函数:最小化类内方差#

K-means 的目标函数为:

J=j=1KxiGjxicj2J=\sum_{j=1}^{K}\sum_{x_i\in G_j}\|x_i-c_j\|^2

它称为类内平方和,也可以理解为各类簇内部方差的加权和。

算法每轮进行两件事:

  • 固定质心,选择距离最近的类簇,令 JJ 不增;
  • 固定类簇,用均值更新质心,令 JJ 不增。

所以 JJ 会逐步下降,最后停在一个稳定结果。

TIP

K-means 通常保证收敛到一个 局部最优解。不同初始质心可能得到不同结果,实践中常用多个随机初值重复运行,再选择目标函数最小的一次。

课堂上的苹果例子可以帮助理解方差:

  • 把大小接近的小苹果放在一组,组内样本到平均大小的偏差较小;
  • 把大苹果和小苹果混在同一组,组内方差会明显增大。

完整小例子#

设一维数据为:

{1,2,3,10,11,12},K=2\{1,2,3,10,11,12\},\qquad K=2

初始化质心:

c1=1,c2=10c_1=1,\qquad c_2=10

第一次分配#

  • 1,2,31,2,3c1c_1 更近,归入 G1G_1
  • 10,11,1210,11,12c2c_2 更近,归入 G2G_2

于是:

G1={1,2,3},G2={10,11,12}G_1=\{1,2,3\},\qquad G_2=\{10,11,12\}

更新质心#

c1=1+2+33=2c_1=\frac{1+2+3}{3}=2c2=10+11+123=11c_2=\frac{10+11+12}{3}=11

再次分配#

在新质心 221111 下,两个类簇不再改变,算法收敛。

最终结果:

{1,2,3}{10,11,12}\{1,2,3\}\quad\text{与}\quad\{10,11,12\}

K-means 的特点与局限#

1. 必须预先给定 KK#

真实问题中往往不知道应分成几类。KK 过小会把不同群体混在一起,KK 过大又会把一个自然群体拆散。

2. 对初始质心敏感#

算法可能停在不同的局部最优解。常见改进是多次随机初始化,或使用更合理的初始化方法。

3. 属于硬聚类#

每个样本只能属于一个类簇,归属值为 0 或 1。位于边界上的样本可能同时与多个类相似,硬聚类无法表达这种不确定性。

4. 对尺度和特征权重敏感#

欧氏距离默认每个维度同等重要。单位较大的变量可能支配距离,因此常需标准化。

5. 对异常值敏感#

均值容易被离群点拉动,导致质心偏移。

6. 更适合近似球状、尺度相近的类簇#

当真实类簇呈弯曲形状、密度差异很大或相互嵌套时,单纯依赖到质心的欧氏距离可能效果较差。

7. 大数据下计算量增加#

每轮需要计算大量“样本—质心”距离。若有 nn 个样本、KK 个质心、dd 维特征,一轮分配约需 O(nKd)O(nKd) 的计算量。

应用#

图像压缩#

把每个像素的颜色视为数据,用 K-means 把全部颜色聚成 KK 类,再用各类质心颜色替换原像素。

  • K=2K=2:压缩率高,但颜色和细节损失明显;
  • K=3K=3:保留更多轮廓;
  • K=10K=10:更接近原图,但需要保存更多颜色。

插图占位:插入 PPT 第 18 页中 K=2,3,10K=2,3,10 与原图的图像压缩对比图。

文本聚类#

把论文表示成词语特征向量,再根据向量距离聚类。课堂材料展示了将 200 多万篇论文聚为约 29,000 个类别,并用代表词描述各类别的例子。


主成分分析 PCA#

为什么需要降维#

现实数据常有很高的维度。

例如,在用户—商品矩阵中:

  • 每一行代表一个用户;
  • 每一列代表一种商品;
  • 矩阵元素表示用户是否购买或对商品的偏好。

商品数量和用户数量都可能非常大,而且多数用户只接触少数商品,矩阵中会有大量零元素。直接处理这种高维矩阵,存储和计算成本都很高。

降维希望做到:

用更少的变量保留原数据中最重要的结构,同时削弱冗余和噪声。

这与“抓住主要矛盾”和奥卡姆剃刀原则相似:保留真正有信息的部分,舍去重复或作用很小的部分。

方差、协方差与相关系数#

方差#

设一维样本为:

X={x1,x2,,xn}X=\{x_1,x_2,\ldots,x_n\}

样本均值:

xˉ=1ni=1nxi\bar x=\frac{1}{n}\sum_{i=1}^{n}x_i

样本方差:

Var(X)=1n1i=1n(xixˉ)2\operatorname{Var}(X) =\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar x)^2

方差描述数据围绕均值的离散程度:

  • 方差小:数据集中;
  • 方差大:数据分散,沿该方向保留的信息通常更多。

分母使用 n1n-1,源于样本均值已经由同一批数据估计,中心化后的偏差满足和为 0,只有 n1n-1 个独立自由度;这样得到的样本方差是总体方差的无偏估计。

协方差#

对成对观测 (xi,yi)(x_i,y_i),样本协方差为:

Cov(X,Y)=1n1i=1n(xixˉ)(yiyˉ)\operatorname{Cov}(X,Y) =\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar x)(y_i-\bar y)

含义:

  • Cov(X,Y)>0\operatorname{Cov}(X,Y)>0:两变量总体同向变化;
  • Cov(X,Y)<0\operatorname{Cov}(X,Y)<0:两变量总体反向变化;
  • Cov(X,Y)=0\operatorname{Cov}(X,Y)=0:两变量无线性协同变化。

课堂举例:

  • 广告投入增加,商品销售额可能上升,呈正相关;
  • 某些金融资产可能负相关,把它们组合可降低整体波动风险。
WARNING

相关关系只能说明变量共同变化,不能单独证明因果关系。天气与旅游人数可能相关,但还需要控制节假日、季节等其他因素,才能讨论因果解释。

皮尔逊相关系数#

协方差受量纲影响。皮尔逊相关系数把它标准化到 [1,1][-1,1]

corr(X,Y)=Cov(X,Y)σXσY\operatorname{corr}(X,Y) =\frac{\operatorname{Cov}(X,Y)}{\sigma_X\sigma_Y}

其中 σX,σY\sigma_X,\sigma_Y 为标准差。

重要性质:

  1. 1corr(X,Y)1-1\leq\operatorname{corr}(X,Y)\leq1
  2. 相关系数关于 X,YX,Y 对称;
  3. corr=1\operatorname{corr}=1 表示完全正线性关系;
  4. corr=1\operatorname{corr}=-1 表示完全负线性关系;
  5. corr=0\operatorname{corr}=0 只说明无线性相关,仍可能存在非线性关系。

不相关与独立#

在方差存在时:

X 与 Y 独立corr(X,Y)=0X\text{ 与 }Y\text{ 独立}\quad\Longrightarrow\quad\operatorname{corr}(X,Y)=0

反方向通常不成立。

例如,若 XX 关于 0 对称,且 Y=X2Y=X^2,则 XXYY 显然存在确定关系,但可能有 corr(X,Y)=0\operatorname{corr}(X,Y)=0。这说明相关系数只检测线性关系。

PCA 的几何直觉#

设二维点云大致沿一条斜线分布,现在要把二维数据压缩到一维。

可以把每个点投影到某条直线上:

  • 若投影方向与点云伸展方向垂直,很多点会挤在一起,原有差异丢失;
  • 若投影方向沿点云最长方向,投影后的点仍然充分分散,保留的信息更多。

因此,PCA 选择:

使投影后数据方差最大的方向,作为第一主成分。

找到第一方向后,再寻找与前面方向正交、且投影方差次大的方向,作为第二主成分,依次类推。

插图占位:插入 PPT 第 28 页“向 xx/yy 方向以及向斜线方向投影”的 PCA 降维示意图。

PCA 的矩阵表达#

假设有 nndd 维样本,组成矩阵:

XRn×dX\in\mathbb R^{n\times d}

每行是一个样本,每列是一个特征。先对每一列中心化,使各特征均值为 0。

希望把 dd 维降到 ll 维,其中 l<dl<d。寻找映射矩阵:

WRd×lW\in\mathbb R^{d\times l}

降维结果:

Y=XW,YRn×lY=XW,\qquad Y\in\mathbb R^{n\times l}

原数据的样本协方差矩阵为:

Σ=1n1XTX\Sigma=\frac{1}{n-1}X^TX

为了让降维后总方差最大,求解:

maxWtr(WTΣW)\max_W\operatorname{tr}(W^T\Sigma W)

并要求各投影方向单位正交:

WTW=IlW^TW=I_l

其中 tr()\operatorname{tr}(\cdot) 是矩阵的迹,即主对角线元素之和。

为什么最大特征值对应主成分#

先考虑只找一个方向 ww

maxwwTΣw,wTw=1\max_w w^T\Sigma w, \qquad w^Tw=1

构造拉格朗日函数:

L(w,λ)=wTΣwλ(wTw1)L(w,\lambda)=w^T\Sigma w-\lambda(w^Tw-1)

ww 求导并令其为零:

Σw=λw\Sigma w=\lambda w

这正是特征值方程。把它代回目标函数:

wTΣw=wT(λw)=λw^T\Sigma w=w^T(\lambda w)=\lambda

所以:

  • 投影方向 ww 是协方差矩阵的特征向量;
  • 该方向上的投影方差等于对应特征值 λ\lambda
  • 要使方差最大,就选最大特征值对应的特征向量。

多个主成分时,取最大的前 ll 个特征值对应的特征向量,按列组成 WW

TIP

需要理解“最大方差方向 = 最大特征值对应的特征向量”。拉格朗日乘子推导掌握思路即可,重点在结论与算法流程。

PCA 算法步骤#

  1. 将样本组成矩阵 XX
  2. 对每一维特征减去均值,完成中心化;
  3. 计算协方差矩阵 Σ=1n1XTX\Sigma=\frac{1}{n-1}X^TX
  4. Σ\Sigma 的特征值和特征向量;
  5. 将特征值从大到小排列;
  6. 取前 ll 个特征向量组成映射矩阵 WW
  7. 计算 Y=XWY=XW,得到低维表示。

如何决定保留几个主成分#

设特征值按从大到小排列:

λ1λ2λd0\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_d\geq0

ll 个主成分保留的方差比例为:

ηl=i=1lλii=1dλi\eta_l =\frac{\sum_{i=1}^{l}\lambda_i}{\sum_{i=1}^{d}\lambda_i}

常见做法是选择最小的 ll,使累计解释方差达到某个阈值,例如 95% 或 99%。阈值越高,信息保留越多,压缩程度越低。

K-means 与 PCA 中方差的作用#

这两个算法都使用方差,但目标不同:

算法方差目标直观目的
K-means最小化每个类簇内部方差让同类样本尽量接近
PCA最大化投影后的总体方差降维后尽量保留样本差异与信息

记忆方式:

  • 聚类看类内紧不紧
  • 降维看投影后散不散

其他降维方法#

课堂对以下方法作了概念性介绍,重点是理解它们分别保留什么结构。

非负矩阵分解 NMF#

对非负矩阵 DD,寻找两个非负小矩阵:

DWH,W0, H0D\approx WH, \qquad W\geq0,\ H\geq0

可用平方误差或 KL 散度衡量重建误差。由于全部系数非负,NMF 倾向于形成“部分相加得到整体”的表示,例如用眼睛、鼻子、嘴等局部部件组合成人脸。

多维尺度法 MDS#

MDS 希望降维前后样本之间的两两距离尽量保持不变。

  • PCA 主要保持总体方差结构;
  • MDS 主要保持距离结构。

MDS 依赖训练样本之间的距离矩阵,对全新样本的直接映射较困难,这称为 out-of-sample 问题。

局部线性嵌入 LLE#

LLE 是非线性降维方法。它假设复杂流形在一个很小的局部范围内近似线性:

  1. 找每个样本的近邻;
  2. 用近邻的线性组合重建该样本;
  3. 在低维空间中保持相同的局部重建关系。

其核心是保留局部几何结构。


奇异值分解与特征人脸#

奇异值分解 SVD#

任意 m×nm\times n 矩阵 AA 都可以分解为:

A=UDVTA=UDV^T

其中:

  • UU:左奇异向量组成的正交矩阵;
  • DD:奇异值组成的非负对角矩阵;
  • VV:右奇异向量组成的正交矩阵。

奇异值按从大到小排列:

σ1σ20\sigma_1\geq\sigma_2\geq\cdots\geq0

较大的奇异值对应矩阵中的主要结构,较小奇异值通常对应较弱信息或噪声。

SVD 与特征值分解的联系:

  • VV 的列向量是 ATAA^TA 的特征向量;
  • UU 的列向量是 AATAA^T 的特征向量;
  • 对应特征值是奇异值的平方。

低秩近似#

只保留最大的前 kk 个奇异值,可得到:

Ak=UkDkVkTA_k=U_kD_kV_k^T

矩阵尺寸变为:

(m×k)(k×k)(k×n)(m\times k)(k\times k)(k\times n)

kk 远小于 m,nm,n 时,存储量和计算量显著下降,同时保留原矩阵的主要信息。

这称为 低秩近似。它可用于:

  • 数据压缩;
  • 特征降维;
  • 图像去噪;
  • 推荐系统;
  • 潜在语义分析。
TIP

课堂要求以理解 SVD 的分解意义、奇异值大小与低秩近似为主。完整代数推导不要求背诵,实际计算通常由软件完成。

特征人脸的基本思想#

一张 32×3232\times32 的灰度人脸图像有 1024 个像素,可铺平成 1024 维向量。

直接比较全部像素存在两个问题:

  • 维数高,计算和存储开销大;
  • 很多像素变化彼此相关,存在冗余。

特征人脸方法利用 PCA/SVD,从许多人脸图像中学习一组主要变化方向。每一个方向还原成图像后,看起来像一张模糊的人脸,因此称为 特征人脸(eigenface)

核心思想:

每张人脸都可以近似表示为“平均脸 + 若干特征人脸的加权组合”。

插图占位:插入 PPT 第 46 页“二维灰度人脸铺平成高维向量”的示意图。

特征人脸算法流程#

设有 nn 张人脸,每张铺平成 dd 维向量 xix_i

1. 计算平均脸#

μ=1ni=1nxi\mu=\frac{1}{n}\sum_{i=1}^{n}x_i

2. 对每张人脸中心化#

ϕi=xiμ\phi_i=x_i-\mu

将中心化向量组成矩阵 Φ\Phi

3. 求主要方向#

利用 PCA 或 SVD 找到最大特征值/奇异值对应的前 ll 个方向:

W=[w1,w2,,wl]W=[w_1,w_2,\ldots,w_l]

每个 wjw_j 都可以还原为一张特征人脸。

4. 把原人脸投影到特征人脸空间#

ii 张人脸的低维系数为:

yi=WTϕiy_i=W^T\phi_i

原先需要 dd 个像素值,现在只需 ll 个系数。

课堂示例中,400 张人脸对应提取出 36 张主要特征人脸,说明高维像素可以由较少的主成分表达。

插图占位:插入 PPT 第 47 页“400 张人脸与 36 张特征人脸”的图。

人脸重建与识别#

重建#

使用低维系数重建人脸:

x^i=μ+Wyi\hat x_i=\mu+Wy_i
  • 使用的特征人脸越少:图像模糊、不同人脸趋同,压缩率高;
  • 使用的特征人脸越多:细节和人物差异更清楚,计算量增加。

插图占位:插入教材/PPT 中“随特征人脸数量增加,重建人脸逐渐清晰”的对比图。

识别#

对两张人脸,不必逐像素比较,可比较其低维系数向量:

dist(yi,yj)\operatorname{dist}(y_i,y_j)

距离越小,说明两张人脸在特征人脸空间中越相似。

新的人脸也可以先减去平均脸,再投影到已有特征人脸空间,因此该方法能处理训练集之外的新样本。

方法的局限#

PCA 特征人脸主要提取整体变化,例如整体亮度、脸型和大范围结构,局部器官特征未必清楚。

此外,它对以下变化可能较敏感:

  • 光照;
  • 人脸姿态;
  • 遮挡;
  • 表情;
  • 图像配准误差。

NMF 的非负“部分组合”表示更容易形成眼睛、鼻子等局部部件,可以作为另一种表达思路。


潜在语义分析 LSA#

为什么需要潜在语义#

仅按关键词字面是否相同来比较文档,会遇到两个问题:

  1. 同义表达minimizationoptimization 含义相关,但字符串不同;
  2. 一词多义或跨领域使用network 可以出现在机器学习,也可以出现在基因调控网络中。

潜在语义分析(Latent Semantic Analysis, LSA,也称 LSI)希望从大规模词语共现中发现隐藏的语义维度。

它需要回答三类关系:

  • 单词与单词之间的关系;
  • 单词与文档之间的关系;
  • 文档与文档之间的关系。

单词—文档矩阵#

先构造单词—文档矩阵 AA

  • 每一行表示一个单词;
  • 每一列表示一篇文档;
  • 元素表示该词是否出现或出现次数。

矩阵通常非常稀疏,因为一篇文档只含词汇表中的少量词。

利用 SVD 提取潜在语义#

对单词—文档矩阵作 SVD:

A=UDVTA=UDV^T

含义可以理解为:

  • UU 描述单词在潜在语义空间中的位置;
  • VV 描述文档在潜在语义空间中的位置;
  • DD 表示各潜在语义维度的重要程度。

只保留最大的前 kk 个奇异值:

Ak=UkDkVkTA_k=U_kD_kV_k^T

AkA_k 是原矩阵的低秩近似。它会把大量稀疏、孤立的字面共现压缩成少数稳定的语义主题。

插图占位:插入 PPT 第 62—64 页“单词—文档矩阵经过 SVD 得到低秩近似”的示意图。

课堂例子:机器学习与基因编辑文档#

课堂例子包含两组文档。

A 组:机器学习相关#

  • a1a_1:含 nonconvexregressionoptimization
  • a2a_2:含 optimizationnetwork
  • a3a_3:含 regressionanalysisminimization
  • a4a_4:含 nonconvexanalysis
  • a5a_5:含 optimizationminimization

B 组:基因编辑相关#

  • b1b_1:含 gene
  • b2b_2:含 genesyndromeediting
  • b3b_3:含 networkgenehuman
  • b4b_4:含 syndromeeditinghuman

对应的二值单词—文档矩阵为:

terma1a2a3a4a5b1b2b3b4
nonconvex100100000
regression101000000
optimization110010000
network010000010
analysis001100000
minimization001010000
gene000001110
syndrome000000101
editing000000101
human000000011

从原矩阵看,a3a_3 中没有 optimization,只有 minimization。单纯关键词匹配难以发现两者语义接近。经过低秩近似后,它们因为经常出现在相似文档环境中,会在潜在空间里变得接近。

如何理解重建矩阵#

课堂取最大的前两个奇异值,得到 A2A_2

低秩重建后:

  • 同一主题中的词语和文档相关性更明显;
  • A 组文档之间通常呈较强正相关;
  • B 组文档之间通常呈较强正相关;
  • A、B 两组之间通常呈负相关或较弱相关。

network 同时出现在 a2a_2b3b_3,属于跨主题词。矩阵分解还会结合它与其他词的共同出现情况:

  • a2a_2 中,它与 optimization 共现;
  • b3b_3 中,它与 genehuman 共现。

因为后一侧提供的基因编辑语境更强,network 在潜在语义空间中可能更靠近基因编辑主题。

可以进一步计算低维单词向量或文档向量的皮尔逊相关系数/余弦相似度,实现:

  • 文档聚类;
  • 相似文档检索;
  • 词语语义关联分析;
  • 主题发现。
WARNING

低秩近似会平滑原始数据,因此能够补足潜在联系,也可能引入原矩阵中没有的弱关联。kk 过小会丢失细节,kk 过大则保留噪声和稀疏性。


模型参数估计#

概率与似然#

概率和似然使用的数学表达可能相同,但观察角度不同。

设模型为 P(xθ)P(x\mid\theta)

  • 概率:固定参数 θ\theta,研究不同数据 xx 出现的可能性;
  • 似然:固定已经观察到的数据 xx,比较不同参数 θ\theta 对这批数据的解释能力。

例如,已知一枚硬币正面概率为 0.70.7,问十次中出现 8 次正面的概率,这是概率问题。

已经观察到十次中有 8 次正面,反过来估计硬币正面概率是多少,这是似然问题。

WARNING

似然函数不要求对参数 θ\theta 的积分等于 1。它是把观测数据固定后,关于参数的函数。

最大似然估计 MLE#

设数据集:

D={x1,x2,,xn}D=\{x_1,x_2,\ldots,x_n\}

样本在参数 θ\theta 给定时条件独立,则似然函数:

L(θ)=P(Dθ)=i=1nP(xiθ)L(\theta) =P(D\mid\theta) =\prod_{i=1}^{n}P(x_i\mid\theta)

最大似然估计选择使观测数据最可能出现的参数:

θ^MLE=argmaxθP(Dθ)\hat\theta_{\text{MLE}} =\arg\max_\theta P(D\mid\theta)

乘积求导往往不方便,通常取对数:

(θ)=logL(θ)=i=1nlogP(xiθ)\ell(\theta) =\log L(\theta) =\sum_{i=1}^{n}\log P(x_i\mid\theta)

因为对数是单调递增函数,最大化 LL 与最大化 \ell 的结果相同。

课堂通过“谁更可能取得第一名”“职业选手与路人谁更可能完成 20 次击杀”说明 MLE 的直觉:在多个候选解释中,选择最能解释已观测结果的那个。

最大后验估计 MAP#

MAP 还利用参数的先验知识:

θ^MAP=argmaxθP(θD)\hat\theta_{\text{MAP}} =\arg\max_\theta P(\theta\mid D)

根据贝叶斯公式:

P(θD)=P(Dθ)P(θ)P(D)P(\theta\mid D) =\frac{P(D\mid\theta)P(\theta)}{P(D)}

由于 P(D)P(D) 与待优化的 θ\theta 无关:

θ^MAP=argmaxθP(Dθ)P(θ)\hat\theta_{\text{MAP}} =\arg\max_\theta P(D\mid\theta)P(\theta)

取对数后:

θ^MAP=argmaxθ[logP(Dθ)+logP(θ)]\hat\theta_{\text{MAP}} =\arg\max_\theta \left[\log P(D\mid\theta)+\log P(\theta)\right]

区别:

方法使用的信息目标
MLE观测数据最大化 P(Dθ)P(D\mid\theta)
MAP观测数据 + 参数先验最大化 P(Dθ)P(θ)P(D\mid\theta)P(\theta)

当先验分布近似均匀时,MAP 与 MLE 的结果接近。


期望最大化算法 EM#

为什么需要 EM#

MLE 和 MAP 通常假设:观测数据完整,似然函数可以直接写出并优化。

现实中常存在 隐变量(latent variable)

  • 混合模型中,不知道每个样本来自哪个类别;
  • 硬币实验中,只看到投掷序列,不知道选择了哪枚硬币;
  • 文档模型中,只看到词语,不知道生成文档的主题。

若隐变量为 ZZ、观测数据为 XX,直接似然为:

P(Xθ)=ZP(X,Zθ)P(X\mid\theta)=\sum_ZP(X,Z\mid\theta)

对数中出现“对隐变量求和后的对数”,通常难以直接求极值。EM 采用交替迭代:

  1. 暂时固定参数,估计隐变量;
  2. 暂时固定隐变量的概率分布,更新参数。

E 步与 M 步#

设当前参数为 θ(t)\theta^{(t)}

E 步:Expectation#

根据当前参数,计算隐变量的后验分布:

P(ZX,θ(t))P(Z\mid X,\theta^{(t)})

并计算完整数据对数似然的条件期望:

Q(θθ(t))=EZX,θ(t)[logP(X,Zθ)]Q(\theta\mid\theta^{(t)}) = \mathbb E_{Z\mid X,\theta^{(t)}} [\log P(X,Z\mid\theta)]

直观上,E 步给不可见的类别分配“软概率”或期望计数。

M 步:Maximization#

在这些软分配基础上,更新参数:

θ(t+1)=argmaxθQ(θθ(t))\theta^{(t+1)} =\arg\max_\theta Q(\theta\mid\theta^{(t)})

然后再次进入 E 步,直到参数基本不再变化。

初始化参数 θ⁽⁰⁾
E 步:按当前参数估计隐变量
M 步:按隐变量的期望更新参数
参数是否稳定?──否──→返回 E 步
输出参数

二硬币投掷例子#

这是本章最重要的 EM 计算例子。

问题#

有 A、B 两枚硬币。每轮随机选择一枚硬币,连续投掷 10 次,只记录正反面序列,却没有记录本轮选择了哪枚硬币。

五轮观测为:

轮次投掷结果正面 H反面 T
1HTTTHHTHTH55
2HHHHTHHHHH91
3HTHHHHHTHH82
4HTHTTTHHTT46
5THHHTHHHTH73

需要估计:

θA=P(HA),θB=P(HB)\theta_A=P(H\mid A),\qquad \theta_B=P(H\mid B)

隐变量是:每轮究竟选择了 A 还是 B。

初始化#

θA(0)=0.60,θB(0)=0.50\theta_A^{(0)}=0.60, \qquad \theta_B^{(0)}=0.50

为简化,假设先验上选择 A、B 的机会相同。对一轮有 hh 个正面、tt 个反面的确定序列,来自硬币 A 的似然为:

LA=(θA)h(1θA)tL_A=(\theta_A)^h(1-\theta_A)^t

来自硬币 B 的似然为:

LB=(θB)h(1θB)tL_B=(\theta_B)^h(1-\theta_B)^t

第一次 E 步#

以第 1 轮 5H、5T 为例:

P(A5H,5T)=0.65×0.450.65×0.45+0.5100.45P(A\mid 5H,5T) = \frac{0.6^5\times0.4^5} {0.6^5\times0.4^5+0.5^{10}} \approx0.45

因此:

P(B5H,5T)=10.45=0.55P(B\mid 5H,5T)=1-0.45=0.55

同理得到五轮的软归属概率:

轮次P(A本轮数据)P(A\mid\text{本轮数据})P(B本轮数据)P(B\mid\text{本轮数据})
10.450.55
20.800.20
30.730.27
40.350.65
50.650.35

将每轮正反面次数乘以软归属概率,得到 A、B 各自贡献的期望次数:

轮次A 的 HA 的 TB 的 HB 的 T
12.252.252.752.75
27.240.801.760.20
35.871.472.130.53
41.412.112.593.89
54.531.942.471.07
合计21.308.5711.708.43

这里没有强行判断某轮“一定来自 A”或“一定来自 B”,而是把一轮数据按概率分配给两枚硬币。这正是软分配。

第一次 M 步#

利用期望正反面次数更新正面概率:

θA(1)=21.3021.30+8.570.713\theta_A^{(1)} =\frac{21.30}{21.30+8.57} \approx0.713θB(1)=11.7011.70+8.430.581\theta_B^{(1)} =\frac{11.70}{11.70+8.43} \approx0.581

继续迭代#

迭代次数θA\theta_AθB\theta_B
00.6000.500
10.7130.581
20.7450.569
30.7680.550
40.7830.535
50.7910.526
60.7950.522
70.7960.521
80.7960.520
90.7970.520
100.7970.520

最终约收敛到:

θA0.797,θB0.520\theta_A\approx0.797, \qquad \theta_B\approx0.520

这个例子中每个量的含义#

对象含义
观测数据 XX五轮正反面序列
隐变量 ZZ每轮选择了 A 还是 B
参数 θ\theta两枚硬币的正面概率
E 步计算每轮来自 A、B 的概率与期望计数
M 步用期望计数重新估计两枚硬币的正面概率

插图占位:插入 PPT 第 70—74 页“二硬币 EM:投掷结果、软分配表、参数迭代表”。

三硬币投掷例子#

三枚硬币编号为 0、1、2:

  1. 先投硬币 0;
  2. 若硬币 0 为正面,选择硬币 1 再投三次;
  3. 若硬币 0 为反面,选择硬币 2 再投三次;
  4. 只记录后面三次结果,不记录硬币 0 的结果。

参数:

Θ={λ,p1,p2}\Theta=\{\lambda,p_1,p_2\}

其中:

  • λ=P(z=H)\lambda=P(z=H):硬币 0 出现正面的概率;
  • p1p_1:硬币 1 出现正面的概率;
  • p2p_2:硬币 2 出现正面的概率。

隐变量 zz 是硬币 0 的结果。

若观测到 THT,其中一正两反,则:

P(x=THT,z=HΘ)=λp1(1p1)2P(x=\mathrm{THT},z=H\mid\Theta) =\lambda p_1(1-p_1)^2P(x=THT,z=TΘ)=(1λ)p2(1p2)2P(x=\mathrm{THT},z=T\mid\Theta) =(1-\lambda)p_2(1-p_2)^2

于是该序列由硬币 1 产生的后验概率为:

P(z=Hx=THT,Θ)=λp1(1p1)2λp1(1p1)2+(1λ)p2(1p2)2P(z=H\mid x=\mathrm{THT},\Theta) = \frac{\lambda p_1(1-p_1)^2} {\lambda p_1(1-p_1)^2+(1-\lambda)p_2(1-p_2)^2}

这就是 E 步;再把所有观测序列按这些后验概率加权,更新 λ,p1,p2\lambda,p_1,p_2,就是 M 步。

课堂通过不同初值展示了 EM 的初值敏感性:不同初始化可能把两类硬币的角色对调,或收敛到不同局部解。

EM 的性质与局限#

1. 每轮通常不会降低观测数据似然#

E、M 两步交替构造并提高目标,因此似然值通常单调不减,最后到达稳定点。

2. 只能保证到达局部稳定解#

EM 通常不能保证找到全局最优,结果可能依赖初始化。

3. E 步与 M 步都必须可计算#

若隐变量后验难以计算,或 M 步没有可行的优化方法,标准 EM 仍会很困难。

4. 收敛后还要判断结果是否有意义#

似然较大只表示模型更好地拟合当前数据,还需检查模型假设、参数可解释性和对新数据的表现。


本章知识框架#

方法输入输出核心目标主要问题
K-means无标签样本、KK类簇与质心最小化类内平方距离哪些样本相似
PCA高维样本低维主成分表示最大化投影方差哪些方向最重要
SVD任意矩阵三个因子矩阵/低秩近似保留大奇异值如何压缩矩阵
特征人脸人脸图像特征人脸系数用少量主成分表达人脸如何降维识别人脸
LSA单词—文档矩阵潜在语义向量低秩语义近似如何发现词与文档关系
MLE完整观测数据参数估计最大化数据似然哪个参数最能解释数据
MAP数据与先验参数估计最大化后验概率如何融合先验知识
EM含隐变量的数据隐变量分布与参数交替提高期望完整似然信息不完整时如何估参

整章联系:

相似性
└─ K-means:根据距离形成类簇
主要结构
├─ PCA:找最大方差方向
├─ SVD:找大奇异值对应结构
├─ Eigenfaces:用主成分表达人脸
└─ LSA:用低秩结构表达潜在语义
概率结构
├─ MLE:数据固定,寻找最可能参数
├─ MAP:在 MLE 上加入参数先验
└─ EM:隐变量未知时,E/M 两步交替估计

需要掌握到什么程度#

必须理解并会解释#

  • 无监督学习与监督学习的区别;
  • K-means 的四步流程、目标函数及局限;
  • PCA 为什么选择最大方差方向;
  • 协方差、相关系数、不相关与独立的关系;
  • PCA 中协方差矩阵、特征值和主成分的关系;
  • SVD 与低秩近似的基本含义;
  • 特征人脸和 LSA 如何利用 PCA/SVD;
  • 概率与似然、MLE 与 MAP 的区别;
  • EM 的隐变量、E 步和 M 步;
  • 二硬币 EM 例子的完整计算逻辑。

应当会写的公式#

dist(x,c),cj=1GjxGjx\operatorname{dist}(x,c),\qquad c_j=\frac{1}{|G_j|}\sum_{x\in G_j}xJ=jxGjxcj2J=\sum_j\sum_{x\in G_j}\|x-c_j\|^2Var(X),Cov(X,Y),corr(X,Y)\operatorname{Var}(X),\quad \operatorname{Cov}(X,Y),\quad \operatorname{corr}(X,Y)Y=XW,Σ=1n1XTX,Σw=λwY=XW,\qquad \Sigma=\frac{1}{n-1}X^TX, \qquad \Sigma w=\lambda wA=UDVT,Ak=UkDkVkTA=UDV^T, \qquad A_k=U_kD_kV_k^Tθ^MLE=argmaxθP(Dθ)\hat\theta_{\mathrm{MLE}}=\arg\max_\theta P(D\mid\theta)θ^MAP=argmaxθP(Dθ)P(θ)\hat\theta_{\mathrm{MAP}} =\arg\max_\theta P(D\mid\theta)P(\theta)

了解思想即可#

  • NMF、MDS、LLE 的详细优化推导;
  • SVD 的完整代数证明;
  • EM 的 Jensen 不等式下界证明与严格收敛证明。
OceanAI-Chapter5:无监督学习
https://www.sleepyfish2031.top/posts/课程笔记/海洋人工智能基础/chapter5/
作者
Sleepyfish
发布于
2026-06-15
许可协议
CC BY-NC-SA 4.0