em算法详解 em算法详细例子及推导_python gmm em算法 2维数据


全网最容易理解最直观最形象的em算法的解释文。

首先,EM和极大似然法一样需要提前假设数据的分布符合XX分布情况,EM算法和极大似然不同的地方在于当求解的公式中存在隐变量的时候极大似然法无法解决,此时可以采用EM算法来求解。

极大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率极大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。

求极大似然函数估计值的一般步骤:

(1)写出似然函数;

(2)对似然函数取对数,并整理;

(3)求导数,令导数为 0,得到似然方程;(很多时候似然方程没有解析解所以只能通过梯度下降法等优化算法迭代求解)

(4)解似然方程,得到的参数。


em算法详解 em算法详细例子及推导_em算法详细例子及推导_02

极大似然方程的一般形式


以一元高斯分布为例:


em算法详解 em算法详细例子及推导_极大似然_03


小学的高斯分布公式实际上就是这么推导而来的,因为高斯分布参数估计的似然函数存在解析解,所以求导之后可以直接求出对应的参数值而不需要使用梯度下降法之类的迭代求解的方法。


EM算法是在极大似然估计无法解决原始的似然函数中存在隐变量的情况下使用的一种启发式的算法。


em算法详解 em算法详细例子及推导_极大似然_04


可以看到对数似然函数的对数中有一大堆的求和项,求导起来极其复杂麻烦很难求解。那么EM的思路就是首先假设一个隐变量z的分布Q:


em算法详解 em算法详细例子及推导_python gmm em算法 2维数据_05


其中:


em算法详解 em算法详细例子及推导_似然函数_06

(这里的Q分布可以是连续也可以是离散分布的)

(2)式用到了Jensen不等式。

这里我们就构建出了原始的带隐变量的极大似然函数式的下界,EM的思想在于通过最大化这个下界从而增大原始的极大似然函数值(无法保证也最大化,启发式无法保证最优),此时原来的问题就转化为了最大化这个下界的值:


em算法详解 em算法详细例子及推导_似然函数_07


可以看到上面的这个式子实际上就是:


em算法详解 em算法详细例子及推导_em算法详解_08


的加权平均,这一步就是EM中的E步


em算法详解 em算法详细例子及推导_python gmm em算法 2维数据_05


根据这个式子可以知道,当下界与原始的带隐变量的极大似然函数相等的时候取到最大值(小于等于的最大值当然是等于啦。。)

然后反过来,根据Jensen不等式的性质,取到等号的时候:


em算法详解 em算法详细例子及推导_似然函数_10


其中 c 为常数,对于任意


,我们得到:


em算法详解 em算法详细例子及推导_极大似然_11


方程两边同时累加和:


em算法详解 em算法详细例子及推导_em算法详解_12


由于


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




其中:

边缘概率公式:



条件概率公式:



从上式可以发现


实际上就是已知样本和模型参数下的隐变量分布

em算法详解 em算法详细例子及推导_似然函数_07


得到了Q的表达式之后我们的E步就结束了,

然后进入M步,带入原始的下界函数的式子,然后关于参数


求极大值


em算法详解 em算法详细例子及推导_python gmm em算法 2维数据_14


这样我们就更新得到了新的参数



一直重复,直到参数


收敛为止。


em算法详解 em算法详细例子及推导_em算法详解_15


上述的过程是EM算法的一个很通用的求解过程的序数,但是细化到不同的算法上又有很多需要注意的地方,这里以单元的GMM为例介绍下EM在GMM求解上的具体的例子,可见: