一文让你完全入门EM算法

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达3b397ff48ddaf5e4a573f63f38d42b1b.png

EM(Expectation Maximum,期望最大化)是一种迭代算法,用于对含有隐变量概率参数模型的极大似然估计或极大后验估计。模型参数的每一次迭代,含有隐变量概率参数模型的似然函数都会增加,当似然函数不再增加或增加的值小于设置的阈值时,迭代结束。

EM算法在机器学习和计算机视觉的数据聚类领域有广泛的应用,只要是涉及到后验概率的应用,我们都可以考虑用EM算法去解决问题。EM算法更像是一种数值分析方法,正确理解了EM算法,会增强你机器学习的自学能力,也能让你对机器学习算法有新的认识,本文详细总结了EM算法原理。

目录

1. 只含有观测变量的模型估计

2. 含有观测变量和未观测变量的模型参数估计

3. EM算法流程

4. 抛硬币问题举例

5. 高斯混合模型的参数估计

6. 聚类蕴含的EM算法思想

7. 小结

1. 只含有观测变量的模型估计

我们首先考虑比较简单的情况,即模型只含有观测变量不含有隐藏变量,如何估计模型的参数?我们用逻辑斯蒂回归模型(logistic regression model)来解释这一过程。

假设数据集有d维的特征向量X和相应的目标向量Y,其中f46d493fb2a1ab4850ab04ca35a3aa96.png7d2c971a8e22826a1cfab43d152abd68.png。下图表示逻辑斯蒂回归模型:

e175df5e3786f6d0afd64a270322b482.png

由之前的文章介绍,逻辑斯蒂回归模型的目标预测概率是S型函数计算得到,定义为:

5da119beeb29e1eb4b1e95bcb9336b41.png

22f59584de80d110aa90d0bd92a737ed.png,则目标预测变量为1;反之,目标预测变量为0。其中w是待估计的模型参数向量。

机器学习模型的核心问题是如何通过观测变量来构建模型参数w,最大似然方法是使观测数据的概率最大化,下面介绍用最大似然方法(Maximum Likelihood Approach)求解模型参数w。

假设数据集a52cf1d3c76448eed68f387a7a4a9f17.png,样本数据a88ea833bb3185a1f221dc2d905eaf3c.png,模型参数58af8392f1520d382de6515cad57c73f.png

观测数据的对数似然函数可写为:

c4960238b6e4c1a63111aa078fdfaadf.png

由对数性质可知,上式等价于:

28b1b8c56c5f469a9a855b941320c356.png

式(1)代入式(2),得:

70164965cc1501205ab23276f49a3de0.png

其中:

bd45493c75dee3ad9f69183fc51109b5.png

由于(3)式是各个样本的和且模型参数间并无耦合,因此用类似梯度上升的迭代优化算法去求解模型参数w。

因为:

d5a8ca0129e2e8b786caa5cc4fc5c475.png

96e9de3ba72c777a117044441693f2c9.png

由式(4)(5)(6)可得:

75874f661c0381124e5c1de61509784e.png

因此,模型参数w的更新方程为:

089523a8ecb5512f6453d72391c7a802.png

其中η是学习率。

根据梯度更新方程(7)迭代参数w,似然函数L(w)逐渐增加,当似然函数收敛时,模型参数w不再更新,这种参数估计方法称为最大似然估计。

2.含有观测变量和因变量的模型参数估计

上节介绍当模型只含有观测变量时,我们用极大似然估计方法计算模型参数w。但是当模型含有隐变量或潜在变量(latent)时,是否可以用极大似然估计方法去估计模型参数,下面我们讨论这一问题:

假设V是观测变量,Z是隐变量,d741c250e006c5026390416c2cf26f43.png是模型参数,我们考虑用极大似然估计方法去计算模型参数:

b7881884fb123a837a67be5782d83d38.png

