Expectation-Maximization 算法是统计学中用来给带隐含变量的模型做最大似然(和最大后验概率)的一种方法。EM 的应用特别广泛,经典的比如做概率密度估计用的 Gaussian Mixture Model。这两天我或许还会写 p 的笔记放上来,也是 EM 应用的例子。

下面我会先解释 EM 算法要解决的问题,然后直接给出算法的过程,最后再说明算法的正确性。

问题

首先我们定义要解决的问题。给定一个训练集 X={x(1),…,x(m)},我们希望拟合包含隐含变量 z 的模型 P(x,z;θ) 中的参数 θ。根据模型的假设,每个我们观察到的 x(i) 还对应着一个我们观察不到的隐含变量 z(i),我们记 Z={z(1),…,z(m)}。做最大对数似然就是要求 θ 的“最优值”:

θ=argmaxθL(θ;X)

其中

L(θ;X)=logP(X;θ)=log∑ZP(X,Z;θ)

想用这个 log 套 ∑ 的形式直接求解 θ 往往非常困难。而如果能观察到隐含变量 z ,求下面的似然函数的极大值会容易许多:

L(θ;X,Z)=logP(X,Z;θ)

问题是实际上我们没法观察到 z 的值,只能在给定 θ 时求 z 的后验概率 P(z|x;θ) 。 [1] EM 算法就可以帮我们打破这样的困境。

算法

下面给出 EM 算法的过程。其中 θt 是第 t-1 次迭代时算出的 θ 值;θ0 为任意初值。

Repeat until converge {

  1. (E-step) 计算 P(Z|X;θt) 以得到

    EZ|X;θt[L(θ;X,Z)]:=EZ|X;θt[logP(X,Z;θ)]=∑ZP(Z|X;θt)logP(X,Z;θ)
  2. (M-step)

    θt+1:=argmaxθEZ|X;θt[logP(X,Z;θ)]

}

对,就这么短。所以我总觉得称之为 algorithm 不如称之为 method 更恰当。上面的过程在收敛后就得到了我们需要的 θ=argmaxθL(θ;X) [2]

先简单说说这短短两步都做了些啥。EM 算法每次迭代都建立在上轮迭代对 θ 的最优值的估计 θt 上,利用它可以求出 Z 的后验概率 P(Z|X;θt) ,进而求出 L(θ;X,Z) 在分布 Z∼P(Z|X;θ) 上的期望 EZ|X;θt[L(θ;X,Z)]。在第一节中我们提到 argmaxθL(θ;X,Z) 在未知 Z 的情况下难以直接计算,于是 EM 算法就转而通过最大化它的期望 EZ|X;θt[L(θ;X,Z)] 来逼近 θ 的最优值,得到 θt+1 。注意由于 L(θ;X,Z) 的这个期望是在 Z 的一个分布上求的,这样得到的表达式就只剩下 θ 一个未知量,因而绕过了 z 未知的问题。而 θt+1 又可以作为下轮迭代的基础,继续向最优逼近。算法中 E-step 就是在利用 θt 求期望 EZ|X;θt[L(θ;X,Z)],这就是所谓“Expectation”;M-step 就是通过寻找 θt+1 最大化这个期望来逼近 θ 的最优值,这就叫“Maximization”。EM 算法因此得名。

另外,如果数据满足独立同分布的条件,分别枚举 z(i) 的值可能要比枚举整个 Z 方便些,可把 EZ|X;θt[L(θ;X,Z)] 替换成:

