EM算法:数学推导+实例演示

EM(Expectation Maximum)算法即期望最大化算法,是一种对不完全数据(因数据缺失或有未被观测等含有隐变量的数据)估计未知变量的迭代算法。

隐变量这篇文章里用一个例子解释了什么是隐变量,本文会在此例基础上进行扩展来引出EM算法是什么、能解决什么问题以及是如何解决问题的。

EM算法实例演示

EM算法本质上是通过不断迭代去求出模型参数的算法。下面先通过一个具体例子来演示EM算法的流程,然后再从数学角度进行推理验证。

抛硬币游戏规则

A 、 B 、 C A、B、C ABC 三枚硬币,记正面向上的概率分别为 π π π p p p q q q 且均未知,记为模型参数 θ = ( π , p , q ) θ=(π,p,q) θ=(π,p,q) 。现在想通过抛硬币实验来估计出模型参数。

先抛硬币 A A A ,如果硬币 A A A 正面向上,则选择硬币 B B B 连续抛10次,记录这一轮10次的结果;如果硬币 A A A 反面向上,则选择硬币 C C C 连续抛10次,记录这一轮10次的结果。

表1是某次抛5轮的结果,其中H表示正面(Head)向上;T表示反面(Tail)向上。

对于这组观测数据,用极大似然估计就能求出 p p p q q q

轮次硬币A的结果(已知)硬币B的结果(观测数据-24正6反)硬币C的结果(观测数据-9正11反)
1THTTTHHTHTH (5正5反)
2HHHHHTHHHHH (9正1反)
3HHTHHHHHTHH (8正2反)
4THTHTTTHHTT (4正6反)
5HTHHHTHHHTH (7正3反)
表1

极大似然估计

假设一枚硬币正面向上的概率为 θ θ θ ,在抛 N N N 次硬币中有 k k k 次正面向上且顺序已知的情况下对应的概率或似然函数可表示为:

L ( θ ) = θ k ( 1 − θ ) N − k L(θ)=θ^{k}(1-θ)^{N-k} L(θ)=θk(1θ)Nk

具体地,比如对于第二轮的结果 HTTTHHTHTH L ( θ ) = P ( H T T T H H T H T H ∣ B ) = θ B 9 ( 1 − θ B ) 1 L(θ)=P(HTTTHHTHTH|B)=θ_B^{9}(1-θ_B)^{1} L(θ)=P(HTTTHHTHTHB)=θB9(1θB)1

对数似然函数为:

l n L ( θ ) = l n θ k ( 1 − θ ) N − k = l n θ k + l n ( 1 − θ ) N − k = k l n θ + ( N − k ) l n ( 1 − θ ) lnL(θ)=lnθ^{k}(1-θ)^{N-k}=lnθ^{k}+ln(1-θ)^{N-k}=klnθ+(N-k)ln(1-θ) lnL(θ)=lnθk(1θ)Nk=lnθk+ln(1θ)Nk=klnθ+(Nk)ln(1θ)

求能使得上式最大的 θ θ θ ,即通过最大似然估计出 θ θ θ 。为此,对 θ θ θ 求偏导:

∂ L ( θ ) ∂ θ = ∂ ( k l n θ + ( N − k ) l n ( 1 − θ ) ) ∂ θ = k θ − ( N − k ) 1 − θ {∂L(θ)\over{∂θ}}={∂(klnθ+(N-k)ln(1-θ))\over{∂θ}}={k\overθ}-{(N-k)\over{1-θ}} θL(θ)=θ(klnθ+(Nk)ln(1θ))=θk1θ(Nk)

l n x lnx lnx 的导数为 1 x 1\over x x1

l n ( 1 − x ) ln(1-x) ln(1x) 的导数为 1 ( x − 1 ) 1\over (x-1) (x1)1

令上式为0,则:

θ = k N = 硬币正面向上的次数 硬币抛出的总次数 θ={k\over N}={硬币正面向上的次数\over 硬币抛出的总次数} θ=Nk=硬币抛出的总次数硬币正面向上的次数

由上述结论可得 :

p = 24 24 + 6 = 0.80 p={24\over {24+6}}=0.80 p=24+624=0.80

q = 9 9 + 11 = 0.45 q={9\over {9+11}}=0.45 q=9+119=0.45

也就是说,我们只要知道硬币 B 、 C B、C BC 正面向上次数,就可以估算出 p p p q q q

需要注意的是,在上面的抛硬币游戏中,硬币 A A A 的结果是已知的,也就是说不存在隐变量, p 、 q p、q pq 可以在一组完全数据(complete-data)下通过极大似然求得。

隐变量困境

如果如表2所示, 硬币 A A A 的结果是未知的,这种情况下如何求 p p p q q q

轮次硬币A的结果(未知)硬币B或C的结果(观测数据)
1未知HTTTHHTHTH (5正5反)
2未知HHHHTHHHHH (9正1反)
3未知HTHHHHHTHH (8正2反)
4未知HTHTTTHHTT (4正6反)
5未知THHHTHHHTH (7正3反)
表2

