机器学习之十五:EM(期望极大)算法


1、EM算法简介
    EM是一种迭代算法,1977年提出,是用来求解概率模型参数的一种算法。概率模型有时既含有观测变量,又含有隐变量或潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用最大似然估计法或者贝叶斯估计法去估计模型的参数。但是,当模型含有隐变量时,就不能简单的使用这些估计方法。EM算法就是含有隐变量的概率模型参数估计的最大似然估计法。
    实例:假设有三枚硬币,分别记做A,B,C。这些硬币正面出现的概率分别是 πpq π , p , q ,进行如下抛硬币实验:先抛硬币A,根据其结果,正面选择硬币B,反面选择硬币C,然后抛出选出的硬币,出现的结果正面记为1,反面记为0。独立重复的进行n次实验,观测结果如下:

1,1,0,1,0,0,1,0,1,1 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1

假设只能观测到抛硬币的结果,不能观测到抛硬币的过程,问如何根据观测结果估计出这个模型的参数。
    三硬币模型的概率模型可以写作:
p(y|θ)=zP(y,z|θ)=zP(z|θ)P(y|z,θ)=πpy(1p)(1y)+(1π)qy(1q)(1y) p ( y | θ ) = ∑ z P ( y , z | θ ) = ∑ z P ( z | θ ) P ( y | z , θ ) = π p y ( 1 − p ) ( 1 − y ) + ( 1 − π ) q y ( 1 − q ) ( 1 − y )

这里,等式的第一个恒等变换是全概率公式展开,第二个恒等变换是条件概率。随机变量y是观测变量,表示一次试验的结果是0或者1;随机变量z是隐变量,表示观测到的抛硬币A的结果; θ=(π,p,q) θ = ( π , p , q ) 是模型参数。
    将观测数据表示为 Y=(Y1,Y2,...,Yn)T Y = ( Y 1 , Y 2 , . . . , Y n ) T ,未观测数据表示为 Z=(Z1,Z2,...,Zn)T Z = ( Z 1 , Z 2 , . . . , Z n ) T ,则观测数据的似然函数为:
P(Y|θ)=ZP(Z|θ)P(Y|Z,θ) P ( Y | θ ) = ∑ Z P ( Z | θ ) P ( Y | Z , θ )


P(Y|θ)=j=1n[πpyj(1p)(1yj)+(1π)qyj(1q)(1yj)] P ( Y | θ ) = ∏ j = 1 n [ π p j y ( 1 − p ) ( 1 − y j ) + ( 1 − π ) q j y ( 1 − q ) ( 1 − y j ) ]

这里的j指的是第j次独立同分布试验。考虑模型参数 θ=(π,p,q) θ = ( π , p , q ) 的极大似然估计,即:
θ^=argmaxθlogP(Y|θ) θ ^ = a r g max θ l o g P ( Y | θ )

    这个问题没有解析解,只有通过迭代的方法求解。EM算法就是用于求解这个问题的一种迭代算法。
2、EM算法:
    输入:观测变量的数据Y,隐变量数据Z,联合分布 P(Y,Z|θ) P ( Y , Z | θ ) ,条件分布 P(Z|Y,θ) P ( Z | Y , θ )
    输出:模型的参数 θ θ
    (1)选择参数的初始值 θ(0) θ ( 0 ) ,开始迭代。参数的初值可以任意选择,但需要注意EM算法对初始是敏感的,选择不同的初值可能得到不同的参数估计值。
    (2)E步:记 θ(i) θ ( i ) 为第 i i 次迭代参数 θ θ 的估计值,在第 i+1 i + 1 次迭代的E步,计算:
Q(θ,θ(i))=EZ[logP(Y,Z|θ)|Y,θ(i)]=ZlogP(Y,Z|θ)P(Z|Y,θ(i)) Q ( θ , θ ( i ) ) = E Z [ l o g P ( Y , Z | θ ) | Y , θ ( i ) ] = ∑ Z l o g P ( Y , Z | θ ) P ( Z | Y , θ ( i ) )

这里, P(Z|Y,θ(i)) P ( Z | Y , θ ( i ) ) 是在给定观测数据Y和当前的参数估计 θ(i) θ ( i ) 下隐变量数据Z的条件概率分布。Q中的第一个变元 θ θ 表示要极大化的参数,第二个变元 θ(i) θ ( i ) 表示参数的当前估计值。
    (3)M步:求使 Q(θ,θ(i)) Q ( θ , θ ( i ) ) 极大化的 θ θ ,确定第 i+1 i + 1 次的迭代参数的估计值 θ(i+1) θ ( i + 1 ) :
θ(i+1)=argmaxθQ(θ,θ(i)) θ ( i + 1 ) = a r g max θ Q ( θ , θ ( i ) )

每次迭代使似然函数增大或达到局部极值。
    (4)重复第(2)和第(3)步,直到收敛。一般会给出停止迭代的条件,对于较小的正数 ε1,ε2 ε 1 , ε 2 ,若满足:
||θ(i+1)θ(i)||<ε1||Q(θ(i+1),θ(i))Q(θ(i),θ(i))||<ε2 | | θ ( i + 1 ) − θ ( i ) | | < ε 1 或 者 | | Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i ) , θ ( i ) ) | | < ε 2

则停止迭代。
3、EM算法的推导:
    我们对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数 θ θ 的对数似然函数,即极大化:
L(θ)=logP(Y|θ)=logZP(Y,Z|θ)=logZP(Z|θ)P(Y|Z,θ) L ( θ ) = l o g P ( Y | θ ) = l o g ∑ Z P ( Y , Z | θ ) = l o g ∑ Z P ( Z | θ ) P ( Y | Z , θ )

注意到这一极大化主要困难时该式中有未观测数据并有包含和的对数。
    事实上,EM算法是通过迭代逐步近似极大化 L(θ) L ( θ ) 的,假设在第 i i 次迭代后 θ θ 的估计值是 θ(i) θ ( i ) ,我们希望重新估计值 θ θ 能使 L(θ) L ( θ ) 增加,即 L(θ)>L(θ(i)) L ( θ ) > L ( θ ( i ) ) ,并逐步达到最大值,为此,考虑两者的差:
L(θ)L(θ(i))=logZP(Z|θ)P(Y|Z,θ)logP(Y|θ(i)) L ( θ ) − L ( θ ( i ) ) = l o g ∑ Z P ( Z | θ ) P ( Y | Z , θ ) − l o g P ( Y | θ ( i ) )

利用Jensen不等式:
logjλjyjjλjlogyj,λj0,jλj=1 log ⁡ ∑ j λ j y j ≥ ∑ j λ j log ⁡ y j , λ j ≥ 0 , ∑ j λ j = 1

可以得到两者的下界:
L(θ)L(θ(i))=logZP(Z|Y,θ(i))P(Z|θ)P(Y|Z,θ)P(Z|Y,θ(i))logP(Y|θ(i))ZP(Z|Y,θ(i))logP(Z|θ)P(Y|Z,θ)P(Z|Y,θ(i))logP(Y|θ(i))=logZP(Z|Y,θ(i))P(Z|θ)P(Y|Z,θ)P(Z|Y,θ(i))P(Y|θ(i)) L ( θ ) − L ( θ ( i ) ) = log ⁡ ∑ Z P ( Z | Y , θ ( i ) ) P ( Z | θ ) P ( Y | Z , θ ) P ( Z | Y , θ ( i ) ) − log ⁡ P ( Y | θ ( i ) ) ≥ ∑ Z P ( Z | Y , θ ( i ) ) log ⁡ P ( Z | θ ) P ( Y | Z , θ ) P ( Z | Y , θ ( i ) ) − log ⁡ P ( Y | θ ( i ) ) = log ⁡ ∑ Z P ( Z | Y , θ ( i ) ) P ( Z | θ ) P ( Y | Z , θ ) P ( Z | Y , θ ( i ) ) P ( Y | θ ( i ) )


B(θ,θ(i))=L(θ(i))+logZP(Z|Y,θ(i))P(Z|θ)P(Y|Z,θ)P(Z|Y,θ(i))P(Y|θ(i)) B ( θ , θ ( i ) ) = L ( θ ( i ) ) + log ⁡ ∑ Z P ( Z | Y , θ ( i ) ) P ( Z | θ ) P ( Y | Z , θ ) P ( Z | Y , θ ( i ) ) P ( Y | θ ( i ) )


L(θ)B(θ,θ(i)) L ( θ ) ≥ B ( θ , θ ( i ) )

即函数 B(θ,θ(i)) B ( θ , θ ( i ) ) L(θ) L ( θ ) 的一个下界,而且:
L(θ(i))=B(θ(i),θ(i)) L ( θ ( i ) ) = B ( θ ( i ) , θ ( i ) )

因此,任何可以使 B(θ,θ(i)) B ( θ , θ ( i ) ) 增大的 θ θ ,也可以使 L(θ) L ( θ ) 增加,为了使 L(θ) L ( θ ) 有尽可能的增大,选择 θ(i+1) θ ( i + 1 ) 使 B(θ,θ(i)) B ( θ , θ ( i ) ) 达到极大,即:
θ(i+1)=argmaxθB(θ,θ(i)) θ ( i + 1 ) = a r g max θ B ( θ , θ ( i ) )

θ(i+1)=argmaxθ(L(θ(i))+logZP(Z|Y,θ(i))P(Z|θ)P(Y|Z,θ)P(Z|Y,θ(i))P(Y|θ(i)))=argmaxθ(ZlogP(Y,Z|θ)P(Z|Y,θ(i)))=argmaxQ(θ,θ(i)) θ ( i + 1 ) = a r g max θ ( L ( θ ( i ) ) + log ⁡ ∑ Z P ( Z | Y , θ ( i ) ) P ( Z | θ ) P ( Y | Z , θ ) P ( Z | Y , θ ( i ) ) P ( Y | θ ( i ) ) ) = a r g max θ ( ∑ Z log ⁡ P ( Y , Z | θ ) P ( Z | Y , θ ( i ) ) ) = a r g max Q ( θ , θ ( i ) )

