贝叶斯推断是基于贝叶斯定理的一种推断方法,与之相关的最大似然估计、最大后验估计等统计推断方法是机器学习中的核心概念。本文尝试从一个简单的例子入手,帮助读者深入理解这些复杂的概念。
从一道经典面试题说起
有一枚硬币,抛掷 10 次,出现了 7 次正面,3 次反面。试问这枚硬币是公平的吗?
这是一道经典面试题,没有标准答案,关键看思考的角度、过程以及深度。
常识说
基于常识的人会认为,硬币就是公平的,正面朝上的概率是 0.5,完全有可能抛出“7正3反”的结果,而且概率还不低:
C103⋅0.57 ⋅ 0.53 = 0.1172
可见,随便做 10 轮实验,大概就能观察到一次“7正3反”。
假设检验
只问硬币公不公平,没问硬币正面朝上的概率是多少,可以看作一个假设检验问题。
首先定义原假设 H0: 硬币是公平的。由上文可知,出现“7正3反”的概率是 0.1172,超过了 5%,不属于小概率事件。所以原价设成立,即这枚硬币是公平的。
这种解释与常识说类似,但理论支撑更强。
频率说
这题简单,抛 10 次硬币,7正3反,用频率逼近概率,可以得到正面朝上的概率为 0.7,所以硬币不公平。只不过这里抛掷的次数太少,导致逼近不够严格,如果再多抛几百次就好了😅。
可见,该方法依赖观测的数据量,在数据较少时偏差较大。
最大似然估计(Maximum Likelihood Estimate, MLE)
假设硬币正面朝上的概率为 θ,我们观测到“7正3反”10 组抽样结果,计为 x。令:
θ∗=θargmaxP(x=7正3反∣θ)
则 θ∗ 是一个很有潜力的候选项。也就是说,我们要找到“当 θ 为多少时,观察到“7正3反”的可能性最大”。
这种推断方式称为最大似然估计(MLE),而“似然(likelihood)”一词就是“可能性”的意思。
最大似然估计是“已知样本,计算概率(或称参数)”的问题,这里我们不是把样本 x 看作变量,而是把 θ 看作变量。因此,定义关于 θ 的函数:
L(θ)=P(x=7正3反∣θ) = C103 ⋅ θ7 ⋅ (1−θ)3
这种形式被称为 θ 的似然函数(Likelihood Function)。而要计算的 θ∗ 即为使得 L(θ) 取最大值的点。
观察表达式为连乘形式,这里有一个通用的简化技巧,就是对表达式两边各加一层对数函数。由于对数函数是单调递增的,不影响原表达式的单调性,因此最大值点不变。简化后的表达式如下:
l(θ)=lnL(θ) = 7lnθ + 3ln(1−θ) + C
其中 C 为常数。
为了找到 l(θ) 的最大值点,只需对其求导,找到导数为 0 的点即可。即:
θ7 − 1−θ3=0
得到 θ=0.7。
即 θ=0.7 时,观测到“7正3反”的概率最大。从这个角度可以认为,硬币是不公平的,其正面朝上的概率为 0.7。
这个结论刚好与频率说一致,但只是巧合,两者之间并无逻辑关联。对于其他问题,两者得到的结论未必相同。
最大后验估计(Maximum A Posteriori Estimation, MAP)
持贝叶斯派观点者看了上面的所有推理会摇头,因为:
- 常识说只凭先验知识,完全不考虑数据带来的后验信息,一点都不“数据驱动”。
- 频率说和最大似然估计说只考虑后验数据,完全不顾“硬币通常都是公平的”这一先验知识,得到硬币证明朝上概率为 0.7 的结论,有点不合常理。
站在贝叶斯派的视角,万物都是随机变量,只有已知数据不会骗人。模型/参数从来都不是固定的,而要根据后验数据的积累不断纠正。因此,硬币正面朝上的概率 θ 是一个随机变量,而不是一个冥冥之中已经注定的某个固定值。所以,θ 的先验值不是简单的 0.5,而是一个概率分布 p(θ),只不过它取值为 0.5 的可能性非常大。例如你可以假设 θ 服从均值为 0.5,方差为 0.1 的正态分布(或者从世界知识中总结出来),即:
p(θ) ~ N(0.5,0.12)
如果此时问,θ∗=argmaxθp(θ) 是多少?
毫无疑问,θ∗=0.5。
但当加入了一批观测数据(7正3反)之后,就不能再以静态的眼光看待 p(θ) 了,此时 θ 的分布应当有所调整,其峰值至少应该向 1 的方向偏一点(尽管很微弱)。这即是后验概率分布:
p(θ∣x=7正3反)
最初的问题也就变成了:
θ∗=θargmaxp(θ∣x=7正3反)
注意这个表达式与最大似然公式的区别:
最大似然公式写作 P(⋅) (大写),表示一个具体的概率值。最大后验公式写作 p(⋅) (小写),表示一个概率分布函数。
上述表达式的含义是,在观察到“7正3反”的现象后,硬币正面朝上的概率最可能等于几?
为了求解上述表达式,回顾一下贝叶斯公式:
P(A∣B)=P(B)P(B∣A)P(A)
将贝叶斯公式套入表达式,可得:
θ∗ =θargmaxp(θ∣x=7正3反) =θargmaxP(x=7正3反)P(x=7正3反∣θ)⋅p(θ) =θargmaxP(x=7正3反∣θ)⋅p(θ)
最后一步将分母中的 P(x) 略去了,是因为 P(x) 是某个与 θ 无关的常量,不影响对 θ 极值点的计算。如果你好奇的话,可以通过全概公式计算 P(x):
P(x=7正3反)=∫01P(x=7正3反∣θ)⋅p(θ)dθ=∫01C103⋅θ7⋅(1−θ)3⋅0.12π1e−2⋅0.12(θ−0.5)2dθ
这是一个关于 θ 的定积分,结果是一个常量。
回归正题,继续推导 θ∗:
θ∗ =θargmax P(x=7正3反∣θ)⋅p(θ) =θargmaxlnP(x=7正3反∣θ)+lnp(θ) =θargmaxln(C103⋅θ7⋅θ3)+ln[0.12π1e−0.02(θ−0.5)2] =θargmax7lnθ+3ln(1−θ) − 0.02(θ−0.5)2
对上述表达式求导,并计算导数为 0 的点,得到 θ∗=0.5577。
可以看到,后验概率确实从 0.5 向 1 的方向偏移了一些,偏移程度取决于两个因素:
-
对先验概率 p(θ) 的假设。这里假设了 p(θ) ~ N(0.5,0.12),方差越大,偏移越多。若方差从 0.1 增大为 1,会得到 θ∗=0.6959。
其实对于抛硬币问题(二项分布),更常见的做法是将先验分布假设为 β 分布(参考),因为 β 分布拥有一个良好的性质:如果先验分布为 β 分布,那么后验分布也服从 β 分布。这样计算起来很方便。这种先验和后验分布具有相同形式的现象称为共轭分布。
-
观察样本的个数。这里观测数据是“7正3负”,如果是“700正300负”的话,那么偏移程度会更大,得到 θ∗=0.6959,非常逼近 0.7。
贝叶斯推断
根据最大后验估计,已经求得 θ∗=0.5577。那么,如果继续追问:再抛一次硬币,正面朝上的概率是多少?
你可能会想,这不是显而易见吗?就是 0.5577 呀。
这就在不知不觉中又违背贝叶斯派的思想精髓了。
如前所述,在贝叶斯派眼中,θ 是一个随机变量,而不是一个冥冥之中已经注定了的固定值。θ∗=0.5577 的含义是,在观察到“7正3反”之后,θ 取 0.5577 的可能性是最大的。但 θ 取 0.5 有没有可能?θ 取 0.7 有没有可能?都是有可能的,只是可能性不如 0.5577 那么大。
此时,θ 取各种值的可能性可通过其后验分布 p(θ∣x=7正3反) 来描述,它的函数图像类似下图:

可见,p(θ∣x=7正3反) 函数在 0.5577 处取得最大值。
重新审视问题,会发现 θ 取 0~1 之间的任意值都是有可能的,而在 θ 取每个值的情况下,都可以计算下一次硬币正面朝上的概率。先用不精确的语言来描述一下思路,方便理解。如上图,我们大致能看到:
p(0.1)=0.00001p(0.2)=0.0001p(0.3)=0.0002p(0.4)=0.001p(0.5)=0.0045...p(0.9)=0.0001
根据概率的加法原则,把所有可能发生的情况整合起来,有:
P(下次为正)=0.1∗p(0.1)+0.2∗p(0.2)+⋯+0.9∗p(0.9)
可以通过积分来严格描述上述思路:
P(下次为正∣x=7正3反)=∫01P(x^∣θ)⋅p(θ∣x)dθ=∫01θ⋅p(θ∣x)dθ
其中,x^ 代表“下次为正”这一事件,x 代表已观测到的“7正3反”事件。
可以看到,这与简单回答 P(下次为正)=0.5577 的核心区别在于,上述结论综合了 θ 在所有可能值下“下次为正”的概率,而不只是 0.5577 一个点的情况。
上述积分难以求得解析表达式,最好通过数值方法计算结果。但这只是因为我们将先验分布 p(θ) 假设为了正态分布,如果将 p(θ) 假设为 β 分布,则能够求得解析式和精确解。