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算法--原理的更多相关文章

  1. 2. EM算法-原理详解

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 概率 ...

  2. EM算法原理简析——图解

    一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过 ...

  3. EM算法原理总结

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等.本文就对 ...

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

    EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...

  5. EM算法原理

    在聚类中我们经经常使用到EM算法(i.e. Estimation - Maximization)进行參数预计, 在该算法中我们通过函数的凹/凸性,在estimation和maximization两步中 ...

  6. EM算法原理详解

    1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型 ...

  7. 【转】EM算法原理

    EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶 ...

  8. 4-EM算法原理及利用EM求解GMM参数过程

    1.极大似然估计 原理:假设在一个罐子中放着许多白球和黑球,并假定已经知道两种球的数目之比为1:3但是不知道那种颜色的球多.如果用放回抽样方法从罐中取5个球,观察结果为:黑.白.黑.黑.黑,估计取到黑 ...

  9. EM算法 The EM Algorithm

    (EM算法)The EM Algorithm http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html EM算法原理 http: ...

随机推荐

  1. Hibernate关系映射(二) 基于外键的双向一对一

    基于外键的双向一对一关联映射 需要在一端添加<one-to-one>标签,用property-ref来指定反向属性引用. 还是通过刚才用户和地址来演示双向一对一关联. 代码演示 一.实体类 ...

  2. 如何让你的webapp也能跳窗口搜索

    目前很多手机app或者一些webapp,搜索栏基本采用跳窗口的搜索方式 怎么做 实现方式: 1.在触发外层的input的时候打开个modal层,默认打开该modal层的时候就触发了moda里面的inp ...

  3. SQLiteDatabase 源码

    /** * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Vers ...

  4. c++11 Using Callable Objects, std::thread, std::bind, std::async, std::call_once

  5. 乐鑫esp8266基于freeRtos实现私有服务器本地远程OTA升级

    目录 一.前言: 二.回顾下OTA的流程: 三.lwip网络框架的知识的使用: 四.如何处理服务器返回的数据? 五.扇区的擦除和烧写? 六.如何调用? 七.好好享用吧! 八.下载: 九.工程截图: 代 ...

  6. UIScrollerView当前显示3张图

    代码地址如下:http://www.demodashi.com/demo/11173.html WSLScrollView 功能描述:这是在继承UIView的基础上利用UIScrollerView进行 ...

  7. sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业,必须执行SVC

    sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业.必须执行SVC       ...

  8. SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,

    1.用一条sql语句 select (case when a>b then a else b end ),(case when b>c then b esle c end)  from 表 ...

  9. php_memcahed 安装

    1.下载服务端memcached软件 32bit:下载 memcached-win32-1.4.4-14.zip(直接下)里面包含6个文件,将解压后的文件夹随便放在什么位置(例如:D:\wamp_wi ...

  10. PHP 抽象类的使用

    //抽象类就是一个模版 abstract class db{ /* 参数:sql语句 返回值:索引的数组 */ abstract public function test($str); //没有方法体 ...