[关闭]
@haoqiang 2018-01-12T09:25:23.000000Z 字数 5446 阅读 61

在高斯混合模型中使用EM算法

机器学习


1. 高斯混合模型(Gaussian Misture Model, GMM)

高斯混合模型是指具有如下形式的概率分布模型:

P(x|θ)=k=1Kαkϕ(x|θk)

ϕ(x|θk)=12πσ2kexp((xμk)22σ2k)


2. 模型参数学习

EM算法估计高斯混合模型的参数θ=(α1,α2,,αK;θ1,θ2,,θK).

(1) 明确隐变量

考虑观测数据xii=1,2,...,N,的产生方式:首先依概率αk选择第k个高斯模型ϕ(x|θk);然后依第k个子模型的概率分布ϕ(x|θk)生成观测数据xi。此时观测数据xi已知,反映观测数据xi来自第k个分模型的数据未知,定义隐变量γik

γik={1,0,iki=1,2,,N;k=1,2,,K

那么完全数据可表示为

(xi,γi1,γi2,,γiK),i=1,2,,N

(2) 完全数据的对数似然函数

似然函数:

P(x,γ|θ)=i=1NP(xi,γi1,γi2,,γiK|θ)=k=1Ki=1N[αkϕ(xi|θk)]γik=k=1Kαnkki=1N[ϕ(xi|θk)]γik=k=1Kαnkki=1N[12πσkexp((xiμk)22σ2k)]γik

nk=Ni=1γik 为第k个组分生成的样本数,Kk=1nk=N.

对数似然函数:

logP(x,γ|θ)=k=1K{nklogak+i=1Nγik[log(12π)logσk12σ2k(xiμk)2]}

(3) E步

Q(θ,θ(i))=E[logP(x,γ|θ(i))|x,θ(i)]=E{k=1K{nklogak+i=1Nγik[log(12π)logσk12σ2k(xiμk)2]}}=k=1K{i=1N(Eγik)logak+i=1N(Eγik)[log(12π)logσk12σ2k(xiμk)2]}

这里需要计算E(γik|x,θ),记作γ^ik.

γ^ik=E(γik|x,θ)=E(γik=1|x,θ)=P(γik=1,xi|θ)Kk=1P(γik=1,xi|θ)=P(xi|γik=1,θ)P(γik=1|θ)Kk=1P(xi|γik=1,θ)P(γik=1|θ)=αkϕ(xi|θk)Kk=1αkϕ(xi|θk),i=1,2,...,N;k=1,2,...,K

γ^ik表示当前模型参数下第i个观测数据来自第k个子模型的概率。

γ^ik=Eγikn^k=Ni=1(Eγik) 带入 Q(θ,θ(i))

Q(θ,θ(i))=k=1K{n^klogak+i=1Nγ^ik[log(12π)logσk12σ2k(xiμk)2]}

(4) M步

求函数Q(θ,θ(i))θ的极大值,新一轮的模型参数为:

θ(i+1)=argmaxθQ(θ,θ(i))

μ^kσ^2kα^kk=1,2,,K,表示θ(i+1)的各参数。分别对μkσ2k求偏导令其为0,得到μ^kσ^2k;在Kk=1αk=1条件下对αk求偏导令其为0,得到α^k

μ^kΣ^kα^k=Ni=1(γ^ikxi)Ni=1γ^ik,k=1,2,...,K=Ni=1γ^ik(xiμ^k)2Ni=1γ^ik,k=1,2,...,K(μk^)=Ni=1γ^ikN,k=1,2,...,K


算法总结

(1) 初始化参数。

(2) E步:依据当前模型参数,计算子模型k对观测数据xi的响应度

γ^ik=αkϕ(xi|θk)Kk=1αkϕ(xi|θk),i=1,2,...,N;k=1,2,...,K

(3) M步:计算新一轮迭代的参数模型

μ^kΣ^kα^k=Ni=1(γ^ikxi)Ni=1γ^ik,k=1,2,...,K=Ni=1γ^ik(xiμ^k)2Ni=1γ^ik,k=1,2,...,K=Ni=1γ^ikN,k=1,2,...,K

(4) 重复第(2)(3)步直至收敛。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注