em算法详细例子及推导_EM算法的个人理解和实验

引言

很早以前就接触了EM算法,但是发觉自己好像有理解不正确的地方,于是自己推导了一遍。才疏学浅,有错误之处还请各位大佬指正。

EM算法的通俗解释

Expectation Maximization 的算法的本质,就是对一组数据

,假设他们满足某种分布
, 求出这个最优的
, 使得
的值最大。在不存在隐变量的情况下,也就是说,
,则这个问题就是个简单的求函数极值的问题,也就是最普通的参数估计问题,相信大家概率论的课上都学过了。

但是在实际情况下,除去分布的参数

, 还有一些隐变量
,也决定了
的分布。一个简单的例子就是对于很多数据点
, 其中的任一个点都是两个正态分布
中的其中一个。那么每一个
属于哪一个正态分布,产生的标签
就是隐变量。

但是我们是不是也可以把隐变量当做分布的参数呢?也就是说从两个正态分布里面取样产生的新的分布的参数包含

,搜索整个参数空间,理论上也可以找到一组最佳的参数,使得
最大。

但是这样就和我们的目标有所违背:我们的目标是找到

的最大值,并不是
的最大值。而且一般
的函数也十分复杂,很可能无法求出极值。

通过贝叶斯法则,我们有:

,但是这个值和
有关,所以很难直接对这个公式下手。EM算法提供了一种巧妙的方法:

对上面的等式求对数,得到:

, 同时又有
, 因此把这个对 $h​$ 加权求和的算符作用在左右两边,很显然有
, 出现了很熟悉的
的形式!貌似可以利用信息论里面的那些不等式求极值了!

记住左边求和项

,对于任何
都成立。因为等式左边不含
, 于是我们可以把上式改成
。观察等号左边的第二项,
就是在条件
的信息熵。信息论告诉我们信息熵是最短编码长度。那么如果变量的分布发生改变,但编码方式不变(也就是说左边的
变化了),必然会增加平均码长。也就是说
。当然其实这本质就是“相对熵必然为正”的 Gibbs不等式。

这告诉我们,把

右边的
换成
,有
, 等号右边的第二项是一定增加的,所以我们只要保证
增加就行。

这就是EM算法的精髓,通过对于当前的

,找到一个
, 使得
取到最大值,不断迭代,最终找到最优的

一个简单的例子

就用上文的两个正态分布的例子,对于数据点

,他们属于两个正态分布之一,参数分别为
,数据的标签为
表示
表示
。这时候我们把数据的标签作为隐变量。

假设目前已经进行到 t 步,即当前的参数分别为

, 此时有我们要求出优化目标
求和号里面的左边部分

这个式子依然难以计算,但是注意到

, 左边的
一般都是有函数表达式的,右边的
,在这里我们认为隐变量 $h$ 和参数
是无关的,并且认为
的分布由另一组参数
决定,即:
。在这里,我们很容易认为单个数据的标签满足伯努利分布,即:有
的概率标签为 1,表示该数据点属于第一个正态分布;反之则属于第二个。所以
也要加入参数中,参数集合变为:

于是我们有:

对于任何一个数据点

,对于隐变量
, 只需要考虑
的值,因为别的数据点处于哪一个分布对
没有影响。因此可以把隐变量的集合
拆成
两个集合。这样我们就可以把公式拆成:

显然有:

最后我们需要考虑的是,上面的讨论仅仅是最大化某一个样本的 $log p(x|theta)​$ 的值的,考虑到我们有大量的样本,实际的优化目标

,取对数后相加即可。因此在上式的左侧还要加上

于是最终的式子为:

其中,

考虑到上式的右端

中的
无关,因此可以忽略之。再看这个式子,是不是很像

的形式?因为这是对数形式,我们还原出其原始式子:
很显然这就是一个概率值,可以理解为
样本出现了
次数的概率。注意到不同的
对应的
属于不同的正态分布,所以我们要把关于
的那个求和的两项分别拿出来求极值。

拿出

这一项,
。因此这就是个正态分布的加权最大似然估计(Weighted MLE for Normal Distribution),很容易可以得到:

其中,

当然同时,我们还要注意到

也是一个参数,因此也需要对此进行更新。此时可以把
中的
里的
看做常数。此时形式变成了

或者是
很显然这就是一个二项分布的概率表达式,相当于从一堆红球和黑球中选了若干次,总共有
次红球,
次黑球,因此其最大似然估计是

这里

,而且可以注意到

所以有

一些理解

从上面的例子中,我们可以看到某个数据点属于哪一个分布,这是一组隐变量,且这组隐变量中的每一个值满足伯努利分布。隐变量自身也包含了参数。因此我们可以画出如下的关系图:

,而且
是我们能观测到的数据。EM算法做的事情就是在把
表示成关于
的函数时,找出其最大值。

一个简单的实验

import 

8f16631ca1169d5782183459d3bbf2c1.png

根据图片可以看出,即便我们一开始非常胡乱地设置了初始的参数

,在几轮迭代之后,EM算法都能很好地找到
的最大似然估计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值