由于隐变量在log内部求和,造成不同参数间相互耦合,因此用极大似然方法估计模型参数非常难。(8)式不能估计模型参数的主要原因是隐变量,若隐变量Z已知,完全数据的似然函数为701732e2ad706255b1c89da8eeca4232.png,为了书写方便,观测变量V,Y统一用V表示,即757c81aaf1ae62b5bacf48f31e3f049f.png

那么问题来了,如何通过已观测变量估计隐变量Z的值?这个时候我们想到了后验概率:985ea6b7bbabafd46df7f237b4fc8adb.png

EM算法最大化完全数据在隐变量分布的对数似然函数期望,得到模型参数d5675bff8893b9856db8994917ffa528.png,即:

4dd90cf2ddbf18f88ce7a942876b4f87.png

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

1)初始化模型参数84ac820f29e9c754d6bd763f7eb568c5.png

2)E步估计隐变量的后验概率分布:

e2c12dab2843542fa1dfc7b193e39629.png

3)M步估计模型参数e7afcc117965ab4b2fcb5188bab30582.png

4ffe4ff8285994ca54e44e6a4704b0bb.png

4)当模型参数ab90163d1627f493695c07977e97e0f9.png或对数似然函数收敛时,迭代结束;反之aef2483bb3607160cd28d49b8717b727.png,返回第(2)步,继续迭代。

3.EM算法的更深层分析

上节我们介绍了EM算法的模型参数估计过程,相信大家会有个疑问:为什么最大化下式来构建模型参数。

7e020e9e1a8858f614d730dfcb6ead61.png

下面我给大家解释这一算法的推导过程以及其中蕴含的含义:

假设隐藏变量的理论分布为9dacdebfe79a0eae7baa7340945a8b79.png,观测数据的对数似然函数可以分解为下式:

05faf753936e78f715b4b5f68649badd.png

由贝叶斯理论可知:

9d2ad36e27a97b572fc26036ace81d7c.png

(9)式得:

eb6b8398f86f84c87b22d11eb5b8b2de.png

分子分母除q(Z),得:

21169a0e7e30fbc5e5f0bf5842266719.png

(10)式第二项表示相对熵,含义为隐变量后验概率分布与理论概率分布的差异,相对熵的一个性质是:

93f0b13fb62e9f2059dca198961d4ede.png

根据(10)式我们推断:

ed8defee3d6365e52164d02f08fd4b85.png

因此观测数据的对数似然函数的下界为a8e77fef380eb5160f8dfb0bc81a6427.png,如果我们能够极大化这个下界,那么同时也极大化了可观测数据的对数似然函数。

当相对熵等于0时,即:

0675801fe4a25461fcbe366d2782cca2.png

由上式得到隐藏变量的后验概率分布与理论分布相等,即:

d9997ad8aef3c8a7d9ff1d20d537e6c3.png

进而(11)式等号成立,即:

7c4253d8585023c144340ae066fc7696.png

192a4a4e4df3bc8be505974e826f783f.png取得上界,现在我们需要最大化6cb851732807011c63aa98d23fa63324.png的上界,即:

aaedfe9bdb1cbedf94da7a689828dd85.png

当相对熵等于0时,式(12)代入式(13)得到ae90713cd0b345bf5ac4f3e1a3533849.png的上界为:

c4cdbc9153f5666638d40ec2262ff51c.png

式(15)的第二项对应隐变量的熵,可看成是常数,因此最大化(15)式等价于最大化9e826032427ec024ad8bc7f907f780bb.png,其中:

0dd8eed0de51e3244c6340b0d5bac843.png

最大化(16)式对应上节介绍EM算法的M步。

是不是对EM算法有了新的认识,本节重新整理算法EM的流程:

1)初始化模型参数为8cde48f50ec74f5bca6e395b54d5ea1d.png

2)当等式(12)成立时,c5fc6a6bd55dabd9ebe310e92ebe597e.png取得上界,最大化1e63e035aed501b911f4adc98adacd8e.png等价于最大化下式:

23d2d37d1f93c62fc367c91ff883ac4f.png

3)最大化37e330e5847245a423b321d6e751295d.png,返回参数60609f42c1eb87f45773fa81c36bc90f.png

