all_lessons/数学的逻辑/36第 37 课 / 共 44 课

第十部分 · 把它们拼成学习器

没有标签也能学:PCA 与高斯混合

上一课的两台机器都靠"老师"——每个样本都配着一个正确答案 y。可现实里绝大多数数据没人标注:一堆顾客、一堆星系光谱、一堆基因表达,没有 y。损失里的 yᵢ−ŷᵢ 连写都写不出来。那机器还能学到什么?答案是:让数据自己说出它的结构——主轴在哪、抱成几团。这就是无监督学习。

线性回顾
上一课:我们装出了第一台学习机器——线性回归(最小二乘 = 高斯噪声下的 MLE)和逻辑回归(sigmoid + 交叉熵 + 梯度下降)。两者都是监督学习:靠成对的 (x, y) 训练。
留下的问题:如果数据没有标签——只有一堆 x,没有任何 y——损失函数里的"真值"消失了,监督学习那套彻底失效。没有答案,机器还能从数据里学到东西吗?
本课新增:两条无监督的路PCA(回扣第 23 课)问"数据里最值得看的方向是哪几个",把高维压成低维而不失真;高斯混合模型 GMM + EM 问"这些点其实来自几个看不见的'团'",做软聚类与密度估计——它正是第 30 课多元高斯与第 31 课最大似然的又一次合体。无标签不是无信息:结构本身就是答案。
本课路线
(1) 无监督学习要找的是结构,不是答案;(2) PCA:方差最大的方向 = 主成分(回扣第 22、23 课);(3) 聚类的难题——硬分组的鸡生蛋问题;(4) GMM:把每团数据建成一个多元高斯(第 30 课);(5) EM 算法:E 步认领、M 步重估,交替逼近 MLE(第 31 课);(6) 软聚类 vs 硬聚类(k-means);(7) 这一切如何为下一课的分类器埋下伏笔。

无监督学习:没有老师,找的是结构

监督学习的契约是"给你 x,我要 y"。无监督学习撕掉了这份契约:手里只有一堆 x₁, x₂, …, xₙ,没有任何标签。目标不再是"预测答案",而是发现数据自身的结构。结构有两种最基本的形状:

没有标签做监督,我们靠什么定义"学得好"?靠几何(保留最多的方差、点离团心最近)和概率(让数据的似然最大)。这正是把第七部分的几何工具和第九部分的概率工具同时拉回来——无监督学习是它们的会师。

PCA:抓住方差最大的方向

第 23 课我们已经造好了 PCA,这里复述它的灵魂、并把它放进"无监督学习"的框架。设想一团二维点,它们沿着某条斜线拉得很长、垂直方向却很窄。那条"最长"的方向,就藏着这团数据最多的信息——因为信息就体现在"差异"里,而差异就是方差

PCA 的任务:找一个方向(单位向量 v),让数据投影到它上面后方差最大。投影是第 20 课的内积,方差由第 30 课的协方差矩阵 Σ(读作"西格玛矩阵")刻画。把"最大化投影方差"写成数学,答案干净得惊人——

主成分方向 = 协方差矩阵 Σ 的特征向量;方差大小 = 对应的特征值 λ
读作"数据的主轴,正是协方差矩阵的特征向量(第 22 课);每个主轴上的方差,就是它对应的特征值"。

这就闭环了:第 22 课的特征向量、第 23 课的 SVD、第 30 课的协方差椭圆,说的是同一件事——协方差椭圆的长轴,就是第一主成分 PC1。只保留前几个特征值最大的方向、扔掉其余,就把高维数据压成低维而几乎不失真(低秩近似)。整个过程不用一个标签:数据自己指出了哪几个方向最值得看。这是第一种无监督的学习。

聚类的难题:鸡生蛋,蛋生鸡

第二种结构是分组。给你一团点,肉眼能看出"这是三堆",可怎么让机器自动找出来?难点是个循环依赖

可两者我都不知道!要中心得先有归属,要归属得先有中心——鸡生蛋。破局的办法是交替猜:先随便放几个中心,按它们分一次组;再用分好的组更新中心;如此往复,直到不再变化。这个"猜→修正→再猜"的迭代思想,配上一个概率模型,就是著名的 EM 算法

