(本文中打斜体的内容与理解正文无关,但感兴趣的话可以自查)
18世纪,有一位专业的神职人员,业余的数学家,也许是坐观天象,偶得天启,洞悉了所谓命运背后的数学规律。他不仅为后世留下了诸如“先验”“似然”“后验”之类的难懂的话,也为人类同时带来了希望和折磨(指掉头发)。后人以他之名称呼他的学说——贝叶斯。
你应该学习贝叶斯理论,出于两个理由:
(1)近年来频率统计学派的绝学p值被逐渐批判为学术界的万恶之源,专家们开始呼吁使用基于贝叶斯的统计检验
(2)一些人工智能与机器学习的内容涉及到贝叶斯理论
一个故事
以下是教科书上在介绍贝叶斯时很爱用的一个经典案例,我在这里用自己的语言重述:
世间有一种很可怕的病,不治之症。某大师不知怎么弄来了一枚神奇硬币:如果在一个得了这个病的病人面前丢这个神奇硬币,有90%的可能性会正面朝上。
一天,一个没事找事的年轻人来找大师,想看看自己是不是得了这个绝症。大师把这硬币一丢,随后一惊:硬币正面朝上了,噫吁嚱,天数也。大师略作犹豫,再次把硬币一抛,又正面朝上。
正当年轻人绝望而大哭之际,一名叫贝叶斯(简称贝爷)的男人正巧经过。他好心肠地问大师咋回事,大师把事情一五一十地说出来后,只闻贝爷突然仰天长笑“哈哈哈哈哈”。
大师怒骂贝爷:“还以为你是个好人,想不到竟然如此绝情,嗤笑一个将死之人!”
贝爷反唇相讥:“我笑你你自诩大师,却看不透。还在此妄称天数。”
大师不快,而年轻人疑惑,但好像又突然生出了点希望:“请指教如何看破?”
贝爷笑道:“小老弟我云游四海,识人百万。在我所见百万人中,仅一人得此绝症而死。也就是说,不考虑任何背景的情况下,得这个病的概率是百万分之一。大师你的硬币90%的击中率*虽然称得上神准,但是和这个百万分之一的得病率相比较不过沧海一粟。 两种概率相互较量后,还是百万分之一的得病率占上风,懂?”
贝爷说完后就走了,留下大师和年轻人懵逼。不知道你有没有看明白这背后的理由,贝叶斯之所以反直觉:是因为我们在理解这个世界的时候,好像本能地会忽略事件的所谓先验概率。当然,这也是因为我们很难了解到一件事的先验概率,比如这里所说的百万分之一的得病率。
*此处的击中率即:如果在一个得了这个病的病人面前丢这个神奇硬币,有90%的可能性会正面朝上
一句公式
现在让我们接触一下贝叶斯的核心数学,开局无非一句关于几种概率的公式
我们来解释一下这个公式(按图1)的意思,先说明一些字母的含义,D表示我们观察到的数据(或者说结果),θ表示我们所关心的参数值(或者说真相?)。对应到我们之前的故事,则D=1表示“硬币朝上”,θ=1表示生病,θ=0表示没有生病,且θ要么是0要么是1(要么生病要么没生病)。因此上述公式的意思就是:
p(θ=1|D=1)「当硬币朝上时,某人确实得了此病的概率」= p(D|θ=1)「当某人得了此病时,硬币朝上的概率」 ✖️p(θ=1)「不计任何条件下,得此病的概率」 ➗ p(D=1)「不计任何条件下,硬币朝上的概率」
(吐槽一句:简直是绕口令,恐怕初学者得多看几遍)
为了更好地以刚刚的故事来理解这个公式,我们将具体的数值代入:
已知,p(D=1|θ=1)「当某人得了此病时,硬币朝上的概率」= 0.9,p(θ=1)「不计任何条件下,得此病的概率」= 1/1000000,
我们现在的目标是求p(θ=1|D=1)「当硬币朝上时,某人确实得了此病的概率」,然而你会发现,根据公式,我们还需要知道p(D=1)「不计任何条件下,硬币朝上的概率」(而要命的问题恰就在这)。
假如说我们开了天眼,晓得「当某人其实没得此病时,硬币朝上的概率」是0.05(即所谓误报率*),即p(D=1|θ=0) = 0.05,那么我们倒是可以算出:
p(D=1) = p(D=1|θ=1)✖️p(θ=1) + p(D=1|θ=0)✖️p(θ=0)
=0.9✖️1/1000000 + 0.05 ✖️(1 - 1/1000000)
= 0.05000085
因此,回到我们的贝叶斯公式并代入已知的数值,则可算出:
p(θ=1|D=1)= p(D=1|θ=1) ✖️p(θ=1)➗p(D=1)
= 0.9✖️1/1000000 ➗0.05000085
≈ 0.000018
用中文重新描述一下p(θ=1|D=1),即「当硬币朝上时,此人得病」的概率仅有0.000018,基本上我们可以说硬币朝上根本不能说明此人得病!现在你应该理解了前面故事中贝爷为何仰天长笑了。
但是先不要笑得太早,我们刚刚开天眼得知「当某人其实没得此病时,硬币朝上的概率」是0.05(误报率),但如果误报率其实只有0.0001又会如何呢?
你可以重新计算下:
p(D=1) = 0.9✖️1/1000000 + 0.0001 ✖️(1 - 1/1000000)≈ 0.0001
p(θ=1|D=1)= 0.9✖️1/1000000 ➗0.0001 ≈ 0.009
虽然在击中率为0.09,误报率为0.0001的情况下,「当硬币朝上时,此人得病」的概率是0.009依然很小,但对比误报率为0.05的时候,已经提升了不少。如果击中率更高,误报率更低,这个值可以更大。极端情况是,当击中率是100%,误报率是0%的时候,我们会有p(θ=1|D=1)= 1/1000000 ➗1/1000000 = 1。显然,只有此时的硬币是完美的神奇硬币,当一个人生病时,它一定正面朝上,而当它正面朝上时,一个人必然生了这种病。
从这个例子,我想说明的是,当我们看到一个现象「即硬币朝上」发生时,想要具体了解在这个背景下,这件事所对应的一个事实「即生病」的可能性,即所谓的后验概率,我们其实需要知道另外三个概率:(1)先验概率,即无视背景前提,发生这个事实本身的可能性(2)似然概率,即当这个事实确实发生时,我们能观察到现象的可能性(3)证据概率,即无视背景前提,发生这个现象的可能性。
如果我们就到此止步,至少你从中了解到了一件事:当我们看到一个事件想要推断它背后对应一件事实的可能性时,先不要着急下结论,好好想想这个事实发生的可能性,这个事件发生的可能性,以及这个事实确实发生时又恰好发生这个事件的可能性有多大。虽然这极其麻烦,却正是所谓的理性思维。
一类算法
如果你坚持看完了上面的一点数学,你应该会和笔者一样想骂街。这贝叶斯公式虽然看起来有理有据,但也实在太多开挂的地方了。为了知道这所谓的后验概率,我们首先还得知道另外三个概率,不但计算复杂,而且有时先验概率和证据概率得开天眼才能知道*。
** 当事实θ的取值有多种甚至是无限多种(即θ是连续而非离散值)时,证据概率p(D)本身有可能是极其难求的(需要用到微积分)。另外,当事实涉及到多个参数时(比如人类的身高是平均值μ=1.7m,标准差sd=0.1的正态分布,我乱说的)
理解了贝叶斯的复杂性,我们就不难理解贝叶斯为什么长期以来被视为一种“邪教”了。而这门邪教之所以能够仍然能够立足,一类被称之为MCMC(Markov chain Monte Carlo,马尔科夫链蒙特卡洛)的算法需要得到很大表彰。MCMC的诞生是完全基于实用主义哲学的(我猜),它针对的应用是我们人类十分常做的一件事情——基于发生的事件,或者说观测到的数据,推理背后的事实或者说数学模型(的参数)。
这部分的内容因为比较长,所以有兴趣的读者请转移到https://www.jianshu.com/p/d976d4fa548e
如果你能阅读英文内容,对python编程有所了解,建议直接科学上网看看这篇博客https://twiecki.io/blog/2015/11/10/mcmc-sampling/
总结:贝叶斯到底是干嘛
如果你看不下去前面的内容,这里有一些可以带回家的信息(take-home message)。
贝叶斯统计通常应用在在已有先验信念的基础上,根据已有的数据,通过后验概率不断修正先验信念。因此,贝叶斯理论很自然地可以运用到数学模型拟合、分析模型的可信度以及机器学习上。
MCMC算法利用了贝叶斯公式,在只求先验概率和似然概率的情况下,可以近似地得到参数的后验分布。
如果你对上述信息理解还存在困难,那么至少你可以记得,如果有一枚有90%击中率的神奇硬币想要宣告你的死亡,先验概率还有可能救你一命。