最大似然估计(MLE)和贝叶斯估计(BE)

最大似然估计(MLE)和贝叶斯估计(BE)

 

在深度学习那么火之前,许多算法,都会在inference阶段用到最大似然估计或者最大后验概率估计,这些都机器学习中最最最基本的东西,就像地基一样,虽然现在深度学习仍然用到这些知识,就像NLL、Cross Entropy 等loss function的本质就是这些估计,但是由于现在那些pytorch、tensorflow等深度学习的框架出来后,这些函数都封装好了,一句简单的调用就可以实现。这样许多人就懒得去管这些函数的本质,之前有遇到过一个同学,在做分类问题的时候,softmax函数的作用是什么都不知道。在pytorch中有些loss function 是有自带softmax的,有一些又没有,需要自己手动加。softmax的作用就是赋予输出概率的意义,其实就是一个归一化的作用,所有的概率之和要为1。而二分类的问题loss function是不需要用到softmax的,那是因为另一个用1去减了这个输出值,所以本来就满足所有概率之和为1的条件。有些同学就不知道什么意义,看到别人在二分类用的loss function,就直接拿过来在多分类那里用。

因此,今天就在这里介绍这个机器学习中很重要的基石,最大似然估计和贝叶斯估计。

在机器学习中,模型,参数,泛化,三个步骤,模型就是建模的阶段,你要什么办法解决这个问题;参数就是模型里面的参数,可以学习,也可以推理;最后泛化就是要把学习好的模型和参数泛化到未知的样本的中。其中这些估计就是求参数的部分,在概率图模型中,这部分也叫做inference。

先介绍MLE和BE的区别,在MLE中,假设参数是未知的,但是待估计的参数是一个值,就例如,要估计一个高斯分布,那么待估计的参数就是均值和方差。这两个参数是未知的,但是在MLE看来就是一个固定的值。而在BE中,它认为待估计的参数不应该是一个值,而是服从一个分布的一系列值,也就是随机变量。例如估计一个高斯分布1的均值,可能也服从另外一个高斯分布2,然后就根据这个高斯分布2对最终的高斯分布1做出判断或者别的操作。

简单来说,就是有一道数学题需要求解答案,你去求助一班的同学,MLE的方法是找出成绩最好的同学(参数)来解这道题。而BE的方法是让全班的同学(参数分布)都解这道题,然后再根据这些同学的成绩好坏对他们的答案进行加权求平均得到最终的答案。

下面就进行数学推导:

假设样本  ,这些样本独立同分布的,现在要估计这个分布的参数  ,我们可以写出,在参数  下,这些数据的该路,因为这些样本都是独立同分布的,所以这些概率可以直接相乘,写成下面的式子:

 

这里的  就叫做似然函数。我们就想,当参数  是什么的时候,这个概率最大呢?这时候就是最大似然估计。

对一个式子求最大值,我们第一想到的方法就是对参数求导,令导数为0,然后就可以求出这个参数了。再代进原来的式子就可以求出极值。但是对上面一个连乘的式子求导很困难,那么怎么办呢?于是就想到使用对数似然函数。

 这样,  ,就把一个连乘的式子变成了连加的式子。因为自然对数函数是单调增函数,所以对数似然函数和似然函数的极点的位置相同。

剩下的工作就是对  求导,另导数为0,balabala一大堆操作。

现在举一个具体的例子:

假设我们现在有一个回归问题,数据为  ,我们用一个线性模型解决这个问题,假设  ,但是实际上,样本总是会存在误差的,所以  。

因此我们又假设了  ,其中  是一个服从均值为0,方差为  的高斯分布。那么  就是一个服从均值为  ,方差为  的高斯分布,即  。因此根据上面的所说的方法,

 ,对其进行对数化:

 

其中  。我们可以看到对于上面的,第一第二项都是常数,因此要优化的时候只需要优化最后一项即可。然后我们通过  发现(请注意到前面的负号),这不就是最小二乘吗?原来对于高斯分布的最大似然估计竟然就是回归问题中的最小二乘。不得不感叹,这也太神奇了吧!

然后我们就很自然地想到最小二乘法的公式:

 。进一步推广,这里的X是原数据,有一些不需要完整的原数据,而是需要数据的特征,这时候就引入kernel的方法,也就是  ,这样上式又可以写成

 ,这个又叫广义线性模型的最小二乘法。

OK,讲完了参数,那么就要来泛化了。许多时候通过最小二乘法得到的结果是不理想的,因为这样就要一个解满足所有的方程,这样就往往会导致过拟合。因此需要加一些正则化项。

最常用的是岭回归和LASSO,看名字好像很高大上,但是其实就是加了l2范数和l1范数的的最小二乘法。

对于岭回归,最小二乘法的误差就可以写成  。

同样的求解方法,可得:  (这里就不写有kernel的形式了,大家知道,这里也是可以把kernel给引进来的就行了)。

而对于LASSO,也就是l1范数的最小二乘法,由于l1范数的求导没有l2范数的那么好求,所以就有另外的方法近似l1范数,这里就不展开讲了,有兴趣的同学可以去查找LASSO的资料,或者以后我也会写一个博客介绍这个。

现在就直观一点看这个正则化究竟怎样的,用一个很经典的图介绍

左边图为l1正则化图,右边图为l2正则化图。图片引用于https://zhuanlan.zhihu.com/p/35356992

上图表达的是在一个参数搜索空间中找到最有的参数点,例如上图只是一个二维图,也就是只有两个参数,如果没有正则化项的时候,最小的那个椭圆里面的点是最优的,但是那里面的点就会导致过拟合,而加了正则化项就是原点那里的矩形(l1范数)和圆形(l2范数)。这样既要满足正则化项,又要满足最小化误差,那么就是它们的交点地方就是要求的。如果仔细一点,可以看到对于l1范数的交点,往往会在坐标轴上,也就是有一些参数会是0。这就会导致稀疏性。这也就是为什么在sparse coding里面,人们常常使用l1范数去近似l0范数,从而实现code的稀疏性的原因。

至此,最大似然估计就大概介绍完了。下面就介绍BE了

BE的核心思想如下:D为训练样本,  是参数,  为未知的新样本。BE是不会具体估计出一个值的,只会根据D估计参数的分布,再通过这个分布进行加权求和,也就是求期望。

 ,从公式中,可以看到是关于  的对  的期望。这个可以说是EM算法的核心,因此具体的例子在介绍EM算法的时候再介绍了。

因此大家就只需要记住上面的例子就行了(这里再啰嗦一次),也就是:

简单来说,就是有一道数学题需要求解答案,你去求助一班的同学,MLE的方法是找出成绩最好的同学(参数)来解这道题。而BE的方法是让全班的同学(参数分布)都解这道题,然后再根据这些同学的成绩好坏对他们的答案进行加权求平均得到最终的答案。

 

本人也是一个小白,刚接触这些知识不久,对这些知识也谈不上非常熟悉。如果有错误的,麻烦大家一定要指出来。谢谢大家~

参考:

1.Pattern recognition and machine learning. Christopher M.bishop

2.深圳大学 模式识别理论课程课件。 裴继红老师

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页