这里未知的硬币 A A A 的结果,就是隐变量,这是一组包含了隐变量的不完全数据(incomplete-data)。

目前并不知道这5轮观测结果是来自硬币 B B B 还是 C C C ,因此不能通过统计正面向上的次数来估计 p p p q q q

那么可以先用观测数据来推断每轮观测数据来自哪枚硬币吗?

观测结果的概率表示

实际上,表1每轮的结果可以用 来自于硬币 B B B C C C 的概率 表示,由于硬币 A A A 结果已知,所以概率比较绝对,非0即1:

轮次硬币A的结果(已知)硬币B或C的结果(观测数据)来自硬币B的概率来自硬币C的概率硬币B正面向上的次数硬币C正面向上的次数
1THTTTHHTHTH (5正5反)010*5=01*5=5
2HHHHHTHHHHH (9正1反)101*9=90*9=0
3HHTHHHHHTHH (8正2反)101*8=80*8=0
4THTHTTTHHTT (4正6反)010*4=01*4=4
5HTHHHTHHHTH (7正3反)101*7=70*7=0
表3

同理,也可以用表2已知的观测数据推断每轮抛硬币的结果来自硬币 B B B C C C 的概率,然后就可以计算出硬币 B B B C C C 正面向上的次数,继而求出 p p p q q q

想象很丰满,现实很骨感。每轮的结果来自硬币 B B B C C C 的概率怎么求呢?

可以借助贝叶斯定理!

贝叶斯定理公式:

P ( X ∣ Y ) = P ( Y ∣ X ) P ( X ) P ( Y ) P(X|Y)={P(Y|X)P(X)\over{P(Y)}} P(XY)=P(Y)P(YX)P(X)

以第1轮为例,要求第1轮抛硬币的结果来自硬币 B B B 的概率,从概率的角度来看就是求 P ( B ∣ H T T T H H T H T H ) P(B|HTTTHHTHTH) P(BHTTTHHTHTH)

由贝叶斯概率公式得: P ( B ∣ H T T T H H T H T H ) = P ( H T T T H H T H T H ∣ B ) P ( B ) P ( H T T T H H T H T H ) = P ( H T T T H H T H T H ∣ B ) P ( B ) P ( H T T T H H T H T H ∣ B ) P ( B ) + P ( H T T T H H T H T H ∣ C ) P ( C ) = π p 5 ( 1 − p ) 5 π p 5 ( 1 − p ) 5 + ( 1 − π ) q 5 ( 1 − q ) 5       ( 1 ) P(B|HTTTHHTHTH)={P(HTTTHHTHTH|B)P(B)\over{P(HTTTHHTHTH)}}={P(HTTTHHTHTH|B)P(B)\over{P(HTTTHHTHTH|B)P(B)+P(HTTTHHTHTH|C)P(C)}}={πp^{5}(1-p)^{5}\over{πp^{5}(1-p)^{5}+(1-π)q^{5}(1-q)^{5}}} \ \ \ \ \ (1) P(BHTTTHHTHTH)=P(HTTTHHTHTH)P(HTTTHHTHTHB)P(B)=P(HTTTHHTHTHB)P(B)+P(HTTTHHTHTHC)P(C)P(HTTTHHTHTHB)P(B)=πp5(1p)5+(1π)q5(1q)5πp5(1p)5     (1)

P ( B ) 、 P ( C ) P(B)、P(C) P(B)P(C) 表示自然选取硬币的概率;

P ( H T T T H H T H T H ) P(HTTTHHTHTH) P(HTTTHHTHTH) 表示由 B B B C C C 划分空间的全概率,可以展开;

P ( H T T T H H T H T H ∣ B ) P(HTTTHHTHTH|B) P(HTTTHHTHTHB) 表示在选取硬币 B B B 的情况下抛出 H T T T H H T H T H HTTTHHTHTH HTTTHHTHTH 这种结果的概率:

P ( H T T T H H T H T H ∣ B ) = p 5 ( 1 − p ) 5 P(HTTTHHTHTH|B)=p^{5}(1-p)^{5} P(HTTTHHTHTHB)=p5(1p)5

同理可得

P ( H T T T H H T H T H ∣ C ) = q 5 ( 1 − q ) 5 P(HTTTHHTHTH|C)=q^{5}(1-q)^{5} P(HTTTHHTHTHC)=q5(1q)5

EM算法流程

从式 ( 1 ) (1) (1) 可以看出,想要计算 P ( B ∣ H T T T H H T H T H ) P(B|HTTTHHTHTH) P(BHTTTHHTHTH),需要先知道 p 、 q p、q pq ,而要得到 p 、 q p、q pq,又需要先知道 P ( B ∣ H T T T H H T H T H ) P(B|HTTTHHTHTH) P(BHTTTHHTHTH)

