码迷,mamicode.com
首页 > 编程语言 > 详细

GMM学习笔记(EM算法求解)

时间:2015-06-12 01:02:10      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:高斯函数   建模   

    提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断增加component个数,可以任意地逼近任何连续的概率分布,所以我们认为任何样本分布都可以用混合模型来建模。因为高斯函数具有一些很实用的性质,所以高斯混合模型被广泛地使用。
    GMM与kmeans类似,也是属于clustering,不同的是,kmeans是把每个样本点聚到其中一个cluster,而GMM是给出这些样本点到每个cluster的概率,每个component就是一个聚类中心。
    GMM(Gaussian Mixture Model)高斯混合模型,由K个不同的Gaussian线性组合而成,每个Gaussian是混合模型的一个component,GMM的概率密度函数如下:

p(x)=k=1Kp(k)(x|k)=k=1Kπk(x|μk,k)

    根据上式,从GMM中生成一个样本点x分两步:
    1,从K个component中随机的选择一个
    2,从该component中选择一个点

    参数说明:N个样本点,K个component,μk,k 是第k个component的均值和协方差矩阵,是模型参数,是需要估计的。πk是mixing coefficient,表示第k个component被选中的概率,πk=1NNn=1znk。N是高斯(正态)分布。

    对一个样本集建立高斯混合模型的过程,就是根据已知样本反推高斯混合模型的参数,这是一个参数估计问题。首先想到用最大似然的方法求解,也就是,要确定参数π,μ,使得它所确定的概率分布生成这些样本点的概率最大,这个概率也就是似然函数,如下:

p(x)=n=1Np(xi)

而一般对于单个样本点其概率较小,多个相乘后更小,容易造成浮点数下溢,所以一般是对似然函数求log,变成加和形式:
i=1Nlnp(xi)

    这个叫做log似然函数,目标是要最大化它。用log似然函数对参数分别求偏导,令偏导等于0,可求解得参数。
    然而,GMM的log似然函数是如下形式:
lnp(X)=i=1Nln[k=1Kπk(xi|μk,k)]

    可以看到对数中有求和,直接求导求解将导致一系列复杂的运算,故考虑使用EM算法。

    考虑GMM生成一个样本点的过程,这里对每个xi引入隐变量z,z是一个K维向量,如果生成xi时选择了第k个component,则zk=1,其他元素都为0,Kk=1zk=1.
    再假设z是已知的,那么现在样本集变成了{X,Z},要求解的似然函数变成了:

p(X,Z|μ,,π)=n=1Nk=1Kπznkk(xn|μk,k)znk

log似然函数为:
lnp(X,Z|μ,,π)=n=1Nk=1Kznk[lnπk+ln(xn|μk,k)].(?)

    可以看到,这次ln直接对Gaussian作用,求和在ln外面,所以可以直接求最大似然解了。

E-step


    然而,z是不知道的,我们只是假设z已知。而z的值是通过后验概率观测,所以这里考虑用z值的期望在上述似然函数中代替z。
    对于一个样本点x:

p(z)=k=1Kπzkk

p(x|zk=1)=(x|μk,k)

p(x|z)=k=1K(x|μk,k)zk

p(x)=zp(z)p(x|z)=k=1Kπk(x|μk,k)

    后验概率(假定μ,,π已知):
p(z|x,μ,,π)=p(x|z)p(z)p(x)n=1Nk=1K[πk(xn|μk,k)]znk

    因为{zn}之间是相互独立的。
    计算z期望γ(znk)(z向量只有一个值取1,其余为0):
γ(znk)=E[znk]=0?p(znk=0|xn)+1?p(znk=1|xn)=p(znk=1|xn)=p(znk=1)p(xn|znk=1)p(xn)=πk(x|μk,k)Kj=1πj(x|μj,j).

    将z值用期望代替,则待求解的log似然函数(*)式变为:

Ez[lnp(X,Z|μ,,π)]=n=1Nk=1Kγ(znk)[lnπk+ln(xn|μk,k)].(?)

M-step


    现在可以最大化似然函数求解参数了,首先对μ求偏导,令偏导等于0,可得:

n=1Nk=1Kγ(znk)k(xn?μk)=0

μ=1Nkn=1Nγ(znk)xnNk=n=1Nγ(znk).

    再对k求偏导,令偏导等于0,可得:

k=1Nkn=1Nγ(znk)(xn?μk)(xn?μk)T

    重复E-step和M-step两步,直到收敛,即可求得一个局部最优解。

    接下来求解π,注意到π需满足Kk=1πk=1,所以这是一个带等式约束的最大值问题,使用拉格朗日乘数法。
    构造拉格朗日函数:

L=lnp(X|π,μ,)+λ(k=1Kπk?1).

    对π求导,令导数为0:
n=1N(x|μk,k)Kj=1πj(x|μj,j)+λ=0

    两边同乘πk得:
n=1Nγ(znk)+λπk=0

Nk+λπk=0

    两边对k求和:
k=1KNk+k=1Kλπk=0

N+λ=0

    可得:λ=?N
    代入可得:πk=NkN.

GMM的建模过程如下图(k=2,高斯分布是蓝色和红色圈):
技术分享


主要参考资料:
《Pattern Recognization and Machine Learning》
帮助理解:
http://blog.pluskid.org/?p=39

GMM学习笔记(EM算法求解)

标签:高斯函数   建模   

原文地址:http://blog.csdn.net/happyer88/article/details/46463459

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!