机器学习之EM算法

EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计,我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。

但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,由于我们有未知的隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。

EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(隐变量)「EM算法的E步」,接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数*「EM算法的M步然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

一、Jensen不等式与Lazy Statistician规则

Jensen不等式的意义是:如果f是凸函数,X是随机变量,那么函数的期望大于等于期望的函数,即:

E ( f ( X ) ) ≥ f ( E ( X ) ) E(f(X))\geq f(E(X)) E(f(X))f(E(X))

特别地,如果f是严格凸函数,那么 E ( f ( X ) ) = f ( E ( X ) ) E(f(X))= f(E(X)) E(f(X))=f(E(X))当且仅当X是常数时取等号。

因为当X为常数时 f ( X ) f(X) f(X)为一定值, E ( f ( X ) ) = f ( X ) E(f(X))=f(X) E(f(X))=f(X), f ( E ( X ) ) = f ( X ) f(E(X))=f(X) f(E(X))=f(X)

如下如所示:

在这里插入图片描述

在这个表达式中,若t相当于 x 1 x_1 x1的概率,(1-t)相当于 x 2 x_2 x2的概率:

t f ( x 1 ) + ( 1 − t ) f ( x 2 ) ≥ f ( t x 1 + ( 1 − t ) x 2 ) , t ∈ ( 0 , 1 ) tf(x_1)+(1-t)f(x_2) \geq f(tx_1+(1-t)x_2),t\in \left ( 0,1 \right ) tf(x1)+(1t)f(x2)f(tx1+(1t)x2),t(0,1)

在这里插入图片描述

在这里插入图片描述

二、EM算法的推导

假设我们有一个样本集
{ x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \} {x(1),x(2),...,x(m)},包含m个独立的样本。但每一个样本i对应的 z ( i ) z^{(i)} z(i)是未知的,也就是隐变量。故我们需要估计概率模型 p ( x , z ) p(x,z) p(x,z)的参数 θ \theta θ,但是由于里面包含隐变量z,所以很难用最大似然求解,但是我们要是想办法知道了z,那么就很容易求解了。

对于参数估计,我们本质上还是想获得一个使似然函数最大的 θ \theta θ

θ = a r g m a x θ   ∑ i = 1 m   l o g P ( x i ∣ θ ) \boldsymbol{\theta =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: logP(x^i\mid \theta)} θ=θargmaxi=1mlogP(xiθ)

如果我们得到的观察数据有未观察到的隐含数据 z = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) z=(z^{(1)},z^{(2)},...,z^{(m)}) z=(z(1),z(2),...,z(m)),那么由边缘分布可以写成联合分布之和,我们得到极大化模型分布的对数似然函数如下:

θ = a r g m a x θ   ∑ i = 1 m   l o g P ( x i ∣ θ ) = a r g m a x θ   ∑ i = 1 m   l o g    ∑ z i P ( x i , z i ∣ θ ) \boldsymbol{\theta =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: logP(x^i\mid \theta) =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: log\:\:\sum_{z^{i}}P(x^i,z^i\mid \theta)} θ=θargmaxi=1mlogP(xiθ)=θargmaxi=1mlogziP(xi,ziθ)

对于每一个样例 x i x^i xi,让 Q i Q_i Qi表示该样例隐含变量z的某种分布, Q i Q_i Qi满足条件 ∑ z Q i ( z ) = 1 , Q i ( z ) ≥ 0 \sum_{z}Q_{i}(z)=1,Q_{i}(z)\geq 0 zQi(z)=1,Qi(z)0。(如果z是连续性的,那么 Q i Q_i Qi是概率密度函数,需要将求和符号换做积分符号)。比如要将班上学生聚类,假设隐藏变量z是身高,那么就是连续的高斯分布。如果按照隐藏变量是男女,那么就是伯努利分布了。

下面的公式阐述了这个思想:

在这里插入图片描述

上面公式推导中多了一个未知的变量而已,我也可以分别对未知的θ和z分别求偏导,再令其等于0,求解出来不也一样吗?但是可以看到里面有“和的对数”,求导后形式会非常复杂(自己可以想象下 l o g ( f 1 ( x ) + f 2 ( x ) + f 3 ( x ) + … ) log(f1(x)+ f2(x)+ f3(x)+…) log(f1(x)+f2(x)+f3(x)+)复合函数的求导),所以很难求解得到未知参数z和θ,所以在(2)式中分子分母乘以一个相等的函数,但还是有"和的对数",这里就用到了我们前面讲的 J e n s e n Jensen Jensen不等式,将"和的对数"转变成了"对数的和",并且等号变成了不等号,因此:

∑ i = 1 m   l o g P ( x i ∣ θ ) \sum_{i=1}^{m}\: logP(x^i\mid \theta) i=1mlogP(xiθ)就这么巧妙的有了一个下界,并且如果满足 J e n s e n Jensen Jensen不等式的等号,则有:

P ( x i , z i ∣ θ ) Q i ( z i ) = c , c 为 常 数 \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})}=c,c为常数 Qi(zi)P(xi,ziθ)=cc

下面推导下 z i z^i zi的分布 Q i ( z i ) Q_{i}(z^{i}) Qi(zi):

应用到一个简单的小公理: 1 2 = 1 2 + 2 4 = 1 + 2 2 + 4 = 3 6 \frac{1}{2}=\frac{1}{2}+\frac{2}{4}=\frac{1+2}{2+4}=\frac{3}{6} 21=21+42=2+41+2=63

P ( x i , z i ∣ θ ) Q i ( z i ) = ∑ z P ( x i , z i ∣ θ ) ∑ z Q i ( z i ) = ∑ z P ( x i , z i ∣ θ ) 1 = c \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})}=\frac{\sum_zP(x^i,z^i\mid \theta)}{\sum_zQ_{i}(z^{i})}=\frac{\sum_zP(x^i,z^i\mid \theta)}{1}=c Qi(zi)P(xi,ziθ)=zQi(zi)zP(xi,ziθ)=1zP(xi,ziθ)=c

得:

c = ∑ z P ( x i , z i ∣ θ ) c=\sum_zP(x^i,z^i\mid \theta) c=zP(xi,ziθ)

故:

Q i ( z i ) = P ( x i , z i ∣ θ ) c = P ( x i , z i ∣ θ ) ∑ z P ( x i , z i ∣ θ ) = P ( x i , z i ∣ θ ) P ( x i ∣ θ ) = P ( z i ∣ x i , θ ) Q_{i}(z^{i})=\frac{P(x^i,z^i\mid \theta)}{c}=\frac{P(x^i,z^i\mid \theta)}{\sum_zP(x^i,z^i\mid \theta)}=\frac{P(x^i,z^i\mid \theta)}{P(x^i\mid \theta)}=P(z^i\mid x^i,\theta) Qi(zi)=cP(xi,ziθ)=zP(xi,ziθ)P(xi,ziθ)=P(xiθ)P(xi,ziθ)=P(zixi,θ)

而且:

∑ z Q i ( z ) P ( x i , z i ∣ θ ) Q i ( z i ) \sum_{z}Q_{i}(z)\frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})} zQi(z)Qi(zi)P(xi,ziθ)就是 P ( x i , z i ∣ θ ) Q i ( z i ) \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})} Qi(zi)P(xi,ziθ)在分布为 Q i ( z i ) Q_{i}(z^{i}) Qi(zi)下的期望,这就是我们的E步(求期望)。

上面的关于E步的公式推导,都是建立在 J e n s e n Jensen Jensen不等式取等号的前提下完成的,所以E步求得的期望越大,那么我们要优化的似然估计 l o g P ( x i ∣ θ ) logP(x^i\mid \theta) logP(xiθ)也就越大。

因此我们的M步就是要求出使得该期望最大的参数 θ \theta θ,因此我们要最大化下式:

a r g m a x θ   ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) Q i ( z i ) \boldsymbol{\underset{\theta}{argmax}\: \sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log\frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^i)}} θargmaxi=1mziQi(zi)logQi(zi)P(xi,ziθ)

去掉常数项,注意

Q i ( z i ) = P ( z i ∣ x i , θ j ) Q_{i}(z^{i})=P(z^i\mid x^i,\theta^j) Qi(zi)=P(zixi,θj)

是第j次迭代后得到的 θ j \theta^j θj,所以为常数,将其去掉后得:

a r g m a x θ   ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) \boldsymbol{\underset{\theta}{argmax}\: \sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log{P(x^i,z^i\mid \theta)}} θargmaxi=1mziQi(zi)logP(xi,ziθ)

这就是M步!

