奎克的藏经阁 · MinerU 解析内容

人工智能时代:破解人机共存密码(套装共10册)

3314 个 PDF 物理页 · 本页显示文件第 3141–3150 页

PDF 物理页索引 3140

文件中的第 3141 页 · 印刷页码:未识别

你醒来时浑身冷汗。放在你大腿上的,是一本名为《终极算法》的书。甩掉噩梦之后,你接着从中断的地方往下读。

统治世界的定理

通往最优学习的路径始于一个公式,这一点许多人都听说过:贝叶斯定理。但在这里,我们会以全新的眼光来看待这个公式,而且会意识到,它的力量要比你根据其日常用途猜测的要大得多。本质上,贝叶斯定理不仅仅是一个简单的规则,当你收到新的论据时,它用来改变你对某个假设的信任度:如果论据和假设一致,假设成立的概率上升,反之则下降。例如,如果你查出艾滋病病毒呈阳性,你感染艾滋病的可能性上升。当你获得许多条论据,例如,多重测试的结果时,事情就会变得更有意思。为了将所有论据结合起来,又免遭组合爆炸之苦,我们就得把猜想简化。当我们同时考虑多个假设,例如,一个病人所有不同、可能的诊断时,事情也会变得更有意思。在合理时期内,根据病人的症状来计算每种疾病发生的可能性需要很大的智慧。一旦知道如何来完成所有这些事情,我们就做好了学习贝叶斯方法的准备。对于贝叶斯学派来说,学习“仅仅是”贝叶斯定理的另外一个运用,将所有模型当作假设,将数据作为论据:随着你看到的数据越来越多,有些模型会变得越来越有可能性,而有些则相反,直到理想的模型渐渐突出,成为最终的胜者。贝叶斯学派已经发明出非常灵活的模型。下面我们就开始来了解它们。

托马斯·贝叶斯是一位18世纪的英国牧师,当时他并没有发觉自己会成为新宗教的中心。你可能很想问怎么会这样,但注意到这也发生在耶稣身上后,就不会这样问了:我们知道,基督教是由圣·保罗开创的,虽然耶稣把自己看作犹太教的顶峰。同样,我们知道贝叶斯主义是由皮埃尔–西蒙·拉普拉斯创造的,他是比贝叶斯晚生50年的法国人。贝叶斯是第一个描述用新方法来考虑概率的牧师,但把那些想法变成定理,并以贝叶斯的名字来命名的人,却是拉普拉斯。

PDF 物理页索引 3141

文件中的第 3142 页 · 印刷页码:未识别

拉普拉斯是史上最伟大的数学家之一,关于他,人们知道最多的可能就是他对于牛顿学说决定论的憧憬:

在任何给定的一瞬间,如果有某位智者能够洞悉所有支配自然界的力和组成自然界的物体的相互位置,并且这位智者的智慧足以对这些数据进行分析,他就能用一个相同的公式来概括宇宙中最大的天体和最小的原子的运动。对这样的智者来说,没有什么是不确定的,未来同过去一样都历历在目。

这看起来有点讽刺的意味,因为拉普拉斯也是概率论的创始人之一,而他认为概率论仅仅是种可简化为计算的常识。他对于概率的探索本质上是对于休谟问题的专注。例如,我们怎么知道明天太阳会升起?太阳每天都会升起,今天也是,但没有什么能够保证它会继续升起。拉普拉斯的回答有两个部分。第一部分是我们当今所谓的“无差别原则”,或者“理由不充分原则”。有一天我们醒来,比如这时正是时间的起点,对于拉普拉斯来说则是大概5000年前,经历一个美妙的下午之后,我们看到太阳下山了。它还会出现吗?我们还没有看到过日出,所以也就没有特殊理由认为它会或者不会再升起。因此我们应该考虑两种情形出现的可能性相等,认为太阳还会再升起的可能性是一半。但是,拉普拉斯接着推断,如果过去能指导未来的一切,因为太阳每天都会升起,这应该会让我们更加坚信太阳会继续升起。5000年过后,明天的太阳还会升起的概率应该接近1,但不完全是,因为我们不能完全肯定。由这个思维实验,拉普拉斯导出他所谓的“接续法则”,该法则用于估算太阳升起n次后会再次升起的概率,表示为$\scriptstyle ( n + 1 ) \ \prime \ ( \ n + 2 )$ 。当n=0时,这个概率为1/2;随着n增加,概率也会增加,当n接近无穷大时,概率接近1。

