EM算法推导

    xiaoxiao2025-01-13  9

    转载地址:http://blog.csdn.net/flyfish5/article/details/49978239

    忘了用了几天的时间来学习EM算法、GMM,学习老师的语音识别程序,先看老师的PPT(简单介绍EM算法和GMM,MFCC的步骤),源代码(刚开始看的时候完全不懂),然后在网上搜索了MFCC方法,通过博客和别人的文档学习GMM,EM算法,又去看了PRLM这本书的第九章(关于GMM和EM的),现在感觉还是似懂非懂,主要是推到过程不清楚加上没有程序实现。可能是我的学习方法有问题。可以和同学多交流,向别人请教下学习方法。也希望看到这篇文章的童鞋在学习方法上不吝赐教。  周日下午,抓住周末的尾巴,知识只有总结了才能更好的理解。

    似然函数

    假设样本集 D  中有  n 个样本:  x1,x2,...xn 。其中每个样本都是独立的根据已知形式的概率密度函数  p(x|θ)  抽取得到的。因此下式成立:

    p(D|θ)=k=1np(xk|θ) D  已知所以可以把 p(D|θ) 看成是参数向量 θ 的函数,被称为样本集 D 下的似然函数。  参数向量 θ 的最大似然估计,就是使 p(x|θ) 达到最大值的那个参数向量 θ^ 。也就是说,参数向量 θ 的最大似然估计就是最符合已有的观测样本集的那一个[1]。  为了方便分析,通常情况下,总是使用对数似然函数。  l(θ)=lnp(D|θ) l(θ)=k=1nlnp(xk|θ) 这个式子会在EM推到过程中用到。

    Jensen不等式

    没有仔细学习,简单说就是,如果函数 f(x)  是凸函数,那么有 E[f(X)]f([E(X)])  。如果f是严格凸函数,那么当且仅当 x=c  即x是常量时,等号成立。  如果是凹函数,上式变为小于等于。

    EM算法

    解决带有隐含变量的模型的最大似然问题。可以用于聚类,参数估计等

    1

    通过最大似然估计来得到模型中的参数 θ  ,目标函数就是上面的对数似然函数。 l(θ)=ni=1lnp(xi;θ)   对于有隐含变量的模型来说(隐含变量可以是丢失的特征或样本的类别),对数似然函数的形式: 

    l(θ)=i=1nlnp(xi,zi;θ) 隐含变量 zk  对我们来说完全是未知的,假设 z  满足某种分布 Qi(z)  ,则有  Qi(z)=1  。  上面的对数似然函数就可以写成:  l(θ)=i=1nlnzp(xi,zi;θ)

    2

    要最大化上面的 l(θ)  显然比较困难。这时就要用到Jensen不等式了。  可以把 l(θ)  写成 

    l(θ)=i=1nlnzQi(zi)p(xi,zi;θ)Qi(zi) 上式最右边的分式 p(xi,zi;θ)Qi(zi)  是Jensen不等式中的随机变量X,把它看作 zi  的函数, Qi(zi)  为概率密度,那么 zQi(zi)p(xi,zi;θ)Qi(zi)  就是Jensen不等式中的 E(X)  。  因为 ln(x)  为凹函数,所以有  l(θ)=i=1nlnzQi(zi)p(xi,zi;θ)Qi(zi) i=1nzlnQi(zi)p(xi,zi;θ)Qi(zi)(1) 这样我们就可以不断增大上面(1)式,再使等号成立,从而获得 l(θ)  的最大值。  最大化(1)式的过程为 maximum(M step),更新参数 θ 。  使等号成立的过程为E step,更新z的分布Q。

    3

    来看一下,Jensen不等式等号成立时,Q的值。  等号成立时,X为常量,也就是 p(xi,zi;θ)Qi(zi)=c  同时又知道  zQi(z)=1  所以,就可以使 Qi(zi)=p(xi,zi;θ)zp(xi,zi;θ)=p(xi,zi;θ)p(xi;θ)=p(zi|xi;θ) 也就是隐含变量的后验概率。

    4

    在M步中利用最大似然估计来得到 θ  

    maximumi=1nzlnQi(zi)p(xi,zi;θ)Qi(zi)

    参考文献:  [1] 模式分类 Richard O.Duda,Peter E. Hart,David G.Stock 68~69  另外有几位前辈写的非常好,值得学习  Rachel Zhang EM算法原理  JerryLead EM算法  还有一篇百度文库里的  EM算法和GMM训练应用

    转载请注明原文地址: https://ju.6miu.com/read-1295429.html
    最新回复(0)