图解 Expectation Maximization 期望最大化 与应用例子

前言

网上对EM算法介绍已经很详尽,但是没看到比较详细的案例,理解起来有一些抽象。本文对EM的算法做一些总结,重点是介绍EM的案例,使得对该算法有一个直观的理解。

介绍

EM算法主要是针对存在隐变量的问题,即数据不完整的条件下去做参数估计。与之相反,当数据完整的时候,我们采用最大似然法就能解决问题。

似然函数

L ( θ ) = ∏ p ( x 1 , ⋯   , x n ; θ ) ) θ ∗ = a r g   m a x θ ∈ Θ   L ( θ ) l n ( L ( θ ) ) = ∑ i = 1 n l n ( p ( x i ; θ ) ) ∂ l n ( L ( θ ) ) ∂ θ = 0 L(\theta) = \prod p(x_1,\cdots,x_n;\theta))\\ \theta^* = \underset{\theta \in \Theta}{arg \ max}\ L(\theta)\\ ln(L(\theta) )=\sum_{i=1}^{n}ln(p(x_i;\theta))\\ \frac{\partial ln(L(\theta))}{\partial \theta} = 0 L(θ)=p(x1,,xn;θ))θ=θΘarg max L(θ)ln(L(θ))=i=1nln(p(xi;θ))θln(L(θ))=0
求似然函数的极大意义在于,找出参数的最佳估计值。直观的感觉是,给定的样本和参数 θ \theta θ越是符合,似然函数函数值自然越大。

Jensen不等式

这是一个容易理解的不等式。对于函数f,如果f满足,在其定义域内的所有实数x,满足 f ′ ′ ( x ) ≥ 0 f^{''}(x)\geq0 f(x)0,则f为凸函数,且有 E ( f ( X ) ) ≥ f ( E ( X ) ) E(f(X))\geq f(E(X)) E(f(X))f(E(X))
由下图可以看到,f满足 ( f ( a ) + f ( b ) ) / 2 ≥ f ( ( a + b ) / 2 ) (f(a)+f(b))/2\geq f((a+b)/2) (f(a)+f(b))/2f((a+b)/2)
在这里插入图片描述

用归纳法证明一下 E ( f ( X ) ) ≥ f ( E ( X ) ) E(f(X))\geq f(E(X)) E(f(X))f(E(X))
显然,当k=1,2时,命题成立
假定k时,命题成立
E ( X ) = ∑ i = 1 k p i x i   s . t . ∑ i = 1 k p i = 1 E(X) = \sum_{i=1}^{k}p_ix_i \ s.t. \sum_{i=1}^{k}p_i=1\\ E(X)=i=1kpixi s.t.i=1kpi=1
现在求k+1时,命题是否成立
E ( X ) = ∑ i = 1 k + 1 p i x i   s . t . ∑ i = 1 k + 1 p i = 1 E(X) = \sum_{i=1}^{k+1}p_ix_i \ s.t. \sum_{i=1}^{k+1}p_i=1\\ E(X)=i=1k+1pixi s.t.i=1k+1pi=1
s p k = ∑ i = 1 k p k ⇒ E ( X ) = p k + 1 x k + 1 + s p k ∑ i = 1 k p i s p k x i sp_k=\sum_{i=1}^{k}p_k \Rightarrow E(X) = p_{k+1}x_{k+1}+sp_k \sum_{i=1}^{k}\frac{p_i}{sp_k}x_i spk=i=1kpkE(X)=pk+1xk+1+spki=1kspkpixi
X k = ∑ i = 1 k p i s p k x i X_k=\sum_{i=1}^{k}\frac{p_i}{sp_k}x_i Xk=i=1kspkpixi,代入上式得到 E ( X ) = p k + 1 x k + 1 + s p k X k E(X) = p_{k+1}x_{k+1}+sp_kX_k E(X)=pk+1xk+1+spkXk
由于 p k + 1 + s p k = 1 p_{k+1}+sp_k=1 pk+1+spk=1,则有 E ( f ( X ) ) = p k + 1 f ( x k + 1 ) + s p k f ( X k ) ≥ f ( p k + 1 x k + 1 + s p k X k ) = f ( E ( X ) ) E(f(X))=p_{k+1}f(x_{k+1})+sp_kf(X_k)\geq f(p_{k+1}x_{k+1}+sp_kX_k)=f(E(X)) E(f(X))=pk+1f(xk+1)+spkf(Xk)f(pk+1xk+1+spkXk)=f(E(X))
在f为严格凸函数时,上式只有在E(X)为常数时候才成立,即x是一个常数。
当f为凹函数时,上述不等式需要反号。我们知道最大似然函数ln函数是凹函数,所以上述需要取反。

