EM 算法
如果概率模型的变量都是观测变量,那么给定数据,可以直接使用极大似然估计法。但当模型含有隐含变量时,不能简单的进行极大似然估计,需要EM算法。因此EM算法是对含有隐含变量的概率模型参数进行极大似然估计。
为了说明EM算法,首先介绍Jession不等式。
Jession inequality
如果 f 为凸函数 f′′(x)≥0 f ″ ( x ) ≥ 0 ,那么 f(E(x))≤E(f(x)) f ( E ( x ) ) ≤ E ( f ( x ) )
如果 f 为凹函数 f′′(x)≤0 f ″ ( x ) ≤ 0 ,那么 f(E(x))≥E(f(x)) f ( E ( x ) ) ≥ E ( f ( x ) )
f(E(x))=E(f(x)) f ( E ( x ) ) = E ( f ( x ) ) 的充要条件是随机变量x在概率1下取相同值。
下面来推导EM算法:
模型: P(x,z,θ) P ( x , z , θ )
仅观测到 x
目标:最大化极大似然函数 l(θ)=∑mi=1log(P(xi,θ))=∑mi=1log(∑ziP(xi,ziθ)) l ( θ ) = ∑ i = 1 m l o g ( P ( x i , θ ) ) = ∑ i = 1 m l o g ( ∑ z i P ( x i , z i θ ) )
上述问题的难点是log中含有加法。
基本精神 :初始化参数 θ θ ,建立一个对数似然函数的比较紧密的下界,猜测参数之后,找到这个函数取最大值的 θ θ ,并重复上述过程,直到收敛到函数的一个局部最优值(不保证达到全局最优解)。
l(θ)=∑ilog(P(xi,θ))=∑i=1log(∑ziP(xi,zi,θ)) l ( θ ) = ∑ i l o g ( P ( x i , θ ) ) = ∑ i = 1 l o g ( ∑ z i P ( x i , z i , θ ) )
=∑i=1log(∑ziQ(zi)P(xi,zi,θ))Q(zi) = ∑ i = 1 l o g ( ∑ z i Q ( z i ) P ( x i , z i , θ ) ) Q ( z i )
其中 Qi(zi) Q i ( z i ) 为 zi z i 的一个概率分布
=∑ilogEzi∈Q[P(xi,zi,θ))Q(zi)] = ∑ i l o g E z i ∈ Q [ P ( x i , z i , θ ) ) Q ( z i ) ]
根据Jession不等式,有
≥∑iEzi∈Q[log(P(xi,zi,θ))Q(zi))] ≥ ∑ i E z i ∈ Q [ l o g ( P ( x i , z i , θ ) ) Q ( z i ) ) ]
=∑i∑ziQ(zi)log(P(xi,zi,θ))Q(zi)) = ∑ i ∑ z i Q ( z i ) l o g ( P ( x i , z i , θ ) ) Q ( z i ) )
当 P(xi,zi,θ))Q(zi) P ( x i , z i , θ ) ) Q ( z i ) 以概率1取恒定值时,等号成立,因此,获得原始函数的一个紧密的下界。选取合适的 Q(zi) Q ( z i ) 使得等式成立。
根据 P(xi,zi,θ))Qi(zi)=constant P ( x i , z i , θ ) ) Q i ( z i ) = c o n s t a n t ,可以得到: Q(zi) Q ( z i ) 正比于 P(xi,zi,θ) P ( x i , z i , θ )
∑ziQ(zi)=1 ∑ z i Q ( z i ) = 1
根据上边两式可以得到: Q(zi)=P(xi,zi,θ)∑ziP(xi,zi,θ)=P(xi,zi,θ)P(xi,θ)=P(zi|xi,θ) Q ( z i ) = P ( x i , z i , θ ) ∑ z i P ( x i , z i , θ ) = P ( x i , z i , θ ) P ( x i , θ ) = P ( z i | x i , θ )
因此EM算法总结如下:
E-step:
计算 Qi(zi)=P(zi|xi,θ) Q i ( z i ) = P ( z i | x i , θ )
M-step:
最大化紧却下界函数:
θ=argmaxθ∑i∑ziQ(zi)log(P(xi,zi,θ))Q(zi)) θ = a r g m a x θ ∑ i ∑ z i Q ( z i ) l o g ( P ( x i , z i , θ ) ) Q ( z i ) )