用EM算法求解高斯混合模型

本文详细介绍了如何使用EM算法求解高斯混合模型(GMM)。首先阐述了GMM的定义和性质,接着讲解了EM算法的原理,并展示了EM算法在GMM求解中的应用。实验部分通过MATLAB生成高斯混合分布数据,并利用EM算法进行求解,讨论了参数初始化和收敛性。

本文从高斯混合模型出发,引出EM算法,最后回归到利用EM算法求解高斯混合模型。理论部分力求详尽不留证明疑点,所以略显冗长。实验部分给出了生成高斯混合分布样本和利用EM算法求解高斯混合模型的matlab代码。

理论部分

高斯混合模型(GMM)

顾名思义,高斯混合模型就是由多个高斯分布混合构成的模型。KKK高斯混合分布的概率密度为:
p(x)=∑k=1KϕkN(x∣μk,Σk). p(\mathbf{x})=\sum_{k=1}^K \phi_k\mathcal{N}(\mathbf{x}|\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k). p(x)=k=1KϕkN(xμk,Σk).
这里,∑k=1Kϕk=1\sum_{k=1}^{K}\phi_k=1k=1Kϕk=1为混合系数,
N(x∣μ,Σ)=1(2π)D/21∣Σ∣1/2exp⁡{ −12(x−μ)TΣ−1(x−μ)} \mathcal{N}(\mathbf{x}|\boldsymbol{\mu},\boldsymbol{\Sigma})=\frac{1}{(2\pi)^{D/2}}\frac{1}{|\boldsymbol{\Sigma}|^{1/2}}\exp\left\{-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu})\right\} N(xμ,Σ)=(2π)D/21Σ1/21exp{ 21(xμ)TΣ1(xμ)}
DDD维高斯分布,其中μ\boldsymbol{\mu}μ为其均值向量,Σ\boldsymbol{\Sigma}Σ为其协方差矩阵。

直观来看,高斯混合分布可以看做下面分步过程的整合:
第一步,以ϕk\phi_kϕk概率选择第kkk个高斯模型;
第二步,利用第kkk个高斯模型生成一个样本x\mathbf{x}x

为了讨论方便,记θ={ ϕ1,…,ϕK,μ1,…,μK,Σ1,…,ΣK}\theta=\{\phi_1,\dots,\phi_K,\boldsymbol{\mu}_1,\dots,\boldsymbol{\mu}_K,\boldsymbol{\Sigma}_1,\dots,\boldsymbol{\Sigma}_K\}θ={ ϕ1,,ϕK,μ1,,μK,Σ1,,ΣK}为高斯混合分布的参数集合。现在要解决的问题是,对于给定服从高斯混合分布的独立同分布样本集X={ x1,…,xn}\mathbf{X}=\{\mathbf{x}_1, \dots, \mathbf{x}_n\}X={ x1,,xn},最大化其对数似然函数:
max⁡θln⁡p(X∣θ)=∑i=1nln⁡∑k=1KϕkN(xi∣μk,Σk). \max_{\theta}\ln p(\mathbf{X}|\theta)=\sum_{i=1}^n\ln\sum_{k=1}^K\phi_k\mathcal{N}(\mathbf{x}_i|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k). θmaxlnp(Xθ)=i=1nlnk=1KϕkN(xiμk,Σk).
这里,p(X∣θ)=∏i=1np(xi∣θ)p(\mathbf{X}|\theta)=\prod\limits_{i=1}^np(\mathbf{x}_i|\theta)p(Xθ)=i=1np(xiθ)。由于ln⁡\lnln函数里的求和项,我们无法直接求得闭式解,而利用EM算法可以得到一个局部最优数值解。

EM算法

从分步角度来看,求解高斯混合模型的难点在于,我们不知道一个样本xi\mathbf{x}_ixi具体是由KKK个高斯模型中的哪一个生成的。所以,对于第iii个样本xi\mathbf{x}_ixi来说,我们构造一个隐变量ziz_izi用来表示xi\mathbf{x}_ixi来自于哪个高斯模型。也即,zi=kz_i=kzi=k当且仅当xi\mathbf{x}_ixi来自于第kkk个高斯模型。注意,虽然这个隐变量的取值是客观确定的,但对我们来说是不可见,因此仍将其看作随机变量。记Z={ z1,…,zn}\mathbf{Z}=\{z_1,\dots,z_n\}Z={ z1,,zn},对于固定的模型参数θˉ\bar{\theta}θˉ,下面的不等式给出了EM算法的框架。
ln⁡p(X∣θˉ)=∑Zp(Z∣X,θˉ)ln⁡p(X∣θˉ)=∑Zp(Z∣X,θˉ)ln⁡p(X,Z∣θˉ)p(Z∣X,θˉ)≤max⁡θ∑Zp(Z∣X,θˉ)ln⁡p(X,Z∣θ)p(Z∣X,θˉ)(1)≤ln⁡∑Zp(X,Z∣θmax)p(Z∣X,θˉ)p(Z∣X,θˉ)(Jensen不等式)=ln⁡p(X∣θmax) \begin{aligned} \ln p(\mathbf{X}|\bar{\theta})&=\sum_{\mathbf{Z}}p(\mathbf{Z}|\mathbf{X},\bar{\theta})\ln p(\mathbf{X}|\bar{\theta})\\ &=\sum_{\mathbf{Z}}p(\mathbf{Z}|\mathbf{X},\bar{\theta})\ln\frac{p(\mathbf{X},\mathbf{Z}|\bar{\theta})}{p(\mathbf{Z}|\mathbf{X},\bar{\theta})} \\ &\leq\max_\theta \sum_{\mathbf{Z}}p(\mathbf{Z}|\mathbf{X},\bar{\theta})\ln\frac{p(\mathbf{X},\mathbf{Z}|\theta)}{p(\mathbf{Z}|\mathbf{X},\bar{\theta})} & (1)\\ &\leq \ln \sum_{\mathbf{Z}}\frac{p(\mathbf{X},\mathbf{Z}|\theta_{max})}{p(\mathbf{Z}|\mathbf{X},\bar{\theta})}p(\mathbf{Z}|\mathbf{X},\bar{\theta}) & (Jensen不等式)\\ &=\ln p(\mathbf{X}|\theta_{max}) \end{aligned} lnp(Xθˉ)=Zp(ZX,θˉ)lnp(Xθˉ)=Zp(ZX,θˉ)lnp(ZX,θˉ)p(X,Zθˉ)θmaxZp(ZX,θˉ)lnp(ZX,θˉ)p(X,Zθ)lnZp(ZX,θˉ)p(X,Zθ

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值