EM算法原理总结

简介:

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等。本文就对EM算法的原理做一个总结。

1. EM算法要解决的问题

    我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。

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

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

    从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。

    一个最直观了解EM算法思路的是K-Means算法,见之前写的K-Means聚类算法原理。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设KK个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。

    当然,K-Means算法是比较简单的,实际中的问题往往没有这么简单。上面对EM算法的描述还很粗糙,我们需要用数学的语言精准描述。

2. EM算法的推导

    对于mm个样本观察数据x=(x(1),x(2),...x(m))x=(x(1),x(2),...x(m))中,找出样本的模型参数θθ, 极大化模型分布的对数似然函数如下:

θ=argmaxθi=1mlogP(x(i)|θ)θ=argmaxθ∑i=1mlogP(x(i)|θ)

    如果我们得到的观察数据有未观察到的隐含数据z=(z(1),z(2),...z(m))z=(z(1),z(2),...z(m)),此时我们的极大化模型分布的对数似然函数如下:

θ=argmaxθi=1mlogP(x(i)|θ)=argmaxθi=1mlogz(i)P(x(i)z(i)|θ)θ=argmaxθ∑i=1mlogP(x(i)|θ)=argmaxθ∑i=1mlog∑z(i)P(x(i),z(i)|θ)

    上面这个式子是没有 办法直接求出θθ的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:

i=1mlogz(i)P(x(i)z(i)|θ)=i=1mlogz(i)Qi(z(i))P(x(i)z(i)|θ)Qi(z(i))i=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)Qi(z(i))(1)(2)(1)∑i=1mlog∑z(i)P(x(i),z(i)|θ)=∑i=1mlog∑z(i)Qi(z(i))P(x(i),z(i)|θ)Qi(z(i))(2)≥∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)Qi(z(i))

    上面第(1)式引入了一个未知的新的分布Qi(z(i))Qi(z(i)),第(2)式用到了Jensen不等式:

logjλjyjjλjlogyj,λj0,jλj=1log∑jλjyj≥∑jλjlogyj,λj≥0,∑jλj=1

    或者说由于对数函数是凹函数,所以有:

f(E(x))E(f(x))f(x)f(E(x))≥E(f(x))如果f(x)是凹函数

    此时如果要满足Jensen不等式的等号,则有:

P(x(i)z(i)|θ)Qi(z(i))=c,cP(x(i),z(i)|θ)Qi(z(i))=c,c为常数

    由于Qi(z(i))Qi(z(i))是一个分布,所以满足:

zQi(z(i))=1∑zQi(z(i))=1

    从上面两式,我们可以得到:

Qi(z(i))=P(x(i)z(i)|θ)zP(x(i)z(i)|θ)=P(x(i)z(i)|θ)P(x(i)|θ)=P(z(i)|x(i)θ))Qi(z(i))=P(x(i),z(i)|θ)∑zP(x(i),z(i)|θ)=P(x(i),z(i)|θ)P(x(i)|θ)=P(z(i)|x(i),θ))

    如果Qi(z(i))=P(z(i)|x(i)θ))Qi(z(i))=P(z(i)|x(i),θ)), 则第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:

argmaxθi=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)Qi(z(i))argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)Qi(z(i))

    去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:

argmaxθi=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)

    上式也就是我们的EM算法的M步,那E步呢?注意到上式中Qi(z(i))Qi(z(i))是一个分布,因此z(i)Qi(z(i))logP(x(i)z(i)|θ)∑z(i)Qi(z(i))logP(x(i),z(i)|θ)可以理解为logP(x(i)z(i)|θ)logP(x(i),z(i)|θ)基于条件概率分布Qi(z(i))Qi(z(i))的期望。

    至此,我们理解了EM算法中E步和M步的具体数学含义。

3. EM算法流程

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

    输入:观察数据x=(x(1),x(2),...x(m))x=(x(1),x(2),...x(m)),联合分布p(x,z|θ)p(x,z|θ), 条件分布p(z|x,θ)p(z|x,θ), 最大迭代次数JJ

    1) 随机初始化模型参数θθ的初值θ0θ0

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

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

Qi(z(i))=P(z(i)|x(i)θj))Qi(z(i))=P(z(i)|x(i),θj))
L(θ,θj)=i=1mz(i)Qi(z(i))logP(x(i)z(i)|θ)L(θ,θj)=∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i)|θ)

      b) M步:极大化L(θ,θj)L(θ,θj),得到θj+1θj+1:

θj+1=argmaxθL(θ,θj)θj+1=argmaxθL(θ,θj)

      c) 如果θj+1θj+1已收敛,则算法结束。否则继续回到步骤a)进行E步迭代。

    输出:模型参数θθ

4. EM算法的收敛性思考

    EM算法的流程并不复杂,但是还有两个问题需要我们思考:

    1) EM算法能保证收敛吗?

    2) EM算法如果收敛,那么能保证收敛到全局最大值吗?  

    首先我们来看第一个问题, EM算法的收敛性。要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大。即:

i=1mlogP(x(i)|θj+1)i=1mlogP(x(i)|θj)∑i=1mlogP(x(i)|θj+1)≥∑i=1mlogP(x(i)|θj)

    由于

L(θ,θj)=i=1mz(i)P(z(i)|x(i)θj))logP(x(i)z(i)|θ)L(θ,θj)=∑i=1m∑z(i)P(z(i)|x(i),θj))logP(x(i),z(i)|θ)

    令:

H(θ,θj)=i=1mz(i)P(z(i)|x(i)θj))logP(z(i)|x(i)θ)H(θ,θj)=∑i=1m∑z(i)P(z(i)|x(i),θj))logP(z(i)|x(i),θ)

    上两式相减得到:

i=1mlogP(x(i)|θ)=L(θ,θj)H(θ,θj)∑i=1mlogP(x(i)|θ)=L(θ,θj)−H(θ,θj)

    在上式中分别取θθθjθjθj+1θj+1,并相减得到:

i=1mlogP(x(i)|θj+1)i=1mlogP(x(i)|θj)=[L(θj+1,θj)L(θj,θj)][H(θj+1,θj)H(θj,θj)]∑i=1mlogP(x(i)|θj+1)−∑i=1mlogP(x(i)|θj)=[L(θj+1,θj)−L(θj,θj)]−[H(θj+1,θj)−H(θj,θj)]

    要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。

    由于θj+1θj+1使得L(θ,θj)L(θ,θj)极大,因此有:

L(θj+1,θj)L(θj,θj)0L(θj+1,θj)−L(θj,θj)≥0

    而对于第二部分,我们有:

H(θj+1,θj)H(θj,θj)=i=1mz(i)P(z(i)|x(i)θj)logP(z(i)|x(i)θj+1)P(z(i)|x(i)θj)i=1mlog(z(i)P(z(i)|x(i)θj)P(z(i)|x(i)θj+1)P(z(i)|x(i)θj))=i=1mlog(z(i)P(z(i)|x(i)θj+1))=0(3)(4)(5)(3)H(θj+1,θj)−H(θj,θj)=∑i=1m∑z(i)P(z(i)|x(i),θj)logP(z(i)|x(i),θj+1)P(z(i)|x(i),θj)(4)≤∑i=1mlog(∑z(i)P(z(i)|x(i),θj)P(z(i)|x(i),θj+1)P(z(i)|x(i),θj))(5)=∑i=1mlog(∑z(i)P(z(i)|x(i),θj+1))=0

    其中第(4)式用到了Jensen不等式,只不过和第二节的使用相反而已,第(5)式用到了概率分布累积为1的性质。

    至此,我们得到了:i=1mlogP(x(i)|θj+1)i=1mlogP(x(i)|θj)0∑i=1mlogP(x(i)|θj+1)−∑i=1mlogP(x(i)|θj)≥0, 证明了EM算法的收敛性。

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

 5. EM算法的一些思考

    如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法(支持向量机原理(四)SMO算法原理),坐标轴下降法(Lasso回归算法: 坐标轴下降法与最小角回归法小结), 都使用了类似的思想来求解问题。


本文转自刘建平Pinard博客园博客,原文链接:http://www.cnblogs.com/pinard/p/6912636.html,如需转载请自行联系原作者

相关文章
机器学习/深度学习 算法 自动驾驶
664 0
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
576 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
4月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
1095 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
4月前
|
传感器 算法 定位技术
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
158 2
|
4月前
|
算法
离散粒子群算法(DPSO)的原理与MATLAB实现
离散粒子群算法(DPSO)的原理与MATLAB实现
218 0
|
5月前
|
机器学习/深度学习 人工智能 编解码
AI视觉新突破:多角度理解3D世界的算法原理全解析
多视角条件扩散算法通过多张图片输入生成高质量3D模型,克服了单图建模背面细节缺失的问题。该技术模拟人类多角度观察方式,结合跨视图注意力机制与一致性损失优化,大幅提升几何精度与纹理保真度,成为AI 3D生成的重要突破。
494 0
|
5月前
|
算法 区块链 数据安全/隐私保护
加密算法:深度解析Ed25519原理
在 Solana 开发过程中,我一直对 Ed25519 加密算法 如何生成公钥、签名以及验证签名的机制感到困惑。为了弄清这一点,我查阅了大量相关资料,终于对其流程有了更清晰的理解。在此记录实现过程,方便日后查阅。
620 1
|
5月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
6月前
|
消息中间件 存储 缓存
zk基础—1.一致性原理和算法
本文详细介绍了分布式系统的特点、理论及一致性算法。首先分析了分布式系统的五大特点:分布性、对等性、并发性、缺乏全局时钟和故障随时发生。接着探讨了分布式系统理论,包括CAP理论(一致性、可用性、分区容错性)和BASE理论(基本可用、软状态、最终一致性)。文中还深入讲解了两阶段提交(2PC)与三阶段提交(3PC)协议,以及Paxos算法的推导过程和核心思想,强调了其在ZooKeeper中的应用。最后简述了ZAB算法,指出其通过改编的两阶段提交协议确保节点间数据一致性,并在Leader故障时快速恢复服务。这些内容为理解分布式系统的设计与实现提供了全面的基础。
|
6月前
|
存储 算法 安全
Java中的对称加密算法的原理与实现
本文详细解析了Java中三种常用对称加密算法(AES、DES、3DES)的实现原理及应用。对称加密使用相同密钥进行加解密,适合数据安全传输与存储。AES作为现代标准,支持128/192/256位密钥,安全性高;DES采用56位密钥,现已不够安全;3DES通过三重加密增强安全性,但性能较低。文章提供了各算法的具体Java代码示例,便于快速上手实现加密解密操作,帮助用户根据需求选择合适的加密方案保护数据安全。
438 58

热门文章

最新文章