这看起来是个矛盾的问题,前面我们说过,EM算法本质上是通过不断迭代求模型参数的算法。这个矛盾的问题就可以用迭代来解决。

事实上,迭代开始时,可以先随机初始化 p 、 q p、q pq 的值,记作 p i 、 q i p^{i}、q^{i} piqi (第1次迭代的 i = 0 i=0 i=0 ),由式 ( 1 ) (1) (1) 可以求出 P ( B ∣ H T T T H H T H T H ) 、 P ( C ∣ H T T T H H T H T H ) P(B|HTTTHHTHTH)、P(C|HTTTHHTHTH) P(BHTTTHHTHTH)P(CHTTTHHTHTH),然后可以结合5轮观测数据计算出硬币 B 、 C B、C BC 正面向上的次数,继而利用极大似然估计得到一组新的 p i + 1 、 q i + 1 p^{i+1}、q^{i+1} pi+1qi+1 。如果 p i + 1 、 q i + 1 p^{i+1}、q^{i+1} pi+1qi+1 p i 、 q i p^i、q^i piqi 一样,说明初始化的值是比较靠谱的;如果还有差距,那么使用估计出的 p i + 1 、 q i + 1 p^{i+1}、q^{i+1} pi+1qi+1 替代 p i 、 q i p^i、q^i piqi 进行下一次迭代,直到收敛。

问题是每次估计出的 p i + 1 、 q i + 1 p^{i+1}、q^{i+1} pi+1qi+1 一定会越来越接近真实的 p 、 q p、q pq 吗?事实上确实可以,后面会用数学证明,暂且按下不表。

假设我们已经知道了真实的 p 、 q p、q pq ,即上面计算的:

p = 24 24 + 6 = 0.80 p={24\over {24+6}}=0.80 p=24+624=0.80

q = 9 9 + 11 = 0.45 q={9\over {9+11}}=0.45 q=9+119=0.45

现在来按以上迭代流程,看看是否能求出 p 、 q p、q pq

① 初始化概率

令:

π 0 = 0.5 π^0=0.5 π0=0.5

p 0 = 0.6 p^0=0.6 p0=0.6

q 0 = 0.5 q^0=0.5 q0=0.5

② 观测结果的归属

代入式 ( 1 ) (1) (1) 可得第1轮抛硬币的结果来自硬币 B B B 的概率:

P ( B ∣ H T T T H H T H T H ) = p 5 ( 1 − p ) 5 p 5 ( 1 − p ) 5 + q 5 ( 1 − q ) 5 = 0. 6 5 ( 1 − 0.6 ) 5 0. 6 5 ( 1 − 0.6 ) 5 + 0. 5 5 ( 1 − 0.5 ) 5 ≈ 0.45 P(B|HTTTHHTHTH)={p^{5}(1-p)^{5}\over{p^{5}(1-p)^{5}+q^{5}(1-q)^{5}}}={0.6^{5}(1-0.6)^{5}\over{0.6^{5}(1-0.6)^{5}+0.5^{5}(1-0.5)^{5}}}≈0.45 P(BHTTTHHTHTH)=p5(1p)5+q5(1q)5p5(1p)5=0.65(10.6)5+0.55(10.5)50.65(10.6)50.45

第1轮抛硬币的结果来自硬币 C C C 的概率:

P ( C ∣ H T T T H H T H T H ) = 1 − P ( B ∣ H T T T H H T H T H ) ≈ 0.55 P(C|HTTTHHTHTH)=1-P(B|HTTTHHTHTH)≈0.55 P(CHTTTHHTHTH)=1P(BHTTTHHTHTH)0.55

③ 期望最大化

依次计算第2-5轮,并将表2整理如下:

轮次硬币A的结果(未知)硬币B或C的结果(观测数据)来自硬币B的概率 ( p 0 = 0.6 、 q 0 = 0.5 ) (p^0=0.6、q^0=0.5) (p0=0.6q0=0.5)来自硬币C的概率 ( p 0 = 0.6 、 q 0 = 0.5 ) (p^0=0.6、q^0=0.5) (p0=0.6q0=0.5)硬币B正面(H)、反面(T)向上的次数硬币C正面(H)、反面(T)向上的次数
1未知HTTTHHTHTH (5正5反)0.450.550.45*5=2.2 H 0.45*5=2.2 T0.55*5=2.8 H 0.55*5=2.8 T
2未知HHHHTHHHHH (9正1反)0.800.200.80*9=7.2 H 0.80*1=0.8 T0.20*9=1.8 H 0.20*1=0.2 T
3未知HTHHHHHTHH (8正2反)0.730.270.73*8=5.8 H 0.73*2=1.5 T0.27*8=2.2 H 0.27*2=0.5 T
4未知HTHTTTHHTT (4正6反)0.350.650.35*4=1.4 H 0.35*6=2.1 T0.65*4=2.6 H 0.65*6=3.9 T
5未知THHHTHHHTH (7正3反)0.650.350.65*7=4.5 H 0.65*3=1.9 T0.35*7=2.5 H 0.35*3=1.1 T
表4

