高斯混合模型(GMM)及其求解(期望最大化(EM)算法)

转载请注明出处:http://blog.****.net/u014540876/article/details/79115805

1、高斯混合模型的公式表达

高斯混合模型是指随机变量x具有如下形式的分布(概率密度函数):
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式1)
其中,参数θ代表所有混合成分的参数(均值向量μ与协方差矩阵Σ)的集合:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式2)
每个混合成分的概率密度函数为:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式3)
k表示该高斯混合分布由k个高斯混合成分组成。αi为相应高斯混合成分的混合系数,由于高斯混合分布也是一个分布,所以有
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式4)
即:i=1kαi=1(5)

2、高斯混合模型的样本生成过程

高斯混合模型是聚类算法的一种。kmeans算法是确切给出每个样本被分配到某一个簇,称为硬分配;而高斯混合模型则是给出每个样本被分配到每个簇的概率,最后从中选取一个最大的概率对应的簇作为该样本被分配到的簇,称为软分配

高斯混合模型是假定按照以下生成过程生成所有样本的(以下过程都是在把αi,μi,Σi当做已知的常数之后来思考):首先,根据α1,α2,,αk定义的先验概率(所谓“先验概率”可以理解为上帝创造的概率,不以其他力量为转移,我们只能通过已经发生的事情结合条件概率公式来推导之,这里的“先验”指的就是这个概率是先于人类能够观察和感受到的经验就已经存在的。)选择高斯混合成分,也就是说αi就是第i个混合成分所占据整个高斯混合成分的比重,这个比重是适应于所有样本的;然后,根据被选择的混合成分的概率密度函数进行采样(样本的生成是指样本从无到有的过程,这里不要认为是先有样本再有高斯混合分布。而我们求解高斯混合分布的过程是由已知的样本倒推高斯混合分布,也就是求解所有的αi,μi,Σi)

3、高斯混合模型的求解过程

求解高斯混合分布的过程,也就是求解所有的模型参数αi,μi,Σi,此时已知样本集D和预先设置的混合成分的个数k(这种需要预先设置好的参数称为超参数)。

对模型参数进行参数估计,我们都会先想到极大似然估计(高斯(Gauss)最早提出最大似然估计,并将其用于研究测量误差的分布。后来该方法被Fisher总结应用于求参数估计,并命名为极大似然估计),于是,首先写出极大似然函数的对数似然函数:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式6)

若训练集D={x1,x2,...,xm}由上述过程生成,令随机变量zj{1,2,,k}表示生成样本xj的高斯混合成分的序号,其取值未知,显然,zj的先验概率P(zj=i)对应于αi(i=1,2,,k).根据贝叶斯定理,zj的后验概率对应于

高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式7)
在此解释一下这个公式。有些人可能在看西瓜书时疑惑于书中这个公式中一会儿用pm表示概率,一会儿用p表示概率,其实用p或者pm表示都可以,因为它们都是表示的随机变量或者条件随机变量的概率,是等价的。

EM算法的E步

在理想情况下,每个样本应该是只由一个混合成分生成,这个混合成分对应的也就是该样本被分配到的簇,即样本xj只由第i个混合成分生成,亦即p(zj=ixj)=1,并且p(zn=ixn)=0(nj)。但是,由于我们的无知,我们预先并不知道这样的理想的高斯混合分布是怎么样的,所以我们只能根据已经观察到的数据集D来获得每个样本由每个混合成分生成的概率,这个概率也就是这个公式所表达的值,所以这也是这个公式为什么是一个后验概率的表达式(已知样本xj的情况下,样本xj由第i个混合成分生成的概率),这也就相当于尽我们所能。如果用数学语言表达就是:记随机变量 hji表示样本 xj是否由第i个混合成分生成hji也就是EM算法中的隐变量),如果是,则hji记为1,否则hji记为0,根据这个定义我们知道,hj1,hj2,hj3,,hjkk个数中,只由一个数为1(说明xj只由唯一的一个混合成分生成),其余所有数都为0,那么随机变量hji的分布列是

