白话EM算法

EM算法其实就是一种函数的近似求解方法,它是一种迭代算法,在很多算法中都有着重要的应用,比如HMM的学习问题,GMM,语音识别中的MM-GMM以及主题模型PLSA等等,所以掌握EM的求解方式还是很必要的。本文参考李航博士的《统计学习方法》,但前提是需要了解EM以及高斯混合分布的基本概念,我不从最基础说起,希望能说的明白。


EM算法可以解决极大似然估计参数的求解方法,只不过当问题的分布包含一个隐藏变量的时候,无法通过直接取对数,再求导得出极值,用这个极值作为模型的参数。所以要想用极大似然估计的思想,就必须想一种办法来求解参数,这就是EM算法。既然是极大似然估计的思想,那就先简单说一下极大似然估计。

极大似然估计

极大似然估计是频率学派的思想,频率学派他们认为随机事件的分布都是一定的,只不过不知道而已,要想求出这个分布(假设为白话EM算法,就是解出分布的参数),就需要从整体中抽出一些样本白话EM算法,由于频率学派认为,分布是固定的,所以可以直接连乘,白话EM算法,然后取对数,再求导,得极值白话EM算法白话EM算法就认为是最可能导致这个样本出现的参数。这就是极大似然估计的思想。这里没有详细叙述极大似然估计,想细究的可以参考极大似然估计

极大似然估计就是估计最有可能导致这些结果(样本)出现的原因(参数)。故:

白话EM算法

上述我们直接取对数求导的方法,在有时候可行的,比如,我们的样本服从的分布是单一分布,比如服从二项分布,或者正态分布等等,这种是可行的。那如果我门样本服从的分布不是单一分布,比如高斯混合分布,每一个样本来自哪个高斯分布你都不知道,你怎么连乘?比如OSR中帧与音素的对应关系,或者大家常说的身高的例子等等,他们都是服从正态分布的,以身高为例,因为常见,所以好理解。

首先你知道人的身高服从正态分布,男女的正态分布不一样,也就是白话EM算法是未知的,如下图。

然后给你一堆身高的数据,但是不知道这些数据对应的是男是女,那么让你估计一下白话EM算法模型的参数。

白话EM算法
GMM混合分布

白话EM算法模型参数估计,肯定不能再直接用某个高斯分布直接相乘再求导,因为每个数据属于哪个分布你都不知道。因为这里包含了一个隐藏的变量性别,所以要换一种办法来求解了。白话EM算法模型参数估计,是一个无监督的过程,非常类似于KMeans,比如要把数据分成白话EM算法类,KMeans的估算过程:

1、给定白话EM算法个中心点,计算每个数据点到这白话EM算法个中心点的距离,找出距离最近的中心点白话EM算法,那么这个该数据就属于类别白话EM算法

2、经过步骤1之后,现在就有白话EM算法个类别,每个类别拥有一些数据。现在要重新计算中心点,就是把每个类别的数据求均值,作为新的中心点。

3、重复1、2,直至中心点不在移动,或者移动的距离小于某个阈值,则停止。

举个KMeans工作的小例子,来源HMM-GMM

白话EM算法
KMeans过程

从KMeans的过程,如上图,你可以看到,这是一步一步迭代的过程。白话EM算法也是一样,给定一些初值白话EM算法,根据这个初值,利用高斯分布,求出每个数据属于每个分布的概率,当然,那个概率大,就属于那个分布。然后根据每个分布的数据重新估算出白话EM算法,然后再重新估计,直至参数变化不大。所以两者思路是一样的,

当然估计白话EM算法参数不是上述那么简单,但思想是一样的。白话EM算法参数估计的过程就是用EM来更新参数的。将GMM的目的,就是为了让你明白,有了隐含变量,就不能直接求解,但是思想还是极大似然估计,只不过这个表达式,不用取对数求导等于0的方式来解,而换成了EM而已。接下来,就来讲解EM算法。将按照李航博士的《统计学习方法》符号表示方法,尽量我自己阐述。

尽量白话EM算法

EM算法本质上就是极大似然估计,它符合极大似然估计的思想,只不过它是一种迭代算法,它是通过迭代来逼近极大似然估计值。下面就从极大似然估计来推导出EM算法。

假设你的观测变量数据是白话EM算法,隐藏变量数据是白话EM算法,模型分布为白话EM算法,待估计的参数是白话EM算法

1、首先根据条件写出似然估计的函数表达式:

白话EM算法

