EM算法——期望极大值算法
- 1. EM算法的简介及案例介绍
- 2. EM算法的推导
- 3. EM算法
- 3.1 算法步骤:
- 3.2 EM算法的收敛性
- 4. EM算法应用——求解高斯混合模型(GMM)的参数
- 4.1 高斯混合模型(Gaussian mixture model,GMM)
- 4.2 EM算法估计高斯混合模型的参数
- 5.EM算法的推广——广义期望极大算法(GEM)
本文内容主体是基于李航老师的《统计学习方法》第二版中EM算法章节的内容,有兴趣的同学可以自行参考书籍资料。其中个人觉得不是很直观的部分进行了适当的解释,解释仅属于个人理解,若觉得解释更加难以理解的同学可以自行忽略。代码部分有时间再补充。若文中有编辑错误,烦请指正,谢谢。
1. EM算法的简介及案例介绍
EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。注意,EM算法不是一种机器学习的模型,只是一种求参数的算法。EM算法的每次迭代都由两步组成:E步,求期望;M步,求极大值。所以该算法才被称为期望极大算法(Expectation Maximization algorithm)。
从上述描述可知,EM算法求解极大似然估计和其他模型很不同的一点是,它可以求解含有隐变量的概率模型参数。通常,概率模型的变量都是可观测变量,这时就可以根据给定的数据,直接使用极大似然估计法或贝叶斯估计法求解模型参数。但是,如果概率模型涉及到的变量其中有不可观测的变量怎么办?这个不可观测的变量就叫做隐变量。所谓不可观测,直观理解就是对于目标问题并没有给出该变量对应的任何信息,一切都是隐于深处的。
还是那句话,概念总是深奥且不易理解的,所以还是举个例子来加强对概念的理解。
案例:
假设有两个形状不规则的硬币A和B,我们希望求出每个硬币抛出正面的概率。目前,我们已知五组抛硬币的实验结果,每组抛10次,结果如下表。
实验组号 | 结果1(H表示正,T表示反) | 结果2("A:"表示用A硬币做该组实验,H表示正,T表示反) |
1 | H T T T H H T H T H | B:H T T T H H T H T H |
2 | H H H H H H T H H H | A:H H H H H H T H H H |
3 | H T H H H H T H H H | A:H T H H H H T H H H |
4 | H T T T H T T H T H | B:H T T T H T T H T H |
5 | H H T H H H T H T H | A:H H T H H H T H T H |
如果问题的背景如表中结果2的类型,也就是每组实验都知道是用哪个硬币抛的,那么根据极大似然估计的方法,很容易就能求出:
但是问题如果稍微做一点改变,实验结果是如结果1所示,也就是这时候,你只有5组正反的结果,却不知道每组是用哪个硬币做的实验,这时候问题就来了,极大似然估计是没法用的,因为这个问题存在一个隐变量,也就是你在分析结果的时候需要思考,这组结果是用A硬币做的还是B硬币做的?而这个事件,就是一个隐随机变量,这时候,EM算法就能派上用场了。
其实,现实中,包含隐变量的问题是很常见的,所以EM算法的应用是很广泛的。那么针对上述问题,EM算法是如何求解的呢?
首先,我们按随便取初值,然后拿出一组结果数据(以第一组为例),由于不知道该结果是用哪个硬币做的,所以我们需要计算每个硬币产生这种结果的概率:
那么,结果1是由A硬币或B硬币产生的概率就是:
同理,可以计算出其他结果的类似概率,如下表。
组号 | 1 | 2 | 3 | 4 | 5 |
A硬币 | 0.45 | 0.80 | 0.73 | 0.35 | 0.65 |
B硬币 | 0.55 | 0.20 | 0.27 | 0.65 | 0.35 |
当得到每组结果是由A硬币或B硬币产生的概率后,就可以根据极大似然估计的方法来进行估计,首先我们可以求出A硬币和B硬币分别对每组结果中,出现正反次数的期望(E步),如下表:
组号 | 1 | 2 | 3 | 4 | 5 | 总计 |
A硬币 | 0.45×5H=2.2H,0.45×5T=2.2T | 7.2H,0.8T | 5.9H,1.5T | 1.4H,2.1T | 4.5H,1.9T | 21.3H,8.6T |
B硬币 | 0.55×5H=2.8H,0.55×5T=2.8T | 1.8H,0.2T | 2.1H,0.5T | 2.6H,3.9T | 2.5H,1.1T | 11.7H,8.4T |
然后按极大似然估计的方法就可以求出新一轮的参数:
最后,将新得到的继续带入最开始的步骤,重新计算,又可以得到
,反复迭代,最终达到终止条件或者结果收敛为止。最后,可以得到
。这就是EM算法得到的参数估计结果。
2. EM算法的推导
,条件分布是
。Y和Z连在一起称为完全数据,单独的Y又称为不完全数据。
面对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数的对数似然函数,即求下式的极大值:
上式中很难求解的部分一是带有不可观测数据Z的变量;二是具有包含求和公式的对数。稍微解释一下上式中的各项:
表示已知参数
的情况下,可观测数据Y取某一值的概率,由于问题包含隐变量,且隐变量不可观测,也就导致了
其实是无法直接求解的,而是要将其进行分解;
表示,在已知参数
的情况下,遍历所有隐变量Z的取值情况的变量Y取某一值的概率。很明显,Z是所有隐变量的集合,那么遍历所有Z的情况后,其概率之和自然就与
相同了,这一步也就是把
分解成了一个个子项,每个子项都与过程中的隐变量有关。
这其实就是条件概率公式,数学公式很好理解,但是其实
两项都无法求解,因为隐变量是无法确切得到的。
的极大值的。假设在第i次迭代后
的估计值是
。EM算法希望保证每一次新的估计值
都能使
增加,即
,这样就能逐步达到极大值。因此,考虑两者之差:
利用Jensen不等式(,其中
)得到其下界:
即是
的一个下界,且有
。所以,理论上,任何可以让
增大的
,也可以让
增大。为了让
尽可能的增大,所以选择新一轮迭代的参数值为:
因此,为了求,忽略
中所有与
无关的常数项(留下
):
记,称为Q函数,是可以求解为关于
的表达式,并根据表达式求解极大值的。
下图是和
的曲线(来自李航《统计学习方法》),根据上述推导,在
处,两者是相同的,
取极大值后,
也会上升。但是从图中也可以看出,EM算法并不能保证找到全局最优解。
3. EM算法
3.1 算法步骤:
- 输入:观测变量Y,隐变量Z,联合分布
,条件分布
- 输出:模型参数
- 选择参数的初值
,开始EM迭代;
- E步:记
为第i次迭代参数
的估计值,在第i+1次迭代的E步,计算Q函数:
- M步:求使
达到极大值的
,确定第i+1次迭代的参数估计值
- 重复第2,3步,直到收敛,或达到设置迭代停止条件(通常是
是极小的正数)
EM算法也可以用在无监督学习中,当训练数据只有输入,没有对应标签时,需要学习模型的任务称为无监督学习。EM算法可以把无监督学习的训练数据看作是联合概率分布P(X,Y)产生的数据,其中X是可观测数据,Y是不可观测数据。
3.2 EM算法的收敛性
定理1:设为观测数据的似然函数,
为EM算法得到的参数估计序列,
为对应的似然函数序列,则
是单调递增的,即:
。
证明:
令和
代入上式可得:
要证明,则根据log函数单调性可知,上式右端是非负的即可。根据Q函数的定义,新选的
需要使Q函数达到极大值,因此显然有:
所以,定理1得证。
定理2:设为观测数据的对数似然函数,
为EM算法得到的参数估计序列,
为对应的对数似然函数序列。则:
1).如果有上界,则
收敛到某一值
2).在函数与
满足一定条件下,由EM算法得到的参数估计序列
的收敛值
是
的稳定点。
第一条的证明显然,再根据
的单调性就可以得到上述结论;
第二条的证明较为复杂,可参见文献“On the convergence properties of the EM algorithm”。
4. EM算法应用——求解高斯混合模型(GMM)的参数
4.1 高斯混合模型(Gaussian mixture model,GMM)
高斯混合模型是指某随机变量的概率分布模型是多个不同高斯模型的加法模型:
其中,是系数,
;
是高斯分布密度,
4.2 EM算法估计高斯混合模型的参数
,其中
。
1).首先要明确隐变量,写出完全数据的对数似然函数。
可以这么理解高斯混合模型得到的数据,第一步是根据概率选择第k个高斯分布分模型
,然后根据该分模型得到观测数据。因此,已知的是观测数据,隐参数是该数据是来自第几个分模型。所以设定隐变量如下:
综上,完全数据就是
所以,完全数据的对数似然函数为:
理解可知,中,只有一个为1,其他全为0,而
是在
时,用对应的分模型求出的,所以上式可以写成:
其中,,注意,
中是遍历下标j,而不是下标k。
所以,完全数据的对数似然函数即为:
2).EM算法E步,确定Q函数
其中,记
此处j是固定量,由于中,只有一个为1,其他全为0,所以期望
是已知观测值和参数时,选中特定分模型的概率。
注意,上述推导中分母求和的变量原书里使用的是’k’,很容易和分子里的k混起来,不建议按原书的写法,容易引起歧义。另外,求解所用到的参数
等都是当前模型下已知的参数,因此
是可求的,同理下文中的
也是可求的。
将和
代入Q函数中可得
3). 确定EM算法的M步
求函数对参数
的极大值,从而得到新一轮迭代的模型参数:
用和
表示参数
中的具体参数。求
只需将
对求
偏导并令其为0即可。
注意,上述推导中参数变量下标原书里使用的是’k’,求导时很容易Q函数里的求和下标k混起来,不建议按原书的写法,容易引起歧义。所以此处用t下标代替,下述推导也同样如此。
对的求导略微复杂,因为该求导是有约束条件的求导,约束条件为
。因此,需要使用拉格朗日乘子法求解极值。首先,去除
中与
无关的项:
然后,用拉格朗日乘子法构造:
对
求导可得:
上述推导中,有。将
代入偏导方程
可得:
4).重复上述2,3步,直到参数收敛即可。
算法步骤总结:
- 输入:观测数据
,高斯混合模型;
- 输出:高斯混合模型参数;
1). 设置参数的初始值,准备开始迭代;
2).E步:根据当前模型参数,计算分模型对观测数据
的响应度,即观测数据
是从分模型
中产生的概率;
3).M步:计算新一轮迭代的模型参数;
4).重复上述2,3步,直到参数收敛即可。
5.EM算法的推广——广义期望极大算法(GEM)
待补充