上述推导等价于EM算法的一次迭代,即求Q函数及其极大化,EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。
    可以证明,EM算法是收敛的,但是只能保证收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点。所以在应用中,初值的选择很重要,常用的办法是选择几个不同的初值进行迭代,然后对得到个各个估计值加以比较,从中选择最好的。
4、F函数的极大-极大算法解释EM
    (1)F函数是什么:
    假设隐变量数据Z的概率分布为 P˜(Z) P ~ ( Z ) ,定义分布 P˜ P ~ 与参数 θ θ 的函数 F(P˜,θ) F ( P ~ , θ ) 如下:
F(P˜,θ)=EP˜[logP(Y,Z|θ)]+H(P˜) F ( P ~ , θ ) = E P ~ [ log ⁡ P ( Y , Z | θ ) ] + H ( P ~ )

称为F函数,式中 H(P˜)=EP˜logP˜(Z) H ( P ~ ) = − E P ~ log ⁡ P ~ ( Z ) 是分布 P˜(Z) P ~ ( Z ) 的熵。之前我们一直想优化的那个函数 L(θ)=logP(Y|θ) L ( θ ) = l o g P ( Y | θ ) 是F函数的一个特例,F函数的形式与统计物理中的自由能(free energy)的形式相同,故称为F函数。具体参考Hinton大神的文章《A view of the EM algorithm that justifies incremental, sparse and other variants.》。
    (2)F函数的两个引理:
      1)对于固定的 θ θ ,存在唯一的分布 P˜θ P ~ θ 极大化 F(P˜,θ) F ( P ~ , θ ) ,这时 P˜θ P ~ θ 由下式给出:
P˜θ(Z)=P(Z|Y,θ) P ~ θ ( Z ) = P ( Z | Y , θ )

并且 P˜θ P ~ θ θ θ 连续变化。
      2)若 P˜θ(Z)=P(Z|Y,θ) P ~ θ ( Z ) = P ( Z | Y , θ ) ,则:
F(P˜,θ)=logP(Y|θ) F ( P ~ , θ ) = l o g P ( Y | θ )

    (3)F函数的极大-极大算法:
    设 L(θ)=logP(Y|θ) L ( θ ) = l o g P ( Y | θ ) 为观测数据的对数似然函数, θ(i),i=1,2,3,..., θ ( i ) , i = 1 , 2 , 3 , . . . , 为EM算法得到的参数估计序列。如果 F(P˜,θ) F ( P ~ , θ ) P˜ P ~ ∗ θ θ ∗ 有局部最大值,那么 L(θ) L ( θ ) θ θ ∗ 有局部最大值。如果 F(P˜,θ) F ( P ~ , θ ) P˜ P ~ ∗ θ θ ∗ 达到全局最大值,那么 L(θ) L ( θ ) θ θ ∗ 有全局最大值。
    EM算法的一次迭代可由F函数的极大-极大算法实现:
    设 θ(i) θ ( i ) 为第i次迭代参数 θ θ 的估计, P˜(i) P ~ ( i ) 为第i次迭代函数 P˜ P ~ 的估计,在第i+1次迭代的两步为:
    1)对于固定的 θ(i) θ ( i ) ,求 P˜(i+1) P ~ ( i + 1 ) 使得 F(P˜,θ(i)) F ( P ~ , θ ( i ) ) 极大化,此时:
F(P˜(i+1),θ)=Q(θ,θ(i))+H(P˜(i+1)) F ( P ~ ( i + 1 ) , θ ) = Q ( θ , θ ( i ) ) + H ( P ~ ( i + 1 ) )

    2)对于固定的 P˜(i+1) P ~ ( i + 1 ) ,求 θ(i+1) θ ( i + 1 ) 使得 F(P˜(i+1),θ) F ( P ~ ( i + 1 ) , θ ) 极大化,此时:
θ(i+1)=argmaxθF(P˜(i+1),θ)=argmaxθQ(θ,θ(i)) θ ( i + 1 ) = a r g max θ F ( P ~ ( i + 1 ) , θ ) = a r g max θ Q ( θ , θ ( i ) )

通过以上两步完成了EM算法的一次迭代。
总结:EM算法应用及其广泛,高斯混合模型的参数估计是EM算法的一个重要应用,隐可马儿夫模型的非监督学习也是EM算法的一个重要应用。EM算法还有许多变形,如GEM算法,GEM算法的特点是每次迭代增加F函数值(并不一定极大化F函数),从而增加似然函数值。

你可能感兴趣的:(Machine,Learning)