上一节我们介绍了高斯混合模型(GMM),这个模型在求解的时候我们提到了EM算法,本节我们详细介绍下EM算法的基本流程,其实在KMeans中也有EM的思想,EM算法在很多概率求解中都有用到,我们也会在后续中一一提到。
1 EM算法概述
我们先简单描述EM算法
EM算法就是用来解决存在隐变量的参数估计问题
在GMM模型中,我们在利用样本估计每个高斯分量模型的参数之前,需要先确定每个样本的所属类别,然后才能根据类别对应的样本利用最大似然函数来求解。具体步骤可以拆成如下
- 先给每个样本估计一个类别概率
- 根据样本所属类别概率求解各个类别对应的参数,利用最大似然估计的方法
这里的类别就是EM中提到的隐变量,传统的似然函数估计是
现在似然函数变得更复杂
下面我们就推导下这个更加泛化的过程
2 EM算法推导
首先我们先假设某个样本的概率
这里的样本x对应的概率参数还由隐变量z决定,我们可以根据联合概率和边际概率得到
我们的目标还是希望似然函数最大化,那么对应样本集合,我们有
上面我们把公式1带入到最大似然求解中,可以得到公式2,但是这里有个很麻烦的log,无法直接求解极值,下面对P()进行转换,表示成期望
这里Q(z)是z的分布,由Jensen不等式我们知道,对于凸函数有
凹函数则相反。
公式3中,log正好是凹函数根据Jensen不等式可以得到
Jensen不等式使得等号成立的条件是x为常数
已知Q(z)属于概率分布,有如下条件
根据公式(5)(6)得到
得到Q(z)之后,我们就可以求解公式(4)。
所以这里的EM步骤可以归纳为
- E步(expctation)
根据参数初始值或者上一轮的迭代参数结果来计算隐变量的后验概率,即隐变量的期望
- M步,求解使得似然函数最大化的参数
大白话解释就是:
- 先根据分布参数计算每个样本属于各个隐变量的概率
- 利用各个样本所属的类别概率,然后最大化似然函数,更新分布的参数
- kmeans
kmeans计算就是这样,我们先随机初始化各个类别的中心向量,然后根据中心向量计算各个样本的所属类别(E步骤),然后根据各个样本所属类别来更新各个类别的参数(中心向量;M步骤)