EM算法,全称Expectation Maximization Algorithm,译作最大期望化算法或期望最大算法,是机器学习十大算法之一,吴军博士在《数学之美》书中称其为“上帝视角”算法,其重要性可见一斑。

EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率参数模型的最大似然估计或极大后验概率估计。它与极大似然估计的区别就是它在迭代过程中依赖极大似然估计方法。极大似然估计是在模型已知的情况下,求解模型的参数$\theta$,让抽样出现的概率最大。类似于求解一元方程,所以极大似然估计参数值是稳定的。而对于EM算法,由于有隐藏变量(可视为多元参数)的存在,所以往往初始参数设置的不同会导致最后收敛的结果不同,使得陷入局部最优解,而非全局最优解)。但在隐藏变量$X$未知的情况下,通过计算其数学期望(E步),再利用极大似然求解(M步),为问题的近似解决提供了可能。

一、Jensen不等式

在完善EM算法之前,首先来了解下Jensen不等式,因为在EM算法的推导过程中会用到。

Jensen不等式在高中时我们就接触过,文字描述如下:

  • 如果$f(X)$是凸函数,$X$是随机变量,则$E[f(X)] \ge f(E[X])$,特别地,如果$f$是严格凸函数,$E[f(X)] \ge f(E[X])$,那么当且仅当$p(x=E[X])=1$时(也就是说$X$是常量),$E[f(x)]=f(E[X])$;
  • 如果$f(X)$是凹函数,$X$是随机变量,则$f(E[X]) \le E[f(X)]$,当$f(X)$是(严格)凹函数当且仅当$-f(X)$是(严格)凸函数。

Jensen不等式图形化表达

二、 EM算法推导

给定$m$个训练样本(或观测变量数据)${x^{(1)},x^{(2)},\ldots,x^{(m)}}$,$n$个隐变量${z^{(1)},z^{(2)},\ldots,z^{(n)}}$,联合分布$P(X,Z|\theta)$,条件分布$P(Z|X, \theta)$。假设样本间相互独立,我们想要拟合模型$P(X,Z|\theta)$得到模型参数$\theta$。

首先,根据极大似然求解步骤(对似然函数取对数,求导数,令导数为0,得到似然方程,解似然方程后,得到的参数即为所求),我们列出如下似然函数:

\begin{align*}
l\left( \theta \right) &= \sum\limits_{i = 1}^m {\log p\left( {x;\theta } \right)} \\
&= \sum\limits_{i = 1}^m {\log \sum\nolimits_z {p\left( {x,z;\theta } \right).} }
\end{align*}

上式中,第一步是对极大似然函数取对数,第二步是对每个样本实例的每个可能的类别$z$求联合分布概率之和。然而,求这个参数$\theta$很困难,因为存在一个隐含随机变量$z$。如果能通过计算$z$的数学期望来估计$z$,代入式中后,再使用极大似然估计来解$\theta$就水到渠成。这也就是EM算法所要解决的问题场景。

接下来,我们引入$Q_i$函数,$Q_i$函数表示样本实例隐含变量z的某种分布,且$Q_i$满足条件$\sum_zQ_i(z)=1,Q_i(z)>=0$,如果$Q_i$是连续性的,则$Q_i$表示概率密度函数,需要将求和符号换成积分符号。

值得注意的是,此处的$Q_i$函数是分布,不是《统计学习方法》书中的期望$Q$函数(在给定观测数据$X$和当前参数$\theta^{(i)}$下对未观测数据$Z$的条件概率分布$P(Z|X, \theta)$的数学期望)。计算分布函数$Q_i$和计算期望$Q$函数是等价的。

计算$Q_i$函数或$Q$函数的过程就是E步,我们接着上面的推导过程继续:

\begin{align*}
\sum\limits_i {\log p\left( {{x^{\left( i \right)}};\theta } \right)} &= \sum\limits_i {\log \sum\limits_{{z^{\left( i \right)}}} {p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)} } \\
&= \sum\limits_i {\log \sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} }
\end{align*}

上式中,第一步根据联合概率密度下某个变量的边缘密度函数求解展开,但式中求解隐变量$z$困难,于是第二步引入$Q_{i}(z^{(i)})$使分子分母平衡。

第三步根据Jensen不等式,已知$log(x)$的二阶导数为$-\frac{1}{x^2}$,属于凹函数,所以有$f(E[X])>=E[f(x)]$。

第三步具体的推导过程是:

a. 根据《概率论》中的期望公式$E(x)=\sum g(x)*p(x)$,$Y=g(x)$为随机变量$x$的函数,$P(X=x_k)=p_k$为分布律。将$Q_{i}(z^{(i)})$看成分布律$p(x)$,$\frac{p(x^{i},z^{(i)};\theta)}{Q_i(z^{(i)})}$看成值域$g(x)$,有:
\begin{align*}
E\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right) = \sum\limits_{{z^{\left( i \right)}}} {{Q_i}\left( {{z^{\left( i \right)}}} \right)\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}}
\end{align*}

b. 根据Jensen不等式的性质,对于凹函数有:
\begin{align*}
f\left( {{E_{{z^{\left( i \right)}} \sim {Q_i}}}\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right)} \right) \ge {E_{{z^{\left( i \right)}} \sim {Q_i}}}\left( {f\left( {\frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{{Q_i}\left( {{z^{\left( i \right)}}} \right)}}} \right)} \right)
\end{align*}

因此便得到了第三步。上述推导过程最后变为$L(\theta)>=J(z,Q)$的形式($z$为隐含变量),那么我们可以通过不断的最大化$J$的下界,来使得$L(\theta)$不断提高,最终达到它的最大值。

接下来,我们需要推导出$Q_{i}(z^{(i)})$的具体表达形式,即隐变量$z$的分布或期望。

$Q_i$函数是隐变量$z$的分布,那么有下式:

\begin{align*}
{Q_i}\left( {{z^{\left( i \right)}}} \right) &= \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{\sum\nolimits_z {p\left( {{x^{\left( i \right)}},z;\theta } \right)} }}\\
&= \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};\theta } \right)}}{{p\left( {{x^{\left( i \right)}};\theta } \right)}}\\
&= p\left( {{z^{\left( i \right)}}|{x^{\left( i \right)}};\theta } \right)
\end{align*}

$Q$函数是隐变量$z$的期望,那么有下式:
$$ Q\left( \theta \right) = {E_Z}\left[ {\log P\left( {X,Z|\theta } \right)|X,{\theta ^{\left( i \right)}}} \right] $$

至此,我们推出了$Q(z)$的计算公式(后验概率或条件概率)。此步就是EM算法的E步,目的是建立$L(\theta)$的下界。

接下来的M步,目的是在给定$Q(z)$后,调整$\theta$,从而极大化$L(\theta)$的下界$J$(在固定$Q(z)$后,下界还可以调整的更大)。

到此,可以说是完美的展现了EM算法的E-step & M-step,完整的流程如下:

(1). 选择参数的初值$\theta^{(0)}$,开始迭代;
(2). E步:记$\theta^{(i)}$为第$i$次迭代参数$\theta$的估计值,在第$i+1$次迭代的E步,计算隐变量期望$Q$函数:
\begin{align*}
Q\left( \theta \right) &= {E_Z}\left[ {\log P\left( {X,Z|\theta } \right)|X,{\theta ^{\left( i \right)}}} \right]\\
&= \sum\limits_Z {\log P} \left( {X,Z|\theta } \right)P\left( {Z|X,{\theta ^{\left( i \right)}}} \right)
\end{align*}
这里,$P\left( {Z|X,{\theta ^{\left( i \right)}}} \right)$是在给定观测数据$X$和当前的参数估计$\theta^{(i)}$下隐变量$Z$的条件概率分布,也就是$Q_i$函数。
(3). M步: 求使$Q\left( \theta \right)$极大化的$\theta$,确定第$i+1$次迭代的参数估计值$\theta^{(i+1)}$.
$$ \theta^{(i+1)} = arg \mathop {max }\limits_Q Q\left( \theta \right) $$
(4). 重复第(2)和第(3)步,直到收敛。

三、 EM算法的收敛性

如何保证EM最终是收敛的呢?

由极大似然估计的迭代过程:

\begin{align*}
l\left( {{\theta ^{\left( {t + 1} \right)}}} \right) &\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};{\theta ^{\left( {t + 1} \right)}}} \right)}}{{{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&\ge \sum\limits_i {\sum\limits_{{z^{\left( i \right)}}} {{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)\log \frac{{p\left( {{x^{\left( i \right)}},{z^{\left( i \right)}};{\theta ^{\left( t \right)}}} \right)}}{{{Q_i}^{\left( t \right)}\left( {{z^{\left( i \right)}}} \right)}}} } \\
&= l\left( {{\theta ^{\left( t \right)}}} \right)
\end{align*}

这样就证明了$l(\theta)$会单调增加。如果要判断收敛情况,可以这样来做:一种收敛方法是$l(\theta)$不再变化,还有一种就是变化幅度很小,即根据$l(\theta)^{(t+1)}-l(\theta)^{(t)}$的值来决定

EM算法类似于坐标上升法(coordinate ascent):E步:计算隐变量期望$Q$;M步:将期望$Q$代入极大似然估计中,估算$\theta$;交替将极值推向最大。

参考博文:

Machine Learning系列--EM算法理解与推导的更多相关文章

  1. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. EM算法理解的九层境界

    EM算法理解的九层境界 EM 就是 E + M EM 是一种局部下限构造 K-Means是一种Hard EM算法 从EM 到 广义EM 广义EM的一个特例是VBEM 广义EM的另一个特例是WS算法 广 ...

  3. Machine Learning系列--CRF条件随机场总结

    根据<统计学习方法>一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出 ...

  4. EM算法理解

    一.概述 概率模型有时既含有观测变量,又含有隐变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接利用极大似然估计法或者贝叶斯估计法估计模型参数.但是,当模型同时又含有隐变量时,就不能简单地使 ...

  5. Machine Learning系列--隐马尔可夫模型的三大问题及求解方法

    本文主要介绍隐马尔可夫模型以及该模型中的三大问题的解决方法. 隐马尔可夫模型的是处理序列问题的统计学模型,描述的过程为:由隐马尔科夫链随机生成不可观测的状态随机序列,然后各个状态分别生成一个观测,从而 ...

  6. EM算法理论与推导

    EM算法(Expectation-maximization),又称最大期望算法,是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计(或极大后验概率估计) 从定义可知,该算法是用来估计参数的,这 ...

  7. EM算法定义及推导

    EM算法是一种迭代算法,传说中的上帝算法,俗人可望不可及.用以含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计 EM算法定义 输入:观测变量数据X,隐变量数据Z,联合分布\(P(X,Z|\t ...

  8. 超详细的EM算法理解

    众所周知,极大似然估计是一种应用很广泛的参数估计方法.例如我手头有一些东北人的身高的数据,又知道身高的概率模型是高斯分布,那么利用极大化似然函数的方法可以估计出高斯分布的两个参数,均值和方差.这个方法 ...

  9. Machine Learning系列--维特比算法

    维特比算法(Viterbi algorithm)是在一个用途非常广的算法,本科学通信的时候已经听过这个算法,最近在看 HMM(Hidden Markov model) 的时候也看到了这个算法.于是决定 ...

随机推荐

  1. Using the command line to manage files on HDFS--转载

    原文地址:http://zh.hortonworks.com/hadoop-tutorial/using-commandline-manage-files-hdfs/ In this tutorial ...

  2. ZOJ3466-The Hive II

    题意 有一个六边形格子,共 \(n\) 行,每行有 8 个位置,有一些格子不能走.求用一些环覆盖所有可走格子的方案数.\(n\le 10\) . 分析 插头dp,只不过是六边形上的,分奇数列和偶数列讨 ...

  3. 解数独(Python)

    0.目录 1.介绍 2.一些通用函数 3.全局变量(宏变量) 4.数独预处理(约束传播) 5.解数独(深度优先搜索+最小代价优先) 6.主函数 7.总代码 1.介绍 数独是一个非常有趣味性的智力游戏, ...

  4. Alpha 冲刺 —— 十分之二

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前端界面的开发 搭建测试用服务器的环境 完成 ...

  5. 洛谷 P2258 子矩阵

    题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...

  6. 洛谷 P4585 [FJOI2015]火星商店问题 解题报告

    P4585 [FJOI2015]火星商店问题 题目描述 火星上的一条商业街里按照商店的编号\(1,2,\dots,n\) ,依次排列着\(n\)个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非 ...

  7. 洛谷 P2195 HXY造公园 解题报告

    P2195 HXY造公园 题目描述 现在有一个现成的公园,有\(n\)个休息点和\(m\)条双向边连接两个休息点.众所周知,\(HXY\)是一个\(SXBK\)的强迫症患者,所以她打算施展魔法来改造公 ...

  8. excel换行

    在excel的单元格中换行 1. windows alt + enter 2. mac command + alt + enter

  9. javaWeb中,文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  10. C++类间转换之dynamic_cast

    当在C++的基类与派生类之间转换时,其多态性充分显现出来: 本次只讨论  dynamic_cast  的用法. 在查阅资料后发现百度百科关于  dynamic_cast  (以及static_cast ...