TL;DR
这是「概率视角下的机器学习」系列的第二篇。上一篇建立了整本书的世界观,把所有不知道的量当作随机变量,为它建概率分布,再用概率论的规则去推断。世界观有了,接下来得有趁手的工具。
MLAPP 第 2 章就是这套工具箱。它本身不含硬核模型,但后面每一章都在反复取用这里的东西:想写模型要挑分布,想算后验要用贝叶斯规则,后验算不动要靠蒙特卡洛,衡量两个分布的差距要用 KL。这一篇跟着原书第 2 章的骨架走,把工具一件件摆出来,并挑三个值得亲手推一遍的结果做完整推导。它们不难,但推完之后,对概念的理解会更透彻。
1. 概率的两种解释
在使用工具之前,原书 §2.1 先问了一个容易被跳过的问题:p 这个符号到底什么意思?有两种解释,它们的分歧会一直延续到本系列第四篇。
- 频率派(frequentist)把概率看成长期频率:抛一枚硬币,p(正面)=0.5 的意思是,抛无穷多次,正面出现的比例趋于一半。这个解释干净,但只对「可重复的事件」成立。
- 贝叶斯派(Bayesian)把概率看成信念的度量(degree of belief):p 量化的是「我对某件事有多确信」。这样一来,「2026 年北极冰盖会不会消融」这种一次性、不可重复的事件也能谈概率了。
对机器学习来说,很多要推断的量,比如某个参数的真值、某封邮件是不是垃圾邮件等,都不是「可重复实验」,而是「一次性的未知」。所以 MLAPP 采信贝叶斯解释:概率是对不确定性的量化,无论这个不确定来自随机性,还是来自我们的无知。
ℹ这里只点到为止。频率派与贝叶斯派的完整对照,包括它们怎么估参数、怎么做模型选择、各自的病理在哪等等,是本系列第四篇(对应原书 §5–6)的正题。这一篇只需记住:我们默认用贝叶斯解释,
p 是「信念」。
2. 三条基本规则
整套概率论,日常够用的其实只有三条规则。原书 §2.2 把它们讲得很明白。
ℹ先厘清一组容易混的说法:变量
代入具体取值,
p 算出来是一个
[0,1] 里的数,叫
概率(如
p(y=1)=0.004);变量
留作自变量、对它每个可能取值都给出一个概率,
p 就是一个函数,叫
(如
整体)。分布是「壳」,代入取值掉出来的数才是概率。下面三条规则等号两边写的都是变量、没代值,所以它们是
(对所有取值都成立);基率谬误那段代入数字后,处理的才是一个个概率值。
- 和规则(sum rule),也叫边缘化:想去掉一个变量,就把它求和掉(连续情形就是积分掉)(Chen 注:联合分布 $p(x,y)$ 同时描述了 $x$ 和 $y$;若只关心 $x$,就把不关心的 $y$「消掉」,也就是对 $y$ 的所有取值求和(连续情形改为积分),得到只关于 $x$ 的边缘分布 $p(x)$。打个比方:按「性别 × 是否戴眼镜」统计班级人数,只想知道戴眼镜的有多少人,就把「戴眼镜的男生」和「戴眼镜的女生」两格加起来,性别这一维就被加掉了。连续情形把求和换成积分,积分本就是连续版的求和,思路一样。)。
p(x)=y∑p(x,y)(2.4)
- 积规则(product rule):联合 = 条件 × 边缘(Chen 注:联合 $p(x,y)$ 是 $x,y$ 同时发生的概率;条件 $p(x\mid y)$ 是 $y$ 已发生的前提下 $x$ 发生的概率;边缘 $p(y)$ 是 $y$ 自己发生的概率。把「同时发生」拆成两步:先让 $y$ 发生(概率 $p(y)$),再在 $y$ 已发生的情况下让 $x$ 发生(概率 $p(x\mid y)$),两步相乘就得到联合。之所以第二步要用条件概率,是因为它依赖第一步的结果——女生里戴眼镜的比例未必等于全班的比例。对称地也可先让 $x$ 发生,写成 $p(x,y)=p(y\mid x)\,p(x)$;两种拆法相等,正是下面贝叶斯定理的来源。)。
p(x,y)=p(x∣y)p(y)(2.3)
- 积规则对 x,y 是对称的:既能写成 p(x∣y)p(y),也能写成 p(y∣x)p(x)。两者都等于同一个 ,令它们相等再解出 ,就得到了全书最重要的一条式子——(Bayes rule):
p(y∣x)=p(x)
这条式子是整个概率视角的引擎:它告诉你,观测到 x 之后,该怎么把先验信念 p(y) 更新成后验信念 p(y∣x)。分母只是个归一化常数,靠和规则把分子的所有 y′ 加起来得到。全书从头到尾,「学习」这件事的数学内核,基本都是这条式子的反复应用。
2.1 推导一:贝叶斯定理下的基率谬误
贝叶斯定理长得简单,但用起来常常反直觉。原书 §2.2.3.1 给了一个经典示例:乳腺癌的乳房 X 光筛查,值得亲手算一遍,因为它把「先验有多重要」这件事讲透了。
设一位 40 多岁的女性做了一次乳房 X 光筛查,结果呈阳性。记 x=1 表示检测阳性,y=1 表示真的患乳腺癌。已知:
- 检测的灵敏度(真阳性率)不错,p(x=1∣y=1)=0.8;
- 但这种癌症的患病率[先验,也叫基率(base rate)]很低,p(y=1)=0.004;
- 而且它有假阳性率 。
p(x=1∣y=1)=0.8,p(y=1)=
你真正想知道的是:检测阳性的条件下,真的患癌的概率 p(y=1∣x=1) 是多少?直觉上,灵敏度都 80% 了,应该挺高吧。用贝叶斯定理算一下:
p(y=1∣x=1)=
代入数字(其中 p(y=0)=1−0.004=0.996):
=0.8×0.004+0.1×0.9960.8×0.004=
答案是约 3%。检测阳性了,真患病的概率却只有 3%——这就是基率谬误(base rate fallacy)。原因在分母里:患病的人本来就极少(0.4%),而健康人虽然假阳性率只有 10%,但健康的人基数太大(99.6%),乘出来的假阳性总量(0.0996)反而远远盖过了真阳性(0.0032)。
✓基率谬误的教训不是「检测没用」,而是「先验不能扔」。忽略基率
p(y=1)、只盯着灵敏度看,就会把 3% 错估成 80%。这正是概率视角反复强调的一点:
后验 = 似然 × 先验,两头都要认真对待。后面读到朴素贝叶斯、贝叶斯参数估计时,会一次次回到这条式子。
2.2 独立与条件独立
原书 §2.2.4 还强调了两个后面到处都要用的概念。两个变量独立(X⊥Y),当且仅当联合能拆成边缘之积:p(x,y)=p(x)p(y)。更有用的是条件独立(X⊥):在给定 之后 与 独立,
p(x,y∣z)=p(x∣z)p(y∣z)(2.15)
条件独立是把复杂联合分布拆小、让模型可算的核心手段。朴素贝叶斯的「朴素」(第三篇)、图模型里的边(图模型子系列),本质上都是在声明一堆条件独立假设。记住这个记号,后面会省很多力气。
3. 一张速查表:常用分布
原书用三节(§2.3、§2.4、§2.5)集中介绍了一批常用分布。与其逐个抄公式,不如先记住每个分布「是干什么用的、藏了什么假设」。挑选分布,本质上就是在挑选对数据形状的假设。
3.1 离散分布
分类问题里的标签服从多项伯努利,词袋模型里的词频服从多项分布。这些是后面朴素贝叶斯、主题模型的直接积木。
3.2 连续分布
连续情况下,高斯分布(Gaussian / 正态分布,§2.4.1)是绝对的主角:
N(x∣μ,σ2)=
为什么它到处都是?原书给了三个理由,最关键的两个都很硬:一是中心极限定理(§2.6.3),大量独立随机量之和趋于高斯,而现实中的噪声往往正是许多小扰动之和;二是最大熵(Chen 注:「熵」用来度量不确定性(见本篇信息论一节)。最大熵原理:在满足已知约束的所有分布里,挑熵最大(最「摊平」)的那个,等于不偷偷塞进约束之外的额外假设。),在给定均值和方差的所有分布里,高斯的熵最大,也就是「在只知道前两阶矩(Chen 注:矩(moment)是刻画分布形状的一组数:一阶矩是均值(中心在哪),二阶矩对应方差(分散程度)。「前两阶矩」就是均值和方差。)的前提下,做了最少的额外假设」。这第二点原书放在 §9.2.6 证明,本系列会在监督学习子系列(指数族那一篇)里正式推导。
但高斯有个软肋:尾巴太薄,对离群点(outlier)极其敏感,一个远处的点能把均值和方差拽得很偏。原书因此还给了几个「替补」方案:
ℹ这张表不用背,但值得记住背后的两条线:(1)学生 t(
§2.4.2)和拉普拉斯(
§2.4.3)是高斯的「抗揍版」,换来稳健性;其中拉普拉斯的
∣x∣ 形状正是套索(lasso)稀疏性的来源,原书放在
§13.3,本系列会在监督学习「线性回归与稀疏模型」里推。(2)贝塔(
§2.4.5)、狄利克雷(
§2.5.4)、伽马(
§2.4.4)都是拿来当
共轭先验(Chen 注:共轭先验(conjugate prior):与某似然相乘后,后验仍落在先验那一族,只是参数变了。好处是省掉贝叶斯定理里那个算不动的归一化积分,更新退化成「改改参数」。如 Beta 是伯努利/二项的共轭先验,后验就是把正/反次数加到先验参数上。)的——它们能让贝叶斯更新后的后验和先验同族、算得动。共轭这件事是第三篇的核心机关,这里先埋个伏笔。
3.3 多元高斯与变量变换
高维版是多元正态(multivariate normal, MVN,§2.5.2),把方差换成协方差矩阵 Σ,是整个监督学习子系列第一篇(高斯模型)的主角,这里先记个名字。另外原书 §2.6 讲了随机变量的变换:若 y=f(x),y 的密度要乘上雅可比行列式来做体积校正(§2.6.2)。这个技巧在今天的标准化流(normalizing flow)里被用到了极致,这是个典型的 2012 → 2026 注脚,文末再说。
4. 蒙特卡洛近似:算不动积分,就用抽样代替
有了分布,就要拿它算东西,通常是算某个期望 E[f(X)],或者算变量变换后的分布。麻烦在于,这些积分/求和一旦维度高、分布复杂,就没有解析解。原书 §2.7 给的通用出路是蒙特卡洛近似(Monte Carlo approximation):与其硬算积分,不如从分布里抽一堆样本,用样本的平均去逼近期望。
具体来说,从 p(x) 里独立抽取 S 个样本 x1,…,xS,那么
E[f(X)]=∫f(x)p(x)dx≈
这招简单到近乎作弊,但极其管用。今天的马尔可夫链蒙特卡洛(MCMC)、粒子滤波、贝叶斯深度学习,底座都是它。那它的误差有多大?这是第二个值得亲手推导的结果。
4.1 推导二:蒙特卡洛误差
记真值 μ=E[f(X)],σ2=Var[f(X)]。样本均值 。因为各 ,先看它的期望,它是的:
E[fˉ]=S1
再看方差。独立变量之和的方差等于方差之和,而常数 1/S 提出来要平方:
Var[fˉ]=S2
所以估计的标准误差(standard error)是
Var[fˉ]=
这正是原书 (μ^−μ)→N(0,σ2/S) 那条结论(§2.7.3)背后的方差。这条 σ 是蒙特卡洛的命门:误差按 衰减,想把精度提高 10 倍,样本要多 100 倍,收敛偏慢。但它有个高维下无可替代的优点:。相比之下,用网格法数值积分,格点数随维度指数爆炸(又是维度灾难)。正因为蒙特卡洛不吃这一套,它才成了高维推断的主力。这也解释了本系列为什么把「蒙特卡洛与 MCMC」放在压轴——它是推断三件套(主线四)的收口。
5. 信息论三件套:熵、KL、互信息
工具箱的最后一格,是信息论(§2.8)。它给了我们一把尺子,度量「一个分布有多不确定」以及「两个分布差多远」。这三个量在后面的损失函数、变分推断里频繁出现。
- 熵(entropy,§2.8.1)量化一个分布的不确定性。离散情形下:
H(X)=−k=1∑Kp(X=k
分布越均匀,熵越大(最不确定)(Chen 注:把熵读成「平均意外度」:$\log(1/p_k)$ 是单个结果的意外量(概率越小越意外),熵是它按概率的加权平均。均匀分布每个结果都同样难猜、意外最大,故熵最大;集中在一点时结果基本能猜到、几乎没有意外,熵趋近 0。可证 $\mathbb{H}(X)\le\log K$,等号当且仅当均匀。);越集中在某一点,熵越小(越确定)。均匀分布取到最大熵。
- KL 散度(Kullback-Leibler divergence,§2.8.2)量化两个分布 p 和 q 的差距:
KL(p∥q)=k∑pklog
它可以拆成负熵加交叉熵(cross entropy):
KL(p∥q)=负熵
它有两条必须记住的性质:KL(p∥q)≥0,当且仅当 p=q 时取等(原书 §2.8.1);以及它不对称,KL(p∥q),所以它不是真正的「距离」。非负性是第三个值得亲手推的结果。
5.1 推导三:KL 散度恒非负
log 是凹函数,凹函数满足 E[logZ]≤logE[Z]。把 −KL 里的求和看成对 p 的期望:
−KL(p∥q)=k∑pk
对凹的 log 用詹森不等式(Jensen's inequality)(Chen 注:詹森不等式(Jensen's inequality):对凹函数 $g$,$\mathbb{E}[g(Z)]\le g(\mathbb{E}[Z])$,先平均再喂进函数,不小于先喂进函数再平均(凸函数则反号)。直观上理解,凹函数「上凸」,弦总在曲线下方,取值的加权平均落在弦上,自然不超过对应的函数值。$\log$ 是凹的,故可把期望挪进 $\log$ 里。),把期望挪到 log 里面:
Ep[logp
于是 −KL(p∥q)≤0,即 KL(p∥q)≥0。等号成立当且仅当 q 是常数,也就是 。
✓这条不等式看着小,却是全书的顶梁柱之一。变分推断(主线四)的整个思路,就是「后验算不动,那就找一个好算的
q,去最小化
KL(q∥p)」,它之所以能成立,全靠 KL 非负、且只在
q=p 时取零。同一个詹森不等式,还会在 EM 算法(主线三)里推出对数似然的下界。记住这个推法,后面会重复用到。
从 KL 的分解式还能顺手读出一件事:KL(p∥q)=H(p,q)−H(p)。在机器学习里,p 是固定的真实标签分布,H(p) 是常数,所以最小化交叉熵损失,等价于最小化模型 与真实分布 的 KL 散度。你在训练分类器时天天用的交叉熵 loss,本质就是在拿 KL 当尺子。
- 互信息(mutual information,§2.8.3)则量化「知道 X 能帮我们减少多少关于 Y 的不确定」,它正好是联合分布与「假装独立」的乘积分布之间的 KL:
I(X;Y)=KL(p(x,y)∥p(x)p(y)).(
由 KL 非负立刻得到 I(X;Y)≥0,且为零当且仅当 X⊥Y。所以互信息是比「相关系数」更本质的相关性度量:相关系数只抓线性关系,互信息抓任何形式的依赖。
6. 收拢:工具箱
把这一章的三格工具和它们的去处连起来:
图1:概率工具箱(§2)的三格工具及其在后续各篇的去处
用四条主线再对一遍:贝叶斯规则是参数估计谱系(主线一)的引擎;共轭先验为第三篇的贝叶斯更新铺路;蒙特卡洛是推断三件套(主线四)的收口工具;KL 非负这条不等式同时撑起了变分推断(主线四)和 EM 的下界(主线三)。这一章看着零碎,其实每一格都直通后面的某条主线。
7. 时代注脚:2012 → 2026
第 2 章的工具十四年来基本没动:概率的三条规则、常用分布、信息论的定义,都是数学事实,不会过时。真正被这十四年放大的是蒙特卡洛与变分这两条近似推断的路子。
今天的生成模型(Chen 注:2013 年 Kingma 与 Welling 的变分自编码器(VAE)把变分推断和神经网络缝在一起,用「重参数化技巧」让 KL 目标可以反向传播;2020 年之后的扩散模型,其训练目标同样可以写成一个变分下界。这些都是 MLAPP 第 2 章里 KL 散度与蒙特卡洛这两格工具的直接延续。)几乎全都站在这两格工具之上。前面提到的变量变换(雅可比校正),在标准化流里被做成了可逆神经网络;蒙特卡洛的 σ/S 误差,是理解扩散模型采样为什么要跑很多步的底层原因。换句话说,第 2 章不是「入门章」,而是通往 2026 年生成模型的地基。
工具箱到此备齐。下一篇将用它们处理第一个具体问题:如何从离散数据中学习概念。我们会讲贝叶斯概念学习与朴素贝叶斯,共轭先验也将在那里正式登场。