某项疾病检测呈阳性,而且检测对患者的检出率高达 98%。受检者患病的概率是不是也接近 98%?
不是。还必须考虑疾病本来有多罕见,以及健康人被误报为阳性的概率。贝叶斯学习的核心,就是把观察数据带来的证据与观察之前已有的知识合在一起,得到观察之后应当相信什么。
课件先介绍了 Thomas Bayes(1702—1761):他把归纳推理引入概率论基础研究,相关著作包括 1758 年的《机会的学说概论》,以及身后于 1763 年发表的《论机会学说问题的求解》。今天以他命名的公式,正是在形式化“证据怎样改变信念”。
一、贝叶斯公式中的四个角色
给定假设 h 和数据 D,贝叶斯公式为
P(h∣D)=P(D)P(D∣h)P(h).
四个量各有明确职责:
| 名称 | 记号 | 含义 |
|---|
| 先验概率 | P(h) | 看数据之前,对假设 h 的相信程度 |
| 似然 | P(D∣h) | 若 h 为真,观察到当前数据的可能性 |
| 证据 | P(D) | 数据本身出现的总概率,用于归一化 |
| 后验概率 | P(h∣D) | 看过数据后,对 h 的更新认识 |
一句话记忆就是
后验∝似然×先验.
先验也体现了一种归纳偏置:有限数据通常不足以唯一决定模型,学习器必须借助某种偏好在多个解释之间选择。
二、阳性不等于大概率患病
课件给出如下疾病检测数据:
P(cancer)=0.008,P(¬cancer)=0.992,
P(+∣cancer)=0.98,P(−∣cancer)=0.02,
P(+∣¬cancer)=0.03,P(−∣¬cancer)=0.97.
现在观察到阳性。先计算两条产生阳性的路径:
P(+∣cancer)P(cancer)=0.98×0.008=0.00784,
P(+∣¬cancer)P(¬cancer)=0.03×0.992=0.02976.
于是
P(cancer∣+)=0.00784+0.029760.00784≈0.2085,
而
P(¬cancer∣+)≈0.7915.
直觉检查也很简单:在十万人中,约 800 人患病,其中约 784 人检测阳性;约 99200 人不患病,其中约 2976 人会被误报为阳性。阳性人群中真正患者的比例为
784+2976784≈20.85%.
检测本身并不差,真正改变结论的是很低的基础患病率。这就是不能把 P(+∣cancer) 与 P(cancer∣+) 混为一谈的原因。
三、MAP 与 ML
机器学习中常把候选模型写成假设空间 H。观察训练数据 D 后,最大后验假设是
hMAP=argh∈HmaxP(h∣D)=argh∈HmaxP(D)P(D∣h)P(h)=argh∈HmaxP(D∣h)P(h).
P(D) 对所有候选 h 相同,所以求最优假设时可以省略。
若不知道先验,或假设各候选模型先验相同,即
P(hi)=P(hj),
那么 MAP 退化为最大似然:
hML=argh∈HmaxP(D∣h).
二者的差别不在优化技巧,而在如何理解参数:
- ML 把参数视为确定但未知的量,只寻找最能解释数据的参数;
- 贝叶斯方法把参数视为随机变量,用先验描述观察数据前的不确定性;
- MAP 仍输出一个点估计,但这个点同时受数据与先验影响。
四、最大似然为何要取对数
设样本集
K={x1,x2,…,xN}
由密度 p(x∣θ) 独立产生。似然函数为
L(θ)=p(K∣θ)=k=1∏Np(xk∣θ).
连乘既难求导,又容易出现数值下溢。因为对数函数严格单调,最大化 L 等价于最大化对数似然:
ℓ(θ)=logL(θ)=k=1∑Nlogp(xk∣θ).
因此
θ^ML=argθmaxk=1∑Nlogp(xk∣θ).
若最优点位于可微函数内部,通常令梯度为零:
∇θℓ(θ)∣θ^ML=0.
“乘法变加法”是对数似然如此常用的直接原因。
五、正态分布参数的最大似然估计
设一元正态分布参数为
θ1=μ,θ2=σ2,
概率密度为
p(xk∣μ,σ2)=2πσ21exp(−2σ2(xk−μ)2).
单样本对数密度是
logp(xk∣μ,σ2)=−21log(2πσ2)−2σ2(xk−μ)2.
均值估计
对 μ 求导并令所有样本的导数和为零:
k=1∑Nσ2xk−μ=0.
得到
μ^ML=N1k=1∑Nxk.
正态总体均值的最大似然估计就是样本均值。
方差估计
继续对 σ2 求导,可得
σ^ML2=N1k=1∑N(xk−μ^ML)2.
这里分母是 N,因为它是最大似然估计。统计学中为了得到无偏样本方差,常把分母改成 N−1:
s2=N−11k=1∑N(xk−xˉ)2.
两者目标不同,不能只凭熟悉程度替换。
多元正态分布
对多元样本 xk,最大似然均值和协方差分别为
μ^ML=N1k=1∑Nxk,
Σ^ML=N1k=1∑N(xk−μ^)(xk−μ^)⊤.
相应的无偏样本协方差则使用 1/(N−1)。
六、MAP 如何加入先验
把未知参数记为随机变量 θ,先验为 p(θ)。给定样本集 K 后,MAP 估计为
θ^MAP=argθmaxp(θ∣K)=argθmaxp(K∣θ)p(θ).
取负对数,就得到
θ^MAP=argθmin[−logp(K∣θ)−logp(θ)].
因此可以把先验理解成附加在数据损失上的偏好。似然负责“解释当前数据”,先验负责“在多个解释都说得通时,更偏向哪些参数”。
七、朴素贝叶斯分类器
设输入样例由 n 个属性组成:
x=(a1,a2,…,an),
类别集合为 V={v1,…,vK}。最大后验分类首先写成
vMAP=argvj∈VmaxP(vj∣a1,…,an)=argvj∈VmaxP(a1,…,an∣vj)P(vj).
困难在于联合条件概率 P(a1,…,an∣vj) 参数太多。朴素贝叶斯作出一个很强的假设:给定类别后,各属性条件独立。
于是
P(a1,…,an∣vj)=i=1∏nP(ai∣vj),
分类规则变为
vNB=argvj∈VmaxP(vj)i=1∏nP(ai∣vj).
训练只需从样本频数估计类别先验 P(vj) 和各属性的类条件概率 P(ai∣vj)。分类时也不必把每个分数归一化成真正的后验概率;各类别共用的分母不会改变最大值位置。
课件列出的典型应用包括故障诊断和文本分类,适合处理中等或大规模数据。代价是条件独立假设往往并不严格成立。
八、完整算例:今天要不要打网球
课件使用 14 条 PlayTennis 样本。类别为 Yes 的样本有 9 条,No 有 5 条。现在要预测
⟨Sunny,Cool,High,Strong⟩.
计算 Yes 的未归一化分数
从表中计数:
P(Yes)=149,
P(Sunny∣Yes)=92,P(Cool∣Yes)=93,
P(High∣Yes)=93,P(Strong∣Yes)=93.
所以
sYes=149×92×93×93×93≈0.0053.
计算 No 的未归一化分数
同理,
P(No)=145,
P(Sunny∣No)=53,P(Cool∣No)=51,
P(High∣No)=54,P(Strong∣No)=53.
因此
sNo=145×53×51×54×53≈0.0206.
因为
sNo>sYes,
朴素贝叶斯预测为 No。课件把两个分数四舍五入写成约 0.021 与 0.005,结论一致。
九、看不见类别归属时怎么办
前面的最大似然估计默认每条样本的来源都清楚。现实中常常只能观察到一部分变量:
- 混合分布中,不知道每个样本来自哪个分量;
- 贝叶斯网络中,某些节点没有观测;
- 隐马尔可夫模型中,状态序列不可见。
EM(Expectation-Maximization)就是处理隐变量的通用迭代方法。它交替做两件事:
- E 步:在当前参数下,估计隐变量的后验分布;
- M 步:把隐变量的软估计当作权重,重新求最大似然参数。
然后重复,直到参数或似然基本不再变化。
十、高斯混合模型中的 EM
考虑 k 个一元高斯分量。课件先采用一个简化情形:各分量先验相同、方差同为 σ2,只估计均值
h=⟨μ1,…,μk⟩.
设隐变量 zij 表示样本 xi 是否由第 j 个高斯产生。若来源已知,第 j 个分量的均值直接是属于它的样本均值;现在来源未知,就用其后验期望作为软权重。
E 步:计算责任度
在相同先验和相同方差下,
γij=E[zij]=n=1∑kexp[−2σ2(xi−μn)2]exp[−2σ2(xi−μj)2].
γij 可以理解为“当前模型认为样本 xi 由分量 j 产生的概率”,并且对每个样本都有
j=1∑kγij=1.
M 步:更新均值
使用责任度作权重:
μj←∑i=1mγij∑i=1mγijxi.
分子是分量 j 对所有样本的加权和,分母是它承担的“有效样本数”。
课件进一步把 M 步写成最大化辅助函数 Q(h′∣h)。去掉与均值无关的常数后,等价于最小化
i=1∑mj=1∑kγij(xi−μj′)2,
对 μj′ 求导,就得到上面的加权均值更新。
一轮数值算例
取数据
D={0,3,7,10},
两个高斯分量的初始均值为 μ1=2、μ2=8,并取 σ=2。E 步得到第一个分量的大致责任度
(0.9994, 0.9526, 0.0474, 0.0006).
它们之和约为 2。M 步更新第一个均值:
μ1′≈20×0.9994+3×0.9526+7×0.0474+10×0.0006≈1.60.
第二个均值对称地更新到约 8.40。这一轮让左侧分量向左侧两点靠拢,右侧分量向右侧两点靠拢。
课件把最后几页标题写成“K 均值算法的推导”,但页内实际使用的是高斯密度与连续责任度,这是高斯混合模型的软 EM 更新。若把每个样本的责任度硬化成只有最近中心为 1、其余为 0,均值更新才会变成常见的 K-means 形式。
十一、贝叶斯方法提供了什么
课件把贝叶斯方法的作用分成两类。
一类是实用算法:朴素贝叶斯、EM、HMM、贝叶斯网络学习都从概率建模出发。另一类是统一的概念框架:它为学习器给出一个概率意义下的比较基准,课件把它称为评估其他算法的“黄金标准”。
先验知识+数据证据⟶后验认识.
最后可以用三个问题检查自己是否真正分清了概念:
- P(D∣h) 与 P(h∣D) 的条件方向是否写反;
- 求 MAP 时为什么可以删掉 P(D),但不能随意删掉 P(h);
- EM 的 E 步是在当前参数下估计隐变量,M 步才是在这些软分配下更新参数。
只要这三个方向没有混乱,贝叶斯学习的主干就已经建立起来了。