PDF 物理页索引 3142

文件中的第 3143 页 · 印刷页码:未识别

这个法则由一个更为通用的原则推导得出。假设你半夜在一个陌生的星球上醒来。虽然你能看到的只是繁星闪烁的天空,你有理由相信太阳会在某个时间点升起,因为多数星球会自传并绕着自己的太阳转。所以你估计相应的概率应该会大于1/2(比如说2/3)。我们将其称为太阳会升起来的“先验概率”,因为这发生在看到任何证据之前。“先验概率”的基础并不是数过去这个星球上太阳升起的次数,因为过去你没有看到;它反映的是对于将要发生的事情,你优先相信的东西,这建立在你掌握的宇宙常识之上。但现在星星开始渐渐暗淡,所以你对于太阳会升起的信心越来越强,这建立于你在地球上生存的经历之上。你的这种信心源自“后验概率”,因为这个概率是在看到一些证据后得出的。天空开始渐渐变亮,后验概率又变得更大了。最终,太阳银色的大圆盘出现在地平线上方,而且可能正如《鲁拜集》的开篇部分描写的那样,套中了“苏丹的塔尖”。除非你产生幻觉,现在太阳是否会升起还不确定。

问题的关键是,随着你看到的证据越来越多,后验概率应该如何演变,答案就在贝叶斯定理里面。我们可以根据因果关系来考虑这个问题。日出使星星渐渐褪去光芒,天空变亮,但后者更能证明黎明的到来,比如因为星星也有可能在深夜时分,因为雾气笼罩而渐渐褪去光芒。所以看到天空变亮和看到星星褪去光芒相比,前者更能预示太阳升起的可能性。在数学符号中,我们说P(日出|天空渐渐发亮),即天空渐渐发亮时日出的条件概率,比P(日出|星星渐渐褪去光芒),即星星褪去光芒时日出的条件概率要大。根据贝叶斯定理,给定某原因时出现某结果的可能性越大,那么出现该结果是该原因引起的概率也会越大:如果P(天空渐渐发亮|日出)比P(星星渐渐褪去光芒|日出)要大,也许是因为有些星球距离太阳足够远,那些星星在日出之后仍会发光,那么P(日出|天空渐渐发亮)也比P(日出|星星渐渐褪去光芒)要大。

然而,情况并非完全如此。如果我们观察一个即使没有该原因也会发生的结果,那么能肯定的是,该原因的证据力不足。贝叶斯通过以下句子概况了这一点:P(原因|结果)随着P(结果),即结果的先验概率(也就是在原因不明的情况下结果出现的概率)的下降而下降。最终,其他条件不变,一个原因是前验的可能性越大,它该成为后验的可能性就越大。综上所述,贝叶斯定理认为:

PDF 物理页索引 3143

文件中的第 3144 页 · 印刷页码:未识别

$$
\begin{array} { r } { P \left( \sqrt { \sharp } \overrightarrow { \mathfrak { H } } \bigotimes \big | \begin{array} { l } { | \sharp \pm \underline { { \mathbb { H } } } } \\ { | \sharp \mathtt { H } \rangle } \end{array} \right) = P \left( \sqrt { \sharp } \overrightarrow { \mathfrak { H } } \bigotimes \big | \right) \ \times P \left( \sharp \sharp \underline { { \mathbb { H } } } \bigotimes \big | \begin{array} { l } { | \sharp \sharp | \big ) } \\ { | \sharp \mathtt { H } \rangle } \end{array} \right) \ / \ P \ ( \sharp \underline { { \mathbb { H } } } ) \ } \end{array}
$$

用A代替原因,用B代替结果,然后为了简洁,把乘法符号删掉,你就会得到大教堂上那个用10英尺宽的字母书写的公式。

