EM算法1-原理

EM算法用于含有隐含变量的概率模型参数的极大似然估计。什么是隐含变量的概率模型呢?举个例子,假设有3枚硬币,分别记为A,B,C,它们正面出现的概率分别为r,p,q。每次实验先掷硬币A,如果出现的是正面就投B,如果出现的反面就投C,出现正面记为1,出现反面记为0。独立10次实验,观测结果如下:1101001011。如果只有这个结果,而不知道过程,问如何估计r,q,p?也就是说,我们能看到每次的观测结果,可是这个结果是B产生的还是C产生的我们不知道,也就是A的结果我们不知道,这个就是所谓的隐含变量。如果把观测变量用Y来表示,隐含变量(A的结果)用Z表示,那么观测数据的似然函数为:

\(P(Y|\theta)=\prod_i{rp^{y_i}(1-p)^{1-y_i}+(1-r)q^{y_i}(1-q)^{1-y_i}}\)

把上面的模型泛化一下可以概括为,有观测数据{\(x_1,x_2,...x_m\)},由一个具有观测变量X和隐含变量Z的模型产生,模型参数为\(\theta\),我们要最大化下面这个似然:

\(l(\theta)=\displaystyle\sum_{i}^{m}logp(x_i;\theta)=\displaystyle\sum_{i}^{m}log\sum_{z_i}p(x_i,z_i;\theta)\)。

直接求解这个优化问题非常困难。EM算法是通过迭代的方式求解,分为Expectation步和Maximization步。它的主要思想先找到目标函数的下边界,然后逐步提高这个下边界,进而得到一个最优解,但是这个最优解不一定是全局最优的。

下面看一下这个下界是怎么推导出来的---

\(\displaystyle\sum_{i}^{m}logp(x_i;\theta)\)

\(=\displaystyle\sum_{i}^{m}log\sum_{z_i}p(x_i,z_i;\theta)\)

对于i,假设\(Q_i\)是Z上的某个概率分布

\(=\displaystyle\sum_{i}^{m}log\sum_{z_i}Q_i(z_i)\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}\)

\(>=\displaystyle\sum_{i}^{m}\sum_{z_i}Q_i(z_i)log\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}\) ---- (eq1)

这一步用到了Jensen不等式,因为log函数是concave的(二阶导数小于0),所以有log(E(X))>=E(log(x))。而\(Q_i\)是概率分布,所以可以把\(\sum_{z_i}Q_i(z_i)\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}\)看做是期望,然后可以套用Jensen不等式[2],即可得到上述结果。

现在有了下限,但是里面的Qi还不知道。怎么确定Qi呢?如果我们已经有了\(\theta\)的一个猜测值,那么这里自然让下限在\(\theta\)处值和似然函数在\(\theta\)处的值越接近越好,让不等式eq1在\(\theta\)处取得等号。因为log函数是严格凹函数,所以只有在E(X)==X(恒等于)的时候等号才会成立,比如当X是个常数的时候。基于上面的性质,令

\(\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}=c\)

基于此,可以推出

\(\frac{\sum_zp(x_i,z;\theta)}{\sum_zQ_i(z)}=c\) (这个很容易推出来,a1/b1=c,a2/b2=c,a3/b3=c => (a2+a2+a3)/(b1+b2+b3)=c)

有,

\(Q_i(z_i)=\frac{p(x_i,z_i;\theta)}{\sum_zp(x_i,z;\theta)}\)

\(=\frac{p(x_i,z_i;\theta)}{p(x_i;\theta)}\)

\(=p(z_i|x_i;\theta)\)

因此,Qi是给定xi和\(\theta\)下zi的后验概率。

这就是E步骤,总结一下,假设已知\(\theta\),先求出似然函数的下限,然后求出隐含变量的分布Qi。

在接下来的M步骤,因为E步骤已经得到了一个Qi,这个步骤求最大化eq1的\(\theta\)值,也就是求下限的最大值点。

然后把M步骤求得的\(\theta\)输入E步骤,循环往复,直至收敛。

