标签:
先思考这样一个问题:我们知道,人群中人的身高大致服从一个正态分布。那么现在,如果说我拿到了一个班的学生(就姑且假设是100人吧!)的身高,我想请你帮我估计一下,这个正态分布的参数
好简单。应用极大似然估计的思想,把每一个样本拿出来相乘,求解得到概率最大的那个参数,即为我们想要的参数
好,现在我们将问题增加一点点难度,倘若我想问,这个班的学生其实可以分为男生和女生。同样地,男生和女生的分布也大致服从正态分布。那么我想问,你能根据这些样本,算出这两个正态分布的参数
此时,你心里一定会有个小嘀咕。这问题看起来比较棘手,因为你告诉我的数据信息太“少”了。
倘若现在我告诉你,班里的100个人里,我已经自动地根据男女给你分好了集合。集合A全都是男生,集合B全都是女生,那么男生女生的正态分布参数你会做吗?
显然,很简单,就是两个分别做一下极大似然估计参数即可。
倘若现在反过来,我告诉你,我把男生服从的正态分布的参数
但是,你有没有发现这个问题的好玩儿之处:我有两个缺失的条件A,B,你告诉了我A,我可以告诉你B是什么。或者你告诉我B,我也可以把A求出来告诉你。可是恼人的是,偏偏A和B,我们都不知道。这时我们该怎么办呢?
其实,刚刚提出的那个问题,就是一个典型的高斯混合模型的问题,接下来要讲的EM算法,就是专门来解决这个问题的一种算法。
EM算法,英文全称是Expection Maximization,又叫做最大期望算法。
是在概率(probabilistic)模型中寻找参数最大似然估计的算法,最早在1950年被 Ceppellini等人用于基因频率估计,后来在隐马尔科夫模型(也常被称作Baum-Welch算法)方面被Hartley和Baum等人进一步推广分析。其中概率模型依赖于一些无法观测的隐藏变量(Latent Variable)。通过迭代,来计算含有隐变量的概率模型的参数的极大似然估计。
一句话总结EM算法的不同之处:EM算法可以利用不完整的信息实现概率模型的参数化估计。
EM算法的应用范畴:聚类,高斯混合模型,pLSA,隐马尔科夫模型(与B-W算法十分相似)
在我们做模型参数的预测时,常用的办法,就是利用极大似然估计的思想
设f是定义域为实数的函数,如果对于所有的实数x。如果对于所有的实数x,f(x)的二次导数大于等于0,那么f是凸函数。
当x是向量时,如果其hessian矩阵H是半正定的,那么f是凸函数。如果只大于0,不等于0,那么称f是严格凸函数。
Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么:
特别地,如果f是严格凸函数,当且仅当X是常量时,上式取等号。
第一步,我们同样地,来求似然函数的极大值。
只不过,这次的问题在于,我们的似然函数,包含了隐变量z。
我们发现,如果用传统的求偏导,并令偏导数等于0的话,会无法求解,因为
因此,第二步,我们考虑对该公式做一些数学方法上的“调整”,以期望可以变成我们好解决的形式
我们添加了一个公式
那么这个
对于每一个样例i,让
第三步,利用Jensen不等式
我们可以发现,经过我们Jensen不等式的处理,不等号右边的这一项,求和号已经都跑到log外面去了,虽然等号退化成为了不等号,但是好消息是,我们貌似已经有能力算右边了。
此时此刻,为了防止你不理解,我们停一下,捋一捋我们要做什么:
Q1:我们的目标是什么?
A1:是最大化不等号左边的项【即原似然函数的最大化】。那么
Q2:如何最大化左边的项?
A2:争取找到取等号的条件,并不断取右边项的极大。【因为,当我最优化我的下界时,我的似然函数也会得到更大的值。】
好了。回答了这两个问题,我们便有了问题解决的大方向:可以不断地建立似然函数【左边项】的下界(E步),然后最大化下界(M步)。不停迭代,直到我们的下界的极值逼近了函数的极值。如果你还是一头雾水,也许你会想问,不是说好的期望最大化(EM)算法么?期望在哪儿呢?最大化在哪儿呢?不要急,我们接下来就能回答这个问题
我们在第二步,“莫名其妙”地创造了一个z的分布函数
答案很简单,这样定义的话,我们实际上相当于定义了一个期望。
如果看到这里,没有太多数学底子的你心里比较虚。没关系,我用最快的方式帮你回顾一下期望。
如果
好了,现在我们重看第二步,我们可以看到,
这就是所谓的期望最大化。现在整理一下:
E-step:我们求对数似然下界函数的期望,即
M-step: 我们寻找参数
好,解决了“什么是E,什么是M”的问题,我们下一步进入“如何求解EM”这一块
还记得上面在A2处留了一个未解决的问题,即“Jensen不等式什么时候可以取等号?”
因为只有Jensen不等式取等号,才能让我的下界尽可能逼近原似然函数,我的下界才是一个尽可能“紧”的下界。也恰恰是遵循着这个原则,我要选择一个合适的分布函数Q,能让我这个等式取等号。这就解决了如何选择Q的问题。
我们就从这个点切入,首先思考一下不等式取等号的条件:不等式的等号成立,当且仅当这个值是一个常量。【因为常量的期望还是自己,所以那个E可以取得到等号】
因此,我们想要
我们继续推导,由于
我们可以看到,如果我们想让Jensen不等式取等号【换句话说,我们想得到一个似然函数非常紧的下界】,我们实际上所需要的那个分布函数
我们现在再重新看E过程:由于我们想让
因此,我们的E过程可以修正为:确定概率分布
这比之前的E过程“确定一个下界
(1)选择参数的初始值
(2)E-step:对于每一个样本i,计算
(3)M-step:计算
(4)重复步骤2,3,直至收敛【收敛条件可自己指定,如对于一个较小的正数
讲完了推导,我们来看几个实际应用的例子。现介绍一个EM算法在高斯混合模型中的应用,我们将使用EM算法求出高斯混合模型(Gaussian Mixture Model,以下简称GMM)的隐藏参数。
其实,回到我们最开始的那个问题,其实那个问题就是一个最简单的高斯混合模型:在一个数据集中,分布着多个服从不同
所有数据里包括多个小数据集——有多少个小数据集是一个多项分布(
没听懂?没关系,我反过来再说一遍,相信你就明白了。
我们假设数据是这样产生的:
从一个服从多项分布的类别里面抽取一个出来,比如选择了
所以,我们最开始的问题,类别只有两个:男生,女生,因此这个多项分布退化为了二项分布,然后,对于每一个类别男女,有各自自己的参数。那么,这里的隐变量Z,就是Z1=男,Z2=女。
好了。理解了一个最简单的高斯混合模型之后,我们来看一般情况并求解一般情况。多项分布的如果听懂了,那么二项分布简直so easy。
随机变量X是由K个高斯分布混合而成,那么GMM的分布可以写成:高斯分布的线性叠加的形式
其中,
这时,我们得到了一个等价公式,讲潜在变量显示地表出。
接下来,引入所谓的
求法也很简单,最简单的贝叶斯公式:
其实我们可以这样看,我们把
这地方有点绕,不过请多读两遍,肯定会有豁然开朗的感觉。
接下来,理论层面搞懂了,下一步就是求解极大似然了。依照上面的方法,写出极大似然的函数:
接下来,EM的两个步骤变为:
E-step:计算
M-step:计算
此时已经可以解析求解了,解析求得的解为:
好了,此时我们便得到了高斯混合模型第K个高斯分布的参数
EM算法是一种求解隐变量的数值计算方法,本文通过讲述如何在高斯混合模型中求解参数,借此推导了一遍EM算法。其实,EM算法不仅仅能应用在高斯混合模型,还可以应用在诸如隐马模型,LDA模型中,与变分,采样的结合,形成了更为强大的数值计算武器。
最后,用一种数学的方法去理解EM算法的每一步,在数学上是怎么一回事儿
假如我们现在有一个对数似然函数,我们E步和M步分别做了什么呢?
E步,就是找蓝色的这条线,即“找一个十分紧的下界”
M步,就是把这个紧的下界求极大值,让新的theta new取在原来theta old函数【原下界】的最大值上,依次迭代。
这样做的数学原理:
我们定义了一个隐变量的分布q(Z),对于任意的q(Z),以下公式成立:
其中
由于KL散度的性质【此处不再继续延伸】,KL(q||p)>=0恒成立。当且仅当
因此,我们想要等号成立,实际上是我们想把KL散度趋于0。换句话说,
在E步时,实际上是下界
而M步的时候,q(Z)保持固定,我们把下界
这样也就证明了,EM算法每一步都是让下界L函数最大化的方法,也就保证了每一步都会趋向于最优值,也就间接地证明了,EM算法会最终得到一个收敛的解。
标签:
原文地址:http://blog.csdn.net/tianbwin2995/article/details/51232732