Skip to content

概率与贝叶斯:用数字写「不确定」

WARNING

🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。

模型预测的不是「真理」,而是在数据下更合理的信念。本章只抓四块:随机变量与期望、条件概率、贝叶斯更新、高斯分布——足够读线性回归噪声假设、EM/GMM、PETS 的不确定度、以及世界模型里的先验/后验。常见分布清单见 常见分布;用样本反推参数见 估计;平均为何像高斯见 CLT。领域地图:数学基础


一、随机变量、期望、方差

  • 随机变量 X:取值带概率(离散)或密度(连续)。不是「未知常数」——它是一台会吐出不同数字的机器,每次运行的结果按一张固定的表出现。
  • 期望 E[X]:按概率加权的平均值——「长期玩下去的中心」。
  • 方差 Var(X)=E[(XEX)2]:分散程度。标准差是它的平方根,和 X 同一单位。

离散时把「加权」写开就是求和:

E[X]=xxP(X=x),Var(X)=E[X2](E[X])2.

机器学习里的损失,多数是某种期望的样本平均:

E(x,y)D[(fθ(x),y)]1ni=1n(fθ(xi),yi).

大数定律保证:样本够多,平均会靠近真期望——这是「用训练集代理真实风险」的合法借口(还要小心过拟合)。定理表述与直方图见 大数定律与中心极限

保姆级数字例。 C++ stats.hpp 对集合 {1,2,3,4,5} 当作五个等权样本:

算法
均值(1+2+3+4+5)/53
离差平方和(13)2++(53)2=4+1+0+1+410
MLE / 总体方差10/52
无偏样本方差10/42.5

同一堆数,除以 n 还是 n10.5——不是四舍五入的问题,是「这五个数是总体,还是更大总体里抽出的样本」。估计章会把这件事钉死。

卡点。 期望不是「最可能出现的值」。公平骰子期望 3.5,骰子上根本没有 3.5 这一点。方差也不是「最大偏差」:它惩罚远离中心的平方,极端值会把 Var 拉得很大。

逐步推导:从「长期平均」到 E[X]=3Var=2(点击展开)

X 想成从 {1,2,3,4,5} 里均匀抽一个(每个概率 1/5)。抽 N 次,大约各出现 N/5 次,总和大约

N5(1+2+3+4+5)=3N,

平均就是 3。把「大约」换成精确的加权:

E[X]=151+152++155=3.

方差先算离差平方的平均:

E[(X3)2]=15(4+1+0+1+4)=2.

等价地先算二阶矩 E[X2]=(1+4+9+16+25)/5=11,再减 (EX)2

Var(X)=119=2.

这是总体方差(五个点就是整个世界)。若把这五个点看成样本,s2=10/(51)=2.5 才无偏——因为用 X¯ 代替了未知的 μ,少了一个自由度。线性性质后面处处用:E[aX+b]=aEX+bVar(aX+b)=a2Var(X)(加常数不改分散,乘 a 会把偏差也乘 a,平方后变 a2)。独立时方差可加:Var(X+Y)=VarX+VarY

训练损失的样本平均,就是把上面的 1N 换成 minibatch。合法的前提是 i.i.d.(或足够接近);相关样本会让「有效 N」变小,方差公式不能照搬。


二、条件概率与独立性

P(AB)=P(A,B)P(B)(P(B)>0).
  • P(AB):已知 B 发生后,A 的新概率。分母是「先缩小到 B 这块」,分子是「AB 重叠的那一块」。
  • 独立P(A,B)=P(A)P(B),等价于 P(AB)=P(A)——知道 B 不改变对 A 的信念。
  • 乘法法则(总是对,不管独不独立):P(A,B)=P(AB)P(B)。链式往下写就是语言模型 P(w1)P(w2w1)P(w3w1,w2)

分类器输出的「类别概率」、语言模型的 P(下一词上文),写的都是条件概率。

保姆级数字例。 公平硬币抛两次。记 A=「第一次正面」,B=「至少一次正面」。样本空间 {HH,HT,TH,TT}1/4P(B)=3/4P(AB)=P({HH,HT})=1/2,于是