2、取对数

白话EM算法

从这个式子,可以看出,求极大似然估计时,你无法利用求导等于等0的方式求出参数白话EM算法,因为有隐藏变量白话EM算法存在,也求不出来参数白话EM算法。我们说过EM算法是一个迭代的方法,那么它怎么迭代去逼近极大似然估计呢?


一般地我们求白话EM算法

1、假如在白话EM算法的某点白话EM算法我们找到一个白话EM算法使得,白话EM算法,且在某一点白话EM算法处有白话EM算法,那么白话EM算法就是白话EM算法的一个最大下界,如下图红色曲线。

白话EM算法
找到最大下界

2、然后我们找下界的极大值,以极大值对应的点白话EM算法

3、重复1、2,直至参数白话EM算法不在变动或者小于某个阈值即可。

那么,这一过程,就可以用图像描述为(自己画的,比较丑,将就着看吧):

白话EM算法
一幅动图说明EM的计算过程

上图就是EM的整个过程,若你只想了解EM的工作的大概过程,到这里即可。既然是算法,就必须要有严谨的推理,那么接下来,就是理论推导部分。


Jensen不等式

白话EM算法是定义在实数上的函数,若对于所有的实数白话EM算法白话EM算法的二次导数大于等于0,则白话EM算法是凸函数(简记:上凸下凹,上下是指的是函数的开口)。  

则Jensen不等式:若白话EM算法是凸函数,白话EM算法是随机变量,那么:白话EM算法。当且仅当白话EM算法是常量时,等号成立。

(简计:函数的期望大于期望的函数),Jensen不等式很简单,比较容易理解,在这里不过多阐述,只以下图简单地展示一下。

白话EM算法
Jensen不等式的简单示例

EM算法通过不断地极大化下界,从而来实现对极大似然的估计。假设通过第白话EM算法次迭代之后得到的模型参数为白话EM算法,既然我们是一个不断极大化的过程,那么我们肯定是希望,第白话EM算法次迭代得到的值大于第白话EM算法得到的值,即白话EM算法,就是通过这样不断地迭代,来达到白话EM算法的极大值,那么求第白话EM算法次的参数白话EM算法,就可以由差的形式来表述:

白话EM算法

这里做一个恒等变换,这样就是把上式的第一项白话EM算法中的式子变为一个函数的期望,其中白话EM算法表示概率,白话EM算法就是对应的函数,由于白话EM算法函数是一个凸函数,那么上式用Jensen不等式求解下界:

白话EM算法

把上式的白话EM算法移到不等式右侧,那么我们的下界就找到了白话EM算法,令

白话EM算法

则有 白话EM算法且在白话EM算法处的白话EM算法,故白话EM算法白话EM算法的一个下界,那么剩下的我们就是去极大化这个下界,因为使得白话EM算法增大的白话EM算法同样会使得白话EM算法增大,我们每次选择的白话EM算法就要使得白话EM算法尽可能的大,因此我们才说要极大化这个下界。我们在极大化白话EM算法的过程中,对于变量白话EM算法来说是常量的项,都可以被省略。则:

白话EM算法

在求下界的过程中,我们得到白话EM算法函数,这是所有EM算法都共有的步骤,求下界的目的就是为了得到这个白话EM算法函数,极大化下界就是极大化白话EM算法函数。白话EM算法函数是所有需要用EM算法来求解问题的共有步骤,每个问题的白话EM算法函数都不同的,比如GMM和HMM学习问题的白话EM算法函数是不一样的,但是形式是一样的,所以求白话EM算法函数是关键,解白话EM算法函数不难,按照正常的方法极大化白话EM算法函数即可。

EM算法中E步就是求下界,也就是等价于求白话EM算法函数;M步就是极大化这个白话EM算法函数

白话EM算法函数)在给定观测数据白话EM算法和当前参数白话EM算法下,完全数据的对数似然函数白话EM算法关于对观测数据白话EM算法的条件概率分布白话EM算法的期望称之为白话EM算法函数

白话EM算法

EM算法对初值是敏感的,就是说有可能找到的不是白话EM算法的全局极大值,有可能是局部极小值,如下图。

白话EM算法
EM算法初值敏感

 

至此EM算法大概算是交代完了,对EM算法的收敛性,这列没有继续证明,看懂了EM思想,这个就不是什么难点。本文是对《统计学习方法》的个人理解。如有不正确之处,欢迎指正。


参考

李航《统计学习方法》