EM算法,主要是为了解决GMM高斯混合模型所提出来的一种解决方案,但是也会使用于HMM中。先看一下高斯混合模型。
这种双峰的数据,或者单个高斯模型无法拟合的情况可以考虑使用高斯混合模型,例如图像的前景背景分割。就是用高斯混合模型来处理。
先来看一下对于一组高斯分布来说,我们使用最大似然估计来对参数进行计算:
这时倘若数据来自不同的分布,例如数据来自两个或者多个高斯分布,那参数该怎样估计呢。
以上就是EM的实践用法,就是先估计,然后带入样本,计算一组新的参数,再次带入样本,如此迭代,得到一组收敛的参数。
下面来看下理论推导部分。
先把m从1到n的加和屏蔽掉,看上式。
先来复习jensen不等式
然后上式可以看成一个大X在q上求期望。
现在我们想要求得一个局部的最大值。先来看看这幅图:
由jensen不等式我们可以知道,当下界函数的最大值能够等于上界函数的时候,我们的局部最大值也就求出来了,而只有当jensen不等式取等号的时候上界函数和下界函数才有可能取等号,我们不断迭代,直到下界函数的顶部移动到上界函数的局部最大值处。
然后判断上式什么时候能够取等号呢。
即当先验的给定了一个theta,在给定样本的情况下,我们可以求得隐变量Q,在求得Q之后我们利用下界函数的表达式来求一个theta能使得下界函数取最大值。因此得到EM算法的整体框架:
下面我们来一个例子,利用EM来求混合高斯模型。
得到的总结其实和上边文章中通过直观法得到的总结结论是相同的。
EM算法其主要的作用不仅仅是为了根据样本来计算参数,其重要的一个特性就是,能够算出某个样本对于多个分布的分布。
现实生活中,其中一个作用就是PLAS模型。
本部分代码:https://github.com/HanGaaaaa/MLAPractice/tree/master/EM