先修:18 告警与误报;19 事件、条件概率与乘法规则
同一台检测器,发现故障时很灵敏,没有故障时也很少乱叫。它忽然发出告警,我们该有多担心?上一章已经提醒我们:“有故障时会告警”与“告警时有故障”,问的是不同问题。
这一章要走过两者之间的桥。我们不另外发明一套判断法,只从条件概率的定义出发,看看旧判断和新证据怎样共同决定新判断。还要追问:同一条消息出现两次,真的就多了一份证据吗?
先把告警来自哪里算清楚
沿用前两章的虚构检测台账。D表示一个检测窗口中确有故障,E表示检测器发出告警;Dᶜ表示没有故障。故障标签在本例中视为准确已知,实际评估必须另行核查。
先在低故障比例台账的10000个窗口中,等可能地抽取一个。100个有故障,其中99个告警;9900个无故障,其中99个误报。于是P(D)=0.01,P(E|D)=0.99,P(E|Dᶜ)=0.01。
最后两个数的分母分别是故障组与无故障组。0.99告诉我们,若已经知道窗口有故障,告警有多常见。它没有告诉我们,在所有告警里,故障占多少。

图1:每个窗口恰好落在一条末端分支中。告警总数要合并两种来源;框的大小不代表数量比例。
把故障原有的概率记作π,读作“派”。暂取0<π<1,并保持两组内的告警概率不变。任何告警都必属于以下一种情况:有故障且告警,或无故障却告警。因此
E=(E∩D)∪(E∩Dᶜ)。
这两部分不相交,因为一个窗口不可能同时有故障和无故障。上一章的加法规则允许我们相加,再用乘法规则展开:
P(E)=P(E∩D)+P(E∩Dᶜ)
=P(E|D)P(D)+P(E|Dᶜ)P(Dᶜ)
=0.99π+0.01(1−π)。
这就是本例的全概率分解:先按互不重叠、合起来覆盖全部情况的类别分开算,再把同一个目标事件的各部分加回来。1 漏掉误报项,相当于偷偷把“所有告警”改成了“所有真告警”。
交换条件,必须交换分母
现在才问P(D|E)。按照定义,它是P(D∩E)/P(E)。分子用乘法规则写成P(E|D)P(D),便得到
P(D|E)=P(E|D)P(D)/P(E)。
这就是贝叶斯公式。在本例中,将刚才求出的告警总概率代入,得到
P(D|E)=0.99π/0.99π+0.01(1−π)。
公式并没有赋予我们凭空倒转条件的权利。它先还原“故障且告警”的共同部分,再以“全部告警”为新范围。分母P(E)必须大于0;若模型把E判为不可能,却真的观察到E,当前定义给不出这个条件概率,需要检查模型或记录。2
π=0.01时,分子为0.0099,分母为0.0099+0.0099=0.0198,所以后验为1/2。换回台账,就是99/(99+99)。告警确实把判断从1%提高到50%,但没有提高到99%。