4)当145504f364e0a0fea7e79027893719bb.png收敛时,迭代结束;否则cceb15a2112ba776217cb77c1d73c41f.png,算法返回到第(2)步继续迭代;

为了大家清晰理解这一算法流程,下面用图形表示EM算法的含义。

E步:模型参数是3c9b036a2af3cd8e9ffbafd9761e5000.png时,由(13)式可知e847305d6dce7a74101c8494056848fd.png,用黑色实心点标记;

M步:最大化ac8810313f6940881df9c77725a885c5.png,返回参数23046a8f5c913878cbb19c5e1cc87be4.png,用红色实心点标记;

c378773ab287c1c8f2b6554c6b234b7b.png,重复E步和M步,当1ab2c077f0f86544d2414e2c71f392a1.png收敛时,迭代结束。

e0a45f37486d93595de104b1aa040066.png

4.抛硬币问题举例

我们有两种硬币A和B,选择硬币A和硬币B的概率分别为π和(1-π),硬币A和硬币B正面向上的概率分别为p和q,假设观测变量为64d323378c99d785c37f2bbe25da9c78.png,1,0表示正面和反面,i表示硬币抛掷次数;隐变量885cf8aed5950b228d64d89b921fa1e6.png,1,0表示选择硬币A和硬币B进行抛掷。

问题:硬币共抛掷n次,观测变量已知的情况下求模型参数fff71307fc5d2582ae0acf80d38ddf80.png的更新表达式。

根据EM算法,完全数据的对数似然函数的期望:

0b1c869a565e19b8bd64e2eb275c62f7.png

其中9940d512525c83439538f34445dcf04f.png表示观测数据2c88a32fa87d8766033a325f1404b186.png来自掷硬币A的概率,用65dbb130effaabb976a0a8f51eb9041c.png表示:

ce71a8db192a00f514ef9609f8c900d1.png

最大化1ed56840b9738c93ca78520731894d11.png,得到如下更新表达式:

0148025b9be54d95cf29472e9c3c899b.png

现在我们知道了模型参数a7029f450a56925c049f7cd43004402b.png的更新方程,假设共抛掷硬币10次,观测结果如下:1,1,0,1,0,0,1,0,1,1。

初始化模型参数为:

ea3cb5668414b84c1249a2fde7a32cf1.png

由式(18)得:

c86702ecc2c9e38c74c53c0298b36309.png

利用模型参数更新得:

eb48ac3a13013d06db95bc7c6a715cd3.png

由式(18),得:

5b90e690a48d628bbca68700308c8532.png

模型参数继续更新:

a581d44513f1ff1386377d6a9c8dff3b.png

因此,f2ff4288f88f76dbda02a1a686fcc11b.png收敛时,最终的模型参数为:

bc1306136da091269de3f252d1f3818a.png

8e8ce0818559075edfc8297c3a59e07f.png表示选择硬币A和硬币B的概率是一样的,如果模型参数的初始值不同,得到的最终模型参数也可能不同,模型参数的初始化和先验经验有关。

5.高斯混合模型的参数估计

一维变量的高斯分布:

c23ef15565c7cdbd764d71e730f7e922.png

其中u和f1c1b0d4ed8a57afd94e7b80daf319a0.png分别表示均值和标准差。

n维变量的高斯分布:

223981b7d39d4a31eb2473f1f8d2e463.png

其中u是n维均值向量,1d562aad3286fca18fb0ec1b7e706d1d.png是n×n的协方差矩阵。

n维变量的混合高斯分布:

a3fd7ea708243b5de8e968f0050967c5.png

该分布共由k个混合成分组成,每个混合成分对应一个高斯分布,其中3834bb5a9dd9ce754aa395b260654b2b.png1e4a4c96614bf78a723efe502a09bdf2.png是第k个高斯混合成分的均值和协方差。

7dd49f09e351898becd260fef305f95b.png是归一化混合系数,含义为选择第k个高斯混合成分的概率,满足以下条件:

14decfc906e0f63bc30a33650d17c2ee.png

下图为k=3的高斯混合成分的概率分布图(红色):

3df51da14c3bb5d8a998eb945f24dd60.png

假设由高斯混合分布生成的观测数据ababe39672750fbd9c697a09f0f8b3b9.png,其对数似然函数:

406b680709e427e2fd251c18faf95675.png

我们用EM算法估计模型参数,其中隐变量对应模型的高斯混合成分,即对于给定的数据x,计算该数据属于第k个高斯混合分布生成的后验概率,记为742c77871e34f72f879b0ef953d3248f.png

根据贝叶斯定律:

cd8558ac30cdf562014c21ed07c87bd3.png

最大化式(19),令

ae68dfa19b2e449a43f289ccb5f4b723.png

由式(20)(21)(22)(23)可得模型参数:

2da275e6aedbaf1b5c4254b6d2d018c4.png

73ece3a2d62e80db5ea82adc1c6948cc.png

50ed2cca037c4e987ae97c068a4a9ddb.png

下面小结EM算法构建高斯混合模型的流程:

1)初始化高斯混合模型的均值cdc0281ac9f48b1963cd028091fa5eda.png,协方差3820171f290f41f43cb848d39752b929.png和混合系数8b7ef7cbeb66b296116582090c1ac5fd.png,计算完全数据的对数似然值(式(19));

2)E步:使用当前的参数值,通过下式计算均值:

95fc7df8743c3a3d9065d2a44f85ef97.png

d17196ff4ea114fcdd027933dc8b6450.png表示观测数据x属于第k个高斯混合成分的后验概率;

3)M步:最大化对数似然函数,得到式(24)(25)(26)的模型更新参数;

4)根据更新的参数值,重新计算完全数据的对数似然函数:

c6bbc2027e9038cfe9da73e38dec75ed.png

若收敛,则得到最终的模型参数值;反之,回到算法第(2)步继续迭代。

6.聚类蕴含的EM算法思想

我们可以把聚类理解为:计算观测数据x属于不同簇类的后验概率,记为049b91c8744060f2b5e08b840f6af899.png,其中j是簇类个数(j=1,2,...,K),观测数据x所属的簇标记53a9a018df36f13423ec3b97301c9477.png由如下确定:

1a7285c6afacf4bc552b7dc1a9533528.png

我们可以用EM算法计算每个样本由不同高斯混合成分生成的后验概率,步骤可参考上一节。

【例】 如下的观测数据,假设簇类个数K=2,初始化每个高斯混合参数得到229da1ad68728216bc40532f3755609b.png,根据式(27)得到聚类结果:

98d2e771577c8e918c326b06f8890073.png

根据上一节介绍的EM算法步骤,迭代1次后得到0cf8d997d639d6beb3ed0f74ac23fde9.png,根据式(27)得到聚类结果:

8d1360c02b86e3d1b2a5c70a8c4fed01.png

迭代5次后得到ccef451e0b30246d401d24423cc99426.png,根据式(27)得到聚类结果:

73904879d435a576dd813564c883520f.png

迭代20次后的f67af1b9aa07aa3185b74f8aec42e405.png,根据式(27)得到聚类结果:

845a9dd738d32f4b559a64806ce93604.png

k均值聚类是高斯混合聚类的特例,k均值假设各个维是相互独立的,其算法过程也可用EM思想去理解:

1)初始化簇类中心;

2)E步:通过簇类中心计算每个样本所属簇类的后验概率e372c5afa1994404085dc348f79f260a.png

3)M步:最大化当前观测数据的对数似然函数,更新簇类中心

4)当观测数据的对数似然函数不再增加时,迭代结束;反之,返回(2)步继续迭代;

7.小结

EM算法在各领域应用极广,运用了后验概率,极大似然方法和迭代思想构建最优模型参数,后续文章会介绍EM算法在马尔科夫模型的应用,希望通过这篇文章能让读者对EM算法不再陌生。

参考

https://towardsdatascience.com

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

6376c6625b73926dd4817a25b7518d4c.png

54312837d29ae70edd472e393638517a.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值