P(AB)=1/23/4=23.

无条件下 P(A)=1/2。知道「至少有一次正面」之后,第一次是正面的机会从 1/2 涨到 2/3——因为 TT 被删掉了。这就是「条件」在做的事:扔掉与 B 矛盾的世界,把剩下的概率重新归一化。

卡点。 P(AB)P(BA) 不是一回事。检验阳性 有病,与有病 检验阳性,差的就是先验 P(有病)。贝叶斯一节专门拧这件事。


三、贝叶斯:先验 × 似然 → 后验

P(θdata)=P(dataθ)P(θ)P(data)P(dataθ)P(θ).
名词含义
先验 P(θ)看数据前对参数的信念
似然 P(dataθ)参数固定时,数据有多「像会被生成」
后验 P(θdata)看完数据后的更新信念
证据 P(data)归一化常数,保证后验积分为 1

贝叶斯更新

图解说明:先验被似然「拧」成后验。数据越强,后验越尖;先验越强,后验越难被拧走。

贝叶斯:先验 × 似然 → 后验

图解说明:灰先验、橙似然,乘完再归一化得到蓝后验。数据把信念从「猜」更新成「看过之后的猜」。

demo 用 Beta-Binomial 把这件事做成可画的曲线:先验 Beta(2,2)(略偏好中间),观测 10 次里 7 次正面,后验精确地是 Beta(9,5)。样本频率 7/10=0.7 画成竖虚线——后验峰会靠向它,但不会完全贴上去,因为先验还在把信念往 0.5 拉。

保姆级数字例(与 demo.py 同一组)。 Beta(α,β) 的均值是 α/(α+β)

αβ均值
先验 Beta(2,2)222/4=0.5
后验 Beta(9,5)2+72+39/140.643

0.643 介于 0.50.7 之间:它是「先验伪计数 4 次(均值 0.5)」和「数据 10 次(均值 0.7)」的加权平均

40.5+100.714=914.

数据再多,权会压过先验,后验均值贴向 0.7,峰也更尖。

世界模型里的说法几乎一一对应:

  • 先验 p(ztzt1,at1):不看当前观测的预测;
  • 后验 q(zt,ot):看到 ot 后的修正。

训练时常让先验追后验(KL)——贝叶斯更新的工程版。

卡点。 「似然」不是「θ 有多可能」,而是「θ 固定时,数据有多像会被吐出来」。P(dataθ)θ 积分不必等于 1;对 data 才归一。把似然当成后验直接用,等于偷偷假设了平坦先验。

逐步推导:Beta-Binomial 后验为何是 Beta(9,5)(点击展开)

抛币 n 次、正面 k 次,似然是二项(θ 未知):

P(dataθ)=(nk)θk(1θ)nk.

先验取 Beta(α,β),密度 θα1(1θ)β1α=β=2 时是倒扣的碗,中间高、两端低)。乘在一起:

P(θdata)θk(1θ)nkθα1(1θ)β1=θα+k1(1θ)β+nk1.

这正是 Beta(α+k,β+nk) 的核。代入 α=β=2k=7n=10

α=2+7=9,β=2+3=5.

证据 P(data) 是把先验与似然的乘积对 θ[0,1] 积分,刚好是 Beta 的归一化常数 B(α,β) 那一项——共轭先验的好处是不用数值积分,更新 = 往 α,β 上加计数。

Beta 先验与后验

图解说明:蓝线 Beta(2,2) 对称蹲在 0.5;橙线 Beta(9,5) 右移且变尖;红虚线是样本频率 0.7。后验均值 9/140.643,被先验从 0.7 往回拽了一截。

离散版贝叶斯(事件而不是参数)是同一公式。设 H 为假设、D 为数据:

P(HD)=P(DH)P(H)P(D),P(D)=HP(DH)P(H).

分母把「所有能产生 D 的故事」加起来。漏加某个 H,后验会被错误地抬高——这就是忽略基础比率(base-rate neglect)的代数来源。