图2:分子都是99,分母却在回答问题之前就选定了。上图问故障中有多少告警,下图问告警中有多少故障。
这个区别也解释了“准确率很高”为什么不能直接回答告警是否可信。总准确率、故障组内的检出比例、告警组内的故障比例,各自使用不同的范围。百分号前的数再漂亮,也不能替换范围。
三个名字,仍是一份联合分布
在证据E到来之前,P(D)叫先验概率;看到E之后,P(D|E)叫后验概率。这里“之前”“之后”是相对于这条证据而言,已有的背景信息保持相同。
把已观察到的E固定下来,分别查看P(E|D)与P(E|Dᶜ),是在比较这条证据在两种假设下有多容易出现,这些量叫似然。似然不是“这个假设为真的概率”:0.99的条件仍然是D,并没有变成我们要求的P(D|E)。
也不应把两项似然直接归一化成0.99/(0.99+0.01)。那样相当于额外用了故障与无故障各占一半的先验。本例两组原来相差99倍,必须先各自乘上原有权重。
先验、似然、后验不是三套彼此竞争的信念。给定模型后,四种联合情况D∩E、D∩Eᶜ、Dᶜ∩E、Dᶜ∩Eᶜ的概率,已经确定了它们。我们只是对同一份联合分布重新分组、相除;观察告警没有使原本正常的机器变成故障机器。
若换成较高故障比例台账,π=0.1,故障组内与无故障组内的告警概率仍是0.99和0.01。这时
P(D|E)=0.099/(0.099+0.009)=11/12,约91.67%。
10000个窗口里,真告警990个、误报90个,正好给出990/1080。同一性能的检测器,在不同故障比例的环境里,告警可信程度可以不同。这是换了适用人群或环境的模型,不能在看到结果后随意挑一个喜欢的先验。
用赔率,看见证据推了多大一把
概率1/2也可以写成故障与无故障之比1∶1。一般地,把P(D)/P(Dᶜ)叫作故障的赔率。它不是概率:概率最多为1,赔率却可以大于1。
在两个后验概率都为正时,将它们相除:
P(D|E)/P(Dᶜ|E)
=P(E|D)/P(E|Dᶜ)×P(D)/P(Dᶜ)。
两边共有的P(E)约掉了。右侧第一项叫似然比,本例为0.99/0.01=99。换句话说,告警使故障相对无故障的赔率乘99。
低故障环境的先验赔率为1∶99,乘99后是1∶1,对应概率1/2。较高故障环境的先验赔率为1∶9,更新后是11∶1,对应概率11/12。一般赔率为r时,概率是r/(1+r),不能把赔率99误读成99%。
证据也能让判断降低。若观察到未告警Eᶜ,在故障组中它的概率是0.01,在无故障组中是0.99,似然比便是1/99。原来1∶99的赔率变为1∶9801,对应故障概率1/9802。图1也能直接读出它:未告警的9802个窗口中,只有1个有故障。“没有告警”不等于绝无故障,它只是另一种需要按两种来源计算的证据。
这里能顺利相除,是因为相关项都大于0。若模型给D的先验为0,D的联合部分也为0;只要证据概率为正,更新后仍为0。先验为1时同理仍为1。此时不必硬算“无穷赔率”;有些零概率分组内的条件概率本来就未定义。把可能性写成绝对的0或1,是很强的模型承诺。
同一声告警,不能反复加码
假设我们刚把故障概率从1%更新为50%,监控软件又弹出一条内容相同的通知。若它只是同一条告警的副本,能不能再乘一次99,得到99%?
不能。原事件还是E,收到副本没有要求窗口满足新的检测条件。集合上E∩E=E,所以P(D|E∩E)=P(D|E)=1/2。
这不是说重复观察永远没用,而是要分清“同一结果被复制”与“又做了一次检测”。即使确有两台检测器,也还不能仅凭数量就相乘。
设E₁、E₂分别表示两台检测器告警。若在已知有故障的组内,第二台告警概率不因第一台的结果而改变;在已知无故障的组内也如此,我们才有本题需要的两项条件独立:
P(E₁∩E₂|D)=P(E₁|D)P(E₂|D),
P(E₁∩E₂|Dᶜ)=P(E₁|Dᶜ)P(E₂|Dᶜ)。
普通独立说P(A∩B)=P(A)P(B);条件独立则在指定条件的范围内使用同样的乘法关系。3 两台检测器在全体窗口中的独立,与在两组中分别独立,是不同要求。只说“它们独立”不够,必须说清在哪个条件下。