EM 算法

假设完整数据为X ,Z
X = [ x 1 , ⋯   , x n ] X = [{x_1,\cdots,x_n}] X=[x1,,xn]为观测数据
Z = [ z 1 , ⋯   , z n ] Z = [{z_1,\cdots,z_n}] Z=[z1,,zn]为未观测的数据,即隐变量
则有
L ( θ ) = ∑ i = 1 k l n   q ( x i ; θ ) = ∑ i = 1 k l n   [ ∑ z q ( x i , z i ; θ ) ] L(\theta) = \sum_{i=1}^{k}ln \ q(x_i;\theta)=\sum_{i=1}^{k}ln \ [\sum_zq(x_i,z_i;\theta)] L(θ)=i=1kln q(xi;θ)=i=1kln [zq(xi,zi;θ)]
假设 Q i Q_i Qi表示隐含变量Z的某种分布, Q i Q_i Qi满足
∑ z Q i ( z ) = 1   s . t . Q i   ≥ 0 \sum_zQ_i(z) = 1 \ s.t. Q_i \ \geq 0 zQi(z)=1 s.t.Qi 0
也就是说在 x = x i x=x_i x=xi,条件下的Q_i(z)概率密度 q ( z i ∣ x i ; θ ) q(z_i|x_i;\theta) q(zixi;θ)
L ( θ ) = ∑ i = 1 k l n   [ ∑ z q ( x i , z i ; θ ) ] = ∑ i = 1 k l n   [ ∑ z Q i q ( x i , z i ; θ ) Q i ] L(\theta) =\sum_{i=1}^{k}ln \ [\sum_zq(x_i,z_i;\theta)]=\sum_{i=1}^{k}ln \ [\sum_zQ_i\frac{q(x_i,z_i;\theta)}{Q_i}] L(θ)=i=1kln [zq(xi,zi;θ)]=i=1kln [zQiQiq(xi,zi;θ)]
这里的函数f 为 ln, 凹函数。令有变量 X X = q ( x i , z i ; θ ) Q i XX = \frac{q(x_i,z_i;\theta)}{Q_i} XX=Qiq(xi,zi;θ)
则有 E ( X X ) = ∑ i Q i X X E(XX) = \sum_iQ_iXX E(XX)=iQiXX
由Jensen不等式可以得到
L ( θ ) = ∑ i = 1 k l n   [ ∑ z Q i X X ] ≥ ∑ i = 1 k ∑ z Q i l n ( X X ) = J ( Z , Q ) L(\theta) =\sum_{i=1}^{k}ln \ [\sum_zQ_iXX]\geq \sum_{i=1}^{k} \sum_zQ_iln(XX)=J(Z,Q) L(θ)=i=1kln [zQiXX]i=1kzQiln(XX)=J(Z,Q)
由于缺失了数据Z, L ( θ ) L(\theta) L(θ)本身并不存在一个解析解,直接用最大似然是做不到的。一切都只是为了得到一个比较合理的估计解。所以,利用Jensen不等式只是想求得一个更易于求解的下界表达式,再利用这个下界 J ( Z , Q ) J(Z,Q) J(Z,Q)去逼近 L ( θ ) L(\theta) L(θ),直到得到一个最优解。
要想上式成立,唯有XX为常数才能做到,因此,为了能求出解,需要假设 X X = c XX=c XX=c,则有
X X = q ( x i , z i ; θ ) Q i = C ⇒ ∑ z q ( x i , z i ; θ ) = q ( x i ; θ ) = ∑ i = 1 k Q i C = C XX = \frac{q(x_i,z_i;\theta)}{Q_i}=C \Rightarrow \sum_z q(x_i,z_i;\theta) =q(x_i;\theta)=\sum_{i=1}^{k}Q_iC=C XX=Qiq(xi,zi;θ)=Czq(xi,zi;θ)=q(xi;θ)=i=1kQiC=C

