机器学习基础EM算法

前言
EM算法是机器学习十大算法之一,它很简单,但是也同样很有深度,简单是因为它就分两步求解问题,

E步:求期望(expectation)
M步:求极大(maximization)
深度在于它的数学推理涉及到比较繁杂的概率公式等,所以本文会介绍很多概率方面的知识,不懂的同学可以先去了解一些知识,当然本文也会尽可能的讲解清楚这些知识,讲的不好的地方麻烦大家评论指出,后续不断改进完善。

EM算法引入
概率模型有时候既含有观测变量,又含有隐变量或潜在变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计方法估计模型参数,但是当模型含有隐变量时,就不能简单的使用这些方法,EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法,我们讨论极大似然估计,极大后验概率估计与其类似。 参考统计学习方法书中的一个例子来引入EM算法, 假设有3枚硬币,分别记做A、B、C,这些硬币正面出现的概率分别是 π \pi π p p p q q q,进行如下实验:

先掷硬币A,根据结果选出硬币B和硬币C,正面选硬币B,反面选硬币C
通过选择出的硬币,掷硬币的结果出现正面为1,反面为0 如此独立地重复n次实验,我们当前规定n=10,则10次的结果如下所示: 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1,1,0,1,0,0,1,0,1,1 1,1,0,1,0,0,1,0,1,1假设只通过观测到掷硬币的结果,不能观测掷硬币的过程,问如何估计三个硬币出现正面的概率? 我们来构建这样一个三硬币模型: P ( y ∣ θ ) a m p ; = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) a m p ; = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y \begin{aligned} P(y|\theta) &=\sum_{z}P(y,z|\theta)=\sum_{z}P(z|\theta)P(y|z,\theta) \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi)q^{y}(1-q)^{1-y} \end{aligned} P(yθ)amp;=zP(y,zθ)=zP(zθ)P(yz,θ)amp;=πpy(1p)1y+(1π)qy(1q)1y

y = 1 y=1 y=1,表示这此看到的是正面,这个正面有可能是B的正面,也可能是C的正面,则 P ( 1 ∣ θ ) = π p + ( 1 − π ) q P(1|\theta)=\pi p+(1-\pi)q P(1θ)=πp+(1π)q

y = 0 y=0 y=0,则 P ( 0 ∣ θ ) = π ( 1 − p ) + ( 1 − π ) ( 1 − q ) P(0|\theta)=\pi (1-p)+(1-\pi)(1-q) P(0θ)=π(1p)+(1π)(1q)
y是观测变量,表示一次观测结果是1或0,z是隐藏变量,表示掷硬币A的结果,这个是观测不到结果的, θ = ( π , p , q ) \theta=(\pi,p,q) θ=(π,p,q)表示模型参数,将观测数据表示为 Y = ( Y 1 , Y 2 , . . . , Y n ) T Y=(Y_1,Y_2,...,Y_n)^{T} Y=(Y1,Y2,...,Yn)T,未观测的数据表示为 Z = ( Z 1 , Z 2 , . . . , Z n ) T Z=(Z_1,Z_2,...,Z_n)^{T} Z=(Z1,Z2,...,Zn)T,则观测函数的似然函数是: P ( Y ∣ θ ) a m p ; = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) a m p ; = ∏ i = 0 ( π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ) \begin{aligned} P(Y|\theta)&=\sum_{Z}P(Z|\theta)P(Y|Z,\theta)\\ &=\prod_{i=0} ( \pi p^{y_i}(1-p)^{1-y_{i}}+(1-\pi)q^{y_{i}}(1-q)^{1-y_{i}}) \end{aligned} P(Yθ)amp;=ZP(Zθ)P(YZ,θ)amp;=i=0(πpyi(1p)1yi+(1π)qyi(1q)1yi)考虑求模型参数 θ = ( π , p , q ) \theta=(\pi,p,q) θ=(π,p,q)的极大似然估计,即: θ ^ = a r g max ⁡ θ l o g P ( Y ∣ θ ) \hat{\theta}=arg\max_{\theta}logP(Y|\theta) θ^=argθmaxlogP(Yθ)这个问题没有解析解,只有通过迭代方法来求解,EM算法就是可以用于求解这个问题的一种迭代算法,下面给出EM算法的迭代过程:

首先选取初始值,记做 θ 0 = ( π 0 , p 0 , q 0 ) \theta^{0}=(\pi^{0},p^{0},q^{0}) θ0=(π0,p0,q0),第i次的迭代参数的估计值为 θ i = ( π i , p i , q i ) \theta^{i}=(\pi^{i},p^{i},q^{i}) θi=(πi,pi,qi)
E步:计算在模型参数 π i , p i , q i \pi^{i},p^{i},q^{i} πipiqi下观测变量 y i y_i yi来源于硬币B的概率: μ i + 1 = π i ( p i ) y i ( 1 − p i ) 1 − y i π i ( p i ) y i ( 1 − p i ) 1 − y i + ( 1 − π i ) ( q i ) y i ( 1 − p i ) 1 − y i \mu^{i+1}=\frac{\pi^{i}(p^{i})^{y_i}(1-p^i)^{1-y_i}}{\pi^{i}(p^{i})^{y_i}(1-p^i)^{1-y_i}+(1-\pi^{i})(q^{i})^{y_i}(1-p^i)^{1-y_i}} μi+1=πi(pi)yi(1pi)1yi+(1πi)(qi)yi(1pi)1yiπi(pi)yi(1pi)1yi备注一下:这个公式的分母是 P ( Y ∣ θ ) P(Y|\theta) P(Yθ),分子表示是来源与B硬币的概率。

M步:计算模型参数的新估计值: π i + 1 = 1 n ∑ j = 1 n μ j i + 1 \pi^{i+1}=\frac{1}{n}\sum_{j=1}^{n}\mu_{j}^{i+1} πi+1=n1j=1nμji+1因为B硬币A硬币出现正面的结果,所以A硬币概率就是 μ j \mu_{j} μj的平均值。 p i + 1 = ∑ j = 1 n μ j i + 1 y j ∑ j = 1 n μ j i + 1 p^{i+1}=\frac{\sum_{j=1}^{n}\mu_{j}^{i+1}y_j}{\sum_{j=1}^{n}\mu_{j}^{i+1}} pi+1=j=1nμji+1j=1nμji+1yj分子乘以 y i y_{i} yi,所以其实是计算B硬币出现正面的概率。 q i + 1 = ∑ j = 1 n ( 1 − μ j i + 1 ) y j ∑ j = 1 n ( 1 − μ j i + 1 ) q^{i+1}=\frac{\sum_{j=1}^{n}(1-\mu_{j}^{i+1})y_j}{\sum_{j=1}^{n}(1-\mu_{j}^{i+1})} qi+1=j=1n(1μji+1)j=1n(1μji+1)yj ( 1 − μ j i + 1 ) (1-\mu_{j}^{i+1}) (1μji+1)表示出现C硬币的概率。

闭环形成,从 P ( Y ∣ θ ) P(Y|\theta) P(Yθ) π 、 p 、 q \pi、p、q πpq一个闭环流程,接下来可以通过迭代法来做完成。针对上述例子,我们假设初始值为 π 0 = 0.5 , p 0 = 0.5 , q 0 = 0.5 \pi^{0}=0.5,p^{0}=0.5,q^{0}=0.5 π0=0.5p0=0.5q0=0.5,因为对 y i = 1 y_i=1 yi=1 y i = 0 y_i=0 yi=0均有 μ j 1 = 0.5 \mu_j^{1}=0.5 μj1=0.5,利用迭代公式计算得到 π 1 = 0.5 , p 1 = 0.6 , q 1 = 0.6 \pi^{1}=0.5,p^{1}=0.6,q^{1}=0.6 π1=0.5p1=0.6q1=0.6,继续迭代得到最终的参数: π 0 ^ = 0.5 , p 0 ^ = 0.6 , q 0 ^ = 0.6 \widehat{\pi^{0}}=0.5,\widehat{p^{0}}=0.6,\widehat{q^{0}}=0.6 π0 =0.5p0 =0.6q0 =0.6如果一开始初始值选择为: π 0 = 0.4 , p 0 = 0.6 , q 0 = 0.7 \pi^{0}=0.4,p^{0}=0.6,q^{0}=0.7 π0=0.4p0=0.6q0=0.7,那么得到的模型参数的极大似然估计是 π ^ = 0.4064 , p ^ = 0.5368 , q ^ = 0.6432 \widehat{\pi}=0.4064,\widehat{p}=0.5368,\widehat{q}=0.6432 π =0.4064p =0.5368q =0.6432,这说明EM算法与初值的选择有关,选择不同的初值可能得到不同的参数估计值。