有了硬币 B B B C C C 正面向上的次数,可得:

p 1 = 硬币正面向上的次数 硬币抛出的总次数 = 2.2 + 7.2 + 5.8 + 1.4 + 4.5 ( 2.2 + 7.2 + 5.8 + 1.4 + 4.5 ) + ( 2.2 + 0.8 + 1.5 + 2.1 + 1.9 ) = 21.3 21.3 + 8.6 ≈ 0.71 p^{1}={硬币正面向上的次数\over 硬币抛出的总次数}={2.2+7.2+5.8+1.4+4.5\over {(2.2+7.2+5.8+1.4+4.5)+(2.2+0.8+1.5+2.1+1.9)}}={21.3\over{21.3+8.6}}≈0.71 p1=硬币抛出的总次数硬币正面向上的次数=(2.2+7.2+5.8+1.4+4.5)+(2.2+0.8+1.5+2.1+1.9)2.2+7.2+5.8+1.4+4.5=21.3+8.621.30.71

q 1 = 硬币正面向上的次数 硬币抛出的总次数 = 2.8 + 1.8 + 2.2 + 2.6 + 2.5 ( 2.8 + 1.8 + 2.2 + 2.6 + 2.5 ) + ( 2.8 + 0.2 + 0.5 + 3.9 + 1.1 ) = 11.7 11.7 + 8.4 ≈ 0.58 q^{1}={硬币正面向上的次数\over 硬币抛出的总次数}={2.8+1.8+2.2+2.6+2.5\over {(2.8+1.8+2.2+2.6+2.5)+(2.8+0.2+0.5+3.9+1.1)}}={11.7\over{11.7+8.4}}≈0.58 q1=硬币抛出的总次数硬币正面向上的次数=(2.8+1.8+2.2+2.6+2.5)+(2.8+0.2+0.5+3.9+1.1)2.8+1.8+2.2+2.6+2.5=11.7+8.411.70.58

④ 迭代

以本次迭代中得到的 p 1 、 q 1 p^{1}、q^{1} p1q1 替代 p 0 、 q 0 p^{0}、q^{0} p0q0 ,重复前三步可在第2次迭代后得到 p 2 、 q 2 p^{2}、q^{2} p2q2 ,以此类推,经过10次迭代后:

p 10 = 0.80 p^{10}=0.80 p10=0.80

q 10 = 0.45 q^{10}=0.45 q10=0.45

数次迭代后得到了与真实值相同的参数,以上几个步骤就是EM算法的推演过程,

EM算法实例的数学解释

假设还是以上面的抛硬币游戏规则进行了 n n n 次抛硬币实验,其中观测结果记为 Y = ( y 1 , y 2 , . . . , y j , . . . , y n ) Y=(y_1,y_2,...,y_j,...,y_{n}) Y=(y1,y2,...,yj,...,yn) y j y_j yj 表示其中某次抛硬币的结果(正面或反面向上),记正面向上时 y j = 1 y_j=1 yj=1 、反面向上时 y j = 0 y_j=0 yj=0 。其中未观测的隐变量记为 Z = ( z 1 , z 2 , . . . , z j , . . . , z n ) Z=(z_{1},z_{2},...,z_{j},...,z_{n}) Z=(z1,z2,...,zj,...,zn) z j z_j zj 表示其中某次抛硬币的隐变量,即某次抛硬币 A A A 是正面向上还是反面向上。

Y Y Y 中出现 y j y_j yj 的可能情况如下表所示:

硬币A的结果硬币B或C的结果概率
硬币A为 H (概率为 π π π)硬币B为 H (概率为 p p p) π p πp πp
硬币A为 H (概率为 π π π)硬币B为 T (概率为 1 − p 1-p 1p) π ( 1 − p ) π(1-p) π(1p)
硬币A为 T (概率为 1 − π 1-π 1π)硬币C为 H (概率为 q q q) ( 1 − π ) q (1-π)q (1π)q
硬币A为 T (概率为 1 − π 1-π 1π)硬币C为 T (概率为 1 − q 1-q 1q) ( 1 − π ) ( 1 − q ) (1-π)(1-q) (1π)(1q)
表5

其生成模型的概率表示为:

P ( y j ∣ θ ) = π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j       ( 2 ) P(y_j|θ)=πp^{y_j}(1-p)^{1-y_j}+(1-π)q^{y_j}(1-q)^{1-y_j} \ \ \ \ \ (2) P(yjθ)=πpyj(1p)1yj+(1π)qyj(1q)1yj     (2)

y j y_j yj 来自硬币 B B B 的概率记为 μ j μ_j μj

