EM算法(二)-算法初探

一、EM算法简介

在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种含隐变量的极大似然估计要用EM算法解决,继而罗列了EM算法的简单过程,当然最后看到EM算法时内心是懵圈的,我们也简要的分析了一下,那回过头来,重新看下EM算法的简单介绍:

输入:观测变量数据Y,隐变量数据Z,联合分布$P(Y,Z|\theta)$,条件分布$P(Z|Y,\theta)$
输出:模型参数$\theta$
(1)选择参数初值$\theta^{(0)}$,进行迭代;
(2)E步:记$\theta^{(i)}$为第i次迭代参数$\theta$的估计值,在i+1次迭代的E步,计算:

$$Q(\theta,\theta^{(i)}) =E_Z[logP(Y,Z | \theta)|\color{red}{Y,\theta^{(i)}}]\ =\sum_Z{logP(Y,Z|\theta)\color{red}{P(Z|Y,\theta^{(i)})}} \tag{1}$$

(3)M步:求使得$Q(\theta,\theta^{(i)})$极大化的$\theta$,确定i+1次迭代的参数估计值$\theta^{(i+1)}$

$$\theta^{(i+1)}=argmax_\theta Q(\theta,\theta^{(i)}) \tag{2}$$

(4)重复第(2)步和第(3)步,直到收敛

上述E步中的函数$Q(\theta,\theta^{(i)})$是EM算法的核心,称之为Q函数(Q function)。
Q函数完全数据的对数似然函数$logP(Y,Z | \theta)$关于在给定观测数据$Y$和当前参数$\theta^{(i)}$下,对未观测数据Z的条件概率分布$P(Z|Y,\theta^{(i)})$的期望。
让我们且慢下来看下Q函数,这里重点词很多。首先,很显然Q函数是个期望,这没有问题;其次这个期望是某个函数(完全数据下的对数似然函数)关于某个概率分布(在xxx条件下,未观测数据Z的条件概率分布)的期望。读到这里的你可能对函数关于某个概率分布的期望不太明白。我就在这个插个小插曲介绍下,懂的可以略过:

知识点一:条件数学期望

上面牵扯到的函数关于某个概率分布的期望,在数学中叫条件数学期望
首先,条件概率我们已经熟悉,就是在事件$ {X=x_i}$已经发生的条件下,事件${Y=y_j}$发生的概率,记作$P{Y=y_j|X=x_i}$;
而条件期望是一个实数随机变量的相对于一个条件概率分布的期望值。设X和Y是离散随机变量,则X的条件期望在给定事件Y = y条件下是x的在Y的值域的函数:

{:.center}
?????? (3)
{:.center}

个人感觉可以理解为在各个条件概率分布下的加权平均。

那么继续理解Q函数,看E步中公式(1),函数$logP(Y,Z| \theta)$是关于Z的,而在$Y,\theta^{(i)}$的条件下就是指隐含变量Z在此条件下,也就是在概率分布$P(Z|Y,\theta^{(i)})$条件下,所以公式1中红色部分的变形就很好理解了。对数似然函数$logP(Y,Z| \theta)$就是完全数据的对数似然函数,里面有隐变量Z,所以想要求此函数中Z的条件数学期望就要加入对Z的条件概率分布。
E步获得了隐含变量的条件数学期望后,我们要做的就是拿着个值取求模型参数$\theta$使得Q函数的值最大(极大似然估计求导)。所以,在M步中,对于$Q(\theta,\theta^{(i)})$求极大值,得到$\theta^{(i+1)}$,完成一次迭代$\theta^{(i)} \to \theta^{(i+1)}$,我们之后在证明每次迭代必定会使得Q函数值增大或者能达到局部最优(第二部分提供证明)。最后,停止的迭代条件一般是要求设置比较小的值$\epsilon_1,\epsilon_2$,若满足$||\theta^{(i+1)}-\theta^{(i)}||<\epsilon_1$或者$||Q(\theta^{(i+1)},\theta^{(i+1)})-Q(\theta^{(i)},\theta^{(i)})||<\epsilon_2$。

二、EM算法导出

为什么EM算法能近似实现观测数据的极大似然估计呢?我们面对一个含有隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数$\theta$的对数似然函数,即最大化:

$$L(\theta) =logP(Y|\theta) =log\sum_Z{logP(Y,Z|\theta)} =log(\sum_Z{P(Y|Z,\theta)P(Z|\theta)}) \tag{4}$$

着个式子的困难就是公式(4)中含有未观测数据,而且含有和(或者积分)的对数。
而EM算法是通过迭代逐步近似极大化$L(\theta)$的。这里假设第i此迭代后$\theta$的估计值是$\theta^{(i)}$,那么我们计算下新的估计值$\theta$能否使得$L(\theta)$增加,即$L(\theta)>L(\theta^{(i)})$,并逐步到达最大值?于是我们考虑两者的差值:

$$L(\theta)-L(\theta^{(i)})=log \left( \sum_Z{P(Y|Z,\theta)P(Z|\theta)} \right)-logP(Y|\theta^{(i)}) \tag{5}$$

对于公式(5)我们需要一个变形,但是变形需要知道Jensen inequality。

知识点二:Jensen inequality(詹森不等式)

//TODO

稍微了解完Jensen不等式,我们继续来看公式(5),首先把公式(5)变形,前部分中分子分母同时乘以一个$\color{blue}{P(Y|Z,\theta^{(i)})}$,清晰起见,我们标上蓝色和中括号,如下:

$$
\begin{align}
L(\theta)-L(\theta^{(i)}) &=log \left( \sum_Z \left[ {\color{blue}{P(Z|Y,\theta^{(i)})} \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}}} \right] \right) -log\color{ForestGreen}{P(Y|\theta^{(i)})} \
&\ge \sum_Z \left[ \color{blue}{P(Z|Y,\theta^{(i)})} log \left( \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}} \right) \right] -log\color{ForestGreen}{P(Y|\theta^{(i)})} \
&= \sum_Z \left[ \color{blue}{P(Z|Y,\theta^{(i)})} log \left( \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}} \right) \right] - \underbrace{\color{blue}{\sum_Z{P(Z|Y,\theta^{(i)}})}}_{=1} log\color{ForestGreen}{P(Y|\theta^{(i)})} \
&= \sum_Z \left[ \color{blue}{P(Z|Y,\theta^{(i)})} log \left( \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}\color{ForestGreen}{P(Y|\theta^{(i)})}} \right) \right]
\end{align}
\tag{6}$$

这里我们令

$$B(\theta,\theta^{(i)}) = L(\theta^{(i)}) + \sum_Z \left[ \color{blue}{P(Z|Y,\theta^{(i)})} log \left( \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}\color{ForestGreen}{P(Y|\theta^{(i)})}} \right) \right] \tag{7}$$

则可以得到:

$$L(\theta) \ge B(\theta,\theta^{(i)}) \tag{8}$$

可以知道$B(\theta,\theta^{(i)})$函数是$L(\theta)$的一个下界,且由公式(7)可知:

$$L(\theta^{(i)}) = B(\theta^{(i)},\theta^{(i)})$$

因此,任何可以使得$B(\theta,\theta^{(i)})$增大的$\theta$,也可以使$L(\theta)$增大。为了使得$L(\theta)$有尽可能的大的增长,选择$\theta^{(i+1)}$使$B(\theta,\theta^{(i)})$达到极大,即:

$$\theta^{(i+1)}=argmax_\theta B(\theta,\theta^{(i)}) \tag{9}$$

现在求$\theta^{(i+1)}$,省略常数化项:

$$
\begin{align}
\theta^{(i+1)} &= argmax_\theta \left( L(\theta^{(i)}) + \sum_Z \color{blue}{P(Z|Y,\theta^{(i)})} log \left( \frac{P(Y|Z,\theta)P(Z|\theta)}{\color{blue}{P(Z|Y,\theta^{(i)})}\color{ForestGreen}{P(Y|\theta^{(i)})}} \right) \right) \
&= argmax_\theta \left( \sum_Z \color{blue}{P(Z|Y,\theta^{(i)})} log \left( P(Y|Z,\theta)P(Z|\theta) \right) \right) \
&= argmax_\theta \left( \sum_Z \color{blue}{P(Z|Y,\theta^{(i)})} log \left( P(Y|Z,\theta) \right) \right) \
&= argmax_\theta Q(\theta,\theta^{(i)})
\end{align}
\tag{10}
$$

公式(10)中等价于EM算法的一次迭代,即求Q函及其极大化。EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。

三、EM算法应用

EM算法有很多应用,求分类、回归、标注等任务。比较广泛的就是GMM混合高斯模型、HMM隐马尔可夫训练问题等等。

原文地址:https://www.cnblogs.com/datasnail/p/9545385.html

时间: 2024-11-05 23:25:51

EM算法(二)-算法初探的相关文章

处理分类问题常用算法(二)-----算法岗面试题

● 分层抽样的适用范围 参考回答: 分层抽样利用事先掌握的信息,充分考虑了保持样本结构和总体结构的一致性,当总体由差异明显的几部分组成的时候,适合用分层抽样. ● LR的损失函数 参考回答: M为样本个数,为模型对样本i的预测结果,为样本i的真实标签. ● LR和线性回归的区别 参考回答: 线性回归用来做预测,LR用来做分类.线性回归是来拟合函数,LR是来预测函数.线性回归用最小二乘法来计算参数,LR用最大似然估计来计算参数.线性回归更容易受到异常值的影响,而LR对异常值有较好的稳定性. ● 生

