简介
EM算法也就是期望最大化算法,主要用来解决含有隐变量的参数估计问题。本文令
X
表示已观测变量数据集,
思想与算法步骤
先从最基本的说起,在已观测样本集
X
的基础上,使用极大释然估计。写出
公式最右边是已观测数据的边际释然,如果可以得到隐含变量
Z
,则可以直接写出释然函数
先介绍一下基本思想,如果有办法求出释然函数
LL(θ)
的一个下界函数,假设叫
G(θ)
吧,使得对所有参数
θ
都有
LL(θ)≥G(θ)
。而
G(θ)
中又不包含隐变量
Z
,那么我们就可以用迭代的办法,先用
回到具体的参数估计问题,EM算法分为两个步骤,E步(Expectation)求期望,M步(Maximization)最大化。E步的期望,就是给定
θt
时对数释然函数
LL(θ|X,Z)
的下界函数。这个期望是对数似然函数
LL(θ|X,Z)
关于隐变量
Z
的期望,因为我们无法求出
算法的步骤如下
- 首先随机初始化参数
θ=θ0
- 迭代直至收敛 {
1. E步:
根据
θt
计算
P(Z|X;θt)
,求期望
2. M步:
E步之后会得到一个只包含 θ 的函数,M步就是最大化这个函数,得到新的参数 θ
}
原理
在上一部分已经介绍了EM算法的思想与步骤,但是还有一点没有说明白,那就是为什么对数似然函数 LL(θ|X,Z) 关于 Z 的期望会是它自己的一个下界函数呢?首先引入Jensen不等式。
Jensen不等式
Jensen不等式对于凸函数
也就是随机变量 X 函数值的期望大于等于随机变量期望的函数值。对于凹函数则相反。
在知道了Jensen不等式后,从最基本的情况进行推导
对上式的最右边用一个数学trick,同时乘和除得到隐变量
Z
在参数
这样就得到了期望
EZ
,有
又因为log函数是凹函数,所以利用Jensen不等式可以得到 随机变量期望的函数值大于等于函数值的期望,也就是
这样也就找到了 LL(θ|X) 的下界函数。再把它展开得到
又因为
P(Z|X;θt)
与参数
θ
无关,在最大化的时候不会影响结果,因此舍去。那么就可以得到
也就是EM算法中E步的期望 EZ|X;θt[LL(θ|X,Z)] 了(参见公式1)。
小结
EM算法和其他一些可以直接编程,然后给定input就可以得到output的算法不太一样,它本身更可以理解为一种方法或者思想。因为 P(Z|X;θt) 与 logP(X,Z;θ) 都只是理论推导过程中的公式,具体的可计算公式还要根据具体的应用来给定,比如pLSA(probability latent semantic analysis)中参数的求解就需要用到EM算法,在这个情形下就可以编程实现来验证EM算法的效果了。