Amateur Hour

最大似然估计、最大后验概率与贝叶斯估计

2018-07-21

Intro

众所周知,机器学习的过程一般分两个要点,第一是“模型”,第二是“优化”。“模型”这一点很好理解,就是要找到适合用于解决手头上预测问题的模型。机器学习训练过程的核心在于“优化”。而训练(trianing)一般可以分成以下几个步骤:

  • 定义假设空间H:即选择模型,不同的模型对应的就是不同的假设空间。
  • 定义损失函数:选择合适的损失函数,来衡量每次训练迭代的效果。比如MSE、LogLoss等。
  • 决定训练复杂度:决定用什么样的正则化,预防过拟合。
  • 定义优化算法:在训练迭代中,使用什么算法来得到模型参数最优解。例如梯度下降、MCMC等。
  • 验证结果:在测试集上使用前几步输出的模型,验证预测结果的有效性。

本文主要讨论优化算法部分最常见的三种策略:最大似然估计-MLE、最大后验概率-MAP、贝叶斯估计—Bayesian

1. 似然函数 & 贝叶斯公式

先说似然函数吧,学过概率论的同学们,看到这个公式肯定都不陌生:

$$P(A|B)$$

但我们学的时候多半是按概率函数来理解的,但其实他也可以按似然函数来理解。作为概率函数,这个公式的含义是:B 代表已知的条件,P(A|B) 代表在 B 这个已知的条件下 A 发生的概率。

但对于似然函数有着完全相反的理解:B 代表不同的模型参数,P(A|B) 是指在不同模型参数下,固定的 A 发生的概率。

当然,对于似然函数来说,更常见的写法可能是 $$P(x|\theta)$$,其中 x 是数据集中的样本点,theta 是模型参数的意思。

贝叶斯公式,可能也是机器学习初学者一定要过的一关。但我在初学的时候,完全没有get到这个公式对于机器学习的意义。直到我把今天要讨论的三个优化策略放在一起对比。要理解贝叶斯公式本身,首先还是要有一点概率基础。首先贝叶斯公式形状如下:

$$P(A|B) = P(B|A)*P(A)/P(B)$$

一言以蔽之,贝叶斯定理是关于随机事件A和B的条件概率的一则定理。把公式中的四项全部拆开来看呢,分别是这样的定义:

  • P(A) 是 A 的先验概率。之所以称为”先验”是因为它不考虑任何 B 方面的因素
  • P(A|B) 是已知 B 发生后 A 的条件概率,也由于得自 B 的取值而被称作 A 的后验概率
  • P(B|A) 是已知 A 发生后 B 的条件概率,通常称为相似度(likelihood)
  • P(B) 是 B 的先验概率或边缘概率,也作标准化常量(normalized constant)

转化一下之后,贝叶斯定理可以理解为:

后验概率 = (相似度 * 先验概率) / 标准化常量

本文后面讨论的三个策略,跟以上两个公式的理解,都有非常大的关系。

2. 最大似然估计 - MLE

最大似然估计,是三者中最简单页也最好理解的一种。直白点讲,它其实就是贝叶斯定理中“相似度”那一项 P(B|A)。因此得名最大(maximum)似然(likelihood),其实就是要找到这一项的最大值所对应的模型参数。

以一个教科书式的例子来说明好了,假设我们有一枚硬币,我们不知道它是否均匀,想通过N次抛掷,然后记录正反面出现的概率来决定。于是我们对它进行了10次抛掷,最后结果是:7次正面、3次反面。如果一个人秉持最大似然估计的想法来得出这个问题的结论的话,那他的结论会是:这个硬币不均匀,正面出现的概率是 0.7 ,反面是 0.3。

但其实常识告诉我们,10次中有7次正面,其实只是运气不好。如果再抛掷10次,没准就7次反面了。所以肯定没有人会相信上面这个结论。但我们如何改进呢?抛掷更多次当然是一个选项,但在建模过程中,数据量通常是固定的,要获取更多的数据一般是不大现实的。因此,我们需要另辟蹊径。就像刚刚说到的,常识会告诉我们这个结论明显有问题。那有没有办法把这个“常识”作为一个因子引入到我们的模型里呢?当然可以,它其实就是“先验概率”。这就引出了下面要讨论的“最大后验概率”。

