上一章我们建立了机器学习的宏观图景:数据 → 模型 → 预测。但有一个问题被我们刻意回避了——现实世界充满噪音和不确定性

传感器会出错,标签会被打错,数据本身就是模糊的。我们如何用数学语言描述这种"不确定"?答案就是概率论

如果说编程是机器学习的骨架,那么概率统计就是它的灵魂。这一章的内容是我们后续学习的基石。


建模不确定性

由于现实世界中充满不确定性 (Uncertainty),因此为了让机器能够对应现实世界的问题,我们需要将这种不确定性纳入考虑。

我们需要了解下面的这些概念:

  • 样本空间 (Outcomes, $\Omega$) 是一个实验所有可能结果的集合。例如扔骰子事件的样本空间就是$\Omega = {1, 2, 3, 4, 5, 6}$。
  • 事件 (Events) 是我们感兴趣的结果的子集。例如扔出偶数就是${2, 4, 6}$。
  • 概率分布 (Probability Distribution) 用来给每一个事件分配一个0到1之间的数字,用来表示它可能发生的可能性。

了解这些概念之后,我们就可以讲一下什么是随机变量 (Random Variable) 了。

随机变量不是像$x$或$y$那样的变量,而实际上随机变量本质上是一个函数。他的工作是把现实世界中抽象的结果映射为数字。

比如说我们的实验是“从水果篮中拿一个水果”,结果可能是“苹果”或者“橘子”。这些都不是数字。但是我们可以定义一个随机变量$X$。如果拿到苹果,则$X = 1$; 如果拿到橘子则是$X = 0$。这样我们就可以计算$X$的平均值,方差等其他值了。

既然我们关心的事件变成了数字,那么我们就可以求得下面的一些数据:

  • 期望 (Expectation, $E[X]$) 是数据的“重心”或加权平均值。
  • 方差 (Variance, $Var[X]$) 是用来衡量数据铺的有多开的数据。方差越大说明数据更分散,反之则是更集中。

联合与条件

单个变量的计算通常很简单,但机器学习之所以强大,是因为它能够处理变量之间的关系。这就引入了新的概念叫做联合分布 (Joint Distribution)

例如我们有两个传感器,能够记录数据:

  • $T$: 温度传感器,记录(Hot, Cold)
  • $C$:摄像头颜色传感器,记录(Green, White)

那么联合分布$P(T,C)$就是一张大表格,列出了所有组合的可能性(比如“又热又是绿色”的概率)。这一张表包含了这个小世界里的所有信息。

如果我们只关心温度,不管颜色,我们可以把表格里关于颜色的行或列加起来,这叫边缘概率(Marginal Probability) 。想象把一个二维表格“拍扁”成一维,这就得到了边缘分布。

但是我们比较关心的点在**条件概率 (Conditional Probability)**上,这是机器学习推理的核心。

$P(X=a | Y=b) = \frac{P(X=a, Y=b)}{P(Y=b)}$

这个公式中,$P(X=a | Y=b)$代表在$Y = b$的前提下,发生$X = a$的概率。意思是我们不再去将视野聚集到整个样本空间内,而是只看$Y = b$的那部分空间的时候,$X = a$占据了它多大的比例?

如果$P(X|Y) = P(X)$,则表明“知不知道Y对判断X完全没有影响”。这种情况下,两个变量的关系是**独立 (Independent)**的。在现实中,两个数据独立往往是一个非常罕见且奢侈的属性。

贝叶斯定理

现在我们进入本章最重要的部分——它将在后续章节反复出现。

通常我们很容易获得正向概率,比如:得了流感($F$)的人,90%的人会喉咙痛($S$)。我们直接就可以得出$P(S|F) = 0.9$。

但是作为医生来说,我们如何得到这个问题的概率:“我现在喉咙痛,我有多大概率得了流感?”。也就是说,我们该如何求$P(F|S)$?

如果直接回答90%,那么你就掉进了基本比率谬误的陷阱。这时候我们可以通过贝叶斯定理:

$$P(H|E) = \frac{P(E|H)P(H)}{P(E)}$$

来求得你想要求的概率。

用刚才的情景,我们一起来读懂这个公式:

  • $H$ (Hypothesis, 假设): 我得了流感。
  • $E$ (Evidence, 证据): 我喉咙痛。
  • $P(H)$ (Prior, 先验概率): 在没看喉咙之前,一个人得流感的概率是多少?可能很低,比如 1%。这通常是被我们直觉忽略的最重要部分。
  • $P(E|H)$ (Likelihood, 似然): 如果得了流感,喉咙痛的概率是多少?我们知道值是90%。
  • $P(H|E)$ (Posterior, 后验概率): 结合了证据之后,我现在相信我得流感的概率。

核心逻辑:

$$Posterior \propto Likelihood \times Prior$$

即使 $P(E|H)$ 很高,但如果 $P(H)$ 极低,那么 $P(H|E)$ 依然会很低。这就解释了为什么在当初教授上课的例子中,虽然 90% 的流感患者都会喉咙痛,但喉咙痛的人里只有 9% 真正得了流感。因为大部分喉咙痛只是普通感冒或用嗓过度,流感本身的基本比率(Prior)太低了。

这是一个经典问题:

假设有一种极其罕见的病,人群中发病率只有百万分之一 ($P(H) = 10^{-6}$)。我们有一个超级准确的检测仪器,准确率高达 99.99%(即如果你有病,99.99% 测出阳性;没病,99.99% 测出阴性)。
现在你去做检测,结果呈阳性。那么你真正得病的概率大概是多大?

我们假设有一千万个人,那么我们知道Prior是$10^{-6}$,所以经过计算只会有10个人真的得病。在这十个人中,我们检测成功率是99.99%,因此大约10个人都会被真正检验出阳性。

那么剩下的一千万人怎么办?$9999990 \times 0.0001 \approx 1000$个假阳性。

由于你现在是阳性,那么你属于所有阳性人群的一员。那么阳性总人数为10 + 1000 = 1010人。由于真正得病的人群只有10人,则你是10个真病人之一的概率仅有$\frac{10}{1010} = 0.0099$。百分之一都不到。


参数估计

最大似然估计

现在我们进入机器学习的核心问题:估计参数

在前面的例子中,我们假设知道某些参数的值,例如先验概率。但是在现实的机器学习任务中,我们只有数据,没有上帝视角。因此我们需要学会如何**估计 (Estimate)**它们。

老师上课讲了最主流的最大似然估计 (Maximum Likelihood Estimation)* 方法,所以我们在这就讲一下这个吧。

假设你扔硬币100次,出现了70次正面。那么你觉得这个硬币扔出正面的概率$p$是多少?

是个人都会直接说出来0.7,而这就是最大似然估计。

MLE的公式简单直观:

$$\hat{p}_i = \frac{n_i}{n}$$

也就是第i面出现的次数 / 总次数。

最大似然估计的目标是:既然这些数据都已经采集好了,那么我们应该猜测参数$\theta$是多少,才能让这组数据出现的概率最大化?

由于我们扔硬币扔了100次 ($n = 100$),得到正面有70次 ($k = 70$),反面有$n - k = 30$次。设硬币正面的概率为$p$。

我们想知道哪个$p$能让这个数据发生的可能性最大。这个“数据发生的概率”就是似然函数$L(p)$。根据二项分布公式:

$$L(p) = P(Data|p) = p^{70} \cdot (1 - p)^{30}$$

如果根据$p = 0.7$,也就是MLE的估计:

$$L(0.7) = 0.7^{70} \cdot 0.3^{30} \approx 1.4 \times 10^{-27}$$

如果我猜$p = 0.5$,那么出现70次正面的概率当然很小。如果$p = 0.9$同样也很小。为什么?

$$L(0.9) = 0.9^{70} \cdot 0.1^{30}$$

$$L(0.9) \approx 0.0006 \times 10^{-30} = 6 \times 10^{-34}$$

最后我们得到,$10^{-27}$ 比 $10^{-34}$ 大了整整10,000,000 (一千万)倍!
如果你猜 $p=0.9$,意味着正面出现的概率极高,那么反面出现的概率 ($0.1$) 只有一点点。要连续出现 30 次反面,这个概率 $0.1^{30}$ 实在是太小太小了,把整个似然值得分拉得极低。
虽然 $p=0.9$ 让 $p^{70}$ 这一项变得很大,但它让 $(1-p)^{30}$ 这一项死得很惨。

为了找到完美的 $p$,我们对 $L(p)$ 求导数并令其为 0。
为了计算方便,我们通常先取对数 (Log-Likelihood),把乘法变加法:
$$\ln L(p) = 70 \ln p + 30 \ln (1-p)$$
对 $p$ 求导:
$$\frac{70}{p} - \frac{30}{1-p} = 0$$
解这个方程:
$$70(1-p) = 30p \Rightarrow 70 = 100p \Rightarrow p = 0.7$$
所以只有 $p=0.7$ 处于这座似然山峰的最高点。任何偏离 0.7 的值(无论是 0.9 还是 0.5),其似然值都会下降。

所以在这个例子中,运用MLE公式,猜$p = \frac{Count(Heads)}{Total Count}$的时候,似然函数能够达到峰值。


平滑 (Smoothing)

当我们采集的数据过于稀少时,MLE会出现大问题。

例如我们要做一个垃圾邮件分类器。我们有一个词库,其中一个词是"Bitcoin"。如果在你的训练数据中,"Bitcoin"从来没有出现过,那么根据MLE可得:

$$\hat{P}(Bitcoin) = \frac{0}{n} = 0$$

这意味着你的模型认为全宇宙中"Bitcoin"这个词出现的概率为0。所以如果测试时真的来了一封比特币垃圾邮件,那么你的模型在计算概率时会乘以这个0,导致整个概率变为0。你的分类器就炸了。

我们的解决方案是做一步平滑 (Regularized Estimate / Smoothing)

我们在分子分母加一点“虚构的计数” $\epsilon$,来防止我们最后计算的概率为零:

$$\hat{p}_i = \frac{n_i + \epsilon}{n + k\epsilon}$$

这就是 Regularized Estimate,也常被称为 Laplace Smoothing

实际上换算到人话来讲,我们引入了一种先验认知,或者一种bias。我们认为每个事件都有可能发生,哪怕还没见过。


估计的质量

偏差与方差的权衡

估计总会有误差。我们用 MSE (均方误差) 来衡量估计的好坏。这里有一个极其重要的公式分解:

$$MSE = \text{Variance} + \text{Bias}^2$$

假设你在打靶,那么:

Bias (偏差) 用来衡量你的准星准不准。如果你的瞄准镜歪了,你打出的子弹虽然很聚集,但都偏离靶心。这叫 High Bias
Variance (方差) 衡量你的手稳不稳。如果你的瞄准镜很准,但你手抖得厉害,子弹会散布在靶心周围,虽然平均位置在靶心,但每一发都很散。这叫 High Variance

在估计参数时,MLE 通常是 Unbiased (无偏的),但如果数据少,它的方差可能很大。比如扔两次硬币全是正面,MLE 就敢说是 100% 正面,这是一个非常激进的估计(

如果你选择在MLE时选择平滑处理,那么不可避免地,你就引入了一点Bias。但好消息是它能显著降低方差,这能让模型更稳健,不容易被极端数据带偏。

这导致我们必须在偏差与方差之间做出抉择。也就是Bias-Variance Tradeoff


理解了就来想个小问题吧:

例Cpt2.1

当我们增加平滑参数$\epsilon$,我们对概率的估计值的Bias会变大还是变小?Variance会变大还是变小?这意味着模型变得更“稳”还是更“敏感”?

我们的Bias会变高,但是Variance会非常反直觉得变小。

用扔硬币来作为例子进行讲解:

  • 不加平滑 ($\epsilon = 0$)

    我们只扔一次硬币,是正面,MLE告诉你$p = 1.0$。
    第二次实验,你只扔了一次硬币,结果是个反面。MLE得出$p = 0$

    所以现在你的值在0到1之间跳动。这就是High Variance。你的估计对数据极其敏感。

  • 加一个很大的平滑 ($\epsilon = 1000$)

    你在扔硬币之前就先定好所谓“1000次正面,1000次反面”

    现在你扔了一次是个正面,则你通过公式计算出 $p = \frac{1000 + 1}{2000 + 1} \approx 0.5$
    第二次得出反面:$p = \frac{1000}{2000 + 1} \approx 0.5$

    只要数据量不大,无论你扔出什么,估计值都会死死钉在0.5附近。这就导致你的估计Variance非常低。也就是更稳。

    所以结论是Bias变大,Variance变小。模型变得更稳妥,但是实际上的偏差导致数据有点偏了。


相关性与因果性

概率统计只能告诉你两件事发生了,存在关联性 (Correlation),不能告诉你一件事导致了另一件事,也就是因果性 (Causation)

即便诺贝尔奖得主数量与巧克力消费量呈正相关,也不代表bro吃点巧克力就能让你得诺贝尔奖了。

它们可能都和一个共同的因素有关,比如国家的GDP。有钱的国家既吃得起巧克力,也养得起科学家。但是绝对不是因为吃巧克力就能让你变聪明(


本章小结

这一章我们建立了描述不确定性的数学语言:

  • 随机变量把现实映射为数字,让我们能计算期望、方差
  • 联合分布与条件概率让我们能处理变量之间的关系
  • 贝叶斯定理让我们能"反向推理":从证据更新信念
  • MLE让我们能从数据估计参数:"什么参数能让这些数据最可能发生?"
  • 平滑防止零概率灾难,同时引入了偏差-方差权衡的预告
  • 贝叶斯:$P(H|E) = \frac{P(E|H)P(H)}{P(E)}$
  • MLE:$\hat{p}_i = \frac{n_i}{n}$
  • 平滑:$\hat{p}_i = \frac{n_i + \epsilon}{n + k\epsilon}$

我们已经有了MLE这把锤子。下一章,我们将用数学严格证明"扔硬币的直觉"是对的,并把MLE扩展到更复杂的分布(高斯、指数)。同时,我们会引入MLE的升级版——MAP(最大后验估计),它结合了数据和先验知识。