EM算法推导(收敛性证明和在GMM中的应用)

一、EM算法的提出

当你有一组数据像如下这样:

显然用单个高斯分布模型去拟合它们效果不好,这是一个典型的高斯混合模型的例子:

p ( X ) = l = 1 k α l N ( X | μ l , Σ l ) l = 1 k α l = 1
α l

Θ = { α 1 , , α k , μ 1 , , μ k , Σ 1 , , Σ k } ,则有:
(58) Θ M L E = arg max Θ L ( Θ | X ) (59) = arg max Θ ( i = 1 n l o g l = 1 k α l N ( X | μ l , Σ l ) )

该式子包含和(或积分)的对数,不能像单个高斯模型那样直接求导,再令导数为0来求解。这时我们需要利用 EM 算法通过迭代逐步近似极大化 L ( Θ | X ) 来求解。

这里写图片描述

Note: picture source

二、EM算法的导出

先提出 Jensen 不等式:
对于凸函数(convex),有:

f ( t x 1 + ( 1 t ) x 2 ) t f ( x 1 ) + ( 1 t ) f ( x 2 )
扩展到高维,令 i = 1 k p i = 1 p i 0
f ( p 1 x 1 + + p k x k ) p 1 f ( x 1 ) + + p k f ( x k )
f ( i = 1 k p i x i ) i = 1 k p i f ( x i )
ϕ 代替 f f ( x ) 代替 x , 我们有
ϕ ( i = 1 k p i f ( x i ) ) i = 1 k p i ϕ ( f ( x i ) )

故对于凸函数(convex),有下面这条结论:

ϕ ( E [ f ( x ) ] ) E [ ϕ ( f ( x ) ) ]
同理,对于凹函数(concave),有相反的结论:
ϕ ( E [ f ( x ) ] ) E [ ϕ ( f ( x ) ) ]

我们通过引入隐变量 Z 来极大化观测数据 X 关于参数 θ 的对数似然函数:

(3) L ( θ ) = l n   P ( X | θ ) = l n ( P ( X , Z | θ ) P ( Z | X , θ ) ) (4) = l n ( P ( X , Z | θ ) Q ( Z ) Q ( Z ) P ( Z | X , θ ) ) (5) = l n ( P ( X , Z | θ ) Q ( Z ) ) + l n ( Q ( Z ) P ( Z | X , θ ) )

故:

(6) l n   P ( X | θ ) (7) (8) = Z l n ( P ( X , Z | θ ) Q ( Z ) ) Q ( Z ) + Z l n ( Q ( Z ) P ( Z | X , θ ) ) Q ( Z ) (9) (10) = r ( X | θ ) + K L ( Q ( Z ) | | P ( Z | X , θ ) )

其中, K L ( ) 0 ,则 l n   P ( X | θ ) r ( X | θ ) ,也可利用上面的 Jensen 不等式证明:

(11) l n   P ( X | θ ) = l n Z P ( X , Z | θ ) (12) = l n Z P ( X , Z | θ ) Q ( Z ) Q ( Z ) = l n E Q ( Z ) [ f ( Z ) ] (13) E Q ( Z ) l n [ f ( Z ) ] = Z l n ( P ( X , Z | θ ) Q ( Z ) ) Q ( Z )

又当 Q ( Z ) = P ( Z | X , Θ ( g ) ) 时 ,有 K L ( ) = 0 ,此时有:
l n   P ( X | Θ ( g ) ) = r ( X | Θ ( g ) )

由上 r ( X | Θ ) L ( Θ ) 的一个下界函数, 我们通过不断求解下界函数的极大化来逼近求解对数似然函数的极大化:

(60) Θ ( g + 1 ) = arg max Θ Z l n ( P ( X , Z | Θ ) P ( Z | X , Θ ( g ) ) ) P ( Z | X , Θ ( g ) ) (61) = arg max Θ Z l n ( P ( X , Z | Θ ) ) P ( Z | X , Θ ( g ) )   d z

EM算法每次迭代包含两步:E步,求期望;M步,求极大化。令 :

Q ( Θ , Θ ( g ) ) = Z l n ( P ( X , Z | Θ ) ) P ( Z | X , Θ ( g ) )   d z