Repeat until convergence{

E-step:for each i,set

\(Q_i(z_i):=p(z_i|x_i;\theta)\)

M-step:set

\(\theta:=argmax_{\theta}\displaystyle\sum_{i}^{m}\sum_{z_i}Q_i(z_i)log\frac{p(x_i,z_i|\theta)}{Q_i(z_i)}\)

}

下面图片更直观的描述了EM过程,图片来自[4],E步挪动下界到\(\theta\)值与目标函数相同,M步求下界函数的最大值点做为新的\(\theta\)

如果定义\(J(Q,\theta)=\displaystyle\sum_{i}^{m}\sum_{z_i}Q_i(z_i)log\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}\)

那么,EM算法可以看做函数J的坐标轴下降过程,E步最大化Q,M步最大化\(\theta\)。

EM算法是会收敛的,具体的证明参见参考[3],但是EM算法有可能陷入局部最优的,它对初始值敏感。

下面尝试用EM算法解决文章开始的三硬币问题。

假设已经经过了j步的迭代,现在已经有了\(\theta^j=(r^j,c^j,q^j)\) (为了避免写起来混淆,把参数里面B的正面概率p变成了c)

E步:

这里要求\(p(z_i|x_i;\theta^j)\),因为是二分问题,为了描述简便,可以直接求正面的概率,根据贝叶斯概率公式:

(为了书写简单,下面把表示迭代次数的上角标j去掉了,心里记得,r,c,q是已知的)

\(p(z_i=1|x_i;\theta)=\frac{p(x_i|z_i=1;\theta)p(z_i=1;\theta)}{p(x_i|z_i=1;\theta)p(z_i=1;\theta)+p(z_i=0;\theta)p(x_i|z_i=0;\theta)}\)

\(=\frac{rc^{x_i}(1-c)^{(1-x_i)}}{rc^{x_i}(1-c)^{1-x_i}+(1-r)q^{x_i}(1-q)^{(1-x_i)}}\)

把\(p(z_i=1|x_i;\theta)\)记做\(\mu^{(j+1)}\)表示是第j+1次迭代得到的值,为了书写清楚一下(cnblog对公式支持的有些差啊),还是把上角标去掉了

M步骤:

现在\(p(z_i|x_i;\theta)\)已经知道,就开始解决下面这个优化问题了

\(J(\theta)=\sum\mu_ilog\frac{p(x_i,z_i=1;\theta)}{\mu_i}+(1-\mu_i)log\frac{p(x_i,z_i=0;\theta)}{1-\mu_i}\)

\(=\sum\mu_ilog\frac{rc^{x_i}(1-c)^{(1-x_i)}}{\mu_i}+(1-\mu_i)log\frac{(1-r)q^{x_i}(1-q)^{(1-x_i)}}{1-\mu_i}\)

令\(\frac{\partial J(\theta)}{r}=0\)

很容易可以得到\(r=\frac{1}{m}\sum\mu_i\)

令\(\frac{\partial J(\theta)}{c}=0\)

同样容易得到\(c=\frac{\sum\mu_ix_i}{\sum\mu_i}\)

令\(\frac{\partial J(\theta)}{q}=0\)

同样容易得到\(c=\frac{\sum(1-\mu_i)x_i}{\sum(1-\mu_i)}\)  参考[1][5]

参考:

[1]李航《统计学习方法》

[2]Jensen不等式:http://www.cnblogs.com/naniJser/p/5642288.html

[3]Andrew Ng机器学习课程的讲义:http://cs229.stanford.edu/notes/cs229-notes8.pdf

[4]介绍EM算法的blog:http://blog.csdn.net/zouxy09/article/details/8537620

[5]http://chenrudan.github.io/blog/2015/12/02/emexample.html

 

时间: 2024-10-27 08:29:37

EM算法1-原理的相关文章

机器学习中的EM算法详解及R语言实例(1)

最大期望算法(EM) K均值算法非常简单(可参见之前发布的博文),详细读者都可以轻松地理解它.但下面将要介绍的EM算法就要困难许多了,它与极大似然估计密切相关. 1 算法原理 不妨从一个例子开始我们的讨论,假设现在有100个人的身高数据,而且这100条数据是随机抽取的.一个常识性的看法是,男性身高满足一定的分布(例如正态分布),女性身高也满足一定的分布,但这两个分布的参数不同.我们现在不仅不知道男女身高分布的参数,甚至不知道这100条数据哪些是来自男性,哪些是来自女性.这正符合聚类问题的假设,除

