明天太阳一定会升起吗?兼谈拉普拉斯平滑

皮埃尔-西蒙,拉普拉斯侯爵(1749-1827),法国著名的天文学家和数学家:

曾经提出一个问题:千百万年以来,每天太阳都会升起。但是,可以就此推断明天太阳一定会升起吗?

1 火鸡问题

这个问题似乎有点古怪,但仔细想想,如果不具备其它的关于太阳的知识,仅凭数据确实没有办法肯定地说,明天太阳一定会升起。英国哲学家波特兰.罗素曾经描述过一个类似的问题:

一个农场里有一群火鸡,农场主每天中午十一点来给它们喂食。火鸡中的一名科学家观察这个现象,一直观察了近一年都没有例外,于是它在感恩节当天向所有火鸡公布了一个伟大的定理:“每天上午十一点,就有食物降临。”但就在当天理论中的食物没有降临,农场主进来把它们都捉去杀了。
----火鸡理论(Russell's Turkey)
2 太阳升起的概率

“太阳没有升起”这个事件从未发生,那怎么去估计它的概率呢?来做一个思想实验,让我们把时间回溯,来到人类第一次观察太阳的时候,假设那是100万年前:

此时我们并不知道明天太阳是否升起,可以假设两者概率相同;也就是假设昨天太阳升起了,而前天没有。再加上今天的观察结果是太阳升起了,因此可以得到下列表格:

接着连续观察5天,发现:

在上面表格中,最开始两天是假设的,后面6天是观察所得,因此可以说“太阳升起”的概率为:

在之后的100万年间,人类观察到了每天太阳都是升起的,总共升起了次(数字太大,用来代替),同样的道理可得:

这也是拉普拉斯的计算结果(他的方法和这里不太一样,是假设“太阳升起”的概率服从均匀分布,然后通过类似贝叶斯推断的方式计算出来的,这里就不再赘述细节了)。

3 有什么意义

因为特别大,所以计算出来的结果约等于1,也就是说基本上太阳明天一定会升起,对我们普通人的生活毫无影响:

但如果放到更大的尺度下,这个概率告诉我们,总有一天太阳是会熄灭甚至消失不见,该事件的发生对人类的整体是毁灭性的。当我们意识到这一点,人类应该对这样的从未发生但是又有重大后果的事件做一些准备,比如星际移民:

当然也可能像那群火鸡一样,就算知道,也无能为力。

4 拉普拉斯平滑

说点接地气的,在机器学习中常常会碰到对从未发生过的事件的预测,拉普拉斯的方法就可以发挥作用。比如下面是一些邮件的数据,左边两列是邮件中的是否包含某些关键字,第三列是该邮件是否为垃圾邮件,最后一列是这样的邮件有多少封:

根据上面的数据容易得到,包含“发票”和“微信”且是垃圾邮件(表中第八行)的概率为(机器学习中一般是计算条件概率,这里为了解释方便,只去计算了如下概率):

仔细观察会发现,只包含“微信”的情况是没有数据的(表中第五、六行),此时就可用拉普拉斯的办法,给每一项都加上1(“太阳升起”问题中只有两种状态,这里有八种状态,在思想实验中,可以给每种状态都预先加上1,表现出来的结果就是在表格中给每一项都加上1):

这样就可以估计只包含“微信”且是垃圾邮件(表中第六行)的概率为:

这种方法在机器学习中也常称为拉普拉斯平滑。

关注马同学
马同学高等数学
微信公众号:matongxue314