EM算法如下:

EM算法:
输入:观测变量数据X,隐变量数据Z,联合分布 P ( X , Z | Θ ) ,条件分布 P ( Z | X , Θ )
输出:模型参数 Θ
(1) 选择初始参数 Θ ( 0 )
(2) E步,记 Θ ( i ) 为第 i 次迭代参数 Θ 的估计值,在第 i+1 次迭代的E步, 计算 Q ( Θ , Θ ( g ) ) ;
(3) M步,确定第 i+1 次迭代的参数的估计值 Θ ( i + 1 ) ,即:

Θ ( i + 1 ) = arg max Θ   Q ( Θ , Θ ( g ) )

(4) 重复(2)步和(3)步,直到收敛。

下图给出 EM 算法的直观解释:

这里写图片描述

由图,两个函数在 θ = θ ( g ) 处相等,由EM算法 (3) 步,我们得到下一个点 θ ( g + 1 ) 使下界函数极大化。下界函数的增加保证对数似然函数在每次迭代中也是增加的。EM算法在点 θ ( g + 1 ) 处重新计算 Q ( Θ , Θ ( g + 1 ) ) , 进行下一次迭代。迭代过程中,对数似然函数不断增大,但从图可以看出EM算法不能保证找到全局最优值。

三、EM算法的收敛性

P ( X | θ ) = P ( X , Z | θ ) P ( Z | X , θ )
取对数有:
l o g P ( X | θ ) = l o g P ( X , Z | θ ) l o g P ( Z | X , θ )

记,
Q ( θ , θ ( g ) ) = Z l o g ( P ( X , Z | θ ) ) P ( Z | X , θ ( g ) )   d z
H ( θ , θ ( g ) ) = Z l o g ( P ( Z | X , θ ) ) P ( Z | X , θ ( g ) )   d z

于是对数似然函数可以写成:
l o g P ( X | θ ) = Q ( θ , θ ( g ) ) H ( θ , θ ( g ) )

故有如下等式:
l o g P ( X | θ ( g + 1 ) ) l o g P ( X | θ ( g ) ) = [ Q ( θ ( g + 1 ) , θ ( g ) ) Q ( θ ( g ) , θ ( g ) ) ] [ H ( θ ( g + 1 ) , θ ( g ) ) H ( θ ( g ) , θ ( g ) ) ]

显然,右端第一项,由于 θ ( g + 1 ) 使 Q ( θ , θ ( g ) ) 达到极大,所以有:
Q ( θ ( g + 1 ) , θ ( g ) ) Q ( θ ( g ) , θ ( g ) ) 0
其第二项,有:
(78) H ( θ ( g + 1 ) , θ ( g ) ) H ( θ ( g ) , θ ( g ) ) (79) = Z l n ( P ( Z | X , θ ( g + 1 ) ) P ( Z | X , θ ( g ) ) ) P ( Z | X , θ ( g ) ) (80) l n Z ( P ( Z | X , θ ( g + 1 ) ) P ( Z | X , θ ( g ) ) P ( Z | X , θ ( g ) ) ) (81) = l n ( Z P ( Z | X , θ ( g + 1 ) ) ) = 0
综上,有:
l o g P ( X | θ ( g + 1 ) ) l o g P ( X | θ ( g ) )

四、EM算法在GMM中的应用

在本文的第一部分已经提出高斯混合模型:

p ( X ) = l = 1 k α l N ( X | μ l , Σ l ) l = 1 k α l = 1
Θ = { α 1 , , α k , μ 1 , , μ k , Σ 1 , , Σ k }

在本文的第三部分我们已经推导出EM算法:

Θ ( g + 1 ) = arg max Θ Z l n ( P ( X , Z | Θ ) ) P ( Z | X , Θ ( g ) )   d z

E step:

我们需要定义这两项 l n P ( X , Z | Θ ) P ( Z | X , Θ ) ;

P ( X | Θ ) = l = 1 k α l N ( X | μ l , Σ l ) = i = 1 n l = 1 k α l N ( x i | μ l , Σ l )

由上式,我们可以定义:
(20) P ( X , Z | Θ ) = i = 1 n p ( x i , z i | Θ ) (21) = i = 1 n p ( x i | z i , Θ ) p ( z i | Θ ) = i = 1 n α z i N ( μ z i , Σ z i )