μ j = π p y j ( 1 − p ) 1 − y j π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j       ( 3 ) μ_j={{πp^{y_j}(1-p)^{1-y_j}} \over {πp^{y_j}(1-p)^{1-y_j}+(1-π)q^{y_j}(1-q)^{1-y_j}}} \ \ \ \ \ (3) μj=πpyj(1p)1yj+(1π)qyj(1q)1yjπpyj(1p)1yj     (3)

由式 ( 2 ) (2) (2) 可知这 n n n 次抛硬币结果的对数似然函数为:
L ( θ ) = l o g P ( Y ∣ θ ) = l o g ∑ z P ( Y , Z ∣ θ ) = l o g ∑ z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) = l o g ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] = ∑ j = 1 n l o g [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ]       ( 4 ) \begin{align} L(θ) & = log P(Y|θ) \hspace{100cm} \\ & = log \sum_{z} P(Y,Z|θ) \\ & = log \sum_{z} P(Z|θ) P(Y|Z,θ) \\ & = log \prod_{j_=1}^{n} [πp^{y_j}(1-p)^{1-y_j}+(1-π)q^{y_j}(1-q)^{1-y_j}] \\ & = \sum_{j_=1}^{n} log [πp^{y_j}(1-p)^{1-y_j}+(1-π)q^{y_j}(1-q)^{1-y_j}] \ \ \ \ \ (4) \end{align} L(θ)=logP(Yθ)=logzP(Y,Zθ)=logzP(Zθ)P(YZ,θ)=logj=1n[πpyj(1p)1yj+(1π)qyj(1q)1yj]=j=1nlog[πpyj(1p)1yj+(1π)qyj(1q)1yj]     (4)

公式解释:

Z:隐变量数据,对应抛硬币中硬币 A A A 正面向上还是反面向上;

Y:观测变量数据,对应每轮次抛硬币中硬币 B 、 C B、C BC 的正反面结果;

θ:模型参数,对应抛硬币中硬币 B 、 C B、C BC 正面向上的概率 θ B θ_B θB θ C θ_C θC

P(Y|θ):已知模型参数情况下出现已知观测值的概率,即似然函数,能使之达到最大的参数即为待估模型参数;

P(Z|Y,θ):已知模型参数和观测值情况下隐变量的概率,即硬币 A A A 正面/反面向上的概率;

P(Y,Z|θ):已知模型参数情况下观测值与隐变量的联合概率(两个事件的联合概率 P ( A , B ) P(A,B) P(A,B) 是指两个事件同时发生的概率,如果两个事件 P ( A ) 、 P ( B ) P(A)、P(B) P(A)P(B) 独立,则 P ( A , B ) = P ( A ) P ( B ) P(A,B)=P(A)P(B) P(A,B)=P(A)P(B) )。

求式 ( 4 ) (4) (4) 的极大似然得到的参数即为要求的参数:

arg ⁡ max ⁡ θ l o g ∑ z P ( Y , Z ∣ θ )       ( 5 ) \arg \mathop{\max}\limits_{θ} log \sum_{z} P(Y,Z|θ) \ \ \ \ \ (5) argθmaxlogzP(Y,Zθ)     (5)

由于存在隐变量与和的对数,不能直接求解式 ( 5 ) (5) (5) ,回想一下,在上面实例演示中,我们先得到了观测数据来自硬币 B B B C C C 的概率,然后利用观测数据估计出的 p 、 q p、q pq 。那么是否也可以将式 ( 5 ) (5) (5) 中的似然函数改造成包含 观测数据来自硬币 B B B C C C 的概率 并且一样通过迭代来求解模型的参数呢?

为此,将 l o g ∑ z P ( Y , Z ∣ θ ) log \sum_{z} P(Y,Z|θ) logzP(Y,Zθ) 做个变换:

l o g ∑ z P ( Y , Z ∣ θ ) = l o g ( ∑ z P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) P ( Z ∣ Y , θ i ) )       ( 6 ) log \sum_{z} P(Y,Z|θ)=log ({{\sum_{z} P(Y,Z|θ) \over {P(Z|Y,θ^{i})}}P(Z|Y,θ^{i})}) \ \ \ \ \ (6) logzP(Y,Zθ)=log(P(ZY,θi)zP(Y,Zθ)P(ZY,θi))     (6)

其中 P ( Z ∣ Y , θ i ) P(Z|Y,θ^{i}) P(ZY,θi) 表示观测结果来自硬币B/C的概率,参数 θ i θ^{i} θi 已知(第1次迭代时是随机初始化的) ,且满足 ∑ j = 1 n P ( Z j ∣ Y , θ i ) = 1 \sum_{j=1}^n P(Z_j|Y,θ^{i})=1 j=1nP(ZjY,θi)=1 P ( Z j ∣ Y , θ i ) ≥ 0 P(Z_j|Y,θ^{i})≥0 P(ZjY,θi)0 ,可以看作一个分布函数。

