在介绍EM算法之前,我们先来介绍一下高斯混合模型(GMM)。GMM是多个高斯分布的叠加。表达式如下
其中有i个高斯分布,
表示第i个高斯分布所占的权重(
)。
表示第i个高斯分布的数学表达式。
表示第i个高斯分布的参数。高斯
混合模型的概率密度图像如下所示.
现在有如下实例。从一个高校中随机抽取200个人的身高数据。但是我们不知道这两200个身高数据中的每一个是属于男性,还是女性,并且不知道男女比例是多少。但是已知男生和女生的身高分别服从两个不同的高斯分布。现在我们该如何利用数据去得到男生和女生的各自分布的参数(方差。均值,权重)。这就是我们的EM算法所要解决的事情。
其实男生和女生的分布就是一个明显的GMM。
一想到参数估计,肯定我们脑海里第一浮现的就是最大似然估计。当然此处也是如此。前面说了这是一个GMM问题。而且有了GMM表达式。那么我们就开始按照MLE的解题步骤开始吧。
根据MLE的思想我们要让随机抽取的200个数据在这个某一个GMM下分布发生的概率最大化。那么就有对数似然函数
在
中 写分号表示待估参数
是固定的,只是当前未知。
应该可以直接认为是p(x),加了
是为了说明这里有个
的参数。 (其中
参数包含每一个高斯分布的均值,方差,和权重三个未知参数)那么接下来按照MLE的解题步骤。我们是不是只要直接对
求最大值就行了呢?实践证明这样是不可取的,是无法的到结果的。下面我们引入一个隐变量 z,z表示的是某一个某一个数据所属的类别(男,女。z=[类1,类2,类3,等])定义
(
),但是我们不知道他的分部是什么。现在我们改写
(n组数据,m个分布
表示在参数
下X发生并且是某一个
类的概率)其实这就是对某一个数据在多个类别中的概率的一个叠加。只不过我们添加了一个隐变量在里面方便后面操作。
再对变形
先暂停一会儿。先来了解一个工具jensen不等式如果 是凸函数(二阶导大于等于零)有
现在再回到 我们另
继续改写
。可以先不用看
这个和
。把他们去掉看这个
。我们知道Q(z)是一个分布,是z的一个权重。而g(z)是一个关于z的函数。所以可以把
看作是对 g(z)求期望。而log看成是一个函数。那么根据前面的jessen不等式可以得到。
那么就有
现在我们来分析一下这个不等式。首先把他们只看做是关于 的函数,把隐变量 z看作常数。
可知 ,
是一个凸函数。所以大概图像如此
其中的A点对应的 值就是我们需要的最优值,现在的问题是我们如何得到这个A点。可知
是
的一个下界函数。由于
还有一个隐变量z,所以
有无数个下界函数。现在我们任意给定参数
。然后调整z的值一定可以让
,
在图中的B点相切。这也就是
这个不等式取等号的情况。根据jensen不等式性质我们可以知道。取等号的情况是
(c为一个常数)。变一下型
。因为
所以
所以 ,利用这个等式我们可以求出Q(z) 。看到这个式子我们应该就明白了。给定一个初始
值我们就可以求出隐变量z的分布。这时图中的
的位置就已经固定了。函数表达式也就固定了。然后我们可以去最大化下界函数
。得到在C点对应的一个参数
。然后重复上面的步骤。利用这个
,去得到新的Q(z)。直到
收敛。这时也就得到了结果。其实这有点像梯度上升,利用下界函数去慢慢逼近最优值。