hjii=1,2,,k 0 1
概率 p(hji=0xj) p(hji=1xj)

获得了隐变量的分布列,接下来求解隐变量的期望:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式8)

通过以上过程,我们就完成了EM算法中的E步(即明确隐变量和求解隐变量的期望),也得到了极大似然函数的对数似然函数.接下来执行M步.

EM算法的M步

所谓M步,也就是最大化对数似然函数,因为我们要求解的是αi,μi,Σi作为自变量变化的过程中,对数似然函数的极大值,所以需要将对数似然函数对αi,μi,Σi分别求偏导,接下来以对μi求偏导详细说明公式推导过程.

先对μi求偏导,这里会涉及到函数链式求导法则和列向量的实数函数对该列向量求导,后者会在后面加以说明。
高斯混合模型(GMM)及其求解(期望最大化(EM)算法)高斯混合模型(GMM)及其求解(期望最大化(EM)算法)高斯混合模型(GMM)及其求解(期望最大化(EM)算法)
其中
高斯混合模型(GMM)及其求解(期望最大化(EM)算法)这一步用到了以下一个列向量的实数函数对该列向量求导的公式:
An阶方阵,xn维列向量,则

(xTAx)x=(A+AT)x

特殊地,当An阶对称方阵时,A=AT,即

(xTAx)x=2Ax

而这里的Σi1恰好是m阶对称方阵。

接下来,因为Σi1是第i个混合成分的协方差矩阵的逆,所以它一定是非奇异矩阵,对于非奇异矩阵,有以下定理:
如果n阶方阵A是可逆矩阵,xn维列向量,那么方程Ax=0有且只有平凡解(零解),即x=0
高斯混合模型(GMM)及其求解(期望最大化(EM)算法)
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式9)
高斯混合模型(GMM)及其求解(期望最大化(EM)算法),将其带入公式9得:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法)
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式10)
类似地,可以得到:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式11)
对于求解混合系数αi,由于在极大化对数似然函数的情况下,还需要保证
高斯混合模型(GMM)及其求解(期望最大化(EM)算法)
所以这是一个含等式和不等式约束的优化问题(其实这里的对数似然函数LL(D)是相对于αi的凹函数,对它求极大就相当于对LL(D)求极小,也就是变成了一个标准的凸优化问题),为了简单起见,这里只需要先考虑等式约束,如果在等式约束条件下就能够取得LL(D)的极小值并且同时能满足不等式约束,那么等式约束条件下的最优解就是这个约束条件下的最优解。所以接下来构造拉格朗日公式:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式12)
对其求αi的偏导并令其偏导为0:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式13)
对(公式13)左右两边同时乘以αi,得到:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式14)
对 (公式14)左右两边同时对i=1,2,3,,k求和,得到:
高斯混合模型(GMM)及其求解(期望最大化(EM)算法) (公式15)
其中i=1kj=1mγji代表的是所有的样本由所有的样本生成的后验概率之和,这个值一定是样本的个数,也就是m
由(公式15)可以得到λ=m,再结合(公式14),可以得到:

αi=1mj=1mγji

(公式16)说明每个高斯成分的混合系数等于所有属于该混合成分的样本的平均后验概率。
综上,可以获得高斯混合模型的EM算法求解:
先给定混合成分个数k,再初始化高斯混合模型的模型参数(αi,μi,Σi,其中i=1,2,3,,k)。再执行E步:计算γji,接下来根据(公式10)、(公式11)和(公式16)来更新计算αi,μi,Σi,循环执行E步和M步,直至算法满足停止条件(例如已达到最大迭代轮数,或者对数似然函数增长很少或者不再增长等等)
求得所有参数之后,再根据
λj=argmaxi{1,2,,k}γji

求得xj所分配到的簇,输出即可。

后记,第一次写博客,有些地方写的很啰嗦,推导过程很详细,因此也适合初学者查看。错漏之处热烈欢迎各位批评指正,如需详细讨论可发送邮件至我的邮箱:[email protected]