三、EM算法流程

现在我们总结下EM算法的流程!

输入:观察数据 x = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } x=\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \} x={x(1),x(2),...,x(m)},联合分布为 P ( x , z ∣ θ ) P(x,z\mid \theta) P(x,zθ),条件分布为 P ( z ∣ x , θ ) P(z\mid x,\theta) P(zx,θ),最大迭代次数为 J J J

  1. 随机初始化模型参数 θ \theta θ的初值 θ 0 \theta^0 θ0.

  2. for j from 1 to J开始EM算法迭代:

    1. E步:计算联合分布的条件概率期望:

    Q i ( z i ) = P ( z i ∣ x i , θ j ) Q_{i}(z^{i})=P(z^i\mid x^i,\theta^j) Qi(zi)=P(zixi,θj)

    L ( θ , θ j ) = ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) L(\theta,\theta^j)=\sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log{P(x^i,z^i\mid \theta)} L(θ,θj)=i=1mziQi(zi)logP(xi,ziθ)

    1. M步:极大化 L ( θ , θ j ) L(\theta,\theta^{j}) L(θ,θj),得到 θ j + 1 \theta^{j+1} θj+1:

    θ j + 1 = a r g m a x θ   L ( θ , θ j ) \theta^{j+1}=\underset{\theta}{argmax}\:L(\theta,\theta^{j}) θj+1=θargmaxL(θ,θj)

    1. 如果 θ j \theta^{j} θj已收敛,则算法停止。否则继续回到E步,进行迭代。

输出:模型参数 θ \theta θ.

四、EM算法收敛性分析

EM算法提供一种近似计算含有隐变量概率模型的极大似然估计的方法,EM算法的最大优点是简单性和普适性,我们很自然地要问:EM算法得到的估计序列是否收敛?如果收敛,是否收敛到全局最大值或局部极大值?下面证明其收敛性!

假设 P ( X ∣ θ ) P(X\mid\theta) P(Xθ)为观测数据的似然函数,其中 X = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } X=\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \} X={x(1),x(2),...,x(m)}, θ i ( i = 1 , 2 , . . . ) \theta^i(i=1,2,...) θi(i=1,2,...)为EM算法得到的参数估计序列, P ( X ∣ θ j ) ( i = 1 , 2 , . . . ) P(X\mid\theta^j)(i=1,2,...) P(Xθj)(i=1,2,...)为对应的似然函数序列,那么我们需要只需证明下式成立就可以:

P ( X ∣ θ i + 1 ) ≥ P ( X ∣ θ i ) P(X\mid\theta^{i+1})\geq P(X\mid\theta^{i}) P(Xθi+1)P(Xθi)

证明:由于

P ( X ∣ θ ) = P ( X , Z ∣ θ ) P ( Z ∣ X , θ ) P(X\mid\theta)=\frac{P(X,Z\mid\theta)}{P(Z\mid X,\theta)} P(Xθ)=P(ZX,θ)P(X,Zθ)

取对数得

l o g P ( X ∣ θ ) = l o g P ( X , Z ∣ θ ) − l o g P ( Z ∣ X , θ ) logP(X\mid\theta)=logP(X,Z\mid\theta)-logP(Z\mid X,\theta) logP(Xθ)=logP(X,Zθ)logP(ZX,θ)

上面公式两端都取在条件概率 P ( Z ∣ X , θ j ) P(Z\mid X,\theta^j) P(ZX,θj)分布下的期望

∑ z l o g P ( X ∣ θ ) P ( Z ∣ X , θ j ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) \sum_{z}logP(X\mid\theta)P(Z\mid X,\theta^j)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j)-\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) zlogP(Xθ)P(ZX,θj)=zlogP(X,Zθ)P(ZX,θj)zlogP(ZX,θ)P(ZX,θj)

整理得

l o g P ( X ∣ θ ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) logP(X\mid\theta)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j)-\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) logP(Xθ)=zlogP(X,Zθ)P(ZX,θj)zlogP(ZX,θ)P(ZX,θj)

L ( θ , θ j ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) L(\theta,\theta^j)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j) L(θ,θj)=zlogP(X,Zθ)P(ZX,θj)

H ( θ , θ j ) = ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) H(\theta,\theta^j)=\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) H(θ,θj)=zlogP(ZX,θ)P(ZX,θj)