再利用 Jensen不等式 ,令 f ( x ) = l o g ( x ) 、 λ j = P ( Z j ∣ Y , θ i ) 、 x j = P ( Y , Z ∣ θ ) P ( Z j ∣ Y , θ i ) f(x)=log(x)、λ_j=P(Z_j|Y,θ^{i})、x_j={P(Y,Z|θ) \over {P(Z_j|Y,θ^{i})}} f(x)=log(x)λj=P(ZjY,θi)xj=P(ZjY,θi)P(Y,Zθ) ,可得:
L ( θ ) = l o g ∑ z P ( Y , Z ∣ θ ) = l o g ∑ z P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) P ( Z ∣ Y , θ i ) ≥ ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) = ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) − ∑ z P ( Z ∣ Y , θ i ) l o g P ( Z ∣ Y , θ i )       ( 7 ) \begin{align} L(θ) & = log \sum_{z} P(Y,Z|θ) \hspace{100cm} \\ & = log {{\sum_{z} {P(Y,Z|θ) \over {P(Z|Y,θ^{i})}}P(Z|Y,θ^{i})}} \\ & ≥ \sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Z|Y,θ^{i})}} = \sum_{z} P(Z|Y,θ^{i}) log P(Y,Z|θ)-\sum_{z} P(Z|Y,θ^{i}) log P(Z|Y,θ^{i}) \ \ \ \ \ (7) \end{align} L(θ)=logzP(Y,Zθ)=logzP(ZY,θi)P(Y,Zθ)P(ZY,θi)zP(ZY,θi)logP(ZY,θi)P(Y,Zθ)=zP(ZY,θi)logP(Y,Zθ)zP(ZY,θi)logP(ZY,θi)     (7)

Jensen不等式

若函数 f ( x ) f(x) f(x) 是定义在区间 [a,b] 上的 上凸函数(比如ln函数) ,则对任意的 x 1 , x 2 , . . . , x n ∈ [ a , b ] x_1,x_2,...,x_n∈[a,b] x1,x2,...,xn[a,b],有不等式:

f ( ∑ j = 1 n λ j x j ) ≥ ∑ j = 1 n λ j f ( x j )       ( 8 ) f(\sum_{j=1}^n λ_j x_j)≥\sum_{j=1}^n λ_j f(x_j) \ \ \ \ \ (8) f(j=1nλjxj)j=1nλjf(xj)     (8)

其中, ∑ j = 1 n λ j = 1 \sum_{j=1}^n λ_j=1 j=1nλj=1 λ 1 , λ 2 , . . . , λ n ≥ 0 λ_1,λ_2,...,λ_n≥0 λ1,λ2,...,λn0 ,当且仅当 x 1 = x 2 = . . . = x n x_1=x_2=...=x_n x1=x2=...=xn时等号成立。

由期望的定义,式 ( 8 ) (8) (8) 相当于:

f ( E ( x ) ) ≥ E ( f ( x ) ) f(E(x))≥E(f(x)) f(E(x))E(f(x))

因为 P ( Z ∣ Y , θ i ) P(Z|Y,θ^{i}) P(ZY,θi) 已知,因此式 ( 7 ) (7) (7) 可进一步化简为:

l o g ∑ z P ( Y , Z ∣ θ ) ≥ ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ )       ( 9 ) log \sum_{z} P(Y,Z|θ)≥\sum_{z} P(Z|Y,θ^{i}) log P(Y,Z|θ) \ \ \ \ \ (9) logzP(Y,Zθ)zP(ZY,θi)logP(Y,Zθ)     (9)

∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) \sum_{z} P(Z|Y,θ^{i}) log P(Y,Z|θ) zP(ZY,θi)logP(Y,Zθ) 就是EM算法中E步的期望公式,然后再对其最大化得到模型参数,这是EM算法里的M步。

因此式 ( 4 ) (4) (4) 可以改写为:

L ( θ ) = l o g P ( Y ∣ θ ) = l o g ∑ z P ( Y , Z ∣ θ ) ≥ ∑ j = 1 n [ μ j i + 1 l o g [ p y j ( 1 − p ) 1 − y j ] + ( 1 − μ j i + 1 ) l o g [ q y j ( 1 − q ) 1 − y j ] ]       ( 10 ) L(θ)=log P(Y|θ)=log \sum_{z} P(Y,Z|θ)≥\sum_{j_=1}^{n} [μ_j^{i+1} log [p^{y_j}(1-p)^{1-y_j}]+(1-μ_j^{i+1}) log [q^{y_j}(1-q)^{1-y_j}]] \ \ \ \ \ (10) L(θ)=logP(Yθ)=logzP(Y,Zθ)j=1n[μji+1log[pyj(1p)1yj]+(1μji+1)log[qyj(1q)1yj]]     (10)

