Gaussian Mixture Model.

高斯混合模型(Gaussian Mixture Model,GMM)是一类概率生成模型,表示为KK个高斯分布的加权平均。其隐变量(latent variable)是服从多项分布的离散型随机变量,表示属于每个高斯分布的概率,记作zz,表示如下:

P(z=k)=pk,k=1,2,...,K.Kk=1pk=1P(z=k)=pk,k=1,2,...,K.Kk=1pk=1

观测变量(observable variable)xx,则高斯混合模型可表示为:

P(x)=zP(x,z)=zP(z)P(x|z)=Kk=1P(z=k)P(x|z=k)=Kk=1pkN(x;μk,σk)P(x)=zP(x,z)=zP(z)P(x|z)=Kk=1P(z=k)P(x|z=k)=Kk=1pkN(x;μk,σk)

假设观测数据为{x1,x2,...,xn}{x1,x2,...,xn},高斯混合模型的模型参数为θ={p1,p2,...,pK,μ1,μ2,...,μK,σ1,σ2,...,σK}θ={p1,p2,...,pK,μ1,μ2,...,μK,σ1,σ2,...,σK}

尝试直接用极大似然估计方法求解该问题。求解如下:

ˆθ=argmaxθlogp(x;θ)=argmaxθlogni=1P(xi;θ)=argmaxθni=1logP(xi;θ)argmaxθni=1logKk=1PkN(xi;μk,σk)^θ=argmaxθlogp(x;θ)=argmaxθlogni=1P(xi;θ)=argmaxθni=1logP(xi;θ)argmaxθni=1logKk=1PkN(xi;μk,σk)

上式在对数函数中存在求和项,直接求解是intractable的。采用期望最大算法求解该问题。

E-step

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

E-step:P(z|x;θ(t))EP(z|x;θ(t))[logP(x,z;θ)]E-stepP(z|x;θ(t))EP(z|x;θ(t))[logP(x,z;θ)]

期望计算如下:

EP(z|x;θ(t))[logP(x,z;θ)]=zP(z|x;θ(t))logP(x,z;θ)dz=z1...znP(z|x;θ(t))logP(x,z;θ)=z1...znni=1P(zi|xi;θ(t))lognj=1P(xj,zj;θ)=z1...znni=1P(zi|xi;θ(t))nj=1logP(xj,zj;θ)=z1...znni=1P(zi|xi;θ(t))logP(x1,z1;θ)+...+z1...znni=1P(zi|xi;θ(t))logP(xn,zn;θ)=z1P(z1|x1;θ(t))logP(x1,z1;θ)nj=2zjP(zj|xj;θ(t))+...+znP(zn|xn;θ(t))logP(xn,zn;θ)n1j=1zjP(zj|xj;θ(t))(由于zjP(zj|xj;θ(t))=1)=ni=1ziP(zi|xi;θ(t))logP(xi,zi;θ)=ni=1Kk=1P(zi=k|xi;θ(t))logP(xi,zi=k;θ)EP(z|x;θ(t))[logP(x,z;θ)]=zP(z|x;θ(t))logP(x,z;θ)dz=z1...znP(z|x;θ(t))logP(x,z;θ)=z1...znni=1P(zi|xi;θ(t))lognj=1P(xj,zj;θ)=z1...znni=1P(zi|xi;θ(t))nj=1logP(xj,zj;θ)=z1...znni=1P(zi|xi;θ(t))logP(x1,z1;θ)+...+z1...znni=1P(zi|xi;θ(t))logP(xn,zn;θ)=z1P(z1|x1;θ(t))logP(x1,z1;θ)nj=2zjP(zj|xj;θ(t))+...+znP(zn|xn;θ(t))logP(xn,zn;θ)n1j=1zjP(zj|xj;θ(t))(zjP(zj|xj;θ(t))=1)=ni=1ziP(zi|xi;θ(t))logP(xi,zi;θ)=ni=1Kk=1P(zi=k|xi;θ(t))logP(xi,zi=k;θ)

联合概率P(x,z)P(x,z)计算如下:

P(x,z)=P(z)P(x|z)=P(z)N(x;μz,σz)P(x,z)=P(z)P(x|z)=P(z)N(x;μz,σz)

条件概率P(z|x)P(z|x)计算如下:

P(z|x)=P(x,z)P(x)=P(z)N(x;μz,σz)Kk=1pkN(x;μk,σk)P(z|x)=P(x,z)P(x)=P(z)N(x;μz,σz)Kk=1pkN(x;μk,σk)

记在当前模型参数θ(t)θ(t)下第ii个观测数据来自第kk个分高斯模型的概率为γikγik,称为分模型kk对观测数据xixi响应度。即:

γik=P(zi=k|xi;θ(t))=pkN(xi;μk,σk)Kk=1pkN(xi;μk,σk)γik=P(zi=k|xi;θ(t))=pkN(xi;μk,σk)Kk=1pkN(xi;μk,σk)

则原期望计算公式可以表示为:

ni=1Kk=1P(zi=k|xi;θ(t))logP(xi,zi=k;θ)=ni=1Kk=1γiklogP(zi=k)P(xi|zi=k)=ni=1Kk=1γiklogpkN(xi;μk,σk)=ni=1Kk=1γik[logpk+logN(xi;μk,σk)]ni=1Kk=1P(zi=k|xi;θ(t))logP(xi,zi=k;θ)=ni=1Kk=1γiklogP(zi=k)P(xi|zi=k)=ni=1Kk=1γiklogpkN(xi;μk,σk)=ni=1Kk=1γik[logpk+logN(xi;μk,σk)]

M-step

EM算法的M-step计算如下:

M-step:θ(t+1)=argmaxθEP(z|x;θ(t))[logP(x,z;θ)]M-stepθ(t+1)=argmaxθEP(z|x;θ(t))[logP(x,z;θ)]

计算pk(t+1)pk(t+1)

pk(t+1)=argmaxpkni=1Kk=1γik[logpk+logN(xi;μk,σk)]s.t. Kk=1pk=1pk(t+1)=argmaxpkni=1Kk=1γik[logpk+logN(xi;μk,σk)]s.t. Kk=1pk=1

采用拉格朗日乘子法解决上述约束最优化问题。建立拉格朗日函数:

L(pk,λ)=ni=1Kk=1γik[logpk+logN(xi;μk,σk)]+λ(Kk=1pk1)L(pk,λ)=ni=1Kk=1γik[logpk+logN(xi;μk,σk)]+λ(Kk=1pk1)

令拉格朗日函数关于参数pk的导数为零:

L(pk,λ)pk=ni=1γik1pk+λ=0

解得pk=ni=1γikλ。又由Kk=1pk=1,可得λ=ni=1Kk=1γik=n,因此参数pk的估计值为:

pk(t+1)=ni=1γikn

计算μk(t+1)

μk(t+1)=argmaxμkni=1Kk=1γik[logpk+logN(xi;μk,σk)]=argmaxμkni=1Kk=1γiklogN(xi;μk,σk)=argmaxμkni=1Kk=1γiklog12πσkexp{(xiμk)22(σk)2}=argmaxμkni=1Kk=1γik[log12πlogσk(xiμk)22(σk)2]

令上述表达式关于参数μk的导数为零:

μkni=1Kk=1γik(xiμk)22(σk)2=ni=1γik2(xiμk)2(σk)2=0

解得:

μk(t+1)=ni=1γikxini=1γik

计算σk(t+1)

σk(t+1)=argmaxσkni=1Kk=1γik[log12πlogσk(xiμk)22(σk)2]

令上述表达式关于参数σk的导数为零:

σkni=1Kk=1γik[logσk(xiμk)22(σk)2]=ni=1γik[1σk+(xiμk)2(σk)3]=0

解得:

(σk(t+1))2=ni=1γik(xiμk(t+1))2ni=1γik

算法总结

数据样本集为{x1,x2,...,xn},建立高斯混合模型:

P(x)=Kk=1pkN(x;μk,σk)

待求模型参数为θ={p1,p2,...,pK,μ1,μ2,...,μK,σ1,σ2,...,σK},随机取参数的初始值开始迭代。

根据当前模型参数,计算分模型k对观测数据xi的响应度:

γik=P(zi=k|xi;θ(t))=pkN(xi;μk,σk)Kk=1pkN(xi;μk,σk)

计算新一轮迭代的模型参数:

pk(t+1)=ni=1γikn μk(t+1)=ni=1γikxini=1γik (σk(t+1))2=ni=1γik(xiμk(t+1))2ni=1γik

重复迭代直至收敛。