四、高斯:AI 里的默认噪声

一维:

N(x;μ,σ2)=12πσexp((xμ)22σ2).
  • μ:中心;σ:胖瘦。demo 画 σ=0.5,1,2 三条:σ 翻倍,峰高减半、腰变宽(面积始终为 1)。
  • 平方误差损失 logN(y;y^,σ2)σ 固定时)——所以「最小二乘」常是高斯假设的最大似然。

多维高斯用均值向量与协方差矩阵 Σ 描述椭圆等高线。对角 Σ:轴对齐;全 Σ:可倾斜相关。demo 的二维例子

Σ=(10.80.81)

两个分量各自方差为 1,相关系数 0.8,所以云团沿 y=x 方向拉长。

高斯:μ 与 σ

图解说明:同一 μ、不同 σ 控制分散;2D 椭圆是协方差的几何形状。PETS / RSSM 里的「不确定」经常就是这套语言。

卡点。 高斯的「薄尾」:偏离 μ 超过 3σ 的概率约 0.3%。真实噪声若有尖峰(传感器跳变、标注错误),最小二乘会被那几个点绑架——这是改用 Laplace / Huber 损失的动机。另一个卡点:σ0 时密度在 μ 处炸成脉冲,数值上 logp 会溢出;实现里常对 σ 设下限。

逐步推导:平方误差为何是高斯的负对数似然(点击展开)

假设 y=y^+εεN(0,σ2),则 yN(y^,σ2)。一条样本的负对数密度

logN(y;y^,σ2)=12log(2πσ2)+(yy^)22σ2.

n 条 i.i.d. 加起来,第一项与 y^ 无关。σ 若固定,最小化 logL 等价于最小化 (yiy^i)2。这就是「最小二乘 = 高斯噪声下的 MLE」。

σ 也未知时,MLE 会同时估 σ^2=1n(yiy^i)2(除以 n,有偏,见 估计)。

二维密度多一个行列式:

N(x;μ,Σ)=1(2π)d/2detΣexp(12(xμ)Σ1(xμ)).

指数里的 (xμ)Σ1(xμ) 叫马氏距离:先用 Σ1 把椭圆拧成圆,再量欧氏长度。Σ 的特征方向就是椭圆的长轴、短轴——这和 特征值 是同一套几何。

demo 一维曲线用的就是 μ=0σ{0.5,1,2} 代入上式;二维散点从 N(0,Σ)400 个点。

一维与二维高斯

图解说明:左:σ 越小峰越尖。右:ρ=0.8 的相关云,轴对齐的圆被拧成斜椭圆。


五、代码在做什么

demo.py

  1. 用抛硬币的 Beta-Binomial 玩具演示先验 → 后验如何随正面次数移动(先验 Beta(2,2),数据 7/10 正面,后验 Beta(9,5));
  2. 画不同 σ 的一维高斯,并采样二维相关高斯散点(Σ12=0.8)。

C++ stats.hpp 不算贝叶斯积分,只把「期望 / 方差是样本的函数」写成循环:对 {1,2,3,4,5} 印均值 3、无偏方差 2.5、MLE 方差 2

Beta 先验与后验

一维与二维高斯


六、小结

概念一句话
期望 / 方差中心与分散;同一堆数除以 nn1 含义不同
条件概率已知部分信息后,把样本空间缩小再归一化
贝叶斯先验被似然更新为后验;Beta 对二项是共轭
高斯最常用的噪声与不确定模型;固定 σ 时 MLE = 最小二乘
下游回归、EM、贝叶斯深度学习、世界模型先验/后验

下一章 常见分布:似然里那些 p(xθ) 具体长什么样。优化见 梯度

📥 Code

FileViewDownload
demo.pyOpenDownload
stats.hppDownload
demo.cppDownload
exercise.pyOpenDownload

参考

  1. Blitzstein & Hwang, Introduction to Probability
  2. MacKay, Information Theory, Inference, and Learning Algorithms(贝叶斯视角极佳)