抛硬币连续出了10次正面?窝要验币!“赌神”贝叶斯告诉你这币还真有问题

500

如果你已经连续抛出了10次正面,那么下一次最有可能抛出的结果是什么?贝叶斯定理给出了答案,这不仅适用于抛硬币,更普遍适用于科学探索。图片来源:Wikipedia

先问你一个问题:

假如我抛了一枚硬币10次,发现每次都是正面朝上。如果我再抛一次,出现正面的概率是多少?

我(译者注:作者)经常拿这个问题去问学生,无论是中学生还是大学生,甚至去问他们的老师。受过数学训练的学生(通常也包括他们的老师)给出的答案几乎如出一辙。他们会说,下一次抛出正面的概率绝对是 1/2。他们对此往往非常笃定,通常还会搬出那套熟悉的理论,告诉我“硬币是没有记忆的”,或者类似这样的话。

但如果你去问一个(没受过多少数学训练的)赌徒,他们可能会说,既然这枚硬币都已经连续出了那么多次正面,风水轮流转,下次怎么也该轮到反面了吧!所以,出现正面的概率肯定小于 1/2。

但是,在我看来(没错,这确实常常引发相当激烈的争论),这两种答案都错了!事实上,下一次抛掷出正面的概率非常接近于 1。你没看错,就是 1。你可能会问:“怎么会这样?难道我以前学的数学都是错的吗?”你先别急,咱们理理思路,如果要让这枚硬币在下一次抛掷时出正面的概率是 1/2,前提是它必须是一枚“绝对公平”的硬币(也就是每次抛掷出现正反面的可能性完全相等)。可是,我从头到尾都没说过这是一枚公平的硬币呀!那仅仅是你自己想当然的假设罢了。

你看,明明摆在眼前的是压倒性的反面证据,你却依然做出了硬币是绝对公平的假设。仔细想想,如果一枚硬币连续十次抛出正面,那它十有八九不是什么正经硬币。事实上,如果这枚硬币真的质地均匀,发生这种情况的概率只有 0.510,也就是 1/1024 ,接近于千分之一的概率。这就意味着,你需要把“连抛十次”作为一个回合,足足重复上一千个回合——也就是总共抛掷 10,000 次,我估摸着这至少得连续抛上三个小时,才能有较大的概率见证一次“连续十次正面”的奇迹。

估计绝大多数人扔不到一半就感觉手酸,早早放弃了。因此,既然我们已经亲眼看到了硬币连续出现了十次正面,一个非常合理的推断就是:这枚硬币肯定不对劲,它的内部可能存在某种偏向性,导致它更容易掷出正面。想通了这一点,情况就很明朗了,下一次抛出正面的概率绝对比 1/2 要高得多。

但是新的问题又来了,到底会高出多少呢?

我在这里所描述的,其实正是科学研究的运作方式。假设我们想要研究某个系统,我们会先进行一系列的观察,并从中推断其内在可能的机制。这个过程需要我们提出假设,然后用数据去检验这些假设。一旦确立了假设,我们就可以开始做预测。但这必须在收集到数据之后才能进行,而且我们必须非常谨慎,不能在一开始就对系统做出不切实际的假设。

这个道理不仅适用于我们的这枚硬币,还同样适用于天气预报、气候变化预测,以及应对流行病传播的决策。它也适用于我们生活中的许多其他方面,无论是司法系统的运转,还是我们制定政策(甚至进行社会活动)的方式。

幸运的是,我们有一个非常强大的工具可以提供帮助,那就是贝叶斯推断(Bayesian inference)。如今,人工智能、机器学习以及机器的决策能力正在飞速发展,而贝叶斯推断正是这一切的核心。

正面,贝叶斯赢!

老师和学生有时会批评我的第一个问题过于模糊。题干中没有提供足够的信息来得出答案。确实,这肯定无法作为一道合格的考题,至少在数学考试中是不合格的。从某种意义上说,这种批评是对的。但在现实中,我们经常会面临类似的情境,不得不依靠做出合理的假设来处理问题。因此,为了让这个问题更加严谨,我将其重新表述如下:

我有一个装了许多硬币的袋子。其中大部分是质地均匀的普通硬币,抛出正面或反面的概率均为 1/2。然而,有比例为 p(假设 p 的值很小)的硬币是特殊的,它们两面都是正面。如果抛掷这种硬币,出现正面的概率就是 1(这里假设硬币不会立在地面上)。我从这个袋子里随机摸出一枚硬币,连抛 10 次,结果每次都是正面朝上。那么,下一次抛掷它依然出现正面的概率是多少?

500

气象学依赖于贝叶斯推断。图片来源:Pixabay

在这个更为严谨的情境下,我们几乎可以断定,如果硬币每次都掷出正面,那它极大概率是一枚存在偏向的硬币(即两面都是正面的硬币)。在这种情况下,下一次抛掷肯定还是正面。运用贝叶斯推断这一奇妙的方法,我们可以将这一推论表述得更加精确,甚至还能看出它与比例 p 的大小有着怎样的关系。

要做到这一点,我们需要引入事件的条件概率(conditional probability)这一概念。在前面设定的游戏中,存在几种可能发生的事件。其一便是“抽中一枚存在偏向的硬币”这一事件。我们将该事件记为 A,并用 P(A) 来表示其发生的概率。将“抽中一枚均匀硬币”的事件记为 B,并用 P(B) 表示该事件发生的概率。那么:

500

我们通常将这种概率称为先验信息(prior information)。只有在对这枚硬币一无所知的情况下,P (A) = p 这一等式才成立。这是在获取任何实测数据之前,硬币存在偏向的概率。

一旦开始抛掷硬币,我们就会对它有更多的了解,并随之修正先验信息,从而得出关于该系统的所谓后验知识(a-posteriori knowledge)。作为人类,我们的大脑时刻都在经历着这样的过程:不断收集关于周遭环境的感官信息,并据此在脑海中构建出对当前状况的认知。这也是机器进行学习并更新其对某个系统已有知识的过程。对于这类机器而言,实现这一过程的核心工具正是贝叶斯分析(Bayesian analysis)。接下来,就让我们看看它是如何发挥作用的。

假设我们有两个事件 A 和 B。条件概率 P(A|B) 指的是在已知事件 B 已经发生的前提下,事件 A 发生的概率。

举个例子,假设事件 A 为“连续抛掷 10 次硬币,每次都是正面朝上”,事件 B 为“我们抽中了一枚两面都是正面的硬币”,而事件 C 为“我们抽中了一枚质地均匀的普通硬币”。稍作思考就会发现:

500

这是因为那枚硬币两面都是正面,所以它每次抛掷必然都会出现正面。另外,正如我们在前面已经计算过的,我们还可以得出:

500

你可以明显看出,P(A|B) 要比P(A|C) 大得多。

贝叶斯是怎么说的

在小学二年级,我们就学过一个关于条件概率的通用公式。如果用 P(A and B) 来表示事件 A 和事件 B 同时发生的概率,那么公式就是:

500

这个公式可能不是那么一目了然——如果想了解它为什么成立,可以去阅读相关的推导文章。

但是,P(A and B) 与 P(B and A) 显然是同一回事,根据上述公式,它同样等于P(B)P(A|B)。这也就意味着:

500

由中间的等式可得:

500