其中 μ j i + 1 μ_j^{i+1} μji+1 为在模型参数 θ i = ( π i , p i , q i ) θ^{i}=(π^i,p^i,q^i) θi=(πi,pi,qi) 时观测数据来自硬币 B B B 的概率。

将式 ( 3 ) (3) (3) 代入式 ( 10 ) (10) (10) 中并求偏导,可得:

π i + 1 = 1 n ∑ j = 1 n μ j i + 1 π^{i+1}={1 \over n} \sum_{j=1}^{n}μ_j^{i+1} πi+1=n1j=1nμji+1

p i + 1 = ∑ j = 1 n μ j i + 1 y i ∑ j = 1 n μ j i + 1 p^{i+1}={{\sum_{j=1}^{n}μ_j^{i+1}y_i} \over{\sum_{j=1}^{n}μ_j^{i+1}}} pi+1=j=1nμji+1j=1nμji+1yi

q i + 1 = ∑ j = 1 n ( 1 − μ j ) i + 1 y i ∑ j = 1 n ( 1 − μ j ) i + 1 q^{i+1}={{\sum_{j=1}^{n}(1-μ_j)^{i+1}y_i} \over{\sum_{j=1}^{n}(1-μ_j)^{i+1}}} qi+1=j=1n(1μj)i+1j=1n(1μj)i+1yi

看情况继续迭代直到收敛…

从式 ( 9 ) (9) (9) 可以看出,因为 L ( θ ) = l o g ∑ z P ( Y , Z ∣ θ ) L(θ) = log \sum_{z} P(Y,Z|θ) L(θ)=logzP(Y,Zθ) 不好直接求解,因此先构建了一个下界(E步) ,然后再优化这个下界(M步),逐步迭代最终得到模型参数。

那么每次迭代后都会使 L ( θ ) L(θ) L(θ) 比上次迭代时 L ( θ i ) L(θ^i) L(θi) 的大吗?下面我们从数学上来论证。

EM算法的推导

开始时,我们想通过极大似然估计来求解 L ( θ ) = l o g ∑ z P ( Y , Z ∣ θ ) L(θ) = log \sum_{z} P(Y,Z|θ) L(θ)=logzP(Y,Zθ) ,然而隐变量的存在使其行不通。

那么我们转变一下思路,通过迭代来逐步逼近 L ( θ ) L(θ) L(θ)

假设第 i i i 次迭代后估计出的模型参数为 θ i θ^i θi ,对应似然函数 L ( θ i ) = l o g P ( Y ∣ θ i ) L(θ^i)=log P(Y|θ^i) L(θi)=logP(Yθi) 。我们希望下一次估计出的模型参数 θ θ θ 能使 L ( θ ) L(θ) L(θ) 相比上次迭代的更大,即 L ( θ ) − L ( θ i ) ≥ 0 L(θ)-L(θ^i)≥0 L(θ)L(θi)0

现在来推导一下(同样利用Jensen不等式)。
L ( θ ) − L ( θ i ) = l o g ∑ z P ( Y , Z ∣ θ ) − l o g P ( Y ∣ θ i ) = l o g ∑ z P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) P ( Z ∣ Y , θ i ) − l o g P ( Y ∣ θ i ) ≥ ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) − ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y ∣ θ i ) = ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) l o g P ( Y ∣ θ i ) = ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Y , Z ∣ θ i )       ( 11 ) \begin{align} L(θ)-L(θ^i) & = log \sum_{z} P(Y,Z|θ)-log P(Y|θ^i) \hspace{100cm} \\ & = log {{\sum_{z} {P(Y,Z|θ) \over {P(Z|Y,θ^{i})}}P(Z|Y,θ^{i})}}-log P(Y|θ^i) \\ & ≥ \sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Z|Y,θ^{i})}}-\sum_{z} P(Z|Y,θ^{i}) log P(Y|θ^i) \\ & = \sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Z|Y,θ^{i}) log P(Y|θ^i)}} \\ & = \sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Y,Z|θ^i)}} \ \ \ \ \ (11) \end{align} L(θ)L(θi)=logzP(Y,Zθ)logP(Yθi)=logzP(ZY,θi)P(Y,Zθ)P(ZY,θi)logP(Yθi)zP(ZY,θi)logP(ZY,θi)P(Y,Zθ)zP(ZY,θi)logP(Yθi)=zP(ZY,θi)logP(ZY,θi)logP(Yθi)P(Y,Zθ)=zP(ZY,θi)logP(Y,Zθi)P(Y,Zθ)     (11)

上式中,因为 ∑ z P ( Z ∣ Y , θ i ) = 1 \sum_{z} P(Z|Y,θ^{i})=1 zP(ZY,θi)=1 ,故 l o g P ( Y ∣ θ i ) = ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y ∣ θ i ) log P(Y|θ^i)=\sum_{z} P(Z|Y,θ^{i}) log P(Y|θ^i) logP(Yθi)=zP(ZY,θi)logP(Yθi)

