这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战
高斯混合模型 GMM
Gaussian Mixture Model 高斯混合模型,属于常见的一种生成模型。
Mixture Model
混合模型是一个可以用来表示在总体分布(distribution)中含有 K 个子分布的概率模型,换句话说,混合模型表示了观测数据在总体中的概率分布,它是一个由 K 个子分布组成的混合分布。混合模型不要求观测数据提供关于子分布的信息,来计算观测数据在总体分布中的概率。
Gaussian Mixture Model
我们知道多维高斯分布遵从如下的概率密度函数:
p(x∣θ)=(2π)2n∣Σ∣211exp(−21(x−μ)TΣ−1(x−μ))
高斯混合模型(Gaussian Mixture Model, GMM)是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的密度分布。
高斯混合模型可以看作是由 K 个单高斯模型组合而成的模型,这 K 个子模型是混合模型的隐变量。
而我们可以认为混合高斯模型的概率密度函数可由其k个单高斯分布概率密度函数加权得来。
假设我们的样本数据为 X,共有 x1,x2,...,xNN个样本,用 αk 表示第 k 个单高斯模型的权值因子,G(x∣θ) 表示单高斯的概率密度函数,有:
p(x∣θ)=k=1∑KαkG(x∣θk)
显然,GMM的参数是一组 θ,
θ=(μk~,Σk~,αk~)
看到这里会发现,k 的取值需要事先确定,非常重要,类似 k−means 那样需要先确定 k。
参数估计
在多维高斯分布的学习中,我们知道,可以用最大似然来估算 θ 的值,似然函数即 L(θ)=p(x∣θ)
θ=argmaxL(θ)
对于GMM,我们假设每组样本数据是独立的,则似然函数就是k 个的累乘,考虑到单个点的概率很小,连乘后数据会更小,容易造成浮点数下溢,所以我们可以采用对数似然:
L(θ)=k=1∏Kp(xk∣θ)logL(θ)=j=1∑Nlogk=1∑KαkG(x∣θk)
使用EM算法求解
首先随机初始化一组参数:
θ=(μk,Σk,αk),k=1,2,...,K
E步:
所谓E就是Expectation,就是在当我们知道模型参数时,对隐变量 X 求期望,如下所示:
γj,k=∑k=1KαkG(xj∣μk,Σk)αkG(xj∣μk,Σk)
γj,k 也就是表示数据 xj 属于第 k 个子高斯模型的概率。
M步:
现在我们有了 γj,k ,就可以利用最大似然估计下一轮迭代的参数了:
μk=∑j=1Nγj,k∑j=1N(γj,kxj),k=1,2,...,KΣk=∑j=1Nγj,k∑j=1Nγj,k(xj−μk)(xj−μk)T,k=1,2,...,Kαk=N∑j=1Nγj,k,k=1,2,...,K
重复E步和M步直至收敛
需要注意的是,EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。
参考
- 李航老师——《统计学习方法》