1. 最大似然估计到EM算法
之前在介绍《最大似然估计》中提到,MLE估计的目标是产生样本集合可能性最大的参数。其核心思想是在已知结果情况下,然后寻求使该结果出现的可能性最大的条件,并以此作为估计值。假设:要根据iris数据中的花蕊长度来估计花瓣的长度,我们可以利用最小二乘来估计参数。根据极大似然估计的定义,我们要获得产生样本可能性最大的参数θ,则似然函数可以记为:
ℓ(θ)=i=1∏m2πσ1exp(−2σ(y(i)−θx)2)
由于线性回归服从独立同分布的假设,因此,我们可以忽略σ的影响,直接估计θ。
但是,我们假设如果知道不仅花蕊的长度与花瓣的长度有关,同时,花的种类对花瓣的长度有影响,即不同种类花的花瓣长度可能服从不同分布,我们仍然在独立同分布的假设下采用极大似然估计求解是不合适的。因为,不同种类花的花瓣与花蕊长度的误差项不服从同一正态分布,即不同分布的sigma不同,因此,我们无法忽略该参数对目标函数的影响,需要同时估计两个参数θ和σ。但是假设我们如果无法获知各个样本隶属的花的类别,即无法通过参数σ的先验知识估计参数σ,那么我们如何来估计花瓣的长度呢?
总结上面的问题,我们发现,(1)我们不知道每个样本隶属于的花的类别;(2)我们也不知道花瓣与花蕊的线性关系是什么。从数学角度考虑这些问题,可以映射成:(1)抽样样本不知道是从哪个分布抽取的;(2)每个分布下的参数是什么。
可以确认的是,只有当我们知道每个样本属于哪个分布,我们才会准确的估计每个分布下花瓣与花蕊长度的线性关系。但是,各个类别之间的样本混在一起,我们无法获知哪个样本属于哪个类别,所以就无法准确估计各分布的参数。反之,只有当我们获得各个分布参数的准确估计下,我们才能计算出各样本隶属于哪个类别。因此,无法直接采用极大似然估计求解。这个问题在数学上是一个典型的循环依赖问题,即“鸡生蛋,蛋生鸡”的问题。想要解决循环依赖问题,我们可以先给定任意一个参数θ初始值,这样,通过初始值来估计参数σ,然后再用估计出的参数σ再次估计参数θ,通过多次的循环迭代,最终收敛到一个最优解。
EM算法(Expectation Maximization)的核心思想就是这样,假设我们要估计初始状态未知的两个参数,同时两个参数间存在依赖关系,那么我们就可以先赋予其中一个参数初始值,得到另一个参数的估计值,然后在另一个参数估计值的基础上,重新估计第一个参数,直至收敛。在上面的问题中,如果我们先给出每个花的类别下花瓣和花蕊长度间的线性关系(θ),那么我们可以根据θ值计算每个样本可能属于的花的类别(花瓣长度和花蕊长度的线性误差小的类别),这个过程在EM算法中属于Expectation步骤。通过Expectation步,每个样本都有所属类别,这样我们就可以将样本分成几部分,然后采用极大似然估计的思想,对每个部分中的样本重新估计参数,即估计各类别下花瓣和花蕊长度间的线性关系,这个就是EM算法中的Maximization步骤。如此迭代,直至各个参数不在发生变化即可停止迭代。
一般情况下,我们把每个样本隶属于哪种花对应的参数称为隐含变量,因为,如果没有隐含变量的话,我们可以很直观的求解待估计参数,当存在隐含变量后,本来很简单求解的问题变得复杂。因此,EM算法存在的意义就在于此,可用于包含隐含变量的参数估计。但是,按照最大似然的思想,我们每次估计会使得目标函数上升,最终达到极值,而EM算法怎样保证算法收敛?怎样保证可以获得目标函数的极值?这些问题就必须从数学角度进行推导了~
2. EM算法原理
假设给定训练集X=x(1),x(2),…,x(m),我们希望求解包含隐含变量Z=z(1),z(2),…,z(m)的目标函数f(x,z;θ)中的参数θ。根据最大似然估计,我们可以获得:
θ=argmaxθℓ(θ;X)=argmaxθlogZ∑f(X,Z;θ)=argmaxθi=1∑mlogz(i)∑f(x(i),z(i);θ)
对于上述公式,想要求解log∑Zf(X,Z;θ)形式的极值往往非常困难,如果我们可以观察到隐藏变量z的话,则可以消除∑符号,这样求解极值就容易的多(采用梯度下降算法)。但实际上我们没法获得z的分布或者z值,只可能通过给定θ的情况下,通过求解后验概率P(z|x;θ)获得参数z的估计值。
我们令L(θ)=log∑ZP(X,Z;θ),其中Z为隐含变量。很明显,求解该log嵌套∑形式的极值很麻烦,因此不妨引入概率分布Q(Z),其中∑ZQ(Z)=1,且Q(Z)≥0,得到:
L(θ)=logZ∑P(X,Z;θ)=logZ∑Q(Z)Q(Z)P(X,Z;θ)
a. 离散变量的期望
对于Q(Z)P(X,Z;θ)而言,隐含变量Z为离散变量,如果我们假定Q(Z)正好是离散随机变量Z的概率分布函数,且Y=g(Z)=Q(Z)P(X,Z;θ)为连续函数,那么:
E(Y)=E[g(Z)]=Z∑g(Z)Q(Z)
如果Z是连续随机变量,那么:
E(Y)=E[g(Z)]=∫−∞∞g(Z)Q(Z)dZ
所以:
L(θ)=logZ∑Q(Z)Q(Z)P(X,Z;θ)=logEZ[g(Z)]=logEZ[Q(Z)P(X,Z;θ)]
b. Jensen不等式
如果任意函数f为凸函数,X为随机变量,则E[f(X)]≥f(E[X]),若上式取等号当且仅当X为常数,若任意函数f为凹函数,则不等式反向。因为log函数为严格凹函数,所以对于任意分布Q,
L(θ)=logEZ[Q(Z)P(X,Z;θ)]≥EZ[logQ(Z)P(X,Z;θ)]
c. 凹函数的下界函数
对于任意凹函数f,假设我们想求argmaxθf(θ),对于一般优化算法而言,我们需要保证每次迭代得到的f(θt+1)一定比f(θt)要大,这样才能保证优化过程呈单调逼近于极大值。
因此,如果对于任意t次迭代,我们能找到f(θ)的下界函数gθt(θ),满足f(θ)≥gθt(θ),且f(θt)≥gθt(θt)那么令θt+1:=argmaxθgθt(θ),此时,gθt(θt+1)=maxθgθt(θt),即会满足每次迭代成单调趋势:
f(θt+1)≥gθt(θt+1)≥gθt(θt)=f(θt)
对于t+1次迭代,我们仍然可以找到函数gθt+1(θ),满足f(θt+2)≥gθt+1(θt+2)≥gθt+1(θt+1)=f(θt+1),据此计算出θt+2。
再回到EM算法中,如果我们可以找到L(θ)的下界函数,并且让不等式在θt处取等号,即可使得每次迭代的目标函数更优。我们已知L(θ)≥EZ[logQ(Z)P(X,Z;θ)],所以可以看出EZ[logQ(Z)P(X,Z;θ)]为下界函数,但是我们还要让下界函数在θ=θt处取等号,即要求Q(Z)P(X,Z;θ)为常数。若要使得Q(Z)∝P(X,Z;θt),且∑Q(Z)=1,则根据全概率公式可知,仅当Q(Z)=∑ZP(X,Z;θt)P(X,Z;θt)=P(Z|X;θt)时,满足Q(Z)与P(X,Z;θt)呈正比关系。
因此,我们令Q(Z)=P(Z|X;θt),此时:
L(θ)≥EZ[logQ(Z)P(X,Z;θ)]=EZ∼Q=Z∣X;θt[logP(Z∣X;θt)P(X,Z;θ)]
显然,上式在θ=θt时,L(θt)=EZ|X;θt[logP(Z|X;θt)P(X,Z;θt)]=EZ|X;θt[log∑ZP(X,Z;θt)]可以取等号。
综上所述,EZ|X;θt[logP(Z|X;θt)P(X,Z;θ)]为L(θ)的下界函数,我们可以通过每次迭代计算找到满足:
θt+1:=argmaxθEZ|X;θt[logP(Z|X;θt)P(X,Z;θ)]
d. θ更新公式推导
找到目标函数的下界函数gθt(θ)后,我们可以通过更新θt+1:=argmaxθgθt(θ)实现每次的迭代,并可以保证迭代过程呈单调变化趋势,最终收敛。
我们可以再对更新公式进行变换,使得计算更为简便:
θt+1=argmaxgθt(θ)=argmaxEZ|X;θt[logP(Z|X;θt)P(X,Z;θ)]=argmaxZ∑P(Z|X;θt)logP(Z|X;θt)P(X,Z;θ)=argmaxZ∑[P(Z|X;θt)logP(X,Z;θ)−P(Z|X;θt)logP(Z|X;θt)](∵与θ无关)=argmaxZ∑[P(Z|X;θt)logP(X,Z;θ)=argmaxEZ|X;θtlogP(X,Z;θ)。
3. EM算法过程
根据上面的推导过程,我们可以定义EM算法的Expectation步和Maximization步。
Repeat until converge{
- E-step:计算P(Z|X;θt)得到下界函数
L(θ)=EZ|X;θtlogP(X,Z;θ)=Z∑P(Z|X;θt)logP(X,Z;θ)
- M-step:更新θ
θt+1:=argmaxθEZ|X;θtlogP(X,Z;θ)
}
4. 总结
总的来说,Expectation Maximization算法是一个比较难懂的算法,中间的推导过程较为复杂,可能学习一遍两遍很难把这个算法吃透,需要比较深入的统计学知识才能搞明白,这篇博文也写了三天才把算法原理过程写完。
EM算法是用于对含有隐含变量的目标函数做最大似然估计的一种方法。EM算法的应用特别广泛,例如,Kmeans聚类,高斯混合模型,隐马尔可夫模型等。后面的博文我会专门撰写一篇EM算法实例,用于具体说明EM算法求解过程。