由贝叶斯公式,我们有:
P ( Z | X , Θ ) = i = 1 n p ( z i | x i , Θ ) = i = 1 n α z i N ( μ z i , Σ z i ) l = 1 k α l N ( μ l , Σ l )

结合两式,得到:
(22) Q ( Θ , Θ ( g ) ) = Z l n ( P ( X , Z | Θ ) ) P ( Z | X , Θ ( g ) )   d z (23) = z 1 z k ( i = 1 n [ l n α z i + l n N ( μ z i , Σ z i ) ] ) i = 1 n p ( z i | x i , Θ ( g ) )   d z 1 d z k

令:
f ( z i ) = l n α z i + l n N ( μ z i , Σ z i )
p ( z 1 , , z k ) = i = 1 n p ( z i | x i , Θ ( g ) )
又可以写成如下形式:
Q ( Θ , Θ ( g ) ) = z 1 z k ( i = 1 n f ( z i ) ) p ( z 1 , , z k )   d z 1 d z k
看上式的第一项,可以作如下化简:
(24) z 1 z k ( f ( z 1 ) ) p ( z 1 , , z k )   d z 1 d z k (25) = z 1 f ( z 1 ) z 2 z k p ( z 1 , , z k )   d z 1 d z k (26) = z 1 f ( z 1 ) p ( z 1 ) d z 1

每一项都作类似的化简,我们得到:
(27) Q ( Θ , Θ ( g ) ) = i = 1 n z i f ( z i ) p ( z i ) d z i (28) = i = 1 n z i ( l n α z i + l n N ( x i | μ z i , Σ z i ) ) p ( z i | x i , Θ ( g ) ) d z i (29) = z i = 1 k i = 1 n ( l n α z i + l n N ( x i | μ z i , Σ z i ) p ( z i | x i , Θ ( g ) ) (30) = l = 1 k i = 1 n ( l n α l + l n N ( x i | μ l , Σ l ) p ( l | x i , Θ ( g ) )

M step:

Q(Θ,Θ(g))=kl=1ni=1(lnαl+lnN(xi|μl,Σl))p(l|xi,Θ(g))=kl=1ni=1lnαlp(l|xi,Θ(g))+kl=1ni=1ln[N(xi|μl,Σl)]p(l|xi,Θ(g))
容易看出第一项只含参数 α,第二项只含参数 μ,Σ,因此我们可以独立地进行最大化两项。
(1)最大化 α
kl=1ni=1lnαlp(l|xi,Θ(g))α1,,αk=[0,,0]st.kl=1αl=1
这是一个有约束的极值问题,我们利用拉格朗日乘子法进行求解:
L(α1,,αk,λ)=kl=1ln(αl)(ni=1p(l|xi,Θ(g))λ(kl=1αl1) 求解如下:
Lαl=1αl(ni=1p(l|xi,Θ(g)))λ=0Lλ=(kl=1αl1)=0αl=1Nni=1p(l|xi,Θ(g))

由下图我们可以直观理解:
α1 就是把所有样本点的 aa+b 加起来再除以样本总数N,即求所有样本点的 aa+b 的均值;
α2 就是把所有样本点的 ba+b 加起来再除以样本总数N,即求所有样本点的 ba+b 的均值;

这里写图片描述

(2)最大化 μ,Σ
kl=1ni=1ln[N(xi|μl,Σl)]p(l|xi,Θ(g))μ1,,μk,Σ1,,Σk=[0,,0]
经过化简可以得到:
μl=ni=1xip(l|xi,Θ)ni=1p(l|xi,Θ)
\Sigma_l=\frac{\sum_{i=1}^{n} (x_i-\mu_l)(x_i-\mu_l)^Tp(l|x_i,\Theta)}{\sum_{i=1}^{n} p(l|x_i,\Theta)}

\

五、PYTHON Demos

Demo1:
这里写图片描述
Demo2:
这里写图片描述

——————————代码链接——————————

六、参考资料


[1] 李航《统计学习方法》
[2] 徐亦达教授的自视频
[3] machine-learning-notes(em.pdf).Professor Richard Xu .