EM算法--原理
EM算法即期望最大化(Expection Maximization)算法,是一种最优化算法,在机器学习领域用来求解含有隐变量的模型的最大似然问题。最大似然是一种求解模型参数的方法,顾名思义,在给定一组数据时,将似然表示为参数的函数,然后对此似然函数最大化即可求出参数,此参数对应原问题的最大似然解。对于简单的问题,我们通过将似然函数对参数求导并令导数等于零即可求出参数的解析解或隐式解。然而,有一类模型,他们的结构中包含隐变量(如混合高斯模型、混合伯努利模型、隐马尔科夫模型等),无法通过对似然函数直接求导得到最大似然解,此时就要借助EM算法了。
要解释EM算法,需要解释两个问题,1. 这里的“期望”指什么? 2. 为什么最大化这个期望就可以最大化似然?
假设我们有一组$N$个已知数据$\left \{ x_1, x_2, \cdots, x_N \right \}$,简记为$\textbf{X}$。与之对应的$N$个隐变量为$\left \{ z_1, z_2, \cdots, z_N \right \}$,简记为$\textbf{Z}$。模型的所有参数记作$\theta$。我们的目标是要最大化如下似然函数
$$\begin{eqnarray} p(\textbf{X} \left | \theta \right)=\sum_{\textbf{Z}}{p(\textbf{X}, \textbf{Z}|\theta)} \label{eqlikelihood} \end{eqnarray}$$
这里我们假设隐变量$\textbf{Z}$是离散的;如果隐变量是连续的,所有公式形式不变,只需将对$\textbf{Z}$求和改成求积分即可。
这里我们引入一个$\textbf{Z}$的分布$q(\textbf{Z})$,则式($\ref{eqlikelihood}$)可以变换为
$$\begin{eqnarray} \ln{ p(\textbf{X} \left | \theta \right)}=L(q, \theta)+KL(q \left \| p \right) \label{eqloglikelihood} \end{eqnarray}$$
其中,$L(q, \theta)$和$KL(q \left \| p \right)$分别为
$$\begin{eqnarray} \displaystyle L(q, \theta) & = & \sum_{\textbf{Z}}{q(\textbf{Z}) \ln{\left \{ \frac{p(\textbf{X}, \textbf{Z}|\theta)}{q(\textbf{Z})}\right \} }}\label{eqL} \\ \displaystyle KL(q \left \| p \right) & = & -\sum_{\textbf{Z}}{q(\textbf{Z}) \ln{\frac{p(\textbf{Z} \left | \textbf{X} ,\theta \right)}{q(\textbf{Z})}}} \label{eqKL} \end{eqnarray}$$
上述推导过程如下:
$$\begin{eqnarray*} \displaystyle \ln{ p(\textbf{X} \left | \theta \right)} & = & \ln{\frac{p(\textbf{X}, \textbf{Z} \left | \theta \right)}{p(\textbf{Z} \left | \textbf{X}, \theta \right)}} \\ \displaystyle & = & \ln{\frac{p(\textbf{X}, \textbf{Z} \left | \theta \right)}{q(\textbf{Z})}} + \ln{\frac{q({\textbf{Z})}}{p(\textbf{Z} \left | \textbf{X}, \theta \right)}} \\ \displaystyle & = & \sum_{\textbf{Z}}{q(\textbf{Z}) \left [ \ln{\frac{p(\textbf{X}, \textbf{Z} \left | \theta \right)}{q(\textbf{Z})}} + \ln{\frac{q({\textbf{Z})}}{p(\textbf{Z} \left | \textbf{X}, \theta \right)}} \right ]} \\ \displaystyle & = & L(q, \theta)+KL(q \left \| p \right) \end{eqnarray*}$$
式($\ref{eqL}$)是一个泛函即函数的函数,因为$q$是一个函数。$KL(q \left \| p \right)$是两个概率分布$q(\textbf{Z})$和$p(\textbf{Z} \left | \textbf{X}, \theta \right)$的KL散度,因此$KL(q \left \| p \right) \geqslant 0$,当且仅当$q=p$时取等号。所以,$L(q, \theta) \leqslant \ln{ p(\textbf{X} \left | \theta \right)}$,也就是说$L(q, \theta)$是$\ln{ p(\textbf{X} \left | \theta \right)}$的下界。
EM算法的过程是一个迭代的过程。回到式($\ref{eqloglikelihood}$),假设先固定$\theta = \theta^{old}$,因此等式左边是一个与$q$无关的常量值。因为$L(q, \theta)$是$\ln{ p(\textbf{X} \left | \theta \right)}$的下界,我们要最大化这个下界,也即最小化$KL(q \left \| p \right)$,因此最优解为$q(\textbf{Z}) = p(\textbf{Z} \left | \textbf{X} ,\theta^{old} \right)$,此时的下界等于log似然。以上为EM算法的E步。
接下来,我们固定$q(\textbf{Z})$为上一步的最优解,以$\theta$为参数对下界$L(q, \theta)$最大化求得新的参数$\theta^{new}$。因为下界变大了(除非已经达到了最大值),所以$\ln{ p(\textbf{X} \left | \theta \right)}$必然也变大,而且因为此时$q(\textbf{Z})$(实际为$p(\textbf{Z} \left | \textbf{X} ,\theta^{old} \right)$)与$p(\textbf{Z} \left | \textbf{X} ,\theta^{new} \right)$不相等,$KL(q \left \| p \right) > 0$,所以,$\ln{ p(\textbf{X} \left | \theta \right)}$变大的量比下界变大的量还多(此时,下界和log似然又不相等了,从而为回到E步留下了“空间”)。以上为EM算法的M步。EM算法就是通过E步和M步这样不停迭代来最大化log似然直至收敛的。
如果我们将E步的解$q(\textbf{Z}) = p(\textbf{Z} \left | \textbf{X} ,\theta^{old} \right)$带入式($\ref{eqL}$)中可以看到,此时的下界
$$ \begin{eqnarray} L(q, \theta) & = & \sum_{\textbf{Z}}{p(\textbf{Z} \left | \textbf{X}, \theta^{old} \right) \ln{p(\textbf{X}, \textbf{Z} \left | \theta \right )}} - \sum_{\textbf{Z}}{p(\textbf{Z} \left | \textbf{X}, \theta^{old} \right) \ln{p(\textbf{Z} \left | \textbf{X}, \theta^{old} \right) }} \\ & = & Q(\theta, \theta^{old}) + const \end{eqnarray} $$
因此在M步我们要最大化的实际是上式的第一部分$Q(\theta, \theta^{old})$,即“全数据”(complete-data)的log似然在分布$p(\textbf{Z} \left | \textbf{X}, \theta^{old} \right)$下的期望,这里的“全数据”即指已知数据加上其对应的隐变量,可以记作$\left \{ \textbf{X}, \textbf{Z} \right \}$,它是相对单独的已知数据$\left \{ \textbf{X} \right \}$而言的。
如下两个图,左图用于说明log似然始终可以分解为一个下界与一个KL散度的和。右图用于说明,因为存在左图所示的关系,当下界变大时(从底部变到虚线的位置),log似然始终会变得更大(从底部变到红线的位置)。
最后,我们回答文章一开始的两个问题。
1. 这里的“期望”指什么?
A: 这里的期望指全数据的log似然的期望。这也是EM算法名称的由来。
2. 为什么最大化这个期望就可以最大化似然?
A:上述E步和M步的论述已经阐明。这里简述如下:我们通过对隐变量引入一个假设分布将目标函数(log似然)分解为两部分,一部分为它的下界,一部分为一个非负的KL散度。为了最大化目标函数,我们先在E步使KL散度为0从而使下界最大,此时下界等于log似然;接下来在M步我们以模型参数为自变量进一步最大化下界,因为下界更大了,所以目标函数也会变得更大。通过这两步不停地迭代直至收敛就找到了原问题的最大似然解。(有兴趣的同学可以通过公式推导证明,为什么每经过一轮EM迭代,目标函数就会更大。)
在下一篇文章里,会通过介绍混合高斯模型及其实例进一步阐述EM算法。
EM算法--原理的更多相关文章
- 2. EM算法-原理详解
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 概率 ...
- EM算法原理简析——图解
一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过 ...
- EM算法原理总结
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等.本文就对 ...
- EM算法原理以及高斯混合模型实践
EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...
- EM算法原理
在聚类中我们经经常使用到EM算法(i.e. Estimation - Maximization)进行參数预计, 在该算法中我们通过函数的凹/凸性,在estimation和maximization两步中 ...
- EM算法原理详解
1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型 ...
- 【转】EM算法原理
EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶 ...
- 4-EM算法原理及利用EM求解GMM参数过程
1.极大似然估计 原理:假设在一个罐子中放着许多白球和黑球,并假定已经知道两种球的数目之比为1:3但是不知道那种颜色的球多.如果用放回抽样方法从罐中取5个球,观察结果为:黑.白.黑.黑.黑,估计取到黑 ...
- EM算法 The EM Algorithm
(EM算法)The EM Algorithm http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html EM算法原理 http: ...
随机推荐
- python读取文件特定的行数
from itertools import islice f=open("pyhpd.txt") for a in islice(f,2,6): print(a)
- JMeter 十二:命令行执行
参考文档:http://jmeter.apache.org/usermanual/get-started.html#non_gui 真正开始跑压力测试时,我们就不能使用GUI模式了.这时候需要采用命令 ...
- 解决安装完Ubuntu系统后启动项中没有Ubuntu的问题
问题出现的原因是你没有把grub安装到硬盘的起始扇区里,按理说Ubuntu在安装的时候应该能很好的处理这个问题,但有个别电脑还是会出问题.不过我们可以通用命令解决 问题. 使用U盘进入Ubuntu系统 ...
- vue - .gitignore
描述:npm官方屏蔽上传文件编写文件. 举例(屏蔽的文件/文件夹记得分行) 屏蔽文件:yarn.txt 屏蔽文件夹:/dist/
- ECMAScript 6 | 新特性
新特性概览 参考文章: http://www.cnblogs.com/Wayou/p/es6_new_features.html ——————————————————————————————————— ...
- Python之print详解
Python之print详解 http://www.jb51.net/article/55768.htm print的一些基本用法,在前面的讲述中也涉及一些,本讲是在复习的基础上,尽量再多点内容. ...
- Ubuntu 如何切换到root账户
root账号问题 ubuntu默认禁用了root账号,所以当年试图使用su root命令切换到root用户时,尽管你已经输入了正确的密码,终端依旧会提示你密码错误.你需要执行以下命令解除root账号的 ...
- PHP中根据IP地址判断所在城市等信息
本篇文章由:http://xinpure.com/php-based-on-information-such-as-the-ip-address-in-your-city/ 获得IP地址 在 PHP ...
- CentOS忘记root密码解决办法
如果是忘记普通的用户密码,那还好说,用root登录命令行界面,修改即可. 但如果是root的话,那就需要这样修改了. 记住,这几篇文章说的都是对的,只是我复杂了,实际只需要将光标移到最后" ...
- XML - 十分钟了解XML结构以及DOM和SAX解析方式
引言 NOKIA 有句著名的广告语:"科技以人为本".不论什么技术都是为了满足人的生产生活须要而产生的.详细到小小的一个手机.里面蕴含的技术也是浩如烟海.是几千年来人类科技的结晶, ...