现在的位置: 首页 > 综合 > 正文

数学之美番外篇:平凡而又神奇的贝叶斯方法

2018年04月11日 ⁄ 综合 ⁄ 共 3302字 ⁄ 字号 评论关闭

概率论只不过是把常识用数学公式表达出来

                                                                 ——拉普拉斯

前言

这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常general且强大的推理框架,文中你会看到很多有趣的应用。

历史

托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里。以下摘一段wikipedia上的简介:
—————————————————————————————————————————————————————————————————————————————

所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由它的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如假设袋子里的有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率有多大。而一个自然而然的问题是反过来:如果我们事先并不知道袋子里面黑白球的比例。而是闭着眼睛摸出一个(或几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测。这个问题,就是所谓的逆概问题。
———————————————————————————————————————————————————

       实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯是机器学习的核心方法之一。这背后的深刻原因在于,现实世界本身就是不确定,人类的观察能力是有限性的(否则有很大一部分科学就没有必要做了——设想我们能够直接观察到电子的运行,还需要对原子模型争吵不休吗?),我们日常所观察到的只是事物表面上的结果,沿用刚才那个袋子里面取球的比方,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面的实际情况。这个时候,我们需要提供一个猜测(hypothesis,更为严格的说法是”假设“,这里用”猜测“更通俗易懂一点),所谓猜测,当然就是不确定的(很可能有好多种乃至无数种猜测都能满足目前的猜测),但也绝对不是两眼一抹黑瞎蒙——具体地说,我们需要做两件事:1.算出各种不同猜测的可能性大小。2、算出最靠谱的猜测是什么。第一个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。第二个则是所谓的模型比较,模型比较如果不考虑先验概率的话就是最大似然方法。

1.1 一个例子:自然语言的二义性

下面举一个自然语言的不确定性的例子。当你看到这句话:
The girl saw the boy with a teloscope.
你对这句话的含义有什么猜测?平常人肯定会说:那个女孩拿望远镜看见了那个男孩(即你对这个句子背后的实际语法结构的猜测是:The girl saw with a telescope the boy)。然而,仔细一想,你会发现这个句子完全可以解释成:那个女孩看见了那个拿着望远镜的男孩(即:The girl saw
the boy with a telescope)。那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。

1.2 贝叶斯公式

贝叶斯公式是怎么来的?
———————————————————————————————————————————————
一所学校里有60%的男生,40%女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大,这个就是前面说的“正向概率”的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近视,你只看得见她(他)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗?
———————————————————————————————————————————————
一些认知科学的研究表明(《决策与判断》以及《Rationality for Mortals》第12章:小孩也可以解决贝叶斯问题),我们对形式化的贝叶斯问题不擅长,但对于以频率形式呈现的等价问题却很擅长。在这里,我们不妨把问题重新叙述成:你在校园里随机游走,遇到N个穿长裤的人(仍然假设你无法直接观察到他们性别),问这N个人里面有多少个女生多少个男生。

你说,这还不简单:算出学校里面有多少穿长裤的,然后在这些人里面再算出有多少女生,不就行了?

我们来算一算:假设学校里面人的总数是 个。的男生都穿长裤,我们得到了个穿长裤的男生。的女生里面又有是穿长裤的,于是我们得到了个穿长裤的女生。加起来一共是个穿长裤的。我们要求的是穿长裤的人里面有多少女生(),我们计算的结果是:


注意,如果把上式简化一下:


把上式计算过程抽象化:


难怪拉普拉斯说 概率论只是把常识用数学公式表达出来。

无处不在的贝叶斯

以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面。

中文分词

贝叶斯是机器学习的一下核心方法之一。比如中文分词领域就用到了贝叶斯。Google研究员吴军在《数学之美》系列中就有一篇中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章。

分词问题的描述为:给定一个句子(字串),如:
———————————————————————————————————————————————————
南京市长江大桥
———————————————————————————————————————————————————

如何对这个句子进行分词(词串)才是最靠谱的。例如:
———————————————————————————————————————————————————
1.南京市/长江大桥
2.南京/市长/江大桥
———————————————————————————————————————————————————
这两个分词,到底哪个更靠谱呢?
我们用贝叶斯公式来形式化的描述这个问题,令为字串(句子),为词串(一种特定的分词假设)。我们就是需要寻找使得最大的,使用一次贝叶斯可得:

用自然语言来说就是这种分词方式(词串)的可能性乘以 这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将看作是恒等于1的,因为任意假象的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化,也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串:


的可能性呢?我们知道,根据联合概率的公式展开:

于是我们可以通过一系列的条件概率(右式)的乘积来球整个联合概率。然而不幸的是随着条件数目的增加()数据稀疏问题也越来越严重,即便语料库再大也无法统计出一个靠谱的。为了缓解这个问题。计算机科学家们一如既往地使用了天真假设:我们假设句子中国一个词的出现概率只依赖于它前面的有限K个词(K一般不超过3,如果只依赖于前面的一个词,就是2元语言模型(2-gram),同理有3-gram、4-gram等),这个就是所谓的“有限地平线”假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大,后面要提到的朴素贝叶斯方法使用的假设跟这个精神是完全一致的,我们会解释为什么像这样一个天真的假设能都得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成:

而统计就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子“南京市长江大桥”,如果按照自左向右的贪婪方法分词的话。结果就成了“南京市长/江大桥”。但如果按照贝叶斯分词的话(假设使用3-gram),由于“南京市长”和“江大桥”在语料库中一起出现的频率为0,这个整句的概率变会被判定为0,。从而使得“南京市/长江大桥”这一分词方式胜出。

抱歉!评论已关闭.