EM算法是一种迭代逼近的算法,分为两步:

  1. E步,固定 θ \theta θ,计算 Q i ( z ) Q_i(z) Qi(z),建立 L ( θ ) L(\theta) L(θ)的下界。我们知道z是无法观测的,但是有了给定的 θ \theta θ就可以计算 Q i ( z ) Q_i(z) Qi(z)
  2. M步,得到 Q i ( z ) Q_i(z) Qi(z)后,求 θ ∗ = a r g   m a x θ ∈ Θ   ∑ i = 1 k ∑ z Q i l n ( X X ) \theta^* = \underset{\theta \in \Theta}{arg \ max}\ \sum_{i=1}^{k} \sum_zQ_iln(XX) θ=θΘarg max i=1kzQiln(XX)
    不断重复1,2,直到 θ \theta θ收敛。根据不同初始值,结果并不相同,因此,起始点是比较重要的。

EM例子

这个例子用的是李航的统计学习方法中的三个硬币例子。文中只给出了结果,并未对过程做详细推导,大概是作者觉得过于简单不需要去赘述吧。

在这里插入图片描述
θ = { π , p , q } \theta = \{ \pi ,p,q\} θ={π,p,q},观测结果为y(同前面的x变量,为了和书本一致,这里使用y代替),则有
p ( y ∣ θ ) = π p y p 1 − y + ( 1 − π ) q y q 1 − y p(y|\theta)=\pi p^yp^{1-y}+(1-\pi)q^yq^{1-y} p(yθ)=πpyp1y+(1π)qyq1y
y的观测结果可能是来自硬币B,也可能来自硬币C,但是这一点我们是无法从y中获得的,因此,在这个问题中,我们将y的观测结果来源取决于A的投币结果,这个结果我们无法观测,因此作为隐变量。
Y = ( Y 1 , Y 2 , ⋯   , Y n ) T , Z = ( Z 1 , Z 2 , ⋯   , Z n ) T P ( Y ∣ θ ) = ∑ z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] θ = ( π , p , q ) θ ^ = arg ⁡ max ⁡ θ log ⁡ P ( Y ∣ θ ) Y=\left(Y_{1}, Y_{2}, \cdots, Y_{n}\right)^{T},Z=\left(Z_{1}, Z_{2}, \cdots, Z_{n}\right)^{T}\\ P(Y | \theta)=\sum_{z} P(Z | \theta) P(Y | Z, \theta)\\ P(Y | \theta)=\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right]\\ \theta=(\pi, p, q)\\ \hat{\theta}=\arg \max _{\theta} \log P(Y | \theta) Y=(Y1,Y2,,Yn)T,Z=(Z1,Z2,,Zn)TP(Yθ)=zP(Zθ)P(YZ,θ)P(Yθ)=j=1n[πpyj(1p)1yj+(1π)qyj(1q)1yj]θ=(π,p,q)θ^=argθmaxlogP(Yθ)

详细计算方法:
给定 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) . \theta^{(i)}=\left(\pi^{(i)}, p^{(i)}, q^{(i)}\right) . θ(i)=(π(i),p(i),q(i)).
E步,计算 Q i Q_i Qi
θ \theta θ已知, Q i Q_i Qi未知
前面提到过, Q i ( z i ) = q ( z i ∣ y i ; θ ) = q ( y i , z i ; θ ) / q ( y i ; θ ) Q_i(z_i) = q(z_i|y_i;\theta)=q(y_i,z_i;\theta)/q(y_i;\theta) Qi(zi)=q(ziyi;θ)=q(yi,zi;θ)/q(yi;θ)
我们知道,前面的变量 X X = q ( y i , z i ; θ ) Q i = q ( y i , θ ) XX = \frac{q(y_i,z_i;\theta)}{Q_i}=q(y_i,\theta) XX=Qiq(yi,zi;θ)=q(yi,θ),在给定 θ \theta θ下,显然,该变量是常数项,使得 L ( θ ) = J ( Z , Q ) L(\theta) =J(Z,Q) L(θ)=J(Z,Q)

求后验概率,发生y_i时,正面为A的机率,也就是观测结果来自B的机率
Q i 1 ( z i = z 1 ( A 正 面 ) ) Q_{i1}(z_i=z_1(A正面)) Qi1(zi=z1(A))即书中提到的下面的公式
μ ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j \mu^{(i+1)}=\frac{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}}{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}+\left(1-\pi^{(i)}\right)\left(q^{(i)}\right)^{y_{j}}\left(1-q^{(i)}\right)^{1-y_{j}}} μ(i+1)=π(i)(p(i))yj(1p(i))1yj+(1π(i))(q(i))yj(1q(i))1yjπ(i)(p(i))yj(1p(i))1yj
可以得到
Q i 2 ( z i = z 2 = A 反 面 ) = 1 − Q i 1 ( z i = z 1 ) = 1 − μ ( i + 1 ) Q_{i2}(z_i=z_2=A反面)=1-Q_{i1}(z_i=z_1)=1-\mu^{(i+1)} Qi2(zi=z2=A)=1Qi1(zi=z1)=1μ(i+1)