GMM:把每一团建成一个多元高斯

怎么用概率描述"几团数据"?高斯混合模型(GMM)的赌注是:每个点是从 K多元高斯(第 30 课)中的某一个里抽出来的,只是我们看不见它来自哪个。整团数据的密度是这 K 个高斯的加权和

p(x) = ∑(k=1..K) πₖ · N(x; μₖ, Σₖ)
读作"一个点的密度,等于 K 个高斯成分的加权和"。πₖ 读作"第 k 团的混合权重(这团占多大比例)",μₖ 是第 k 团的均值(中心),Σₖ 是它的协方差矩阵(形状与朝向,第 30 课的椭圆)。N 是多元高斯。

每个成分有自己的中心 μₖ、自己的椭圆 Σₖ、自己的份额 πₖ。所有这些参数怎么定?沿用上一课反复出现的那把尺子——最大似然(第 31 课):选一组参数,让"模型生成这批观测点"的似然最大。问题是,这个似然里有个看不见的变量(每个点到底来自哪团),直接求 argmax 求不动。EM 就是为这种"含隐变量的 MLE"量身定做的。

EM 算法:认领与重估的交替

EM(期望-最大化)把上面"鸡生蛋"的循环变成一个保证不断改善的迭代。它在两步之间来回跳:

E 步(认领,Expectation)
固定当前的 K 个高斯,算每个点属于每一团的概率(叫"责任")。注意——这里不是非黑即白地把点扔给某一团,而是给出"它有 70% 像第 1 团、30% 像第 2 团"的软归属。这一步用的就是第 32 课的贝叶斯:在观测到这个点的前提下,反推它来自各团的后验概率。
M 步(重估,Maximization)
把刚才的"责任"当权重,重新估每团的中心 μₖ、椭圆 Σₖ 和份额 πₖ——加权平均、加权协方差。这一步就是在做加权版的最大似然(第 31 课)。

然后回到 E 步,用更新后的高斯重新认领,再 M 步重估……每跑一轮,数据的总似然只增不减(这是 EM 的数学保证),中心和椭圆一步步贴合到数据的真实团块上,直到稳定收敛。注意它通常收敛到局部最优(似然曲面非凸,呼应第 28 课)——不同的初始化可能落到不同的解,所以实践中常多跑几次取最好。下面的小实验把这套 E/M 交替一帧帧演给你看。

EM 在做什么:高斯混合一步步抱住数据的团
画布上是几团没有标签的二维点。点"单步 EM"看一轮 E 步(按颜色显示每个点的软归属)+ M 步(更新椭圆中心与形状);或点"连续运行"看它收敛。右侧实时显示迭代数与对数似然——它单调上升正是 EM 的保证。点"重置"换一组随机初始中心,体会它可能落到不同的局部最优。
迭代轮数
0
对数似然(越大越好,单调上升)
高斯成分数 K
3

软聚类 vs 硬聚类:GMM 与 k-means

你或许听过更简单的 k-means。它和 GMM 是近亲,但有两点不同:

事实上 k-means 可以看成 GMM 的一个极限特例(协方差缩成无穷小、责任退化成 0/1)。两者都用同一种 EM 式的"分配-更新"循环——这再次说明:无监督学习的多种算法,其实共享同一根脊梁。

常见误解

一句话带走
没有标签,机器照样能学——学的是数据自身的结构。PCA 用协方差矩阵的特征向量(第 22、23、30 课)抓住方差最大的方向,把高维压扁;GMM 把每团建成一个多元高斯(第 30 课),用 EM 在"认领(E)"与"重估(M)"间交替、单调爬升地逼近最大似然(第 31 课)。无监督学习,是几何与概率在"没有老师"时的会师。
下一步
无监督找结构,监督学分类——可上一课的逻辑回归画出的那条分界线,往往不止一条能把两类分开,而它随手挑了一条,凭什么说它"最好"?有没有一条最稳、离两边都尽量远的分界线?要回答这个问题,得把第 20 课的内积几何(间隔)、第 28 课的凸优化与拉格朗日对偶、以及第 24 课"升到高维"的本事同时拧成一股。这台机器,是代数·几何·优化最漂亮的一次合体。→ 第 37 课《支持向量机:几何与凸优化的合体》。