本文从高斯混合模型出发,引出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=1∑KϕkN(x∣μk,Σk).
这里,∑k=1Kϕk=1\sum_{k=1}^{K}\phi_k=1∑k=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θlnp(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=1∑nlnk=1∑Kϕ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=1∏np(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算法的框架。
lnp(X∣θˉ)=∑Zp(Z∣X,θˉ)lnp(X∣θˉ)=∑Zp(Z∣X,θˉ)lnp(X,Z∣θˉ)p(Z∣X,θˉ)≤maxθ∑Zp(Z∣X,θˉ)lnp(X,Z∣θ)p(Z∣X,θˉ)(1)≤ln∑Zp(X,Z∣θmax)p(Z∣X,θˉ)p(Z∣X,θˉ)(Jensen不等式)=lnp(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∣θˉ)=Z∑p(Z∣X,θˉ)lnp(X∣θˉ)=Z∑p(Z∣X,θˉ)lnp(Z∣X,θˉ)p(X,Z∣θˉ)≤θmaxZ∑p(Z∣X,θˉ)lnp(Z∣X,θˉ)p(X,Z∣θ)≤lnZ∑p(Z∣X,θˉ)p(X,Z∣θ