Home > Archives > 高斯混合模型和期望最大化算法

高斯混合模型和期望最大化算法

概述

在这篇博文中,我们将讨论高斯混合模型(Gaussian Mixture Models,GMM)以及它的求解方法–期望最大化(Expectation-Maximization,EM)算法。GMM是经典的无监督聚类模型,它假设数据是从多个高斯分布中得到。我们在GMM的模型求解过程中引入“隐变量”(latent variable)的概念,并基于此使用EM算法求解模型参数。GMM在语音识别技术中有应用。

求解高斯混合模型:初尝败果

在线性判别分析(Linear Discriminant Analysis, LDA)中,我们假设每类中的数据服从高斯分布,通过计算两类之间的判别超平面得到分类函数。注意,在线性判别分析中,数据是有类别标签的,也就是属于有监督的分类问题。GMM与线性判别分析模型具有同样的数据生成假设,不同的是,GMM的训练数据中没有类别标签,即为无监督模型。一般地,GMM的定义如下:

其中,表示(多元)高斯分布,表示混合高斯的个数,表示混合参数(mixing coefficient),满足。我们首先尝试使用最大似然方法求解,那么目标就是最大化下式:

如果此时试图使用拉格朗日乘数法来求解,那么遇到的最大麻烦将是这一部分,导致根本无法继续求解。

引入隐变量

接下来,我们将引入“隐变量”。我们假设,对于数据点来说存在一个隐变量,也就意味着对于每个数据点的取值都存在一个相应的隐变量的取值,但是无法观测得到。隐变量的定义如下:维变量,满足而且,也就意味着隐变量中有且仅有一位为1,其他位置都为0。的关系如下:

那么,

注意,这是一个向量的概率密度定义,你可能需要仔细琢磨一下其中的含义。隐变量的含义为:如果,那么表示观测值就来自第个聚类(cluster)。基于以上定义,可以得到:

以及

读者可以尝试利用已经得到的重新表示,验证下式:

EM算法登场

我们首先给出EM算法的一般步骤,然后将其应用于GMM的参数求解。

EM算法的一般步骤

给定观测数据,其中第表示第个观测数据,列的个数为数据的维数。正如我们之前所介绍的,每个观测数据都对应一个隐变量的取值–采用表示,表示对应的隐变量取值,经常称为完整数据(complete data)。在加入隐变量之后,似然函数变为(表示模型的未知参数集合):

直接使用上式对参数求导还是会遇到前面所遇到的问题,接下来介绍EM算法如何求解。

假定已经给定了一组模型参数的初始取值,我们可以先计算隐变量的后验概率,即。因为的形式较为复杂,我们转而考虑完整数据的似然:

EM算法的E-step如下,计算:

对于E-step,有以下几点需要注意:

EM算法的M-step为:

对于M-step,有以下几点需要注意:

将EM算法应用于GMM

首先,根据计算,进而计算完整数据的似然。计算后可得:

将上式取log后的结果为:

根据贝叶斯公式,由可以得到的后验概率(除以 ):

从上式中可以看出,之间是相互独立的。回想EM算法的E-step,接下来我们利用来计算,具体过程如下:

其中,的计算如下:

此时,计算已经成为EM算法迭代的一个中间变量,稍后关于其他参数的迭代计算都会依赖这个值。另外,计算这个中间变量时使用的是上一轮中的参数,即

接下来是EM算法中的M-step:

在得到上式后便可以使用拉格朗日乘数法分别对偏导求解,具体过程略过。强烈建议读者自行推导这个优化过程,这其中涉及到拉格朗日乘数法、多元高斯概率密度函数对均值和协方差矩阵的求导等–你真的可能不了解其中的一些细节,除非你自己推导过n遍。

在经历了较为繁琐的推导过程后,你将发现结果的形式却相对简单。我们定义:。其含义可以理解为:平均而言,第个聚类中所含有的样本的个数。M-step中其他参数的迭代计算方法如下:

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: 孔明