图3:两条路径从相同的先验出发。下方路径额外采用了明确的条件独立假设;两台设备或两条通知本身不能保证它。
条件独立是一项需要支持的假设,不能从“设备外壳不同”推出。两台设备可能共享传感器、电源或同一份输入;即使没有故障,一次共同干扰也可能让它们一起误报。反过来,按故障状态分组后可以独立的检测器,在混合人群中仍可能一起告警得较多,因为两者都受故障比例影响。检查条件时,分组本身不可省略。
现在另建一个满足上述条件的双检测器模型,两台各自的检出概率均为0.99,误报概率均为0.01。两台都告警,在故障组中的概率为0.99²,在无故障组中为0.01²。于是低故障先验下
P(D|E₁∩E₂)=(0.01×0.99²)/(0.01×0.99²+0.99×0.01²)
=0.009801/(0.009801+0.000099)=99/100。
第二次确实把1∶1的赔率推到99∶1。原来的单检测台账并未提供这些双检测记录;这里的99%是新增假设下的推论,不是新发现的实测性能。
新证据,要扣除旧证据已经说过的话
不作条件独立假设时,顺序更新仍然可以进行。将第一次告警后的模型作为当前范围,用同样的推导,在相关条件概率有定义、分母非零时,第二次应乘的似然比是
P(E₂|D,E₁)/P(E₂|Dᶜ,E₁)。
逗号表示同时给定这些条件。关键是多出来的E₁:已经见过第一条后,第二条在两组中各有多容易出现?若E₂只是E₁的副本,上下两项都是1,比值为1;若满足刚才的条件独立,它们才分别退回0.99和0.01。
设想AI系统整理故障日志:三个服务都转发了同一个底层异常,或几个分类器依据高度重叠的输入作判断。如果把这些输出一律当作可直接相乘的新证据,算出的确信程度就可能虚高。应先查证据来源、共享环节和组内依赖,再决定联合概率怎样建模。这里是在说明风险机制,并非声称某个实际系统已经发生过这样的错误。
π、0.99、0.01也不是公式赠送的真理。固定台账上的均匀抽样使这些比例成为精确概率;用于未来窗口,则需要采样、标签、设备机制与适用环境的支持。贝叶斯公式保证的是模型内部计算的一致性,不能自动纠正模型的输入。
得到后验还没有自动决定下一步行动。故障概率为50%时,是立即停机,还是安排复检,要看漏掉故障和无故停机各有什么代价。概率回答的是现有证据支持到什么程度;怎样行动还需要目标与后果。本章先把前一个问题算对,避免在错换分母或重复证据之上作选择。
这章最值得保留的习惯,是在每次更新前问三件事:原来的判断针对什么范围,新消息在各个假设下多常见,它有多少内容已被旧消息包含。下一章会转向另一种概括:把许多可能结果压缩成平均水平,以及围绕平均水平的波动。
顺手试一下
题目1: 仍用检出概率0.99、误报概率0.01的检测器,若先验故障概率为1/1000,一次告警后的故障概率是多少?请同时写出后验赔率。为什么没有达到1/2?
**提示:**分别计算故障且告警、无故障且告警的概率,或从先验赔率1∶999开始。
**参考答案:**两项联合概率分别为0.00099、0.00999,后验为0.00099/0.01098=11/122,约9.02%。赔率由1∶999乘99,成为11∶111。故障原本更罕见,误报来源仍比真告警多;同样的似然比并不意味着同样的后验概率。
题目2: 先验仍为0.01。第一次告警后,第二条通知在给定D、E₁时出现的概率为0.8,在给定Dᶜ、E₁时为0.2。两条都出现后的故障概率是多少?若第二条改为自动复制第一条,答案又是多少?
**提示:**第一次后的赔率为1∶1,第二次要使用已经给定E₁的似然比。
**参考答案:**新增似然比为0.8/0.2=4,后验赔率为4∶1,概率为4/5。也可计算0.0099×0.8与0.0099×0.2,再将前者除以两者之和。若为自动复制,两项条件概率都等于1,似然比为1,后验仍为1/2;不能把第一台检测器的99重复使用。
参考与延伸
1 Hossein Pishro-Nik,《Introduction to Probability, Statistics, and Random Processes》,1.4.2 Law of Total Probability。核对事件按不相交完备划分求和的规则。
2 同书,1.4.3 Bayes' Rule。核对从条件概率和乘法规则导出贝叶斯公式,以及证据概率非零的要求。
3 加州大学伯克利分校CS188在线教材,《Introduction to Artificial Intelligence》,6.1 Probability Rundown。核对普通独立、条件独立与链式乘法规则的区别。
本文告警数据、双检测器模型、练习与图解均为原创教学构造,不是真实系统评测;以上资料用于核对概念。
作者:Jiancheng Wang · 数学之美(独立原创)