于是对数似然函数可以写成

l o g P ( X ∣ θ ) = L ( θ , θ j ) − H ( θ , θ j ) logP(X\mid\theta)=L(\theta,\theta^j)-H(\theta,\theta^j) logP(Xθ)=L(θ,θj)H(θ,θj)

在上式中将 θ \theta θ分别取 θ j \theta^j θj θ j + 1 \theta^{j+1} θj+1并相减,有

l o g P ( X ∣ θ j + 1 ) − l o g P ( X ∣ θ j ) logP(X\mid\theta^{j+1})-logP(X\mid\theta^j) logP(Xθj+1)logP(Xθj)

= [ L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ] − [ H ( θ j + 1 , θ j ] − H ( θ j , θ j ) ] =[L(\theta^{j+1},\theta^j)-L(\theta^j,\theta^j)]-[H(\theta^{j+1},\theta^j]-H(\theta^j,\theta^j)] =[L(θj+1,θj)L(θj,θj)][H(θj+1,θj]H(θj,θj)]

因此,我们只需证明上式的右端非负即可,而上式的第一项是由 θ j + 1 \theta^{j+1} θj+1使 L ( θ , θ j ) L(\theta,\theta^{j}) L(θ,θj)达到极大,所以有

L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ≥ 0 L(\theta^{j+1},\theta^j)-L(\theta^j,\theta^j)\geq0 L(θj+1,θj)L(θj,θj)0

其第二项证明如下

H ( θ j + 1 , θ j ) − H ( θ j , θ j ) H(\theta^{j+1},\theta^j)-H(\theta^j,\theta^j) H(θj+1,θjH(θj,θj)

= ∑ z l o g P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ j ) P ( Z ∣ X , θ j ) =\sum_{z}logP(Z\mid X,\theta^{j+1})P(Z\mid X,\theta^{j})-\sum_{z}logP(Z\mid X,\theta^j)P(Z\mid X,\theta^j) =zlogP(ZX,θj+1)P(ZX,θj)zlogP(ZX,θj)P(ZX,θj)

= ∑ z ( l o g P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) ) P ( Z ∣ X , θ j ) =\sum_{z}\left ( log\frac{P(Z\mid X,\theta^{j+1})}{P(Z\mid X,\theta^{j})} \right )P(Z\mid X,\theta^{j}) =z(logP(ZX,θj)P(ZX,θj+1))P(ZX,θj)

≤ l o g ( ∑ z P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) P ( Z ∣ X , θ j ) ) \leq log\left (\sum_{z}\frac{P(Z\mid X,\theta^{j+1})}{P(Z\mid X,\theta^{j})} P(Z\mid X,\theta^{j}) \right ) log(zP(ZX,θj)P(ZX,θj+1)P(ZX,θj))

= l o g ( ∑ z P ( Z ∣ X , θ j + 1 ) ) = 0 =log\left (\sum_{z} P(Z\mid X,\theta^{j+1}) \right )=0 =log(zP(ZX,θj+1))=0

因此

l o g P ( X ∣ θ j + 1 ) − l o g P ( X ∣ θ j ) ≥ 0 logP(X\mid\theta^{j+1})-logP(X\mid\theta^j)\geq0 logP(Xθj+1)logP(Xθj)0

从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标 L ( θ , θ j ) L(θ,θ^j) L(θ,θj)是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。

五、EM算法总结

监督学习是由训练数据 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } \left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \} {(x1,y1),(x2,y2),...,(xN,yN)}学习条件概率分布 P ( Y ∣ X ) P(Y\mid X) P(YX)或决策函数 Y = f ( X ) Y=f(X) Y=f(X)作为模型,用于分类、回归、标注等任务,这时训练数据中的每个样本点由输入和输出对组成。

但有时训练数据只有输入没有对应的输出 { ( x 1 , ∗ ) , ( x 2 , ∗ ) , . . . , ( x N , ∗ ) } \left \{ (x_1,*),(x_2,*),...,(x_N,*) \right \} {(x1,),(x2,),...,(xN,)},从这样的数据学习模型称为非监督学习问题。EM算法可以用于生成模型的非监督学习。生成模型由联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)表示,可用认为非监督学习训练数据上联合概率分布产生的数据。X为观测数据,Y为未观测数据(隐变量)。

另外,在应用中,初值的选择变得非常重要,常用的办法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值