前言
之前我写过一篇EM算法的笔记:
EM算法(Expectation-maximization algorithm)小结
从中我们可以看到,EM算法的本质就是E-step和M-step的重复迭代:
- E-step: Q ( ϕ ∣ ϕ i ) = E ( log ( f ( x ∣ ϕ ) ) ∣ y , ϕ i ) Q\left(\phi \mid \phi^{i}\right)=E\left(\log (f(x \mid \phi)) \mid y, \phi^{i}\right) Q(ϕ∣ϕi)=E(log(f(x∣ϕ))∣y,ϕi)
- M-step: ϕ i + 1 = arg max ( Q ( ϕ ∣ ϕ i ) ) \phi^{i+1}=\arg \max \left(Q\left(\phi \mid \phi^{i}\right)\right) ϕi+1=argmax(Q(ϕ∣ϕi))
- repeat until ∥ Q ( ϕ i + 1 ∣ ϕ i ) − Q ( ϕ i ∣ ϕ i ) ∥ \left\|Q\left(\phi^{i+1} \mid \phi^{i}\right)-Q\left(\phi^{i} \mid \phi^{i}\right)\right\| ∥∥Q(ϕi+1∣ϕi)−Q(ϕi∣ϕi)∥∥充分小
但是这里的M-step可能比较复杂,这时候可能要引入广义的EM算法——GEM算法。
GEM背景
GEM算法是数据不完全或者存在缺失变量的情况下参数估计的迭代算法,和EM算法一样,每一次迭代是由期望(Expectation)和极大(Maximization)两步操作构成,也是一种广义的渐进逼近的最优化算法。相较于EM算法,其优缺点也比较明显。
优点
1、它所涉及理论的简单化和一般性,在大多数情况下,它实质上是一个优化算法,并且能够收敛到局部极值。
2、许多的应用都能纳入到GEM算法的范畴,当完全数据来源于一个指数分布族时,极大似然估计计算就比较简单,算法的每一个极大化的计算也比较简单。
缺点
1、GEM算法会收敛到局部极值,但不保证收敛到全局最优解。
2、对初值敏感:GEM通常需要一个好的、快速的初始化过程如矩方法得到的结果在GMM中。但这这样的情况并不是每次都能成功构筑。
特点
EM算法的核心在于其F函数,而GEM算法的特点是每次迭代增加F函数值(并不一定是极大化F函数),从而增加似然函数值。同时也能较好地解决Information Loss测度的问题。
GEM M-step
与EM算法的M-step的最大区别在于,GEM的M-step先定义 M ( ϕ ) M(\phi) M(ϕ)满足 Q ( M ( ϕ ) ∣ ϕ ) ≥ Q ( ϕ ∣ ϕ ) Q(M(\phi) \mid \phi) \geq Q(\phi \mid \phi) Q(M(ϕ)∣ϕ)≥Q(ϕ∣ϕ) for ∀ ϕ ∈ Ω \forall \phi \in \Omega ∀ϕ∈Ω,这里的Ω是参数空间,则M-step为 ϕ i + 1 = M ( ϕ ) \phi^{i+1}=M(\phi) ϕi+1=M(ϕ),即 Q ( ϕ i + 1 ∣ ϕ i ) ≥ Q ( ϕ i ∣ ϕ i ) Q\left(