3. 最大后验概率 - MAP

最大似然估计是求参数 theta, 使似然函数 P(x|theta)最大。最大后验概率估计则是想求 theta 使 P(x|theta)P(theta) 最大。求得的 theta 不单单让似然函数大,theta 自己出现的先验概率也得大。在贝叶斯公式中:P(theta|x) = P((x|theta)*P(theta)/P(x),由于 P(x) 是已知的观测结果,所以可以理解为是常量,在上面的例子中也就是正面0.7这个概率值。因此求 theta 使 P(x|theta)P(theta) 最大,就是求 theta 使 P(theta|x) 最大。而 P(theta|x) 就是后验概率,也是这个策略名称的由来。

那么,如果我们先验地知道,正面概率更接近 0.5 这件事情,那其实最终得出的后验概率,肯定介于似然估计的 0.7 与 先验概率的 0.5 之间。因此,可以看出引入了先验概率之后,我们的模型能够更接近真相。

如果再更深入的思考一下,其实 MLE 和 MAP 是有关联的,如果 P(theta) = 1,其实 MAP 就是 MLE。或者反过来看,当数据观测趋于无穷大时,似然估计本身提供的信息将远超于先验概率提供的信息,这时 MLE 和 MAP 也是基本一样的。

4. 贝叶斯估计 - Bayesian

现在让我们回想一下上面的 MLE 与 MAP。我们会发现,这两个策略的最终目的,都是找到一个最好的描述当前数据观测的模型。他们其实都属于“频率论(frequentist)”的思路。但“贝叶斯思想”是与频率论完全背道而驰的一种观点。贝叶斯估计的过程中,不会试图去寻找一个最佳的模型,而是得出所有参数可能性的重要性分布。当我们对新的样本预测的时候,就会让所有的模型一起去预测,但每个模型会有自己的权重(权重就是学出来的分布)。最终的决策由所有的估计根据其权重做出决策。是类似于ensemble的做法。

上面的解释可以说肯定一遍是看不懂了,在这篇博文中有个非常好的例子,盗用一下。

假设你有一个学术问题想要解决的时候,你可以联系到一个清华大学的班级,班里的同学可以帮助你去解决这个问题。这时候,你会怎么样利用这些学生来解决这个问题呢?我们可以分别用今天讨论的三个策略来套用到这个场景中。很显然,这个班级就是你的假设空间,班级中每个人都可能的一个模型实例。

最大似然估计的approach

按 MLE 的原理,你需要从系里选出过往成绩最好的学生,并让他去解答这个难题。比如我们可以选择过去三次考试中成绩最优秀的学生。

mle_1.png

挑选出这些学生之后,就直接让他们去解决问题并给出结果了。其他的学生我们就当不存在。。。

mle_2.png

这是一个很好的approach吗?是很简单,但明显很sloppy。万一这些学生只是考试厉害,实际的问题解决能力并不强呢?这个时候,请教一下他们的班主任、老师对他们的评价,也纳入到你的考虑中岂不是更好。这就是最大后验概率估计。

最大后验概率的approach

老师的评价作为先验概率,加入到我们的考虑中,对同学的选择当然会产生影响。

map_1.png

map_2.png

贝叶斯估计的approach

贝叶斯估计的方法,是让所有人都去参与回答张三的难题,但最后我们通过一些加权平均的方式获得最终的答案。这里你不是简单地选出几个同学,而是给每一个同学分配一个权值。权值的分布(Posterior Distribution)是怎么得出的呢?一些著名的算法如MCMC, Variational Method等等。

Summary

  1. MLE(最大似然估计):就是给定一个模型的参数,然后试着最大化likelihood。即给定参数的情况下,得到样本集的概率。目标是找到使前面概率最大的参数。逻辑回归都是基于 MLE 做的;但缺点是不会把我们的先验知识加入模型中。
  2. MAP(最大后验估计):最大化后验概率。
  3. Bayesian:预测是考虑了所有可能的参数,即所有的参数空间。