EM算法
机器学习
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。但是在一些情况下,观察数据中有未观察到的隐含数据,因而无法直接用极大化对数似然函数得到模型分布的参数。EM算法也称期望最大化算法(Expectation-Maximum, EM)。
1. 何时使用EM
- 观测数据X={x1,x2,⋯,xn}
- 观测数据Z={z1,z2,⋯,zk}
- 完整数据Y={X,Z}
- 模型参数θ有待估计
(1) 观测数据条件下的似然函数难以求得 L(θ|X)=P(X|θ)
(2) 完全数据条件下的似然函数容易求得 L(θ|Y)=P(Y|θ)
(3) 观测数据条件下的隐变量容易求得 P(Z|X,θ)
2. EM算法
- 输入:观测数据X,隐变量数据Z,联合分布P(X,Z|θ),条件分布P(Z|X,θ).
- 输出:模型参数θ.
(1) 初始化θ(0)
(2) E步:记θ(i)为第i次迭代参数θ的估计值,在第i+1次迭代E步,计算
Q(θ,θ(i))=EZ(logP(X,Z|θ)|X,θ(i))=∑zP(Z|X,θ(i))logP(X,Z|θ)
(3) M步:求使Q(θ,θ(i))极大化的θ,确定第i+1次迭代的参数的估计值θ(i+1)
θ(i+1)=argmaxθ(Q(θ,θ(i)))
(4) 重复第(2)(3)步,直到收敛。
3. EM算法的推导
目标是极大化观测数据X关于参数θ的对数似然,即最大化
L(θ|X)=logP(X|θ)=log∑zP(X,Z|θ)=log(∑zP(X|Z,θ)P(Z|θ))
EM算法通过迭代逐步近似极大化L(θ)。假设我们在第i次迭代后θ的估计值是θ(i),我们希望下一次的估计值能够使得L(θ)增加,即L(θ)>L(θ(i))。考虑两者作差:
L(θ)−L(θ(i))=log(∑ZP(X|Z,θ)P(Z|θ))−logP(X|θ(i))=log[∑zP(Z|X,θ(i))P(X|Z,θ)P(Z|θ)P(Z|X,θ(i))]−logP(X|θ(i))≥∑zP(Z|X,θ(i))logP(X|Z,θ)P(Z|θ)P(Z|X,θ(i))−logP(X|θ(i))=∑zP(Z|X,θ(i))logP(X|Z,θ)P(Z|θ)P(Z|X,θ(i))−∑zP(Z|X,θ(i))logP(X|θ(i))=∑zP(Z|X,θ(i))logP(X|Z,θ)P(Z|θ)P(Z|X,θ(i))P(X|θ(i))
中间一步用到了Jenson不等式:对于一个凸函数,有
∑iλif(xi)≥f(∑iλixi)其中λi≥0,∑iλi=1
换一种写法,就是
E(f(x))≥f(E(x))
由于L(θ)−L(θ(i))是凹函数,所以f(E(x))≥E(f(x))
令
B(θ,θ(i))=L(θ(i))+∑zP(Z|X,θ(i))logP(X|Z,θ)P(Z|θ)P(Z|X,θ(i))P(X|θ(i))
所以
L(θ)≥B(θ,θ(i))
B(θ,θ(i))是 L(θ)的一个下界。因此能使B(θ,θ(i))增大的θ也可以使L(θ)增大。选择θ(i+1)使B(θ,θ(i))达到极大:
θ(i+1) =argmaxθB(θ,θ(i))=argmaxθ[L(θ(i))+∑zP(Z|X,θ(i))logP(X|Z,θ)P(Z|θ)P(Z|X,θ(i))P(X|θ(i))]=argmaxθ[∑zP(Z|X,θ(i))log(P(X|Z,θ)P(Z|θ))]=argmaxθ[∑zP(Z|X,θ(i))logP(X,Z|θ)]=argmaxθ[EZ(logP(X,Z|θ)|X,θ(i))]=argmaxθ(Q(θ,θ(i)))