这个结果就是著名的“贝叶斯定理”(Bayes' theorem)。它由托马斯·贝叶斯牧师(Revd. Thomas Bayes)提出,并由英国皇家学会(Royal Society)以《论有关机遇问题的求解》(An Essay towards solving a Problem in the Doctrine of Chances)为题于 1763 年正式发表。

500

托马斯·贝叶斯(1701-1761)

贝叶斯并不算是一位职业数学家,尽管他对哲学和统计学有着浓厚的兴趣。事实上,他是一名神职人员。但是,贝叶斯定理却是整个数学领域最重要的成果之一!它不仅在概率论和统计学中居于核心地位,在卫星追踪(或几乎任何其他目标的追踪)、考古学、司法系统、气象学,甚至在大名鼎鼎(让人又爱又恨)的蒙提霍尔问题(即著名的“三门问题”)等截然不同的领域中,都有着数不胜数的应用。它更是构建整个机器学习领域的基石。对于区区一个定理来说,这成就可以说相当了不起了。

我们可以用通俗的语言来解释这个定理为何如此重要。假设事件 B 是我们真正感兴趣的研究对象,而事件 A 是我们为了进一步了解 B 所进行的实验。P(B) 就是我们在进行实验之前对事件 B 掌握的“先验知识”;而 P(B|A) 则是实验之后我们对 B 获得的“后验知识”。贝叶斯定理为我们提供了一条从先验知识通往后验知识的桥梁。我们成功地从数据中推断出了背后的真相,这正是“贝叶斯推断”一词的由来。当我们想要弄清楚一个无法直接测量的系统内部正在发生什么,并且必须依靠间接的测量结果来进行推论时,这种思想在科学研究的各个方面都会被一遍又一遍地反复运用。

硬币存在偏向的概率有多大?

作为例子,现在让我们把这个定理应用到最初的问题上,在不直接查看硬币的情况下,推断这枚硬币是否两面都是正面。我们这里重申一下设定,事件 A 为“连续掷出 10 次正面”,事件 B 为“我们抽中了一枚两面都是正面的硬币”。

我们已经知道 P(A|B)=1,并且 P(B)=p。因此,为了计算出 P(B|A)(也就是在已知连续掷出 10 次正面的前提下,这枚硬币两面都是正面的概率),我们需要先算出 P(A)。P(A) 代表的是:从袋子里随机摸出一枚硬币,抛掷后连续出现 10 次正面的总概率。这里需要考虑两种互斥的情况。第一种情况是,我们抽中了一枚两面都是正面的硬币,然后掷出了十次正面。这种情况发生的概率,其实就等于抽中这枚问题硬币的概率 P(B)(因为一旦抽中它,掷出十次正面就是板上钉钉的事了)。第二种情况是,我们抽中了一枚质地均匀的普通硬币(我们将此事件记为 C),然后掷出了十次正面。在这种情况下,掷出十次正面的概率就是两个单独概率的乘积:P(A|C)P(C)。因此,掷出十次正面的总概率 P(A),就是这两种互斥情况的概率之和:

500

我们刚才已经算出了这里所有的项:P(B)=p,P(A|C) = 1 / 1024,以及 P(C) = 1-p。因此:

500

现在,我们可以完成最后的计算,得出在“连续掷出 10 次正面”的前提下,这枚硬币两面都是正面的概率为:

500

为了让你对这个概率的具体大小有个直观感受,假设我们有一个装了 100 枚硬币的袋子,其中只有一枚是两面全为正面的问题硬币。那么,p = 1 / 100。在这种情况下,已知硬币连续掷出 10 次正面,它是问题硬币的概率就变成了:

500

也就是说,这枚硬币存在偏向的概率高达 91%。对于大多数人来说,这个可能性已经相当有把握了。所以可以看到,在贝叶斯定理的运用下,原本仅有 1% 的“硬币存在偏向”的先验概率被更新为了 91%。

再次掷出正面的概率是多少?

现在,我们终于可以回过头来回答最初提出的那个问题了。在已经连续掷出 10 次正面的前提下,下一次掷出正面的概率究竟是多少?

如果这是一枚问题硬币(即事件 B),那么下一次掷出正面的概率必然是 1。因此,基于现有的观察数据(连出 10 次正面),下一次掷出正面且硬币确实存在偏向的概率为:

500

如果这枚硬币是质地均匀的普通硬币(即事件 C),那么下一次掷出正面的概率就是 1/2。因此,基于现有数据,下一次掷出正面且硬币毫无偏向的概率为:

500

在第 11 次抛掷这枚硬币时,再次出现正面的总概率,就是上述这两个互斥事件概率的总和:

500

我们之前已经算出了 P(B|A) 的值,而 P(C|A) 简单来说就是 1- P(B|A)。因此,下一次再次掷出正面的概率就变成了:

500

如果 p = 1 / 100,那么P(再次掷出正面) = 0.955,约为96%。对于大多数实际情况来说,这个概率已经足够接近于 1 了。

在下图中,我们将 P(再次掷出正面) 绘制为了 p 的函数。你可以清楚地看到,只有当 p 小到极其微弱的程度时,P(再次掷出正面) 才会与 1 产生明显的差距。因此,我们完全有底气说,最初那个问题的答案就是,下一次出现正面的概率非常接近 1,即便我们其实并不知道 p 的确切数值。

500

概率 P(再次掷出正面) 随 p 变化的曲线图。

大功告成……

……但是等等,有没有一种可能,我对你隐瞒了真实的数据。这种情况下我们该怎么办?它又跟天气预报甚至机器学习有什么千丝万缕的联系?欲知后事如何,且听下文分解。

背面,贝叶斯输!

在现实中,科学家们往往只能基于不完美的数据来做出预测,天气预报就是一个典型的例子。接下来,本文的后半部分将为你揭秘一项专为解决此问题而生的技术——“数据同化”(data assimilation)。它能够在新信息的启发下更新初始预测,并充分考虑到一个现实情况:无论是观测数据还是最初的预测,其实都是不完美的。

在前面的章节中,我们学习了如何基于观测数据,运用贝叶斯定理来调整对某个事件发生概率的预测。我们举的例子是,一枚硬币连续十次掷出了正面。面对这样的数据,这枚硬币十有八九存在问题,因此第十一次掷出正面的概率,理应高于一枚普通均匀硬币那 50% 的概率。贝叶斯定理从数学上证实了我们的直觉。

然而,对于我们所观察到的现象,其实还存在另一种解释。硬币绝对公平没有问题,真正出了问题的,是数据本身。例如,我可能在记录正反面的时候刚好摘下了眼镜。这下我根本两眼一抹黑分不清哪面是哪面,为了图省事儿,干脆把每次抛掷的结果都记成了正面。又或者,我明明看清了正反面,但是由于电脑系统出了故障,所有的结果全被强行录入成了正面。

这些正是所谓仪器误差(instrumentation error)的例子。在记录数据时,这类误差其实并不罕见(尽管在现实中往往不会像上述例子那么极端)。要知道,没有任何数据记录设备是绝对完美的,它们多多少少都会出现一些偏差。

还有一种可能性是,我在记录数据时故意对你撒了谎。哪怕硬币掷出了好几次反面,我仍然向你伪装出它存在偏向的假象。在刑事案件的取证中,这种情况屡见不鲜,人们往往必须在真假难辨的证据和数据面前,判断到底该不该相信某位证人的证言。

于是,我们不得不面对这样一个问题:如果摆在面前的数据不完全可靠,那么对于我们正在研究的系统(比如这枚硬币到底是不是公平的),我们还能做出什么有意义的推断吗?

贝叶斯来救场

既然数据可能不太靠谱,要想准确估计系统的真实状态,我们就需要有办法来衡量这些数据的可靠性。对于测量仪器来说,温度计就是个很好的例子。假设我们要测量某个实际温度 T,温度计每次给出的读数可能会有些许波动,但如果这些读数的平均值恰好等于 T,我们就称这支温度计是“无偏的”(unbiased)。而这些读数的方差(variance)则反映了它们在平均值上下分散的程度,这就为我们提供了一把评估测量结果到底有多靠谱的标尺。如果方差很大,读数飘忽不定,我们在心里对这组数据的采信度就会打个折扣;反之,如果方差很小,我们就会更加信任这些数据。通过这种方式,当面对一份可能存在误差的测量数据时,我们就能精确权衡出究竟需要对原有的预测做出多大程度的修正,从而完成对某个事件(先验)预测的更新。

这个过程,通常就被称为“数据同化”(data assimilation)。数据同化的绝妙之处在于,它能将“不太靠谱的预测”与“同样不太靠谱的数据”结合起来,最终孕育出一个比这两者都要准确得多的全新预测!这简直就像变魔术一样,我们几乎是在"无中生有"!

气象学家们使用数据同化技术已有大约二十年之久,这极大地提升了天气预报的可靠性。理论上,要想根据今天的天气状况准确预报明天全球的天气,气象学家在今天就需要对整个大气层的状态进行大约十亿次测量。但在现实中,这根本不可能办到,他们穷尽手段,撑死也就只能完成大约一百万次测量。显然,单靠这点数据,远不足以了解今天的天气状况。

为了解决这个问题,气象学家们想出了一个办法。他们会先拿出昨天对今天所做的天气预报,然后朝着今天实际观测数据的方向,对这份预报进行 “微调”( nudge)。然后用修正后的当日天气预报,做明天的天气预报。

数据同化正是用来完成这种“微调”的,它的基本思路如下:气象学家根据昨天掌握的信息,对今天的天气做出一个(先验)预测。同时,他们还要尽可能多地去测量今天的天气状况,比如看温度计(或者干脆直接瞅瞅窗外)。由于每次测量总会有些微小的差异,所以即便是一支绝对标准的“无偏”温度计,也会给出一系列可能的测量值。

另一方面,基于昨日天气对今日天气所作的预测同样也会存在误差。实际上,是一大堆可能的误差(毕竟我们的天气模型和计算能力还远远谈不上完美),我们将这种预测误差分布的方差记为 Epred。然后,把这份预测与我们目前能收集到的关于今天天气的(有限)观测数据放在一起进行比对。当然,这些观测数据自身也是带有误差的,我们将它的方差记为 Edata。

如果与 Edata 相比,Epred 的值较小,那么原本的预测只会朝着观测数据的方向“微调”一点点。通俗点说,这是因为此时的预测结果比今天实际测量的数据更可靠,所以我们不想过多地被今天的测量数据“带偏”。相反,如果 Epred 比 Edata 大得多,那我们就会在很大程度上采信实测数据。

经过这番“微调”后得到的结果,我们称之为“分析值”,记为 A。这个分析值巧妙地兼顾了原始预测和实测数据,是对今天天气状况做出的最佳估计。拿着这个分析值,天气预报员就可以去预测接下来几天的天气了。

500

数据同化过程示意图。粉色椭圆代表预测结果及其可能存在的误差范围,橙色椭圆则代表观测数据及其可能存在的误差范围。数据同化将原始预测朝着观测数据的方向进行了“微调”,使得最终结果既落入原始预测的误差椭圆之内,又同时落在了观测数据的误差椭圆之中。

这种将观测数据同化到天气预测中的想法(在专业方面衍生出了3 DVAR(三维变分)、4 DVAR(四维变分)以及集合卡尔曼滤波(Ensemble Kalman Filtering)等具体方法),正是英国气象局(Met Office)、欧洲中期天气预报中心(ECMWF)以及全球各地气象中心每天为我们准确预报天气的关键。

500

气象学中数据同化过程示意图。

在这个案例,以及其他数据同化的应用场景里,贝叶斯定理扮演的角色就是,它能精准地告诉我们,“微调”的幅度到底需要多大。它在新数据的启发下不断更新预测,并聪明地兼顾到了一个现实情况,也就是,无论是观测数据还是原始预测,都是不完美的。我们可以利用它来编写出一套算法,从而找到那个最佳预测。

极其成功的‘卡尔曼滤波’技术也运用了同样的理念,即系统性地将系统已有认知与源源不断的数据流结合起来。该技术最初是为了追踪卫星而发明的,如今却已普及到了千家万户,广泛应用于包括飞机导航系统和你口袋里的智能手机在内的无数设备中。这种想法还进一步被应用在了现代机器学习领域,其中复杂的神经网络正是在海量(且可能并不完全可靠的)数据的“投喂”下不断接受训练,从而学会去执行各种五花八门的任务。

可以毫不夸张地说,我们如今的现代世界,正是建立在贝叶斯定理及其无数神奇应用的基础之上!

作者:Chris Budd

翻译:LogicMoriaty

审校:virens

原文链接:Heads, Bayes wins! & Tails, Bayes loses!

站务

全部专栏