这个例子中你只观察到了硬币抛完的结果,并不了解A硬币抛完之后,是选择了B硬币抛还是C硬币抛,这时候概率模型就存在着隐含变量!

EM算法
输入:观测变量数据Y,隐变量数据Z,联合分布 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Zθ),条件分布 P ( Z ∣ Y , θ ) P(Z|Y,\theta) P(ZY,θ); 输出:模型参数 θ \theta θ

(1)选择参数的初值 θ 0 \theta^0 θ0,开始迭代
(2) E步:记 θ i \theta^i θi为第i次迭代参数 θ \theta θ的估计值,在第i+1次迭代的E步,计算 Q ( θ , θ i ) a m p ; = E Z [ l o g P ( Y , Z ∣ θ ) ∣ Y , θ i ] a m p ; = ∑ Z l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) \begin{aligned} Q(\theta,\theta^i)&=E_{Z}[logP(Y,Z|\theta)|Y,\theta^i]\\ &=\sum_{Z}logP(Y,Z|\theta)P(Z|Y,\theta^i) \end{aligned} Q(θ,θi)amp;=EZ[logP(Y,Zθ)Y,θi]amp;=ZlogP(Y,Zθ)P(ZY,θi)这里, P ( Z ∣ Y , θ i ) P(Z|Y,\theta^i) P(ZY,θi)是在给定观测数据Y和当前的参数估计 θ i \theta^i θi下隐变量数据Z的条件概率分布;

(3) M步:求使 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi)极大化的 θ \theta θ,确定第i+1次迭代的参数的估计值 θ i + 1 \theta^{i+1} θi+1 θ i + 1 = a r g max ⁡ θ Q ( θ , θ i ) \theta^{i+1}=arg \max \limits_{\theta}Q(\theta,\theta^{i}) θi+1=argθmaxQ(θ,θi) Q ( θ , θ i ) Q(\theta,\theta^{i}) Q(θ,θi)是EM算法的核心,称为Q函数(Q function),这个是需要自己构造的。

(4) 重复第(2)步和第(3)步,直到收敛,收敛条件:KaTeX parse error: Expected 'EOF', got '&' at position 32: …-\theta^{i} || &̲lt; \varepsilon…或者:KaTeX parse error: Expected 'EOF', got '&' at position 58: …,\theta^{i})|| &̲lt;\varepsilon_…收敛迭代就结束了。我们来拆解一下这个M步骤,
推导逼近
主要讲解Jensen不等式,这个公式在推导和收敛都用到,主要是如下的结论:

f ( x ) f(x) f(x)是凸函数 f ( E ( X ) ) ≤ E ( f ( x ) ) f(E(X)) \le E(f(x)) f(E(X))E(f(x))
f ( x ) f(x) f(x)是凹函数 f ( E ( X ) ) ≥ E ( f ( x ) ) f(E(X)) \ge E(f(x)) f(E(X))E(f(x))
推导出Em算法可以近似实现对观测数据的极大似然估计的办法是找到E步骤的下界,让下届最大,通过逼近的方式实现对观测数据的最大似然估计。统计学习基础中采用的是相减方式,我们来看下具体的步骤。

