机器学习--极大似然估计与最大后验概率估计
前言
最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很容易弄混它们。下文将按照以下顺序进行介绍:
- 概率与统计基本概念
- 频率学派与贝叶斯学派
- 似然函数、贝叶斯公式介绍
- MLE(频率学派) 与 MAP (贝叶斯学派)
概率与统计
概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。
概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。 举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。
统计研究的问题则相反。统计是,有一堆数据,要利用这堆数据去预测模型和参数。仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。
一句话总结:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。后文要介绍的MLE与MAP都是统计领域的问题,在介绍之前,要先介绍一下频率学派以及贝叶斯流派。
频率学派与贝叶斯派
在介绍MLE和MAP之前,不得不提一下对于概率看法不同的两大派别--频率学派与贝叶斯派。他们看待世界的角度不同,导致他们对于产生数据的模型参数的理解也不同。
在频率学派中,他们认为世界是确定的。他们直接为事件本身建模,也就是说事件在多次重复实验中趋于一个稳定的值$p$,那么这个值就是该事件的概率。他们认为模型参数是个定值,希望通过类似解方程组的方式从数据中求得该未知数。这就是频率学派使用的参数估计方法--极大似然估计(MLE),这种方法往往在大数据量的情况下可以很好的还原模型的真实情况。
在贝叶斯派中,他们认为世界是不确定的,因获取的信息不同而异。假设对世界先有一个预先的估计,然后通过获取的信息来不断调整之前的预估计。 他们不试图对事件本身进行建模,而是从旁观者的角度来说。因此对于同一个事件,不同的人掌握的先验不同的话,那么他们所认为的事件状态也会不同。他们认为模型参数源自某种潜在分布,希望从数据中推知该分布。对于数据的观测方式不同或者假设不同,那么推知的该参数也会因此而存在差异。这就是贝叶斯派视角下用来估计参数的常用方法--最大后验概率估计(MAP),这种方法在先验假设比较靠谱的情况下效果显著,随着数据量的增加,先验假设对于模型参数的主导作用会逐渐削弱,相反真实的数据样例会大大占据有利地位。极端情况下,比如把先验假设去掉,或者假设先验满足均匀分布的话,那她和极大似然估计就如出一辙了。
总结一下,频率学派认为模型的参数是一个确定的未知数,样本是随机的,MLE是频率学流派的常用参数估计方法;贝叶斯派认为样本是固定的,模型的参数服从某种先验分布(随机变量),MAP是贝叶斯派常用的参数估计方法。在详细介绍MAP与MLE之前,先介绍一下贝叶斯公式以及似然函数。
贝叶斯公式与似然函数
先给出贝叶斯公式$P(A|B) = P(A)\frac{P(B|A)}{P(B)}$。这里的$P(A|B)$表示后验概率,$P(A)$为先验概率,$\frac{P(B|A)}{P(B)}$为修正概率。将$P(B)$按照全概率公式展开可以得出以下公式:
$~A$表示的“非A”。贝叶斯公式想要描述的东西是--你有多大把握相信一个客观存在的证据。例如一辆车的的警报响了,你通常是什么反应?有小偷?撞车了?通常我们什么反应都没有,因为汽车警报响一响实在是太正常了,每天都要发生好多次。本来,汽车警报设置的功能是,出现了异常情况,需要人关注。然而,由于虚警实在是太多,人们渐渐不相信警报的功能了。我们假设响警报的目的就是想说汽车被砸了。把事件$A$记为“汽车被砸了”,事件$B$记为“警报响了”,带进贝叶斯公式里看。我们想求等式左边发生$A|B$的概率,也就是要求警报响了,汽车也确实被砸的概率。
汽车被砸引起警报响,即事件$B|A$。但是,也有可能是汽车被小孩子皮球踢了一下、被行人碰了一下等其他原因,这些其他原因我们记为事件$∼A$。其他原因引起汽车警报响了,记为事件$B|∼A$。那么,现在突然听见警报响了,这时汽车已经被砸了的概率是多少呢?想一想,应当这样来计算。用警报响起、汽车也被砸了这事件的数量,除以响警报事件的数量,也就是$P(A|B) = P(A)\frac{P(B|A)}{P(B)}$。进一步展开,即警报响起、汽车也被砸了的事件的数量,除以警报响起、汽车被砸了的事件数量加上警报响起、汽车没被砸的事件数量,也就是将$P(B)$按全概率展开之后的贝叶斯公式。
进一步讨论一下贝叶斯公式,如果想让$P(A|B)=1$,即警报响了,汽车一定被砸了,该怎么做呢?让$P(B|∼A)P(∼A)=0$即可。很容易想清楚,假若让$P(∼A)=0$,即杜绝了汽车被球踢、被行人碰到等等其他所有情况。那自然,警报响了,只剩下一种可能——汽车被砸了。这即是提高了响警报这个证据的说服力。从这个角度总结贝叶斯公式:做判断的时候,要考虑所有的因素。 老板骂你,不一定是你把什么工作搞砸了,可能只是他今天出门前和太太吵了一架。
在讨论一下贝叶公式右边的分子,$P(B|A)$为汽车被砸后响警报的概率,姑且仍为这是1吧。但是,若$P(A)$很小,即汽车被砸的概率本身就很小,则$P(B|A)P(A)$仍然很小,即贝叶斯公式右边分子仍然很小,$P(A|B)$ 还是大不起来。 这里,$P(A)$即是常说的先验概率,如果$A$的先验概率很小,就算$P(B|A)$较大,可能$A$的后验概率$P(A|B)$还是不会大(假设$P(B|∼A)P(∼A)$不变)。从这个角度思考贝叶斯公式:一个本来就难以发生的事情,就算出现某个证据和他强烈相关,也要谨慎。
似然函数
似然(likelihood)这个词其实和概率(probability)是差不多的意思。但是在统计里面,似然函数和概率函数却是两个不同的概念。对于函数$P(x|\theta)$,其输入有两个:$x$表示某一个具体的数据;$\theta$表示模型的参数。
- 如果$\theta$是已知确定的,$x$是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点x,其出现概率是多少。
- 如果$x$是已知确定的,$\theta$是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现x这个样本点的概率是多少。
ok一些基础的铺垫到这里了,现在进入主菜。
极大似然估计(MLE)与最大后验估计(MAP)
假设有一个造币厂生产某种硬币,现在我们拿到了一枚这种硬币,想试试这硬币是不是均匀的。即想知道抛这枚硬币,正反面出现的概率(记为θ)各是多少?对于这种统计问题,我们需要足够的数据来解决。于是我们拿这枚硬币抛了10次,得到的数据($x_{0}$)是:反正正正正反正正正反。我们想求的正面概率$\theta$是模型参数,而抛硬币模型我们可以假设是二项分布。那么,出现实验结果$x_{0}$(即反正正正正反正正正反)的似然函数如下所示:
注意,这是个只关于$\theta$的函数。而最大似然估计,顾名思义就是要最大化这个函数。最大化似然函数的方法通常是取对数之后求导,详细的方法我就不在这里说明了。
以上是MLE的常用流程,即求参数$\theta$适似然函数$P(x_{0}|\theta)$最大。在上述最大似然估计的过程中,我们抛10次硬币,发现7次硬币正面向上,最大似然估计认为正面向上的概率是0.7。然而这并不符合我们的常理--抛一枚硬币正面向上的概率为0.5,这里的常理可以理解统计学里面的一个先验概率,为此,贝叶斯学派在参数估计的时候引入了先验概率,这种方法也就是常说的最大后验估计。
具体来说,MAP做的事情为求解参数$\theta$使$P(x_{0}|\theta)P(\theta)$最大。求得的$\theta$不单单让似然函数大,$\theta$自己出现的先验概率也得大。 (这有点像正则化里加惩罚项的思想,不过正则化里是利用加法,而MAP里是利用乘法)。从公式角度来看MAP其实是在最大化$P(\theta|x_{0}) = \frac{P(x_{0}|\theta)P(\theta)}{P(x_{0})}$。由于$x_{0}$为实际数据的观测值,使已知的,即$P(x_{0})$是一个已知值,所以最大化$P(\theta|x_{0}) $等价于最大化$P(x_{0}|\theta)P(\theta)$。而$P(\theta|x_{0}) $为通常所说的后验概率,这也就是"最大后验估计"名字的由来。
一句话总结:最大似然估计是求参数θ, 使似然函数 最大;最大后验概率估计则是引入了先验概率,想求θ使 最大。
(严谨的公式推导以及验证建议去看一下统计学习方法)