这仅仅是定理的一个表述,当然还不能作为证据。但让人惊讶的是,证据十分简单。我们可以用医学诊断中的一个例子来阐明,也就是贝叶斯推理的“杀手级应用”之一。假设你是一位医生,上个月已经为100名病人进行诊断。其中的14名病人患流感,20名发烧,11名既感冒也发烧。因此感冒的人群中有发烧的病人的条件概率为11/14。设立条件缩小了我们正在考虑的集合,在这个例子中,所有病人的范围就缩小为患有流感的病人。在所有病人的集合中,发烧的概率是20/100;而在感冒病人的集合中,发烧的概率则是11/14。病人既发烧又感冒的概率,是患感冒病人的概率乘以发烧病人的概率:

$$
P ( \mathbf { \Sigma } _ { \mathbf { x } \mathbf { x } } ^ { j \mathbf { \overline { { x } } } } \equiv 1 , \ \mathbf { \Sigma } _ { \mathbf { x } } ^ { j \mathbf { \overline { { x } } } } , \mathbf { \Sigma } _ { \mathbf { x } } ^ { j \mathbf { \overline { { x } } } } \mathbf { \Sigma } _ { \mathbf { x } } ^ { j \mathbf { \overline { { x } } } } ) \ = P \ ( \mathbf { \Sigma } _ { \mathbf { x } \mathbf { x } } ^ { j \mathbf { \overline { { x } } } } \mathbf { \Sigma } _ { \mathbf { \overline { { x } } } } ^ { \boxag } \ \times \ P \ ( \mathbf { \Sigma } _ { \mathbf { \overline { { x } } } } ^ { j \mathbf { \overline { { x } } } } , \mathbf { \Sigma } _ { \mathbf { \overline { { x } } } \mathbf { \overline { { x } } } } ^ { j \mathbf { \overline { { x } } } } \ | \ \mathbf { \Sigma } _ { \mathbf { \Sigma } \mathbf { \overline { { x } } } } ^ { j \mathbf { \overline { { x } } } } \equiv 1 ) \ = 1 4 / 1 0 0
$$

$$
\times 1 1 / 1 4 { = } 1 1 / 1 0 0
$$

但我们可以倒过来计算:

$$
P ( \overrightarrow { A _ { x } } \overrightarrow { E _ { u } } = \overrightarrow { A _ { x } } \overrightarrow { A _ { x } } = = P ( \overrightarrow { A _ { x } } \overrightarrow { A _ { x } } ) \times P ( \overrightarrow { A _ { x } } \overrightarrow { E _ { u } } = \mid \overrightarrow { A _ { x } } \overrightarrow { A _ { x } } )
$$

因此,因为它们都等于P(感冒、发烧),

P(发烧)×P(感冒|发烧)= P(感冒)×P(发烧|感冒)

两边都除以P(发烧),你会得到

P(感冒|发烧)= P(感冒)×P(发烧|感冒)/ P(发烧)

就是这样!这就是贝叶斯定理,感冒是原因,发烧是结果。

PDF 物理页索引 3144

文件中的第 3145 页 · 印刷页码:未识别

事实证明,人类并不是很擅长贝叶斯推理,至少涉及文字推理的时候是这样的。问题在于我们倾向于忽略原因的先验概率。如果你的艾滋病病毒检测呈阳性,而检测的假阳性只有1%,你会觉得恐慌吗?乍一看,这时你患有艾滋病的概率是99%。呀!可是让我们冷静一下,一步一步用贝叶斯定理来推导这个概率:

$$
P \ ( \mathrm { H I V } \mid \ B H \nmid \ddagger ) = P \ ( \mathrm { H I V } ) \ \times P \ ( \\B H \nmid \ddagger \mid \mathrm { H I V } )
$$

P(HIV)是HIV在普通人群中的感染流行率,在美国这个概率约为0.3%。P(阳性)是化验结果显示你是否患有艾滋的概率,我们假设这个概率是1%。那么P(HIV|阳性) $= 0 . \ 0 0 3 \times 0 . \ 9 9 / 0 . \ 0 1 { = } 0 . \ 2 9 7$ 。这和0.99有很大的差别!因为HIV在普通人群中较为少见。化验结果为阳性,这样你感染艾滋病的概率会增加两个数量级,但这些概率还是低于50%。如果你的化验结果为HIV阳性,接下来的准确做法是保持冷静,然后做另外更加确切的检查。检查结果很有可能是你没事。

贝叶斯定理之所以有用,是因为通常给定原因后,我们就会知道结果,但我们想知道的是已知结果,如何找出原因。例如,我们知道感冒病人发烧的概率,但真正想知道的是,发烧病人患感冒的概率是多少。贝叶斯定理让我们由原因推出结果,又由结果知道原因,但其重要性远非如此。对于贝叶斯定理的信仰者来说,这个伪装起来的公式其实是机器学习中的 $F { = } m a$ 等式,很多结论和应用都是在这个等式的基础上得出的。而且无论终极算法是什么,它肯定“仅仅”是贝叶斯定理的一个算法应用。我之所以给“仅仅”加了双引号,是因为对于几乎所有简单的问题来说,在计算机上面应用贝叶斯定理非常困难,接下来,我们就会知道原因。

贝叶斯定理作为统计学和机器学习的基础,受到计算难题和巨大争论的困扰。你想知道原因也情有可原:这不就是我们之前在感冒的例子中看到的那样,贝叶斯定理是由条件概率概念得出的直接结果吗?的确,公式本身没有什么问题。争议在于相信贝叶斯定理的人怎么知道推导该定理的各个概率,以及那些概率的含义是什么。对于多数统计学家来说,估算概率的唯一有效方法就是计算相应事件发生的频率。例如,感冒的概率是0.2,因为被观察的100名病人中,有20名发烧了。这是“频率论”对于概率的解释,统计学中占据主导地位的学派就是由此来命名的。但请注意,在日出的例子以及拉普拉斯的无差别原则中,我们会做点不一样的事:千方百计找到方法算出概率。到底有什么正当的理由,能够假设太阳升起的概率是1/2、2/3,或者别的呢?贝叶斯学派的回答是:概率并非频率,而是一种主观程度上的信任。因此,用概率来做什么由你决定,而贝叶斯推理让你做的事就是:通过新证据来修正你之前相信的东西,得到后来相信的东西(也被人们称为“转动贝叶斯手柄”)。贝叶斯学派对此观点的忠实近乎虔诚,足以经得住200年的攻击和计算。计算机已经强大到足以做贝叶斯推理,且在大数据的辅助下,它们开始占据上风。

PDF 物理页索引 3145

文件中的第 3146 页 · 印刷页码:未识别

所有模型都是错的<sub>,</sub>但有些却有用

实际上,医生不会仅凭发烧就断定病人感冒了,他会考虑所有的症状,包括病人是否咳嗽、喉咙痛、流鼻涕、头疼、发冷等。所以我们真正要算的是P(感冒|咳嗽、喉咙痛、流鼻涕、头疼、发冷……)。通过贝叶斯定理,我们知道这和P(咳嗽、喉咙痛、流鼻涕、头疼、发冷……|感冒)成正比。但现在,我们遇到一个问题:我们该如何估算这个概率?如果每个症状就是一个布尔变量(你要么有这个症状,要么没有),医生要考虑n个症状,那么病人就可能有2n种症状的组合。假设我们有20种症状以及1万个病人的信息数据库,那么我们现在看到的仅仅是近100万种可能组合中的一小部分。更糟的是,为了准确估算某个特定组合出现的概率,我们对该组合的观察次数应至少为几十次,这意味着数据库需包含几千万个病人的信息。再另外增加10种症状,我们需要病人的数量就会超过地球上的人口数。

PDF 物理页索引 3146

文件中的第 3147 页 · 印刷页码:未识别

如果有100种症状,即使我们能魔法般地得到数据,那么世上所有的硬盘也没有足够的空间来存储所有的概率。而且如果病人来到医院,病人症状的组合我们从未遇到过,那么我们就不知该如何对其进行诊断。这时我们就与宿敌再次交锋:组合爆炸问题。

因此,我们就照着生活中常发生的那样做:妥协。我们做简化的假设来减少概率的数量,这些概率的数量由我们估算而来,且我们可以掌控。一个很简单且受人追捧的假设就是,在给定原因的情况下,所有的结果都相互独立。例如,假如我们知道你感冒了,发烧并不会改变你也咳嗽的可能性。从数学的角度讲,也就是说,P(发烧、咳嗽|感冒)仅相当于P(发烧|感冒)×P(咳嗽|感冒)。你瞧:这些概率中的每一个都可以通过少量次数的观察得到。其实,在前文,我们就这样得到过病人发烧的概率,且咳嗽和其他症状的概率的算法也并无二致。那么我们需要观察的次数就不会随着症状数的增多而呈指数增长了,实际上,观察次数不会再增长。

请注意:我们只是说你在感冒的前提下,发烧和咳嗽是相互独立的,但并不是所有情况都如此。很明显,如果我们不知道你有没有感冒,那么发烧和咳嗽则有很大关系,因为如果你已经发烧了,那你很有可能会咳嗽。P(发烧、咳嗽)不等于P(发烧)×P(咳嗽)。我们现在说的是,如果我们知道你感冒了,那么知道你是否发烧,并不会让我们更容易知道你是否会咳嗽。同样,如果你不知道太阳要升起来了,而且你看到星星渐暗了,那么你就更加肯定天空会变亮,但如果你知道太阳即将升起,那么看到星星渐暗就没有什么影响了。

请再次注意:多亏贝叶斯定理,我们才掌握这个窍门。如果我们想直接估算P(感冒|发烧、咳嗽等),假如不利用定理先将其转化成P(发烧、咳嗽等|感冒),那么我们就还需要指数数量的概率,每个组合的症状以及感冒或非感冒都有一个概率。

如果学习算法利用贝叶斯定理,且给定原因时,假定结果相互独立,那么该学习算法被称为“朴素贝叶斯分类器”。因为这是一个很朴素的猜想。实际上,发烧会增加咳嗽的可能性,即使你知道自己感冒了,因为(举个例子)发烧会让你得重感冒的可能性增大。但机器学习就是会做错误猜想的技术,而它又能侥幸逃脱。正如统计学家乔治·博克斯说的一句很有名的话那样:“所有的模型都是错的,但有些却有用。”虽然一个模型过于简化,但你有足够的数据用来估算那就比没有数据的完美模型要好。令人诧异的是,有些模型错误百出,同时又很有用。经济学家弥尔顿·弗里德曼甚至在一篇很有影响力的文章中提出,最有说服力的理论往往受到最大程度的简化,只要这些理论所做的预测是准确的,因为它们用最简洁的方法解释最复杂的问题。这对于我来说就像极远处的一座桥,但它阐明:与爱因斯坦的名言相悖,至少可以这么说,科学往往通过尽可能简化事物来取得进步。

PDF 物理页索引 3147

文件中的第 3148 页 · 印刷页码:未识别

没有人能肯定是谁发明了朴素贝叶斯算法。在1973年的一本模式识别教科书中,它被提到过,当时并未注明出处,但它真正流行起来是在20世纪90年代,那时研究人员惊喜地发现,它很多时候比许多更为复杂的学习算法还要准确。那时我还是一名研究生,而当我终于决定把朴素贝叶斯法纳入我的实验时,我震惊地发现自己很幸运,除了那个我运用到论文中的算法,它比所有我用来与之对比的算法都要有用,否则我可能也不会在这里了。

朴素贝叶斯法如今应用得很广泛。例如,它是许多垃圾邮件过滤器的基础。而这一切开始于大卫·赫克曼(一位卓越的贝叶斯研究员,同时也是一名医生),想到将垃圾邮件当作疾病,疾病的症状就相当于邮件中的文字:“伟哥”是一种症状,“免费”也是,但你最好朋友的姓可能会暗示这是一封合法邮件。那么我们就可以利用朴素贝叶斯法来将邮件分为垃圾邮件和非垃圾邮件了,只要垃圾邮件制造者通过随机选词来生成邮件。当然,这是一个荒谬的假设:只有当句子没有句法和内容时,它才正确。但那个夏天,迈赫兰·沙哈和一位斯坦福大学的毕业生在微软研究院实习时,曾对该假设进行过尝试,且效果很好。当比尔·盖茨问赫克曼怎会如此时,他指出为了识别垃圾邮件,你不必理解信息的细节,只要通过邮件包含的词语来获得邮件的主旨就可以了。

PDF 物理页索引 3148

文件中的第 3149 页 · 印刷页码:未识别

一个基本的搜索引擎也会利用与朴素贝叶斯法极相似的算法来决定显示哪些页面来回应你的搜索。主要的区别在于:它会预测相关或非相关,而不是垃圾邮件或非垃圾邮件。运用朴素贝叶斯法来解决预测问题的例子几乎数不胜数。彼得·诺尔维格(谷歌的研究主任)一度告诉我,这是谷歌应用最为广泛的算法,谷歌的机器学习在每个角落都利用了该算法的功能。为什么朴素贝叶斯法会在谷歌员工中流行起来?这个问题不难回答。除了惊人的准确度,它的测量能力也很强。学习朴素贝叶斯分类器的原理,也仅相当于数出每个属性与每个类别出现的次数,花的时间不比从硬盘读取数据的时间长。

可以半开玩笑地说,你甚至可以比谷歌员工更大范围地利用朴素贝叶斯法:对整个宇宙进行模拟。的确,如果你相信全能的上帝,那么你可以将宇宙模拟成一个巨大的朴素贝叶斯法分布点,这里发生的每件事都是在上帝的意愿下独立发生的。当然,值得注意的是,我们不知道上帝在想什么,但在第八章我们会分析,如何在即使不知道例子类别的情况下,掌握朴素贝叶斯模型。

起初看起来可能不是这样,但朴素贝叶斯法与感知器算法密切相关。感知器增加权值,而朴素贝叶斯法则增加概率,但如果你选中一种算法,后者会转化成前者。两者都可以概括成“如果……那么……”的简单规则,这样每个先例都会多多少少体现在结果中,而不是在结果中“全有或全无”。这仅仅是暗指主算法的学习算法中关联较为深入的例子。你也许并没有有意识地去了解贝叶斯定理(那么,你现在意识到了),但在某种程度上,你大脑中数百亿神经元中的每一个都是贝叶斯定理的微小实例。

在看新闻时,朴素贝叶斯法是学习算法可以利用的良好概念模型:它可以捕获输入与输出之间两两相关的关系,这对于理解将学习算法引用到新事件中很有必要。但是机器学习也不仅仅和两两相关关系有关,当然,正如大脑不仅仅包含一个神经元一样。当我们寻找更为复杂的模型时,真正的行动才刚刚开始。

PDF 物理页索引 3149

文件中的第 3150 页 · 印刷页码:未识别

从《尤金·奥涅金》到Siri

1913年第一次世界大战前夕,俄国数学家安德烈·马尔可夫发表了一篇文章,将所有事情的概率运用到诗歌当中。诗中,他模仿俄国文学的经典:普希金的《尤金·奥涅金》,运用了当今我们所说的“马尔可夫链”。他没有假定每个字母都是随机产生的,与剩下的毫无关联,而是最低限度引入了顺序结构:他让每个字母出现的概率由在它之前、与它紧接的字母来决定。他表示,举个例子,元音和辅音常常会交替出现,所以如果你看到一个辅音,那么下一个字母(忽略发音和空格)很有可能就是元音,但如果字母之间互相独立,出现元音的可能性就不会那么大。这可能看起来微不足道,但在计算机发明出来之前的年代,这需要花费数小时来数文字,而马尔可夫的观点在当时则很新颖。如果元音i是一个布尔型变量,《尤金·奥涅金》的第i个字母是元音,则该变量为真,如果它是一个辅音则为假,那么我们用图6–1这样的连锁图来表示马尔可夫模型,两个节点之间的箭头表示相应变量之间的直接依赖关系: