概率统计基础:从数据波动到贝叶斯网络

从均值和方差开始,逐步引出样本估计、二项分布、最大似然估计、条件概率、贝叶斯公式和贝叶斯网络。

概率统计基础:从数据波动到贝叶斯网络

机器学习不是一上来就训练模型。模型学习之前,我们要先问一个更朴素的问题:

这批数据本身是什么样的?

如果连数据的中心、波动、不确定性和变量关系都说不清,后面讨论线性回归、逻辑回归、神经网络和大模型,其实都会悬空。

这篇文章从最基础的统计量讲起,然后慢慢引出概率分布、最大似然估计、条件概率和贝叶斯网络。它是后续 机器学习基础 和 机器学习建模 的前置知识。

第一步:先描述一组数据的位置

假设有三名同学的成绩:

60, 70, 80

我们想用一个数表示这组成绩的大概水平,最自然的方法是求平均数:

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

代入上面的数据:

xˉ=60+70+803=70\bar{x}=\frac{60+70+80}{3}=70

平均数回答的是:

这组数据大概集中在哪里?

但是平均数并不是唯一的中心指标。

  • 中位数:把数据排序后位于中间的值。
  • 众数:出现次数最多的值。
  • 平均数:所有值加起来再平均分。

如果数据里有极端值,中位数往往比平均数更稳。例如:

10, 70, 130

平均数还是 70,但这组数据显然和 60, 70, 80 不一样。这说明只看中心位置还不够。

第二步:再描述数据有多分散

两组数据:

A: 60, 70, 80
B: 10, 70, 130

平均数都是 70,但 B 的波动更大。我们需要一个量描述“数据离中心有多远”,这就是方差。

方差的计算思路是三步:

  1. 每个点减去均值。
  2. 把偏差平方,避免正负抵消。
  3. 对平方后的偏差求平均。

如果这组数据就是完整总体,总体方差是:

σ2=1N∑i=1N(xi−μ)2\sigma^2=\frac{1}{N}\sum_{i=1}^{N}(x_i-\mu)^2

以 A 组为例:

60 - 70 = -10
70 - 70 = 0
80 - 70 = 10

平方后:

100, 0, 100

总体方差:

σ2=100+0+1003=2003\sigma^2=\frac{100+0+100}{3}=\frac{200}{3}

所以均值和方差的关系可以这样记:

均值描述数据中心,方差描述数据围绕中心散得多开。

第三步:从总体走向样本

现实里我们经常拿不到完整总体,只能拿到一部分样本。

比如我们想知道一个学校所有学生的平均身高,但只抽了 50 个学生。这个时候,样本均值 xˉ\bar{x} 只是总体均值 μ\mu 的估计。

样本方差通常写作:

s2=1n−1∑i=1n(xi−xˉ)2s^2=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2

这里分母是 n−1n-1,不是 nn。

为什么?因为 xˉ\bar{x} 是用样本自己算出来的,它会天然靠近这批样本,导致偏差平方和偏小。除以 n−1n-1 是一种修正,让样本方差更适合估计总体方差。

初学时可以先这样理解:

样本均值已经从样本里“用掉”了一个自由度,所以估计方差时分母用 n−1n-1。

这个点后面会影响模型评估。训练集只是样本,不是完整世界;模型在训练集上表现好,不等于它在真实分布上表现好。

第四步:从数据波动走向概率分布

均值和方差描述的是已经看到的数据。但机器学习还关心没看到的数据会怎样出现。

比如抛硬币:

正面 / 反面

这是一个只有两种结果的试验。如果我们抛 nn 次,想知道正面出现 kk 次的概率,就会遇到二项分布。

二项分布成立需要四个条件:

  1. 试验次数固定为 nn。
  2. 每次只有成功和失败两种结果。
  3. 每次成功概率相同,记为 pp。
  4. 每次试验相互独立。

如果 XX 表示 nn 次试验中成功的次数:

X∼Binomial(n,p)X\sim \text{Binomial}(n,p)

那么:

P(X=k)=(nk)pk(1−p)n−kP(X=k)=\binom{n}{k}p^k(1-p)^{n-k}

这个公式不用死记。以抛 3 次硬币,正好 2 次正面为例。

某一种顺序:

正 正 反

概率是:

p2(1−p)p^2(1-p)

但正好 2 次正面的顺序有 3 种:

正 正 反
正 反 正
反 正 正

所以总概率是:

(32)p2(1−p)\binom{3}{2}p^2(1-p)

二项分布其实就是:

一种排列的概率 × 这种排列的数量。

第五步:从概率分布走向参数估计

现在反过来问:如果我们不知道硬币正面概率 pp,只观察到抛了 10 次,其中 8 次正面,应该怎么估计 pp?

这就是最大似然估计(Maximum Likelihood Estimation, MLE)。

它的思想是:

找到一组参数,让我们已经观察到的数据最可能出现。

对于二项分布,似然函数是:

L(p)=(nk)pk(1−p)n−kL(p)=\binom{n}{k}p^k(1-p)^{n-k}

因为 (nk)\binom{n}{k} 和 pp 无关,所以最大化它等价于最大化:

pk(1−p)n−kp^k(1-p)^{n-k}

取对数更方便求导:

ℓ(p)=klog⁡p+(n−k)log⁡(1−p)\ell(p)=k\log p+(n-k)\log(1-p)

对 pp 求导:

dℓdp=kp−n−k1−p\frac{d\ell}{dp}=\frac{k}{p}-\frac{n-k}{1-p}

令导数等于 0:

kp=n−k1−p\frac{k}{p}=\frac{n-k}{1-p}

解得:

p^=kn\hat{p}=\frac{k}{n}

也就是说,在二项分布假设下,最大似然估计得到的成功概率就是观察到的成功频率。

抛 10 次,8 次正面:

p^=0.8\hat{p}=0.8

这里要注意:MLE 不是说硬币真实概率一定是 0.8,而是说在当前模型假设下,p=0.8p=0.8 最能解释这次观察。

后面学习逻辑回归、交叉熵和语言模型训练时,也会反复看到这个思想:让模型给真实数据更高概率。

第六步:看到新信息后如何更新判断

前面的概率分布讨论的是“数据如何出现”。现在我们考虑另一类问题:

已经知道一个新信息后,原来的判断怎么更新?

这就是条件概率。

条件概率写作:

P(A∣B)P(A\mid B)

意思是:在 BB 已经发生的条件下,AA 发生的概率。

定义为:

P(A∣B)=P(A∩B)P(B),P(B)>0P(A\mid B)=\frac{P(A\cap B)}{P(B)}, \quad P(B)>0

它的直觉是缩小样本空间。

例如班里有 100 人:

  • 60 个男生。
  • 40 个女生。
  • 30 人戴眼镜。
  • 其中 18 个男生戴眼镜。

问:已知一个人戴眼镜,他是男生的概率是多少?

设:

A = 是男生
B = 戴眼镜

那么:

P(A∣B)=1830=0.6P(A\mid B)=\frac{18}{30}=0.6

原来我们在全班里判断,现在只在“戴眼镜的人”这个小世界里判断。

第七步:贝叶斯公式

由条件概率定义:

P(A∩B)=P(A∣B)P(B)P(A\cap B)=P(A\mid B)P(B)

也可以写成:

P(A∩B)=P(B∣A)P(A)P(A\cap B)=P(B\mid A)P(A)

所以:

P(A∣B)=P(B∣A)P(A)P(B)P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}

这就是贝叶斯公式。

可以把它读成:

后验 = 似然 × 先验 / 证据
项含义
P(A)P(A)先验:看到证据前对 A 的判断
P(B∣A)P(B\mid A)似然:如果 A 成立,B 出现的概率
P(B)P(B)证据:B 本身出现的概率
P(A∣B)P(A\mid B)后验:看到 B 后对 A 的新判断

这个公式的意义不只是做概率题。机器学习里的很多推断,本质上都是根据证据更新判断。

第八步:多个变量之间如何表达关系

如果只有两个事件,条件概率够用。但真实问题里变量很多。

例如:

下雨 -> 地面湿
洒水器打开 -> 地面湿
地面湿 -> 鞋子变湿

这种关系用一堆公式写会很乱。贝叶斯网络用有向无环图表达变量之间的概率依赖。

  • 节点表示随机变量。
  • 箭头表示概率依赖方向。
  • 整张图把联合概率拆成局部条件概率。

通用分解规则是:

P(X1,X2,…,Xn)=∏i=1nP(Xi∣Pa(Xi))P(X_1,X_2,\ldots,X_n)=\prod_{i=1}^{n}P(X_i\mid \text{Pa}(X_i))

其中 Pa(Xi)\text{Pa}(X_i) 表示 XiX_i 的父节点集合。

三种最重要的小结构

初学贝叶斯网络,先掌握三种结构就够了。

链式结构

flowchart LR
  A([A]) --> B([B]) --> C([C])

AA 影响 BB,BB 影响 CC。如果已经知道 BB,那么 AA 对 CC 的额外信息被截断:

A⊥C∣BA\perp C\mid B

分支结构

flowchart TB
  A([A]) --> B([B])
  A --> C([C])

AA 同时影响 BB 和 CC。如果已经知道 AA,那么 BB 和 CC 之间的相关性被解释掉:

B⊥C∣AB\perp C\mid A

V 结构

flowchart TB
  A([A]) --> C([C])
  B([B]) --> C

V 结构最容易错。默认情况下,AA 和 BB 可以独立;但如果观测到了共同结果 CC,它们反而可能相关。

例子:

A = 下雨
B = 洒水器打开
C = 地面湿

如果知道地面湿了,又知道没有下雨,那么“洒水器打开”的可能性会上升。两个原因之间出现了解释竞争。

一个小练习

假设某产品质检中,次品率为 pp。你抽查 20 件,发现 3 件次品。

  1. 如果用二项分布建模,nn 和 kk 分别是多少?
  2. 用最大似然估计,p^\hat{p} 是多少?
  3. 如果后面发现抽样批次来自一个新供应商,这个信息会不会改变你对次品率的判断?

前两个问题对应二项分布和 MLE,第三个问题已经开始进入条件概率和贝叶斯更新。

总结

这篇文章从数据本身出发,走了一条自然路线:

均值 -> 方差 -> 样本估计 -> 二项分布 -> 最大似然估计 -> 条件概率 -> 贝叶斯网络

后面学习 机器学习建模 时,逻辑回归的概率输出、交叉熵损失和模型泛化都会用到这些基础。再往后看 Attention 机制 时,softmax 也可以理解成一种把分数转换成概率分布的操作。

尺素

0 封尺素

正在取尺素...