EM算法原理和实现的学习总结

0. 写在前面(学习过程总结)

我的数学基础不好,所以EM算法折腾了不少时间才真正理解。

我对EM算法的理解过程经历了如下几个阶段:

  1. 看《统计学习方法》上的第9章 EM算法及其推广,对EM算法需要解决的问题和原理有了一个初步的印象;
    (这个时候其实并不是完全明白)
  2. 根据 EM算法整理及其python实现 这篇博客,再梳理一遍原理,然后敲了一遍代码。
    (这个时候已经对EM中 e-step 和 m-step 的原理和步骤有比较好的理解了,纸上得来终觉浅,绝知代码要手写)
  3. 然后复习了HMM的原理,HMM的无监督学习方法就是类似EM算法的鲍姆-韦尔奇算法,这里其实主要目的是看HMM需要解决的问题,也就是对EM算法需要解决的问题能够有更深的理解,这样看公式的时候能够带入HMM的问题,公式就不会那么抽象了。
  4. 最后看了博客 EM算法原理总结-刘建平,重新梳理一遍原理,他的博客内容和《统计学习方法》内容差不多,可能更加简练一些,因为之前已经有了基础知识,再回过头来看公式就会觉得很容易理解了。

1. EM算法的原理

EM算法是一种迭代算法,它也称为期望最大化(Expectation-Maximum,简称EM)算法。
EM算法分为两步骤:
(1)E步:期望
(2)M步:求极大
然后不断重复1、2两步,直到参数收敛,就得到了需要的模型参数。

EM算法的求解过程其实就是先猜测一组模型参数(具体实现的时候可以都设为0或者随机初始化,看具体要求),然后基于猜测的模型参数和观测序列来极大化对数似然函数,求解模型参数。

2. EM算法的公式推导

EM算法的推导可以看下博客:EM算法原理总结-刘建平,写的非常精炼。

下面的内容基于这一篇博客来写的,加上了我自己对公式的理解和推导过程。

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

arg ⁡ max ⁡ θ L ( θ ) = arg ⁡ max ⁡ θ ∑ i = 1 m l o g P ( x ( i ) ; θ ) (1) \mathop {\arg \max_\theta }L(\theta)=\mathop {\arg \max_\theta }{\sum_{i=1}^m logP(x^{(i)};\theta)} \tag{1} argθmaxL(θ)=argθmaxi=1mlogP(x(i);θ)(1)

(备注:这里是对应刘建平老师博客的第一条公式,原博是 θ = \theta= θ=,我觉得这里不太好理解,应该是关于 θ \theta θ 的对数似然函数,因此做了修改)

如果观察数据 x x x序列,有对应的无法观察到的隐含数据 z = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) z=(z(1),z(2),...,z(m)) z=(z(1),z(2),...,z(m)),那么对数似然函数的公式中就要再加上一个变量,此时我们的极大化模型分布的对数似然函数如下:

arg ⁡ max ⁡ θ L ( θ ) = arg ⁡ max ⁡ θ ∑ i = 1 m l o g P ( x ( i ) ; θ ) = arg ⁡ max ⁡ θ ∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) (2) \mathop {\arg \max_\theta } L(\theta)=\mathop {\arg \max_\theta }{\sum_{i=1}^m logP(x^{(i)};\theta)} \\ = \mathop {\arg \max_\theta }{\sum_{i=1}^m log {\sum_{z^{(i)}}} P(x^{(i)},z^{(i)};\theta)} \tag{2} argθmaxL(θ)=argθmaxi=1mlogP(x(i);θ)=argθmaxi=1mlogz(i)P(x(i),z(i);θ)(2)

这个公式也不难理解,以HMM做实体标注为例,观测序列是输出多个词,隐藏状态序列是每个词对应的label,那么这里的 z ( i ) z^{(i)} z(i) 就是隐藏状态label i 的概率。

所以公式里的 ∑ z ( i ) \sum z^{(i)} z(i) 就是对于每一个观测序列,求它在 所有隐藏状态序列的概率和。

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

∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) = ∑ i = 1 m l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) (3) {\sum_{i=1}^m log {\sum_{z^{(i)}}} P(x^{(i)},z^{(i)};\theta)} = {\sum_{i=1}^m log {\sum_{z^{(i)}}} Q_i(z^{(i)}) \frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}} \tag{3} i=1mlogz(i)P(x(i),z(i);θ)=

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值