忘了用了几天的时间来学习EM算法、GMM,学习老师的语音识别程序,先看老师的PPT(简单介绍EM算法和GMM,MFCC的步骤),源代码(刚开始看的时候完全不懂),然后在网上搜索了MFCC方法,通过博客和别人的文档学习GMM,EM算法,又去看了PRLM这本书的第九章(关于GMM和EM的),现在感觉还是似懂非懂,主要是推到过程不清楚加上没有程序实现。可能是我的学习方法有问题。可以和同学多交流,向别人请教下学习方法。也希望看到这篇文章的童鞋在学习方法上不吝赐教。
周日下午,抓住周末的尾巴,知识只有总结了才能更好的理解。
似然函数
假设样本集
D
中有
n
个样本:
若 D 已知所以可以把 p(D|θ) 看成是参数向量 θ 的函数,被称为样本集 D 下的似然函数。
参数向量 θ 的最大似然估计,就是使 p(x|θ) 达到最大值的那个参数向量 θ^ 。也就是说,参数向量 θ 的最大似然估计就是最符合已有的观测样本集的那一个[1]。
为了方便分析,通常情况下,总是使用对数似然函数。
这个式子会在EM推到过程中用到。
Jensen不等式
没有仔细学习,简单说就是,如果函数
f(x)
是凸函数,那么有
E[f(X)]≥f([E(X)])
。如果f是严格凸函数,那么当且仅当
x=c
即x是常量时,等号成立。
如果是凹函数,上式变为小于等于。
EM算法
解决带有隐含变量的模型的最大似然问题。可以用于聚类,参数估计等
1
通过最大似然估计来得到模型中的参数
θ
,目标函数就是上面的对数似然函数。
l(θ)=∑ni=1lnp(xi;θ)
对于有隐含变量的模型来说(隐含变量可以是丢失的特征或样本的类别),对数似然函数的形式:
隐含变量 zk 对我们来说完全是未知的,假设 z 满足某种分布 Qi(z) ,则有 ∑Qi(z)=1 。
上面的对数似然函数就可以写成:
2
要最大化上面的
l(θ)
显然比较困难。这时就要用到Jensen不等式了。
可以把
l(θ)
写成
上式最右边的分式 p(xi,zi;θ)Qi(zi) 是Jensen不等式中的随机变量X,把它看作 zi 的函数, Qi(zi) 为概率密度,那么 ∑zQi(zi)p(xi,zi;θ)Qi(zi) 就是Jensen不等式中的 E(X) 。
因为 ln(x) 为凹函数,所以有
这样我们就可以不断增大上面(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步中利用最大似然估计来得到
θ
参考文献:
[1] 模式分类 Richard O.Duda,Peter E. Hart,David G.Stock 68~69
另外有几位前辈写的非常好,值得学习
Rachel Zhang EM算法原理
JerryLead EM算法
还有一篇百度文库里的
EM算法和GMM训练应用