白话EM算法
EM算法其实就是一种函数的近似求解方法,它是一种迭代算法,在很多算法中都有着重要的应用,比如HMM的学习问题,GMM,语音识别中的MM-GMM以及主题模型PLSA等等,所以掌握EM的求解方式还是很必要的。本文参考李航博士的《统计学习方法》,但前提是需要了解EM以及高斯混合分布的基本概念,我不从最基础说起,希望能说的明白。
EM算法可以解决极大似然估计参数的求解方法,只不过当问题的分布包含一个隐藏变量的时候,无法通过直接取对数,再求导得出极值,用这个极值作为模型的参数。所以要想用极大似然估计的思想,就必须想一种办法来求解参数,这就是EM算法。既然是极大似然估计的思想,那就先简单说一下极大似然估计。
极大似然估计
极大似然估计是频率学派的思想,频率学派他们认为随机事件的分布都是一定的,只不过不知道而已,要想求出这个分布(假设为,就是解出分布的参数),就需要从整体中抽出一些样本
,由于频率学派认为,分布是固定的,所以可以直接连乘,
,然后取对数,再求导,得极值
,
就认为是最可能导致这个样本出现的参数。这就是极大似然估计的思想。这里没有详细叙述极大似然估计,想细究的可以参考极大似然估计。
极大似然估计就是估计最有可能导致这些结果(样本)出现的原因(参数)。故:
上述我们直接取对数求导的方法,在有时候可行的,比如,我们的样本服从的分布是单一分布,比如服从二项分布,或者正态分布等等,这种是可行的。那如果我门样本服从的分布不是单一分布,比如高斯混合分布,每一个样本来自哪个高斯分布你都不知道,你怎么连乘?比如OSR中帧与音素的对应关系,或者大家常说的身高的例子等等,他们都是服从正态分布的,以身高为例,因为常见,所以好理解。
首先你知道人的身高服从正态分布,男女的正态分布不一样,也就是
是未知的,如下图。
然后给你一堆身高的数据,但是不知道这些数据对应的是男是女,那么让你估计一下
模型的参数。
模型参数估计,肯定不能再直接用某个高斯分布直接相乘再求导,因为每个数据属于哪个分布你都不知道。因为这里包含了一个隐藏的变量性别,所以要换一种办法来求解了。
模型参数估计,是一个无监督的过程,非常类似于KMeans,比如要把数据分成
类,KMeans的估算过程:
1、给定
个中心点,计算每个数据点到这
个中心点的距离,找出距离最近的中心点
,那么这个该数据就属于类别
。
2、经过步骤1之后,现在就有
个类别,每个类别拥有一些数据。现在要重新计算中心点,就是把每个类别的数据求均值,作为新的中心点。
3、重复1、2,直至中心点不在移动,或者移动的距离小于某个阈值,则停止。
举个KMeans工作的小例子,来源HMM-GMM。
从KMeans的过程,如上图,你可以看到,这是一步一步迭代的过程。也是一样,给定一些初值
,根据这个初值,利用高斯分布,求出每个数据属于每个分布的概率,当然,那个概率大,就属于那个分布。然后根据每个分布的数据重新估算出
,然后再重新估计,直至参数变化不大。所以两者思路是一样的,
当然估计参数不是上述那么简单,但思想是一样的。
参数估计的过程就是用EM来更新参数的。将GMM的目的,就是为了让你明白,有了隐含变量,就不能直接求解,但是思想还是极大似然估计,只不过这个表达式,不用取对数求导等于0的方式来解,而换成了EM而已。接下来,就来讲解EM算法。将按照李航博士的《统计学习方法》符号表示方法,尽量我自己阐述。
尽量白话EM算法
EM算法本质上就是极大似然估计,它符合极大似然估计的思想,只不过它是一种迭代算法,它是通过迭代来逼近极大似然估计值。下面就从极大似然估计来推导出EM算法。
假设你的观测变量数据是
,隐藏变量数据是
,模型分布为
,待估计的参数是
。
1、首先根据条件写出似然估计的函数表达式:
2、取对数
从这个式子,可以看出,求极大似然估计时,你无法利用求导等于等0的方式求出参数,因为有隐藏变量
存在,也求不出来参数
。我们说过EM算法是一个迭代的方法,那么它怎么迭代去逼近极大似然估计呢?
一般地我们求
1、假如在的某点
我们找到一个
使得,
,且在某一点
处有
,那么
就是
的一个最大下界,如下图红色曲线。
2、然后我们找下界的极大值,以极大值对应的点。
3、重复1、2,直至参数不在变动或者小于某个阈值即可。
那么,这一过程,就可以用图像描述为(自己画的,比较丑,将就着看吧):
上图就是EM的整个过程,若你只想了解EM的工作的大概过程,到这里即可。既然是算法,就必须要有严谨的推理,那么接下来,就是理论推导部分。
Jensen不等式
设
是定义在实数上的函数,若对于所有的实数
,
的二次导数大于等于0,则
是凸函数(简记:上凸下凹,上下是指的是函数的开口)。
则Jensen不等式:若
是凸函数,
是随机变量,那么:
。当且仅当
是常量时,等号成立。
(简计:函数的期望大于期望的函数),Jensen不等式很简单,比较容易理解,在这里不过多阐述,只以下图简单地展示一下。
EM算法通过不断地极大化下界,从而来实现对极大似然的估计。假设通过第次迭代之后得到的模型参数为
,既然我们是一个不断极大化的过程,那么我们肯定是希望,第
次迭代得到的值大于第
得到的值,即
,就是通过这样不断地迭代,来达到
的极大值,那么求第
次的参数
,就可以由差的形式来表述:
这里做一个恒等变换,这样就是把上式的第一项中的式子变为一个函数的期望,其中
表示概率,
就是对应的函数,由于
函数是一个凸函数,那么上式用Jensen不等式求解下界:
把上式的移到不等式右侧,那么我们的下界就找到了
,令
则有 且在
处的
,故
是
的一个下界,那么剩下的我们就是去极大化这个下界,因为使得
增大的
同样会使得
增大,我们每次选择的
就要使得
尽可能的大,因此我们才说要极大化这个下界。我们在极大化
的过程中,对于变量
来说是常量的项,都可以被省略。则:
在求下界的过程中,我们得到函数,这是所有EM算法都共有的步骤,求下界的目的就是为了得到这个
函数,极大化下界就是极大化
函数。
函数是所有需要用EM算法来求解问题的共有步骤,每个问题的
函数都不同的,比如GMM和HMM学习问题的
函数是不一样的,但是形式是一样的,所以求
函数是关键,解
函数不难,按照正常的方法极大化
函数即可。
EM算法中E步就是求下界,也就是等价于求
函数;M步就是极大化这个
函数
(
函数)在给定观测数据
和当前参数
下,完全数据的对数似然函数
关于对未观测数据
的条件概率分布
的期望称之为
函数
EM算法对初值是敏感的,就是说有可能找到的不是的全局极大值,有可能是局部极小值,如下图。
至此EM算法大概算是交代完了,对EM算法的收敛性,这列没有继续证明,看懂了EM思想,这个就不是什么难点。本文是对《统计学习方法》的个人理解。如有不正确之处,欢迎指正。
参考
李航《统计学习方法》