EM算法

引言

EM算法是一种迭代算法,用于含有隐藏变量的概率模型的参数估计,比如说高斯混合模型,隐马尔科夫链等等场景。EM算法是一个具有普遍意义的算法,通过不断的提高下界来逼近模型参数。EM算法包含两步,expectation和maximization,即求期望和最大值。EM两个字母完美的表述了EM算法的精髓。

隐变量

首先我们来介绍下什么是隐变量。 所谓的隐变量就是模型中存在的无法直接观测的到的变量,而且这个变量的取值会影响最终的观测变量值。举个栗子,有三个硬币A,B,C;先掷A,如果A为正面,则掷B,如果A为反面,则掷C,最后查看最终的硬币的正反面结果。这里A的结果我们无法观测,我们只能观测到最终的结果,但是最终的结果是受A的结果影响的,因此A的结果就是隐变量,假设A,B,C硬币的正面概率分别为,那么我们就需要根据最终的显示结果来估计参数

假设我们的最终观测结果为1,1,1,0,1,0,0,1,1,0;

令y表示最终的观测结果变量,z表示隐变量,为待估计的模型参数。

则我们的三硬币模型可以表示为:

给定观测数据以及未观测数据,根据上面的模型,写出极大似然函数为:

对极大似然函数进行求导,就可以得出参数的估计值。然而这个问题并没有解析解。

为什么无法直接算出

对于含有隐变量的模型,我们看下她的似然函数:

$P(Y|Z,\theta)$ 这一项是观测数据的分布,可以直接统计算出

$P(Z|\theta))$ 这一项是隐变量的分布,我们根本不知道

因此我们没有办法直接计算出来,下面我们就引入EM算法通过迭代的方式来对参数进行估计。

EM算法

输入

  • 观测数据,隐变量,联合分布 ,条件分布

算法过程

  • 选择参数的初值,开始迭代
  • E步:
    • 计算
  • M步:
    • 极大化
  • 重复上面的步骤直到迭代停止。

输出

  • 参数的估计值

所以一句话来描述EM算法就是:

极大化完全数据的对数似然函数关于隐变量的条件概率的期望

EM算法的导出

上面给出了EM算法,可是我们一脸懵逼啊,为什么是这样的形式呢,下面我们就来推导一下EM算法。

既然是迭代算法,那么只要保证每次迭代的大就行。,因此有:

根据Jensen不等式,有:

(因为

去掉跟最大化无关的项,有:

因此我们可以看出极大化函数,就能使参数不断的逼近真实值。

EM算法存在的问题

EM算法作为一个迭代算法,需要指定初始值,那么实际上结果的好坏是跟初始值强相关的,因此如果我们能够得到初始值的一些信息的话,是有利于提升EM的效果的。

显示 Gitment 评论