SIGAI机器学习第二十四集 高斯混合模型与EM算法

讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法的基本思想簇之间距离的定义k均值算法的基本思想k均值算法的流程k均值算法的实现细节问题实验EM算法简介Jensen不等式EM算法的原理推导收敛性证明 聚类算法是无监督学习的典型代表,前边讲过的数据降维算法是无监督学习的另外一种典型代表. 原文地址:https://www.cnblogs.com/wi

EM算法原理

在聚类中我们经经常使用到EM算法(i.e. Estimation - Maximization)进行參数预计, 在该算法中我们通过函数的凹/凸性,在estimation和maximization两步中迭代地进行參数预计,并保证能够算法收敛,达到局部最优解. PS:为了不在11.11这个吉祥的日子发blog,还是打算今天发了,祝单身coder节日快乐,心情愉快~~ 因为公式实在太多,这里我就手写了--主要讲了下面几个部分: 1. 凸集,凸函数,凹集,凹函数的概念 2. Jensen's inequ

EM算法-原理详解

1. 前言 概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数:但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计--EM算法 2. EM算法原理 EM算法称为期望极大值算法(expectation maximizition algorithm,EM),是一种启发式的迭代算法. EM算法的思路是使用启发式的迭代方

EM算法原理以及高斯混合模型实践

EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然函数估计值的一般步骤: (1)写出似然函数: (2)对似然函数取对数,并整理: (3)求导数,令导数为0,得到似然方程: (4)解似然方程,得到的参数即为所求. 期望最大化算法(EM算法): 优点: 1. 简单稳定: 2. 通过E步骤和M步骤使得期望最大化,是自收敛的分类算法,既不需要事先设定类别也

【转】EM算法原理

EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶斯网络中. 下面主要介绍EM的整个推导过程. 1. Jensen不等式 回顾优化理论中的一些概念.设f是定义域为实数的函数,如果对于所有的实数x,,那么f是凸函数.当x是向量时,如果其hessian矩阵H是半正定的(),那么f是凸函数.如果或者,那么称f是严格凸函数. Jensen不等式表述如下:

EM算法原理详解

1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型含有隐变量(latent variable)的时候, 就不能简单地使用这些估计方法. 如在高斯混合和EM算法中讨论的高斯混合就是典型的含有隐变量的例子,已经给出EM算法在高斯混合模型中的运用,下面我们来讨论一些原理性的东西. 2.Jensen 不等式 令是值域为实数的函数,那么如果,则就是一个凸函数

机器学习笔记_PRML_Adaboost 算法的原理与推导

转自:http://blog.csdn.net/v_july_v/article/details/40718799 Adaboost 算法的原理与推导 1 Adaboost的原理 1.1 Adaboost是什么 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出.它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器.同时,在每一轮中加

EM算法(1):K-means 算法

目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法详解 EM算法(1) : K-means算法 1. 简介 K-means算法是一类无监督的聚类算法,目的是将没有标签的数据分成若干个类,每一个类都是由相似的数据组成.这个类的个数一般是认为给定的. 2. 原理 假设给定一个数据集$\mathbf{X} = \{\mathbf{x}_1, \mathbf{x}_2,...,\mathbf{x}_N \}$, 和类的个数K.我们的每个类都用一个中心点$

实战EM算法与图像分割

EM 算法是求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行估计,是一种非常简单实用的学习算法.这种方法可以广泛地应用于处理缺损数据.截尾数据以及带有噪声等所谓的不完全数据,可以具体来说,我们可以利用EM算法来填充样本中的缺失数据.发现隐藏变量的值.估计HMM中的参数.估计有限混合分布中的参数以及可以进行无监督聚类等等. 贴相关几个好文章:从最大似然到EM算法浅解 混合高斯模型(Mixtures of Gaussians)和EM算法 斯坦福大学机器学习--EM算法求解高斯混合模型