EM最大期望算法

参考资料:http://blog.csdn.net/zouxy09/article/details/8537620 http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html 我的数据挖掘算法代码实现:https://github.com/linyiqun/DataMiningAlgorithm 介绍 em算法是一种迭代算法,用于含有隐变量的参数模型的最大似然估计或极大后验概率估计.EM算法,作为一个框架思想,它可以应用在很多

数据结构与算法二

1.课程安排表: 1. 线性表 2. 字符串 3. 栈和队列 4.树 5.查找 6.排序 7.暴力枚举法 8.广度优先搜索 9.深度优先搜索 10.分治 11.贪心 12.动态规划 13.图 14.数学方法与常见模型 15.大整数运算 16. 基础功能 2.   编程技巧: 1.把较大的数组放在main 函数(全局变量)外,作为全局变量,这样可以防止栈溢出,因为栈的大小是有限制的.GCC (C编译器) 段错误 2.如果能够预估栈,队列的上限,则不要用stack,queue,使用数组来模拟,这样速

算法二之树形选择排序

一.树形选择排序的基本思想 (1) 树形选择排序又称锦标赛排序(Tournament Sort),是一种按照锦标赛的思想进行选择排序的方法.首先对n个记录的关键字进行两两比较,然后在n/2个较小者之间再进行两两比较,如此重复,直至选出最小的记录为止. (2) 树形选择排序(Tree Selection Sort),这个过程可用一棵有n个叶子结点的完全二叉树表示. 例如,图表中的二叉树表示从8个数中选出最小数的过程. 8个叶子结点到根接点中的关键字,每个非终端结点中的数均等于其左右孩子结点中较小的

算法系列笔记8(有关图的算法二—最短路径问题)

图的最短路径问题主要分为两类,单源最短路径问题和全对最短路径问题.单源最短路径问题指给点单个源点,求其到所有其它顶点之间的最短距离.而全对最短路径问题指所有顶点之间的最短路劲问题.此外对于单对最短路径问题,从渐进意义上来看,目前还没有比最好的单元算法更快的算法来解决这一问题. 一:单源最短路径问题 单源最短路劲问题根据其权重分为四类,当图G=(V,E)为无权图,直接使用广度优先遍历(这里不做介绍):当权值为非负值,则使用Dijkstra算法:存在负权值及负权环,可以使用Bellman-Ford算

Graham算法—二维点集VC++实现

一.凸包定义 通俗的说就是:一组平面上的点,求一个包含所有点的最小凸多边形,这个最小凸多边形就是凸包. 二.Graham算法思想 概要:Graham算法的主要思想就是,最终形成的凸包,即包围所有点的凸多边形,假定多边形是按逆时针方向生成的,那么多边形内部包围的所有点与多边形每个有向边的关系都是:点在有向边的左边.依照此思想,只要找到一个出发点,然后依此出发点按逆时针方向构建多边形,并保证每加入一条有向边时,都要满足其余点都在该边的左边. ***点与线的关系定义:平面上的三点P1(x1,y1),P

Kruskal算法(二)之 C++详解

本章是克鲁斯卡尔算法的C++实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3. 克鲁斯卡尔算法图解 4. 克鲁斯卡尔算法分析 5. 克鲁斯卡尔算法的代码说明 6. 克鲁斯卡尔算法的源码 转载请注明出处:http://www.cnblogs.com/skywang12345/ 更多内容:数据结构与算法系列 目录 最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的

每周算法(二)

每周算法 二 视屏地址:http://edu.51cto.com/course/course_id-5113.html 1.  递归实现my_strlen <1> 题目描述:实现求字符串长度函数my_strlen <2> 方法一:直接法 <3> 方法二:递归法 2.  递归实现n! <1> 题目描述:输入n值,求解n的阶乘 <2> 方法一:累乘法 <3> 方法二:递归法 3.  递归实现斐波那契数列Fib(n) <1> 题

白话经典算法二叉堆排序之思想简介

常用的排序算法有冒泡排序,插入排序和选择排序.他们的时间复杂度是o(n2),与数据量的平方成正比.他们的效率还是比较低的.现在来说说他们的效率为什么比较低下.以冒泡排序为例,它每一轮都是与相邻的元素进行交换,交换的距离为1,每次每个(没有冒泡出来的)元素都要与前一个比较再交换.每次相邻的比较只能比较出两个元素的大小,不能以整个数组进行参照来确定在整个数组里的大小,也就是说每次的比较不能确定其他元素的相对位置,因而每次比较的贡献不大,所以这样的比较是笨拙的,进而需要完全比较O(n2)次才能得出正确