P ( Y , Z ∣ θ i ) = P ( Z ∣ Y , θ i ) l o g P ( Y ∣ θ i ) P(Y,Z|θ^i)=P(Z|Y,θ^{i}) log P(Y|θ^i) P(Y,Zθi)=P(ZY,θi)logP(Yθi)

由式 ( 11 ) (11) (11) 可得:

L ( θ ) ≥ L ( θ i ) + ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Y , Z ∣ θ i )       ( 12 ) L(θ)≥L(θ^i)+\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Y,Z|θ^i)}} \ \ \ \ \ (12) L(θ)L(θi)+zP(ZY,θi)logP(Y,Zθi)P(Y,Zθ)     (12)

B ( θ , θ i ) = L ( θ i ) + ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Y , Z ∣ θ i )       ( 13 ) B(θ,θ^i)=L(θ^i)+\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Y,Z|θ^i)}} \ \ \ \ \ (13) B(θ,θi)=L(θi)+zP(ZY,θi)logP(Y,Zθi)P(Y,Zθ)     (13)

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

函数 B ( θ , θ i ) B(θ,θ^i) B(θ,θi) L ( θ ) L(θ) L(θ) 的下方。

对于函数 B ( θ , θ i ) B(θ,θ^i) B(θ,θi) ,当 θ θ θ 取值 θ i θ^i θi 时:

B ( θ i , θ i ) = L ( θ i ) + ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ i ) P ( Y , Z ∣ θ i ) = L ( θ i ) + ∑ z P ( Z ∣ Y , θ i ) l o g 1 = L ( θ i ) ≤ L ( θ )       ( 14 ) B(θ^i,θ^i)=L(θ^i)+\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ^i) \over {P(Y,Z|θ^i)}}=L(θ^i)+\sum_{z} P(Z|Y,θ^{i}) log 1=L(θ^i)≤L(θ) \ \ \ \ \ (14) B(θi,θi)=L(θi)+zP(ZY,θi)logP(Y,Zθi)P(Y,Zθi)=L(θi)+zP(ZY,θi)log1=L(θi)L(θ)     (14)

从下图可以看出,函数 B ( θ , θ i ) B(θ,θ^i) B(θ,θi) L ( θ ) L(θ) L(θ) 的下界。求下界 B ( θ , θ i ) B(θ,θ^i) B(θ,θi) 的极大值就可以逼近似然函数的极大值。假设 θ i + 1 θ^{i+1} θi+1 可以使 B ( θ , θ i ) B(θ,θ^i) B(θ,θi) 取得极大值,即:
θ i + 1 = arg ⁡ max ⁡ θ B ( θ , θ i ) = arg ⁡ max ⁡ θ [ L ( θ i ) + ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) P ( Y , Z ∣ θ i ) ] = arg ⁡ max ⁡ θ [ ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) − ∑ z P ( Z ∣ Y , θ i ) P ( Y , Z ∣ θ i ) + L ( θ i ) ] = arg ⁡ max ⁡ θ [ ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) ]       ( 15 ) \begin{align} θ^{i+1} & =\arg \mathop{\max}\limits_{θ} B(θ,θ^i) \hspace{100cm} \\ & = \arg \mathop{\max}\limits_{θ} [L(θ^i)+\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ) \over {P(Y,Z|θ^i)}}] \\ & = \arg \mathop{\max}\limits_{θ} [\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ)}-\sum_{z} P(Z|Y,θ^{i})P(Y,Z|θ^i)+L(θ^i)] \\ & = \arg \mathop{\max}\limits_{θ} [\sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ)}] \ \ \ \ \ (15) \end{align} θi+1=argθmaxB(θ,θi)=argθmax[L(θi)+zP(ZY,θi)logP(Y,Zθi)P(Y,Zθ)]=argθmax[zP(ZY,θi)logP(Y,Zθ)zP(ZY,θi)P(Y,Zθi)+L(θi)]=argθmax[zP(ZY,θi)logP(Y,Zθ)]     (15)

∑ z P ( Z ∣ Y , θ i ) P ( Y , Z ∣ θ i ) 、 L ( θ i ) \sum_{z} P(Z|Y,θ^{i})P(Y,Z|θ^i)、L(θ^i) zP(ZY,θi)P(Y,Zθi)L(θi) 均为已知,对求极大值没有影响,故可以省略。


在这里插入图片描述


仔细看式 ( 15 ) (15) (15) ,是不是有点面熟,是的,我们在上面式 ( 7 ) (7) (7) 处已经推导过一次了。

( 15 ) (15) (15) 中的 ∑ z P ( Z ∣ Y , θ i ) l o g P ( Y , Z ∣ θ ) \sum_{z} P(Z|Y,θ^{i}) log {P(Y,Z|θ)} zP(ZY,θi)logP(Y,Zθ) 就是EM算法E步得到的期望,对之最大化就是EM算法的一次迭代。

以上就是EM算法的推导过程。

  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值