贝叶斯方法

贝叶斯方法

五月 09, 2019

custom & Magical 贝叶斯

  • 贝叶斯是机器学习中得重要核心方法之一
  • 本文是关于数学方法贝叶斯的科普文,我会尽量少用公式,多用大白话,多举实例。贝叶斯已经呗广泛使用,并且被证明是非常 general & strong 的推理框架,文中回列举很多有趣应用。

托马斯·贝叶斯(Thomas Bayes)

  • 生平介绍摘自wikipedia

homas Bayes 托马斯.贝叶斯(1702-1763),英国数学家。于1702年生于伦敦,做过神甫。1742年成为英国皇家学会会员,1763年4月7日逝世。

  • 贝叶斯方法得起源

贝叶斯方法起源于数学问题“逆概”,要了解逆概,先了解一下全概(全概就是高中数学知识)
重温一下关于全概的高中数学题:
盒子中有12个羽毛球,其中9个是新的。第一次从中任取3个使用,使用后放回盒中。第二次再从盒中任取3个,取出的全是新球。求第一次取到的球全是新球的概率?

  • 这样的类似问题相信同学们在高中都遇到过,这个就是一个典型得全概问题,即已知一些条件,求出正向问题的概率。而逆概就是翻过来的概率问题,即” 如果我们事先并不知道有多少个羽毛球,不知道有多少个是新的,只是闭着眼睛根据每一次摸出来球的颜色进行观察,那么我们可以就此对袋子里面的新旧球的比例作出什么样的推测 “。这个问题,就是所谓的逆概问题。

实际上,贝叶斯当时的论文只是对这个逆概问题的一个直接的求解尝试,并未清楚意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并延伸到所有需要作出概率预测的地方。

这背后的深刻原因在于,现实世界本身就是不确定的,人类的观察能力具有局限。我们日常所观察到的只是事物表面上的结果,沿用刚才的袋子取球的例子,我们往往只能知道从里面取出来的球是新或者是旧,而并不能直接看到袋子中的实际情况。

这时如果要想了解袋子里的球具体的新旧情况,那么就需要进行猜测(或者说是作出假设),当然我们也不呢个瞎猜,具体地说,我们需要做两件事情:1. 计算各种不同猜测情况的可能性大小。2. 计算出最靠谱的猜测结果。第一个就是计算特定情况猜测出来的后验概率,(对于连续的猜测空间则是计算概率密度函数,对于离散的猜测空间则是计算概率回归)。第二个就是模型比较,模型比较时如果不考虑先验概率的话就是计算最大似然方法。

自然语言的二义性

下面举一个自然语言的不确定性的例子:

学校来了三个医院的医生。

看到这句话的第一瞬间,是如何理解它的?平常人会认为 A.学校总共来了三个医生,他们是一个医院的 B.学校来了三个医生,他们来自三个医院。

那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的法则?这个也是贝叶斯反概需要理解的地方。

贝叶斯公式的来源

继续使用 wikipedia 上的一个例子:

一所学校里面有 60% 的男生,40% 的女生。男生总穿长裤,女生一半穿长裤一半穿裙子。随机选取一个学生,计算他(她)穿长裤的概率和穿裙子的概率是多大。

这个就是前面说的“正向概率”的计算。假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗?

一些认知科学的研究表明,我们对这种形式化的问题描述难以理解,但对于以频率形式呈现的等价问题却很擅长,所以首先需要对问题进行等价变换:

你在校园里面随机游走,遇到了 N 个穿长裤的人(仍然假设你无法直接观察到他们的性别),问这 N 个人里面有多少个女生多少个男生。

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

我们来算一算:假设学校总人数是 N 。男生人数占60%,都穿长裤。女生人数占比40%,一半穿长裤,一半传短裤。于是对于男生而言,我们得到了穿长裤的男生占比:
Boy = N* P(男) * P(裤|男)

  • P(男)表示男生的概率,值为60%。
  • P(裤|男)表示在(男)这个条件下穿长裤的概率是多大,值为 100% ,

对于女生而言,穿长裤的女生占比为: Girl = N * P(女) * P(裤|女)

  • P(女)表示女生的概率,值为40%
  • P(裤|女)表示在(女)这个条件下穿长裤的概率是多大,值为 40%*50% ,

所以,最终 穿长裤的总人数是 Boy + Girl,其中穿长裤的女生是Girl 。两者一比就是答案.

下面我们把这个答案形式化一下 P(女|裤) = Girl/(Boy +Girl),我们很自然的就可以读出:在穿长裤的人(Boy +Girl)里面,有多少穿长裤的女孩( P(裤|女) )。

化为一般形式就是:P(B|A) = P(A|B) P(B) / [P(A|B) P(B) + P(A|~B) * P(~B) ]

收缩起来就是:P(B|A) = P(AB) / P(A)

其实这个就等于:P(B|A) * P(A) = P(AB)

  • 概率论只是把常识用数学公式表达了出来。 — 拉普拉斯