EM算法

参考:https://www.cnblogs.com/pinard/p/6912636.html

参考:https://www.zhihu.com/question/27976634/answer/39132183

1. EM算法的推导

    对于mm个样本观察数据x=(x(1),x(2),...x(m))x=(x(1),x(2),...x(m))中,找出样本的模型参数θθ, 极大化模型分布的对数似然函数如下:

θ=argmaxθi=1mlogP(x(i)|θ)θ=argmaxθ∑i=1mlogP(x(i)|θ)

    如果我们得到的观察数据有未观察到的隐含数据z=(z(1),z(2),...z(m))z=(z(1),z(2),...z(m)),此时我们的极大化模型分布的对数似然函数如下:

θ=argmaxθi=1mlogP(x(i)|θ)=argmaxθi=1mlogz(i)P(x(i)z(i)|θ)θ=argmaxθ∑i=1mlogP(x(i)|θ)=argmaxθ∑i=1mlog∑z(i)P(x(i),z(i)|θ)

    上面这个式子是没有 办法直接求出θθ的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:

i=1mlogz(i)P(x(i)z(i)|θ)=i=1mlogz(i)Qi(z(i))P(x(i)z(i)|θ)Qi(z(i))i=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)Qi(z(i))(1)(2)(1)∑i=1mlog∑z(i)P(x(i),z(i)|θ)=∑i=1mlog∑z(i)Qi(z(i))P(x(i),z(i)|θ)Qi(z(i))(2)≥∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)Qi(z(i))

    上面第(1)式引入了一个未知的新的分布Qi(z(i))Qi(z(i)),第(2)式用到了Jensen不等式:

logjλjyjjλjlogyj,λj0,jλj=1log∑jλjyj≥∑jλjlogyj,λj≥0,∑jλj=1

    或者说由于对数函数是凹函数,所以有:

f(E(x))E(f(x))f(x)f(E(x))≥E(f(x))如果f(x)是凹函数

    此时如果要满足Jensen不等式的等号,则有:

P(x(i)z(i)|θ)Qi(z(i))=c,cP(x(i),z(i)|θ)Qi(z(i))=c,c为常数

    由于Qi(z(i))Qi(z(i))是一个分布,所以满足:

zQi(z(i))=1∑zQi(z(i))=1

    从上面两式,我们可以得到:

Qi(z(i))=P(x(i)z(i)|θ)zP(x(i)z(i)|θ)=P(x(i)z(i)|θ)P(x(i)|θ)=P(z(i)|x(i)θ))Qi(z(i))=P(x(i),z(i)|θ)∑zP(x(i),z(i)|θ)=P(x(i),z(i)|θ)P(x(i)|θ)=P(z(i)|x(i),θ))

    如果Qi(z(i))=P(z(i)|x(i)θ))Qi(z(i))=P(z(i)|x(i),θ)), 则第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:

argmaxθi=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)Qi(z(i))argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)Qi(z(i))

    去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:

argmaxθi=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)

    上式也就是我们的EM算法的M步,那E步呢?注意到上式中Qi(z(i))Qi(z(i))是一个分布,因此z(i)Qi(z(i))logP(x(i)z(i)|θ)∑z(i)Qi(z(i))logP(x(i),z(i)|θ)可以理解为logP(x(i)z(i)|θ)logP(x(i),z(i)|θ)基于条件概率分布Qi(z(i))Qi(z(i))的期望。

    至此,我们理解了EM算法中E步和M步的具体数学含义。

2. EM算法流程

    现在我们总结下EM算法的流程。

    输入:观察数据x=(x(1),x(2),...x(m))x=(x(1),x(2),...x(m)),联合分布p(x,z|θ)p(x,z|θ), 条件分布p(z|x,θ)p(z|x,θ), 最大迭代次数JJ

    1) 随机初始化模型参数θθ的初值θ0θ0

    2) for j  from 1 to J开始EM算法迭代:

      a) E步:计算联合分布的条件概率期望:

Qi(z(i))=P(z(i)|x(i)θj))Qi(z(i))=P(z(i)|x(i),θj))
L(θj)=i=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)L(θ,θj)=∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)

      b) M步:极大化L(θ,θj)L(θ,θj),得到θj+1θj+1:

θj+1=argmaxθL(θ,θj)θj+1=argmaxθL(θ,θj)

      c) 如果θj+1θj+1已收敛,则算法结束。否则继续回到步骤a)进行E步迭代。

    输出:模型参数θθ


下面我们举一个生活的例子来说明一下:

背景:公司有很多领导=[A总,刘总,C总],同时有很多漂亮的女职员=[小甲,小章,小乙]。(请勿对号入座)你迫切的怀疑这些老总跟这些女职员有问题。为了科学的验证你的猜想,你进行了细致的观察。于是,

观察数据:
1)A总,小甲,小乙一起出门了;
2)刘总,小甲,小章一起出门了;
3)刘总,小章,小乙一起出门了;
4)C总,小乙一起出门了;

收集到了数据,你开始了神秘的EM计算:
初始化,你觉得三个老总一样帅,一样有钱,三个美女一样漂亮,每个人都可能跟每个人有关系。所以,每个老总跟每个女职员“有问题”的概率都是1/3,即θ的初始值为1/3;

这样,(E step:θ=1/3为初始概率分布模型
1) A总跟小甲出去过了 1/2 * 1/3 = 1/6 次,跟小乙也出去了1/6次;(所谓的fractional count)
2)刘总跟小甲,小章也都出去了1/6次
3)刘总跟小乙,小章又出去了1/6次
4)C总跟小乙出去了1/3次

总计,A总跟小甲出去了1/6次,跟小乙也出去了1/6次 ; 刘总跟小甲,小乙出去了1/6次,跟小章出去了1/3次;C总跟小章出去了1/3次;

你开始跟新你的八卦了(M step:利用E step得出的数据,进行似然估计,求解L(θ)的最大似然估计值,更新θ值),
A总跟小甲,小乙有问题的概率都是1/6 / (1/6 + 1/6) = 1/2;
刘总跟小甲,小乙有问题的概率是1/6 / (1/6+1/6+1/6+1/6) = 1/4; 跟小章有问题的概率是(1/6+1/6)/(1/6 * 4) = 1/2;
C总跟小乙有问题的概率是 1。

然后,你有开始根据最新的概率计算了;(E-step:以新的θ值为概率分布模型去计算期望值
1)A总跟小甲出去了 1/2 * 1/2 = 1/4 次,跟小乙也出去 1/4 次;
2)刘总跟小甲出去了1/2 * 1/4 = 1/12 次, 跟小章出去了 1/2 * 1/2 = 1/4 次;
3)刘总跟小乙出去了1/2 * 1/4 = 1/12 次, 跟小章又出去了 1/2 * 1/2 = 1/4 次;
4)C总跟小乙出去了1次;

重新反思你的八卦(M-step:再次更新θ值):
A总跟小甲,小乙有问题的概率都是1/4/ (1/4 + 1/4) = 1/2;
B总跟小甲,小乙是 1/12 / (1/12 + 1/4 + 1/4 + 1/12) = 1/8 ; 跟小章是 3/4 ;
C总跟小乙的概率是1。

不断的迭代E step 和 M step ,until θ 值收敛


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值