增加隐藏变量 L ( θ ) = ∑ Z l o g P ( Y ∣ Z , θ ) P ( Z , θ ) L(\theta)=\sum_{Z}logP(Y|Z,\theta)P(Z,\theta) L(θ)=ZlogP(YZ,θ)P(Z,θ) L ( θ ) − L ( θ i ) L(\theta)-L(\theta^{i}) L(θ)L(θi)为: L ( θ ) − L ( θ i ) = l o g ( ∑ Z P ( Y ∣ Z , θ i ) P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) ) − L ( θ i ) ≥ ∑ Z P ( Y ∣ Z , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) ) − L ( θ i ) \begin{aligned} L(\theta)-L(\theta^{i})=log(\sum_{Z} P(Y|Z,\theta^i)\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i)})-L(\theta^{i})\\ \ge \sum_{Z} P(Y|Z,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i)})-L(\theta^{i}) \end{aligned} L(θ)L(θi)=log(ZP(YZ,θi)P(YZ,θi)P(YZ,θ)P(Z,θ))L(θi)ZP(YZ,θi)log(P(YZ,θi)P(YZ,θ)P(Z,θ))L(θi) ≥ \ge 这一个步骤就是采用了凹函数的Jensen不等式做转换。因为 Z Z Z是隐藏变量,所以有KaTeX parse error: Expected 'EOF', got '&' at position 44: …P(Y|Z,\theta^i)&̲gt;0,于是继续变:
L ( θ ) − L ( θ i ) a m p ; = l o g ( ∑ Z P ( Y ∣ Z , θ i ) P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) ) − L ( θ i ) a m p ; ≥ ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Z ∣ Y , θ i ) ) − L ( θ i ) a m p ; = ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Z ∣ Y , θ i ) ) − ∑ Z P ( Z ∣ Y , θ i ) L ( θ i ) a m p ; = ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Z ∣ Y , θ i ) ( P ( Y ∣ θ i ) ) a m p ; ≥ 0 \begin{aligned} L(\theta)-L(\theta^{i})&=log(\sum_{Z} P(Y|Z,\theta^i)\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i)})-L(\theta^{i})\\ &\ge \sum_{Z} P(Z|Y,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Z|Y,\theta^i)})-L(\theta^{i})\\ &=\sum_{Z} P(Z|Y,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Z|Y,\theta^i)})-\sum_{Z} P(Z|Y,\theta^i)L(\theta^{i})\\ &= \sum_{Z} P(Z|Y,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Z|Y,\theta^i) (P(Y|\theta^{i})}) \\ & \ge0 \end{aligned} L(θ)L(θi)amp;=log(ZP(YZ,θi)P(YZ,θi)P(YZ,θ)P(Z,θ))L(θi)amp;ZP(ZY,θi)log(P(ZY,θi)P(YZ,θ)P(Z,θ))L(θi)amp;=ZP(ZY,θi)log(P(ZY,θi)P(YZ,θ)P(Z,θ))ZP(ZY,θi)L(θi)amp;=ZP(ZY,θi)log(P(ZY,θi)(P(Yθi)P(YZ,θ)P(Z,θ))amp;0
也就是: L ( θ ) ≥ L ( θ i ) + ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) L ( θ i ) ) L(\theta)\ge L(\theta^{i})+ \sum_{Z} P(Z|Y,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i) L(\theta^{i})}) L(θ)L(θi)+ZP(ZY,θi)log(P(YZ,θi)L(θi)P(YZ,θ)P(Z,θ)),有下界,最大化下界,来得到近似值。这里有一个细节: P ( Y ∣ Z , θ i ) P(Y|Z,\theta^i) P(YZ,θi) 变为 P ( Z ∣ Y , θ i ) P(Z|Y,\theta^i) P(ZY,θi)?如果要满足Jensen不等式的等号,则有: P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) = c \frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i)} = c P(YZ,θi)P(YZ,θ)P(Z,θ)=cc为一个常数,而 ∑ Z P ( Y ∣ Z , θ i ) = 1 \sum_{Z}P(Y|Z,\theta^i)=1 ZP(YZ,θi)=1则: ∑ Z P ( Y ∣ Z , θ ) P ( Z , θ ) = c ∑ Z P ( Y ∣ Z , θ i ) a m p ; = c a m p ; = P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Y ∣ Z , θ i ) P ( Y ∣ Z , θ ) = P ( Y ∣ Z , θ ) P ( Z , θ ) ∑ Z P ( Y ∣ Z , θ ) P ( Z , θ ) = P ( Y , Z , θ ) P ( Y , θ ) = P ( Z ∣ Y , θ ) \begin{aligned} \sum_{Z}P(Y|Z,\theta)P(Z,\theta)= c\sum_{Z}P(Y|Z,\theta^i)&=c\\ &=\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Y|Z,\theta^i)}\\ P(Y|Z,\theta)=\frac{P(Y|Z,\theta)P(Z,\theta)}{\sum_{Z}P(Y|Z,\theta)P(Z,\theta)}=\frac{P(Y,Z,\theta)}{P(Y,\theta)}=P(Z|Y,\theta) \end{aligned} ZP(YZ,θ)P(Z,θ)=cZP(YZ,θi)P(YZ,θ)=ZP(YZ,θ)P(Z,θ)P(YZ,θ)P(Z,θ)=P(Y,θ)P(Y,Z,θ)=P(ZY,θ)amp;=camp;=P(YZ,θi)P(YZ,θ)P(Z,θ)

