EM算法通俗解释

前言

  EM算法大家应该都耳熟能详了,不过很多关于算法的介绍都有很多公式。当然严格的证明肯定少不了公式,不过推公式也是得建立在了解概念的基础上是吧。所以本文就试图以比较直观的方式谈下对EM算法的理解,尽量不引入推导和证明,希望可以有助理解算法的思路。

介绍

  EM方法是专门为优化似然函数设计的一种优化算法。它的主要应用场景是在用缺失数据训练模型时。由于数据的缺失,我们只能把似然函数在这些缺失数据上边缘化,这就造成带有缺失值的似然函数具有多个完备数据似然函数之和的形式。这种求和造成两个后果:一是本来可能因子分解的形式被打破(本来独立的变量耦合在一起了),二是本来具有的凸性被打破(加法运算不具有保凸性)。因此,优化带有缺失值的似然函数一般是一个高维的非凸优化问题,换句话说就是比较难的问题。


  EM算法的思路基于以下观察:

  • 在给定模型参数的情况下,执行推理比较简单
  • 在给定完备数据的情况下,执行极大似然优化也比较简单

  不幸的是,带有缺失值的似然函数以上两个条件都不满足。因此,EM算法采用了一种自举(bootstrap)的方式来进行逐步优化:


1. 任选一组模型参数,执行推理,得到各个缺失值的概率分布,然后认为一个缺失值是由所有可能的观测值组成的,每个观测值的权重为其概率。这样我们就把缺失数据的问题转换成了完备数据的问题。这一步称作E步。

  关于E步,可以举一个简单的例子。

  比如我们想优化似然函数\(P(x,y,z|\mathbf{\theta})\),但是数据有一个缺失值\(x=0,y=1,z=?\)。我们可以这么处理:

  通过任选一组\(\mathbf{\theta}=\mathbf{\theta}_0\),我们推理得出\(P(z=0|x=0,y=1,\mathbf{\theta}_0)=0.3\),\(P(z=1|x=0,y=1,\mathbf{\theta}_0)=0.7\)。

  据此我们可以认为这个缺失数据是由0.3个\(x=0,y=1,z=0\)和0.7个\(x=0,y=1,z=1\)组成的,这样就完成了缺失数据的补全。

  现在,似然函数可以表示为:

\(P(x=0,y=1,z=?|\mathbf{\theta})=0.3P(x=0,y=1,z=0|\mathbf{\theta})+0.7P(x=0,y=1,z=1|\mathbf{\theta})=E_z[P(x=0,y=1,z=?|\mathbf{\theta})]\)

  可见新的似然函数就是对带有缺失值的似然函数关于缺失数据求期望而来,这也是E步名称的由来。

2. 对于E步得到的似然函数,已经没有缺失值了,所以可以执行一次对完整数据的极大似然优化,对模型参数进行更新。

EM算法就是循环执行步骤12,不断逼近某个局部极值的过程。可以证明EM算法每步都更接近局部极值,就是所谓的“爬山”过程


注意在执行步骤2时,似然函数=所有数据点的似然函数之积,对于缺失值,改为用


先把缺失数据填充上, 执行步骤1,得到模型参数;然后用得到的模型参数执行步骤2,得到缺失值的数据...如此反复迭代,以实现优化的目的。
可以证明EM算法的每一步都是往更好的结果走,因此可以实现优化的目的。

猜你喜欢

转载自www.cnblogs.com/simplex/p/9893386.html