∑iEz(i)|x(i);θt[L(θ;x(i),z(i)]:=∑iEz(i)|x(i);θt[logP(x(i),z(i);θ)]=∑i∑z(i)P(z(i)|x(i);θt)logP(x(i),z(i);θ)

原理

为什么这样 E一步,M一步,一步E,一步M,就能逼近极大似然?具体而言,为什么通过迭代计算 argmaxθEZ|X;θt[L(θ;X,Z)] 可以逼近 θ 的最优值 argmaxθL(θ;X,Z)?我们稍后会看到,这是因为每次迭代得到的 θt+1 一定比 θt 更优,即算法是在对 θ 的最优值做单调逼近。

不过首先让我们先抛开最大似然,考虑一个更一般的问题。假设有一个凹函数 F(θ) ,我们想求 argmaxθF(θ) ,但直接求很困难。不过对于任意给定的 θt,假设我们都能找到 F(θ) 的一个下界函数 Gθt(θ),满足 F(θ)≥Gθt(θ) 且 F(θt)=Gθt(θt) ——我管 Gθt(θ) 这样的函数叫 F 的“在 θt 处相等的下界函数”。现在考虑 θt+1:=argmaxθGθt(θ),它一定会满足:

F(θt+1)≥Gθt(θt+1)≥Gθt(θt)=F(θt)

也就是说, θt+1 一定比 θt 更优。而接下来我们又可以用 θt+1 找到一个 Gθt+1(θ),再据此算出比 θt+1 还优的 θt+2:=argmaxθGθt+1(θ) 。如此不断迭代,就能不断步步逼近 θ 的最优值了。由此可见,如果对任意 θt都能找到 F 的“在 θt 处相等的下界函数” Gθt(θ),我们就得到了一个能单调逼近 θ 的最优值的算法:

Repeat until converge {

  1. 找到函数 F(θ) 的“在 θt 处相等的下界函数” Gθt(θ)

  2. 更新参数

    θt+1:=argmaxθGθt(θ)

}

上面的算法看起来和 EM 算法的每步都分别对应——事实上也正如此。下面是从 PRML 中偷的一张图改的,展示了上述逼近的过程:

现在我们回到最大似然问题 θ=argmaxθL(θ;X) 。如果我们想套用上面的算法来逼近 θ 的这个最优解,就需要找到对于每个 θt,函数 L(θ;X) 的“在 θt 处相等的下界函数”。该怎么找呢?让我们从 L(θ) 的初始形式开始推导:

L(θ)=logP(X;θ)=log∑ZP(X,Z;θ)

又卡在这个 log 套 ∑ 的形式上了……我们说过麻烦在于观察不到 Z 的值,那不妨给它任意引入一个概率分布 Q(Z) [3],利用分子分母同乘 Q(Z) 的小 trick,得到:

L(θ)=log∑ZP(X,Z;θ)=log∑ZQ(Z)P(X,Z;θ)Q(Z)=logEZ∼Q[P(X,Z;θ)Q(Z)]

根据 Jensen 不等式 [4],对于任意分布 Q 都有:

L(θ)=logEZ∼Q[P(X,Z;θ)Q(Z)]≥EZ∼Q[logP(X,Z;θ)Q(Z)]

且上面的不等式在 P(X,Z;θ)Q(Z) 为常数时取等号。

于是我们就得到了 L(θ;X) 的一个下界函数。我们要想套用上面的算法,还要让这个不等式在 θt 处取等号,这就这要求在 θ=θt 时 P(X,Z;θ)Q(Z) 为常数,即 Q(Z)∝P(X,Z;θt)。由于 Q(Z) 是一个概率分布,必须满足 ∑zQi(z)=1,所以这样的 Q(Z) 只能是 Q(Z)=P(X,Z;θt)∑ZP(X,Z;θt)=P(Z|X;θt)。那我们就把 Q(Z)=P(Z|X;θt) 代入上式,得到:

L(θ)≥EZ|X;θt[logP(X,Z;θ)P(Z|X;θt)]

且该不等式在 θ=θt 时取到等号。那么…… EZ|X;θt[logP(X,Z;θ)P(Z|X;θt)] 就是 L(θ;X) 的“在 θt 处相等的下界函数”——这不就是我们要找的么!于是把它塞进本节开始得到的算法里替换“ Gθt(θ) ”就可以用啦。也就是说,迭代计算 argmaxθEZ|X;θt[logP(X,Z;θ)P(Z|X;θt)]就可以逼近 θ 的最优值了。而由于利用 Jensen 不等式的那一步搞掉了log套∑的形式,它算起来往往要比直接算 argmaxθL(θ;X) 容易不少。

我们还可以再做几步推导,得到一个更简单的形式:

θt+1:=argmaxθEZ|X;θt[logP(X,Z;θ)P(Z|X;θt)]≡argmaxθ∑ZP(Z|X;θt)logP(X,Z;θ)P(Z|X;θt)=argmaxθ∑Z[P(Z|X;θt)logP(X,Z;θ)−P(Z|X;θt)logP(Z|X;θt)]=argmaxθ∑ZP(Z|X;θt)logP(X,Z;θ)≡argmaxθEZ|X;θt[logP(X,Z;θ)]

其中倒数第二步是因为 −P(Z|X;θt)logP(Z|X;θt)] 这一项与 θ 无关,所以就直接扔掉了。这样就得到了本文第二节 EM 算法中的形式——它就是这么来的。

以上就是 EM 了。至于独立同分布的情况推导也类似。

顺带一提,argmaxθEZ|X;θt[logP(X,Z;θ)] 有时也比较难算。这时我们其实可以退而求其次,不要求这个期望最大化了,只要它在 θt+1 处的值大于在 θt 处的值就行了。根据上面的推导,这样也能逼近 θ 的最优值,只是收敛速度较慢。这就是所谓 GEM (Generalized EM) 算法了。

p.s. MathJax 很神嘛。

p.p.s. 这篇笔记竟然断断续续写写改改了两天多,我对 EM 的认识也越来越清晰。“‘教’是最好的‘学’”真是一点没错。

[1]

一般可以利用贝叶斯定理

P(z|x;θ)=P(x|z;θ)P(z;θ)∑zP(x|z;θ)P(z;θ)

 

而 P(x|z;θ) 和 P(z;θ) 往往是模型假设的一部分。

[2] 实际上在某些特殊情况下,θ 还可能收敛在局部最优点或鞍点上。这时可以多跑几次算法,每次随机不同的 θ0,最后取最好的结果。为简明起见,本文忽略这种情况。
[3] Q(Z) 为概率分布,意即需满足 ∑ZQ(Z)=1 且 Q(Z)≥0
[4]

Jensen 不等式:

f 为凸函数,X 为随机变量。则

E[f(X)]≥f(E[X])

 

若 f 是严格凸的,则上式取等号当前仅当 X 为常数。

在这里 log 函数是严格凹的,所以要把上面的不等号方向调转。

Expectation-Maximization(EM) 算法的更多相关文章

  1. Expectation maximization - EM算法学习总结

    原创博客,转载请注明出处 Leavingseason http://www.cnblogs.com/sylvanas2012/p/5053798.html EM框架是一种求解最大似然概率估计的方法.往 ...

  2. EM(Expectation Maximization)算法

    EM(Expectation Maximization)算法  参考资料: [1]. 从最大似然到EM算法浅解 [2]. 简单的EM算法例子 [3]. EM算法)The EM Algorithm(详尽 ...

  3. EM算法(Expectation Maximization)

    1 极大似然估计     假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成绩的分 ...

  4. Expectation Maximization and GMM

    Jensen不等式 Jensen不等式给出了积分的凸函数值必定大于凸函数(convex)的积分值的定理.在凸函数曲线上的任意两点间连接一条线段,那么线段会位于曲线之上,这就是将Jensen不等式应用到 ...

  5. EM算法详解

    EM算法详解 1 极大似然估计 假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成 ...

  6. 机器学习五 EM 算法

    目录 引言 经典示例 EM算法 GMM 推导 参考文献: 引言 Expectation maximization (EM) 算法是一种非常神奇而强大的算法. EM算法于 1977年 由Dempster ...

  7. 最大期望算法 Expectation Maximization概念

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

  8. 数据挖掘十大经典算法(5) 最大期望(EM)算法

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

  9. NLP —— 图模型(零):EM算法简述及简单示例(三硬币模型)

    最近接触了pLSA模型,该模型需要使用期望最大化(Expectation Maximization)算法求解. 本文简述了以下内容: 为什么需要EM算法 EM算法的推导与流程 EM算法的收敛性定理 使 ...

  10. EM算法及其推广

    概述 EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计. EM算法的每次迭代由两步组成:E步,求期望(expectation): ...

随机推荐

  1. Start Xamarin——与Microsoft 的sales development manager的闲谈

    由于在Xamarin属于微软之前,就已经有Xamarin的账号,试用过破解版的.所以4月1号微软set Xamarin free之后.就收到了Xamarin的邀请试用邮件. 试用完了之后第二天.收到邮 ...

  2. NYOJ 298-点的变换(经典矩阵解决点平移、缩放、翻转和旋转)

    题目地址:NYOJ 298 思路:该题假设用对每一个点模拟的操作.时间复杂度为O(n+m),结果肯定超时.然而利用矩阵乘法能够在O(m)的时间内把全部的操作合并为一个矩阵,然后每一个点与该矩阵相乘能够 ...

  3. WindowFromPoint -- 获得包括指定点的窗体的句柄

     WindowFromPoint 函数功能: 该函数获得包括指定点的窗体的句柄. 函数原型: HWND WindowFromPoint(POINT Point): 參数: Point:指定一个被检 ...

  4. POJ 1651 Multiplication Puzzle 区间dp(水

    题目链接:id=1651">点击打开链 题意: 给定一个数组,每次能够选择内部的一个数 i 消除,获得的价值就是 a[i-1] * a[i] * a[i+1] 问最小价值 思路: dp ...

  5. [办公自动化]计算机突然死机后asd自动恢复文档未能恢复,如何打开使用

    今天计算机突然死机,但是word未能提示自动恢复窗格.所以无法自动恢复word文档.但是在文档所在的文件夹看到了一个“自动恢复”开头的asd恢复文档. 该如何使用这个文档呢? 按照以前的惯例,尝试了如 ...

  6. javascript下的json 序列化及反序列化

    1.序列化 将json对象转为字符串: JSON.stringify(jsonObj) 2.反序列化 var jsonObj = eval("(" + jsonstring + & ...

  7. C#下JSON字符串的反序列化

    C#下JSON字符串的反序列化,一般都是用newtonsoft.json,比较方便..net当然也有提供相应功能,但觉得比较复杂. 所谓反序列化,就是将一个包含JSON内容的字符串,转换回指定对象(不 ...

  8. Spring 之AOP 面向切面编程

    AOP相关术语: Joinpoint (连接点):所谓连接点是指那些被拦截到的点,在spring中,这些点指的是方法,因为spring 只支持方法类型的连接点. Pointcut(切入点):所谓切入点 ...

  9. Java游戏之碰撞检测

    在进行Java游戏开发时,我们经常会遇到碰撞检测的问题.如坦克大战中,炮弹与坦克相遇发生爆炸:守卫者游戏中,守卫者发射的箭与怪物相遇使怪物失血:打飞机游戏中,飞机发送的子弹与敌机相遇干掉敌机.这些都需 ...

  10. IOS各种调试

    IOS各种调试技巧豪华套餐   目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印 ...