大家是不是很奇怪 P ( Y ∣ Z , θ ) P ( Z , θ ) P(Y|Z,\theta)P(Z,\theta) P(YZ,θ)P(Z,θ)加上 ∑ \sum 之后等于什么,其实有的博客这里使用 P ( Z , θ ) = P ( Y i , Z i , θ i ) P(Z,\theta) = P(Y^i,Z^i,\theta^i) P(Z,θ)=P(Yi,Zi,θi)来替代 P ( Y ∣ Z , θ ) P(Y|Z,\theta) P(YZ,θ)参与计算,这样 ∑ Z P ( Y i , Z i , θ i ) \sum_{Z}P(Y^i,Z^i,\theta^i) ZP(Yi,Zi,θi),这样就方便理解来了。

于是最大化如下:

θ i + 1 a m p ; = a r g max ⁡ θ ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) P ( Z ∣ Y , θ i ) ) a m p ; = a r g max ⁡ θ ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y ∣ Z , θ ) P ( Z , θ ) ) a m p ; = a r g max ⁡ θ ∑ Z P ( Z ∣ Y , θ i ) l o g ( P ( Y , Z ∣ θ ) ) a m p ; = a r g max ⁡ θ Q ( θ , θ i ) \begin{aligned} \theta^{i+1}&=arg \max_{\theta}\sum_{Z} P(Z|Y,\theta^i)log(\frac{P(Y|Z,\theta)P(Z,\theta)}{P(Z|Y,\theta^i)})\\ &=arg \max_{\theta}\sum_{Z} P(Z|Y,\theta^i)log(P(Y|Z,\theta)P(Z,\theta))\\ & =arg \max_{\theta}\sum_{Z} P(Z|Y,\theta^i)log(P(Y,Z|\theta))\\ &=arg \max_{\theta}Q(\theta,\theta^i) \end{aligned} θi+1amp;=argθmaxZP(ZY,θi)log(P(ZY,θi)P(YZ,θ)P(Z,θ))amp;=argθmaxZP(ZY,θi)log(P(YZ,θ)P(Z,θ))amp;=argθmaxZP(ZY,θi)log(P(Y,Zθ))amp;=argθmaxQ(θ,θi)
其中 l o g log log分母提出来是关于 Z Z Z ∑ Z P ( Z ∣ Y , θ i ) l o g P ( Z ∣ Y , θ i ) \sum_{Z} P(Z|Y,\theta^i)logP(Z|Y,\theta^i) ZP(ZY,θi)logP(ZY,θi),可以去掉。当然也有博客写的形式是: a r g max ⁡ θ ∑ i = 1 M ∑ Z i P ( Z i ∣ Y i , θ i ) l o g ( P ( Y i , Z i ; θ ) ) arg \max_{\theta}\sum_{i=1}^{M}\sum_{Z^{i}} P(Z^{i}|Y^{i},\theta^i)log(P(Y^{i},Z^{i};\theta))\\ argθmaxi=1MZiP(ZiYi,θi)log(P(Yi,Zi;θ))形式其实一样,表示的不一样而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值