Kevin Murphy《Machine Learning: A Probabilistic Perspective》精读伴读的开篇。这一篇跟着原书第 1 章的骨架走,讲清楚一件事:为什么一整本机器学习教材要用概率语言来写。监督与无监督被同一套「对未知量建概率分布」的思路统一起来;参数与非参数、过拟合、模型选择、无免费午餐这些基本概念,第一次出现时就带上概率的底色。文末给出全 20 篇的系列地图和贯穿全书的四条主线。
这是「概率视角下的机器学习」系列的第一篇。整个系列精读 Kevin Murphy 的 《Machine Learning: A Probabilistic Perspective》(Chen 注:Machine Learning: A Probabilistic Perspective,MIT Press,2012。全书 28 章、上千页,长期被当作研究生阶段机器学习的标准参考书之一。作者 Kevin Murphy 现在在 Google DeepMind,2022–2023 年又出了两卷本的续作《Probabilistic Machine Learning》。)(后续系列文章中均简称 MLAPP)。我参与了本书部分章节的中文翻译工作,中文版计划 2026 年底出版。
系列的定位不是逐章复述,那样不如直接读原书。我想做的是「伴读」:跟着原书骨架走,补三样原书容易让人卡住的东西。一是直觉,讲清楚每个做法背后「为什么是这样」;二是关键推导(Chen 注:关于公式编号:凡带编号的公式都直接引自原书、沿用原书的编号(如 $(1.1)$),方便对照原书查阅;文中自行补充的推导步骤则不带编号。),把原书跳步的地方补上;三是横向联系,同一个思想在书里散落好几章,需要有人替你串起来。另外会随手加一些 2012 → 2026 的时代注脚:十四年过去了,有些判断需要更新。
第 1 章是全书的导言,本身不含硬核推导,但它立下了整本书的世界观。这一篇就围绕一个问题展开:为什么一本机器学习教材,要从头到尾用概率的语言来写?
作者对机器学习的定义很朴素:一组能自动从数据里识别模式、并用这些模式去预测未来数据或在不确定条件下做决策的方法。这个定义里最关键的词是不确定(uncertainty)。
数据是有限的,世界是带噪声的,我们想推断的东西,比如对未来的观测、隐藏的类别、模型该有多复杂等等,几乎从来不能被数据唯一确定。既然处处是不确定,那就用一门专门刻画不确定性的语言来表达它,这门语言就是概率论。
所以 MLAPP 的中心思想可以浓缩成一句话:
这句话听起来抽象,但它的威力在于:一旦接受了这个视角,监督学习、无监督学习、模型选择这些看似不同的任务,会落进同一个数学框架里。下面我们就看它是怎么统一起来的。
原书 §1.1.1 把机器学习分成两大类。传统教材会把它们讲成两套东西,但概率视角下,它们的差别小到只是概率分布里的一个符号。
监督学习[supervised learning,原书也叫预测型(predictive)]:给你一组带标签的输入/输出对,数据集写作 ,目标是学出从输入 到输出 的映射。这里 叫训练集(training set), 是样本数。输入 通常是一个 维向量,分量叫特征(feature)、属性(attribute)或协变量(covariate);把所有输入摞成一个 的矩阵,就是设计矩阵(design matrix)。输出 叫响应变量(response variable):当它取有限个无序类别时,任务是分类[classification,也叫模式识别(pattern recognition)];当它是实数时,任务是回归(regression);如果类别之间还带自然顺序,就是有序回归(ordinal regression)。
无监督学习[unsupervised learning,原书叫描述型(descriptive)]:只给输入不给标签,数据集是 ,目标是发现数据里「有意思的模式」,也叫知识发现(knowledge discovery)。
那概率视角是怎么统一这两者的呢?原书在 §1.2 和 §1.3 里点破了:两者都是在对一个概率分布建模,区别只在于给谁建分布。
原书在 §1.3 的开头特意强调了两处差别,很值得记住。第一,无监督写的是 而不是 ,也就是说没有条件、没有 。第二, 是一个,所以无监督要建的是分布,而典型的监督分类里 只是单个变量,建的是一维分布。这第二点解释了为什么无监督学习通常更难:多维分布的建模天然比一维困难。
不管建的是哪种分布,一旦要用它做预测,都归结为同一个操作:算后验(Chen 注:后验(posterior)指「看过数据之后」对未知量的概率分布,写成$p(未知量|已知数据)$。这里就是给定新输入 $\boldsymbol{x}$ 和训练集 $\mathcal{D}$ 之后,各个类别 $c$ 的概率 $p(y=c |\boldsymbol{x}, \mathcal{D})$。之所以要算它,是因为概率视角下预测的本质不是直接吐出一个答案,而是先得到一整个分布。它同时告诉你「最可能的答案是什么」和「这个答案有多可信」,后面取众数、算期望、做决策都从它出发。)、取一个「最好的猜测」。以分类为例,给定新输入 和训练数据 ,我们要的是某个类别 的后验概率
如果非要给出一个确定的预测(而不是一整个分布),最自然的选择是取后验概率最大的那个类别:
这个 就是后验分布的众数(mode),术语上叫最大后验估计(MAP estimate,maximum a posteriori)。这里已经能看到全书第一条主线的影子:怎么从后验分布里得到一个点估计。后面会看到 MLE、MAP、完整贝叶斯后验构成一个谱系,MAP 只是其中一站。
原书 §1.4 集中抛出了一批贯穿全书的基本概念。它们在别的教材里往往被当成孤立的「知识点」,但在 MLAPP 里,每一个都能挂回到概率框架上。这一节挑几个最关键的串讲一下。
两者的区别在于模型的参数个数是否固定。参数模型(parametric model)有固定数目的参数 ,好处是拟合和预测都快,代价是要对数据分布的形状做较强假设。非参数模型(non-parametric model)的参数个数随数据量增长,更灵活,但数据一多就吃不消。
原书 §1.4.2 举的最简单的非参数例子是 K 最近邻(K nearest neighbor,KNN)分类器:要预测一个新点的类别,就看它最近的 个训练点里哪类占多数。它不「训练」出参数,而是把整个训练集背下来,所以又叫记忆式学习(memory-based learning)或实例学习(instance-based learning)。KNN 甚至也能写成概率的形式:新点属于类 的概率,就是它 个邻居里属于 的比例:
其中 是 的 个最近邻的下标集合, 是指示函数(条件成立取 1,否则取 0)。由此可见,连「数邻居」这种最朴素的做法,也能被纳进「输出一个概率分布」的统一叙述里。
KNN 看着无敌,为什么不一直用它?因为存在维度灾难(curse of dimensionality)。直观上是这样理解的:在高维空间里,「最近的邻居」其实一点都不近。
原书 §1.4.3 给了一个很干净的示例。设数据均匀分布在 维单位立方体里,我们想圈一个小立方体,让它恰好包住某个点周围一定比例 的数据。这个小立方体每条边的长度大约是
代入数字后结果就很“吓人”了:在 10 维空间里,想圈住 1% 的数据(),需要 ,换言之,每条边要占满整个空间的 63%;想圈住 10% 的数据,边长要到 。所谓「邻居」,几乎铺满了整个空间,「近邻」这个概念就失效了。这就是为什么高维下我们必须换思路:对数据的形状做参数假设,也就是转向参数模型。
把这两个概念放一起讲,因为它们是一枚硬币的两面。
过拟合(overfitting)指模型把训练数据里的噪声也学了进去,在训练集上表现很好,一到新数据就崩。原书用多项式回归的例子说明:多项式阶数越高,越能穿过每一个训练点,但曲线也越扭曲,泛化(generalization)越差。
既然模型太简单会欠拟合、太复杂会过拟合,就需要在复杂度上做选择,这就是模型选择(model selection)。最直接的办法是看模型在没见过的数据上的表现,也就是用交叉验证(cross validation)估计泛化误差,挑误差最小的那个。原书 §1.4.7 点出一个关键量:我们真正关心的不是训练误差,而是泛化误差,即模型在未来数据上的期望误差。训练误差随复杂度单调下降,泛化误差却是先降后升的 U 形(Chen 注:复杂度低时模型抓不住真实规律,误差来自偏差(bias);复杂度高时模型把噪声也学了进去,误差来自方差(variance)。偏差随复杂度降、方差随复杂度升,相加就是先降后升的 U 形,底部是两者之和最小处。),而 U 形的底部就是我们要找的复杂度。
这个「先降后升」的 U 形,正是偏差—方差权衡(bias-variance tradeoff)的表现,也是全书反复出现的主题。它在这一章只是露个脸,正式的分解和推导,安排在贝叶斯 vs 频率派那一篇里详述。
最后是一个偏哲学却很实在的结论:无免费午餐定理(no free lunch theorem)。它说的是,不存在一个在所有可能问题上都最优的模型。在某类问题上表现好的模型,必然在另一类问题上表现差,这是因为它的好来自它对问题结构做的假设,也就是它的归纳偏好(inductive bias)。
把上面的线索收拢之后便会发现,MLAPP 的所有内容几乎都能挂到「对未知量建概率分布 → 推断这个分布」这根主轴上:
图中最下面的「推断怎么算」,其实就是全书后半部分(推断三件套)要解决的问题:当分布复杂到无法手算时,怎么近似。这也引出了贯穿全书的四条主线。
这个系列会反复回指以下四个锚点。第一篇先把它们摆出来,后面每次用到都会回指回来:
整个系列覆盖原书全部 28 章,分成父系列本体加 5 个专题子系列,共 20 篇。父系列本体是「概率基础」,是入口和脊柱;5 个子系列各自展开一个专题。
| 系列 | 篇数 | 篇目 | 对应章 |
|---|---|---|---|
| 概率基础(本系列) | 4 | 为什么用概率视角(本篇) | §1 |
| 概率论工具箱 | §2 | ||
| 贝叶斯概念学习与朴素贝叶斯 | §3 | ||
| 贝叶斯 vs 频率派 | §5、§6 | ||
| 监督学习 | 4 | 高斯模型与判别分析 | §4 |
| 线性回归与稀疏模型 | §7、§13 | ||
| Logistic 回归与优化 | §8 | ||
| 指数族与广义线性模型 | §9 | ||
| 隐变量模型 | 4 | 混合模型与 EM 算法 | §11 |
| PCA 与因子分析与 ICA | §12 | ||
| 聚类方法 | §25 | ||
| 从主题模型到深度生成模型 | §27、§28 | ||
| 核方法与自适应模型 | 2 | 核方法与高斯过程 | §14、§15 |
| 自适应基函数:树、Boosting 与神经网络 | §16 | ||
| 图模型与时序 | 4 | 有向图模型 | §10 |
| 无向图模型 | §19 | ||
| 图上的精确推断与结构学习 | §20、§26 | ||
| 时序模型:从 HMM 到卡尔曼滤波 | §17、§18 | ||
| 近似推断 | 2 | 变分推断 | §21、§22 |
| 蒙特卡洛与 MCMC | §23、§24 |
它们大致的依赖关系是这样的:
建议顺着概率基础这条线先读,它把概率语言和世界观交代清楚了,后面每个子系列才挂得住。
MLAPP 成书于 2012 年,深度学习刚起步,书里神经网络只占很小篇幅。今天回看,它对「概率视角」的坚持反而更显价值:变分自编码器、扩散模型、贝叶斯深度学习,全都是这套概率语言的直接延续。原书讲的推断三件套(尤其变分推断和 MCMC),正是理解今天生成模型的地基。
作者后来的两卷本续作(Chen 注:Kevin Murphy 在 2022 和 2023 年出版了两卷本的《Probabilistic Machine Learning: An Introduction》与《Advanced Topics》,可以看作 MLAPP 的现代化续作,补上了深度学习时代的内容。本系列遇到原书过时或缺失的部分,会用这两卷来补。)把这些新进展补齐了。所以这个系列的定位是:以 MLAPP 为骨架读懂概率机器学习的基本盘,遇到时代造成的缺口,用续作和这些年的发展来填。
概率视角最大的好处,是它给了你一副能一直戴着的眼镜。模型会过时,框架会换代,但「把不确定的东西建成分布,再对分布做推断」这套思路,从 2012 到 2026 一直没变,未来大概也不会变。带着这副眼镜,我们下一篇正式进入概率论工具箱。