EM learning

来源:互联网 发布:网络组策略开通 编辑:程序博客网 时间:2024/06/01 10:30

在机器学习问题中,经常需要根据采样数据,推测其分布。一般都要用到极大似然估计(maximum likelihood)。

比如对于一组数据{x1,x2,...,xm},假设其分布函数是p(x|θ),为了求出分布函数的参数θ,我们假设如果这个θ对应的分布函数最大,那么此时的分布函数就是这组数据的真实分布。这有种从结果推测原因的感觉。p(x|θ)中的θ是原因,是x符合的分布,因此我们采样数据才能够得到{x1,x2,...,xm}。但是现在我们为了推测θ,反而从观测数据开始反推。

极大似然估计算法推测θ

θ=argmaxθp(x|θ)

但是对于比较复杂的模型,参数比较多,很难直接通过计算求出极大似然函数。所以就有了EM算法,通过迭代的方式,不断逼近极大似然函数。

EM算法的核心公式:

l(θ)=ilogp(x(i);θ)=ilogz(i)p(x(i),z(i);θ)=ilogz(i)Q(z(i)i)p(x(i),z(i);θ)Q(z(i)i)iz(i)Q(z(i)i)logp(x(i),z(i);θ)Q(z(i)i)

上面的推导中,用到了Jensen不等式,因为log函数是个凹函数。取等条件是p(x(i),z(i);θ)Q(z(i)i)为常数(关于θ)。

所以,取

Q(z(i)i)=p(x(i),z(i);θ)zp(x(i),z;θ)=p(z(i)|x(i);θ)

那么,我们现在可以通过改变Q(z(i)i)的取值,来逼近极大似然函数。而且我们知道,当Q(z(i)i)=p(z(i)|x(i);θ)的时候,l(θ)可以取得最大值。

至此,EM算法的思路已经很清晰了:

repeat until converge{
(E step) 求出每个样本数据对应的函数

Qi(z(i)i):=p(z(i)|x(i);θ)

(M step) 求出极大似然估计参数θ

θ=argmaxθiz(i)Q(z(i)i)logp(x(i),z(i);θ)Q(z(i)i)

}

直观地理解上面的算法流程,在每次的迭代更新中,算法都会将样本数据代入到当前的模型中,进行计算。然后利用计算的结果更新模型。在下一次的迭代中,因为模型被更新过了,所以在E step中利用样本数据进行计算的结果也会发生变化。

可以证明,在不断的迭代中,计算结果总是朝着θ越来越接近极大似然的方向进行的(只需要证明第t+1次迭代后的似然函数比第t次迭代后的似然函数大,就可以了,即l(t+1)l(t))。那么,循环很多次之后,计算结果也就非常接近真实情况啦!

利用EM算法,推测GMM模型的参数

未完,待续。。。

0 0