EM算法理解

前言

前段时间学习 HMM-GMM 模型,对其优化算法“EM 算法”的理解不够透彻。经过反复查找资料学习,现将自己的理解进行整理,用以巩固。这里大部分公式推导都源自 [1] 中第二章内容。

辅助函数

EM算法是解决不完全数据下的最大似然估计的算法。从原理上讲,它通过逐步迭代,将最大化不完全数据的对数似然,转化为最大化完全数据的对数似然的期望。假设一个分布中分别有隐变量 S 和显变量 X,数据中只有 X 可观测,这就是不完全的数据。如果可以观测(S,X),则为完全数据。要估计包含隐变量的分布,需要最大化的目标就是 p(X|Φ) 。采用最大似然估计,最大化下式:

P(Φ)=logp(X|Φ)=logSp(S,X|Φ)

最右边的式子中 log sum 是无法分解的,所以无法像常规最大似然算法一样直接求解。于是,EM算法构造了如下的辅助函数:
Q(Φ|Φ(0))=Sp(S|X,Φ(0))logp(X,S|Φ)

这个辅助函数从形式上来看是把 log 和 sum 对调了一下,然后 sum 的每一项乘上一个系数,这个系数就是给定观测数据 X 以及旧模型 Φ(0) 下隐变量 S 的概率。这就是完全数据的对数似然的期望,由于 sum log 是可分解的,所以辅助函数 Q 更容易优化。

辅助函数分析

那么优化这个辅助函数 Q 与优化 P 有什么关系呢? 下面就来分析一下 P Q 之间的关系。
首先,来看一下贝叶斯公式的变形:

p(X|Φ)=p(S,X|Φ)p(S|XΦ)

对等式两边取 log 得到:
logp(X|Φ)=logp(S,X|Φ)logp(S|X,Φ)

这个式子的等号右边与 Q 有些接近了,少了期望,多了一个似然项。先把期望加进去,分别在上式两边对给定观测 X 及旧模型 Φ(0) 下的隐变量 S 求期望,如下:
E[logp(X|Φ)]S|X,Φ(0)=E[logp(X,S|Φ)]S|X,Φ(0)E[logp(S|X,Φ)]S|X,Φ(0)

等式左边即等于 logp(X|Φ) ,因为 logp(X|Φ) p(S|X,Φ(0)) 无关,所以取期望就为其本身。 上面的式子与 Q 只差多余的第二项了。上面的式子如果展开看着比较晕,先简化一下,定义:
Q(Φ|Φ(0))=E[logp(X,S|Φ)]S|X,Φ(0)=Sp(S|X,Φ(0))logp(X,S|Φ)

H(Φ|Φ(0))=E[logp(S|X,Φ)]S|X,Φ(0)=Sp(S|X,Φ(0))logp(S|X,Φ)

上面的 Q 就是辅助函数,而 H 就是多出来的那项。到目前为止可以得到:
P(Φ)=logp(X|Φ)=Q(Φ|Φ(0))H(Φ|Φ(0))

这就是所要优化的目标,与EM算法所构造的辅助函数 Q 之间的关系。接着就来看一下最大化 Q 与最大化 P 之间的关系。在上面的式子中一直假设 Φ(0) 为优化前的旧模型, Φ 为优化后的新模型。在这个假设下,对于相同观测数据,新模型的目标函数与旧模型的目标函数分别为 logp(X|Φ) logp(X|Φ)(0) ,两者相减得到:
logp(X|Φ)logp(X|Φ(0))=[Q(Φ|Φ(0))Q(Φ(0)|Φ(0))][H(Φ|Φ(0))H(Φ(0)|Φ(0))]

对于等号右边的第二项,可以证明它是小于等于0的,过程如下:
H(Φ|Φ(0))H(Φ(0)|Φ(0))=Sp(S|X,Φ(0))logp(S|X,Φ)Sp(S|X,Φ(0))logp(S|X,Φ(0))=Sp(S|X,Φ(0))logp(S|X,Φ)p(S|X,Φ(0))

由 Jenson 不等式:
iailogxilogiaixi  ai>0,iai=1

可得:
H(Φ|Φ(0))H(Φ(0)|Φ(0))Sp(S|X,Φ(0))p(S|X,Φ)p(S|X,Φ(0))=logSp(S|X,Φ)=0

所以,最后得到如下不等式:
logp(X|Φ)logp(X|Φ(0))Q(Φ|Φ(0))Q(Φ(0)|Φ(0))

这个式子的物理含义就是,如果对 Q 进行优化,得到更大 Q 。那么与之相应的 P 也会比旧的 P 大,而且新 P 与旧 P 之间的差值比新 Q 与旧 Q 之间的差值还要大。所以优化 Q 也会的到相应的 P 的优化。通过迭代的方式,随着 Q 的优化,最终 P 会收敛于某个局部最优点。一次迭代过程中,先对目标函数取期望 (Expectation),然后优化取期望后的辅助函数 (Maximization),这就是EM算法名字的由来。

参考文献

[1] 鄢志杰. 声学模型区分性训练及其在自动语音识别中的应用[D]. 中国科学技术大学, 2008.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值