M步
θ \theta θ未知, Q i Q_i Qi已知
有了 Q i 1 = μ i , Q i 2 Q_{i1}=\mu_i,Q_{i2} Qi1=μi,Qi2我们更新 J ( Q , Z ) = S c o r e = ∑ i = 1 k ∑ z Q i ln ⁡ ( X X ) = ∑ i = 1 k ( Q i 1 l n [ ( q ( y i , z 1 ; θ ) / Q i 1 ) ] + Q i 2 ln ⁡ ( q ( y i , z 2 ; θ ) / Q i 2 ) ) ∂ ( Q i 1 l n [ ( q ( y i , z 1 ; θ ) / Q i 1 ) ] ∂ π = Q i 1 q ′ ( y i , z 1 ; θ ) / q ( y i , z 1 ; θ ) = Q i 1 p y ( 1 − p ) 1 − y / ( π p y ( 1 − p ) 1 − y ) = Q i 1 / π ∂ ( Q i 2 l n [ ( q ( y i , z 2 ; θ ) / Q i 2 ) ] ∂ π = Q i 2 q ′ ( y i , z 2 ; θ ) / q ( y i , z 2 ; θ ) = − Q i 2 q y ( 1 − q ) 1 − y / ( ( 1 − π ) q y ( 1 − q ) 1 − y ) = − Q i 2 / ( 1 − π ) ∂ S c o r e ∂ π = ∑ i Q i 1 / π − Q i 2 / ( 1 − π ) = 0 ⇒ ∑ i [ ( 1 − π ) Q i 1 − π Q i 2 ] = ∑ i ( Q i 1 − π ) ⇒ π ( i + 1 ) = 1 n ∑ j = 1 n μ j ( i ) ⋅ 1 J(Q,Z)=Score=\sum_{i=1}^{k} \sum_zQ_i\ln (XX)=\sum_{i=1}^{k} (Q_{i1}ln [(q(y_i,z_1;\theta)/Q_{i1})]+Q_{i2}\ln (q(y_i,z_2;\theta)/Q_{i2})) \\ \frac{\partial (Q_{i1}ln [(q(y_i,z_1;\theta)/Q_{i1})]}{\partial \pi}=Q_{i1}q'(y_i,z_1;\theta)/q(y_i,z_1;\theta)=\\ Q_{i1}p^y(1-p)^{1-y}/(\pi p^y(1-p)^{1-y})=Q_{i1}/\pi \\ \frac{\partial (Q_{i2}ln [(q(y_i,z_2;\theta)/Q_{i2})]}{\partial \pi}=Q_{i2}q'(y_i,z_2;\theta)/q(y_i,z_2;\theta)=\\ -Q_{i2}q^y(1-q)^{1-y}/((1-\pi) q^y(1-q)^{1-y})=-Q_{i2}/(1-\pi) \\ \frac{\partial Score}{\partial \pi}=\sum_iQ_{i1}/\pi-Q_{i2}/(1-\pi)=0 \Rightarrow \\ \sum_i [(1-\pi)Q_{i1}-\pi Q_{i2}]=\sum_i (Q_{i1}-\pi)\Rightarrow \\ \\{\pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i) \cdot 1}} J(Q,Z)=Score=i=1kzQiln(XX)=i=1k(Qi1ln[(q(yi,z1;θ)/Qi1)]+Qi2ln(q(yi,z2;θ)/Qi2))π(Qi1ln[(q(yi,z1;θ)/Qi1)]=Qi1q(yi,z1;θ)/q(yi,z1;θ)=Qi1py(1p)1y/(πpy(1p)1y)=Qi1/ππ(Qi2ln[(q(yi,z2;θ)/Qi2)]=Qi2q(yi,z2;θ)/q(yi,z2;θ)=Qi2qy(1q)1y/((1π)qy(1q)1y)=Qi2/(1π)πScore=iQi1/πQi2/(1π)=0i[(1π)Qi1πQi2]=i(Qi1π)π(i+1)=n1j=1nμj(i)1
同理可以得到
p ( i + 1 ) = ∑ j = 1 n μ j ( i + 1 ) y j ∑ j = 1 n μ j ( i + 1 ) q ( i + 1 ) = ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) \begin{array}{l} {p^{(i+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(i+1)} y_{j}}{\sum_{j=1}^{n} \mu_{j}^{(i+1)}}} \\ {q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right)}} \end{array} p(i+1)=j=1nμj(i+1)j=1nμj(i+1)yjq(i+1)=j=1n(1μj(i+1))j=1n(1μj(i+1))yj

总结

EM
用一张图总结EM的迭代是怎么工作的
通过前t-1次迭代,得到了 θ t \theta^t θt,这时, J ( Z , Q ) J(Z,Q) J(Z,Q)对应的曲线如绿色曲线所式,这时候,E步构造新的 Q i Q_i Qi参数,得到新的 J ( Z , Q ) J(Z,Q) J(Z,Q)曲线(蓝色),使得在 θ t \theta^t θt位置, J ( Z , Q ) = L ( θ ) J(Z,Q)=L(\theta) J(Z,Q)=L(θ)。M步,对 J ( Z , Q ) J(Z,Q) J(Z,Q)求导,求该曲线的极值位置作为 θ t + 1 \theta^{t+1} θt+1,直到收敛。从图可以直观得看到,EM过程肯定是收敛得,因为极值保证了,新的J(Z,Q)一定大于等于老的J(Z,Q)。但是初始值若给的不合适,最终的结果未必理想。

参考文献

  1. https://wenku.baidu.com/view/3396bb4d6294dd88d0d26bee.html
  2. https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值