![39cf0044b7af191242aa5aea96b436cc.png](https://i-blog.csdnimg.cn/blog_migrate/2e3166dea39299e57642d88a1afece60.png)
目录
一、EM算法概述
二、EM算法的原理
三、EM算法的推导与求解
一、EM算法概述
EM算法即最大期望算法(Expectation-Maximization algorithm, EM),是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法,通常作为牛顿迭代法(Newton-Raphson method)的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计。
因其迭代规则容易实现并可以灵活考虑隐变量,EM算法被广泛应用于处理数据的缺失值,以及很多机器学习算法,包括高斯混合模型(Gaussian Mixture Model, GMM)和隐马尔可夫模型(Hidden Markov Model, HMM)的参数估计,是机器学习中使用最多的十大算法之一。
二、EM算法的原理
在正式开始介绍EM算法的原理之前,我们先来看这样一个例子。
现在我们手头有一些东北人的身高的数据{x1,x2,…,xm},同时我们也知道身高的概率模型是高斯分布,那么我们利用极大化似然函数的方法可以估计出高斯分布的两个参数,均值
假设θ为待估计的参数,此时有:
![4a1081be8c1f4663caa3c717824218ac.png](https://i-blog.csdnimg.cn/blog_migrate/8f1a58fc4f50f8c3db96677efccb85ec.png)
但正当我们要开始估算东北人身高的均值时,负责数据录入的人突然来告诉我,他在录入数据时不小心将一些四川人的身高数据也录了进去,四川人的身高符合另一个均值为
那么有没有办法可以从这一堆数据中估计出东北人的身高均值呢?一种很直接的想法是将这一堆数据中的东北人和四川人分开来,之后用东北人的数据来估计东北人的身高均值。为此,我们引入了变量z,用z=0和z=1分别代表身高数据属于东北人和四川人。
此时我们求解的似然函数变为
![2fae2aee8e6976f832ae186c8ff456f3.png](https://i-blog.csdnimg.cn/blog_migrate/452dc7ad090f3cd05533715727883b01.png)
这个想法一听很简单,但却很难实现,因为我们并不知道到哪些样本属于东北人,也不知道哪些样本属于四川人,因此上式中的z对我们来说是一个隐变量,即我们无法观察到的变量。
现在总结一下我们遇到的问题:假如我们想要求得θ,那么我们必须要先知道每个样本z的取值;而如果我们想要知道每个样本z的取值,我们又需要先知道θ才能估算出每个样本z取哪个值的概率最大。
为了解决以上问题,EM算法通过先假设一个θ的值(这里我们记为θ0),估算出每个样本z的取值,这是EM算法的E步。然后用估算出的z值代入上面的似然函数,使其最大化,求出一个新的θ值(这里记为θ1),这是EM算法的M步。之后又利用θ1估计出z值……如此循环迭代,直至模型参数基本无变化,算法收敛,这时我们便找到了合适的模型参数,在上面的例子中也就是东北人身高的均值。
三、EM算法的推导与求解
在了解了EM算法的原理后,我们再来看在数学上它是如何推导求解的。
EM算法的原理为先根据假设的θ,估计出z;然后根据z利用最大似然函数更新θ,之后循环迭代直至收敛。因此EM算法求解的关键是“根据θ求出z”和“根据z求出θ”,关于后者通过最大化似然函数即可求解,难点主要在于“根据θ求出z”,因此本节主要对该部分的推导与求解过程进行介绍。
我们先来考虑在θ和z都未知的情况下,如何求解θ。
在上一节中我们将问题最终转化为下式
![2fae2aee8e6976f832ae186c8ff456f3.png](https://i-blog.csdnimg.cn/blog_migrate/452dc7ad090f3cd05533715727883b01.png)
但上式是无法直接求解出θ的,为此我们在求解时引入了一些小技巧。虽然我们无法直接最大化该似然函数,但如果能找到似然函数的一个十分贴近的下界并一直优化它,并保证每次迭代能够使总的似然函数一直增大,其实最终效果与最大化原函数几乎等同。
遵循上述思想,我们首先引入一个新的未知的关于z的分布Q(z):
![43a5aaeed4c880266db35952c71c47cc.png](https://i-blog.csdnimg.cn/blog_migrate/aa49554f799cbe02be31ad654577ccf3.png)
然后根据Jensen不等式(这个不等式的详细内容可参考琴生不等式),我们将目标函数进行缩放:
![4b6fb0d6cfc817eaca538af9cc9c6902.png](https://i-blog.csdnimg.cn/blog_migrate/df8ad626e068edefeb5a5c18e6fff486.png)
通过缩放我们找到了似然函数的一个下界,那么是否通过优化它就行了?不是的,上面说了必须保证这个下界是十分贴近的,也就是至少有点能使等号成立。同样由Jensen不等式,等式成立的条件是随机变量是常数,具体到这里,就是:
![c74fe5fa18326ae1763ea5754fc233cc.png](https://i-blog.csdnimg.cn/blog_migrate/9019fe1e80b41cc70197b78bcb021d69.png)
又因为Q(z)是z的分布函数,所以:
![5ec5fdffda8e7546914300fe9926ddd9.png](https://i-blog.csdnimg.cn/blog_migrate/56c8f2570481353495096df57c46fb50.png)
把上式中的C乘到等式右边,可得
![73afe8ab0b61fabd85a7a53d72481dfd.png](https://i-blog.csdnimg.cn/blog_migrate/395ec1b6190156699ce31a71d29daba8.png)
,此时我们终于可以求出z的分布函数Q(z):
![bf35fbe4af1d323a75219b1593bdbb09.png](https://i-blog.csdnimg.cn/blog_migrate/721d3cead45f8ab8536acff0eaab0764.png)
有了Q(z)我们就能在已知θ值的情况下,估计出每个样本属于东北人还是四川人的概率,进而通过EM算法求解。
以上便是关于EM算法的解析,需要额外说明的是,EM算法在一般情况是收敛的,但是不保证收敛到全局最优,有可能会陷入局部的最优。因为EM算法是机器学习中使用的最多的十大算法之一,因此如何改进EM算法使其能够收敛到全局最优也是一个十分值得研究的方向。