斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。但是,由于初始值的不同,可能会使似然函数陷入局部最优。下面来谈谈EM算法以及其在求解高斯混合模型中的作用。

大家好,又见面了,我是你们的朋友全栈君。

EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。但是,由于初始值的不同,可能会使似然函数陷入局部最优。下面来谈谈EM算法以及其在求解高斯混合模型中的作用。

一、   高斯混合模型(Gaussian MixtureModel, GMM)

之前写过高斯判别分析模型,利用参数估计的方法用于解决二分类问题。下面介绍GMM,它是对高斯判别模型的一个推广,也能借此引入EM算法。

假设样本集为斯坦福大学机器学习——EM算法求解高斯混合模型并且样本和标签满足联合分布斯坦福大学机器学习——EM算法求解高斯混合模型 。这里:斯坦福大学机器学习——EM算法求解高斯混合模型服从多项式分布,即斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型 ),且斯坦福大学机器学习——EM算法求解高斯混合模型 ;在斯坦福大学机器学习——EM算法求解高斯混合模型给定的情况下,斯坦福大学机器学习——EM算法求解高斯混合模型服从正态分布,即斯坦福大学机器学习——EM算法求解高斯混合模型。这样的模型称为高斯混合模型。

该模型的似然函数为:

斯坦福大学机器学习——EM算法求解高斯混合模型

如果直接令斯坦福大学机器学习——EM算法求解高斯混合模型的各变量偏导为0,试图分别求出各参数,我们会发现根本无法求解。但如果变量斯坦福大学机器学习——EM算法求解高斯混合模型是已知的,求解便容易许多,上面的似然函数可以表示为:

斯坦福大学机器学习——EM算法求解高斯混合模型

利用偏导求解上述式,可分别得到参数斯坦福大学机器学习——EM算法求解高斯混合模型的值:

斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型

其中,#{ }为指示函数,表示满足括号内条件的数目。

那么,变量斯坦福大学机器学习——EM算法求解高斯混合模型无法通过观察直接得到,斯坦福大学机器学习——EM算法求解高斯混合模型就称为隐变量,就需要通过EM算法,求解GMM了。下面从Jensen不等式开始,介绍下EM算法:

二、   Jensen不等式(Jensen’s inequality)

引理:如果函数f的定义域为整个实数集,并且对于任意x或斯坦福大学机器学习——EM算法求解高斯混合模型存在斯坦福大学机器学习——EM算法求解高斯混合模型或函数的Hessian矩阵斯坦福大学机器学习——EM算法求解高斯混合模型,那么函数f称为凹函数。斯坦福大学机器学习——EM算法求解高斯混合模型或函数的Hessian矩阵H>0,那么函数f严格凹函数。

存在斯坦福大学机器学习——EM算法求解高斯混合模型或函数的Hessian矩阵斯坦福大学机器学习——EM算法求解高斯混合模型,那么函数f称为凸函数;如果斯坦福大学机器学习——EM算法求解高斯混合模型或函数的Hessian矩阵 H<0,那么函数f严格凸函数。)

定理:如果函数f是凹函数,X为随机变量,那么:

斯坦福大学机器学习——EM算法求解高斯混合模型

不幸的是很多人都会讲Jensen不等式记混,我们可以通过图形的方式帮助记忆。下图中,横纵坐标轴分别为X和f(X),f(x)为一个凹函数,a、b分别为变量X的定义域,E[X]为定义域X的期望。图中清楚的看到各个量的位置和他们间的大小关系。反之,如果函数f是凸函数,X为随机变量,那么:

斯坦福大学机器学习——EM算法求解高斯混合模型

Jensen不等式等号成立的条件为:斯坦福大学机器学习——EM算法求解高斯混合模型,即X为一常数。

斯坦福大学机器学习——EM算法求解高斯混合模型

三、   EM算法

假设训练集斯坦福大学机器学习——EM算法求解高斯混合模型是由m个独立的样本构成。我们的目的是要对斯坦福大学机器学习——EM算法求解高斯混合模型概率密度函数进行参数估计。它的似然函数为:

斯坦福大学机器学习——EM算法求解高斯混合模型

然而仅仅凭借似然函数,无法对参数进行求解。因为这里的随机变量斯坦福大学机器学习——EM算法求解高斯混合模型是未知的。

EM算法提供了一种巧妙的方式,可以通过逐步迭代逼近最大似然值。下面就来介绍下EM算法:

假设对于所有i,斯坦福大学机器学习——EM算法求解高斯混合模型皆为随机变量斯坦福大学机器学习——EM算法求解高斯混合模型的分布函数。即:斯坦福大学机器学习——EM算法求解高斯混合模型。那么:

斯坦福大学机器学习——EM算法求解高斯混合模型

其中第(2)步至第(3)步的推导就使用了Jensen不等式。其中:f(x)=log x,斯坦福大学机器学习——EM算法求解高斯混合模型,因此为凸函数;斯坦福大学机器学习——EM算法求解高斯混合模型表示随机变量为斯坦福大学机器学习——EM算法求解高斯混合模型概率分布函数为斯坦福大学机器学习——EM算法求解高斯混合模型的期望。因此有:

斯坦福大学机器学习——EM算法求解高斯混合模型

这样,对于任意分布斯坦福大学机器学习——EM算法求解高斯混合模型,(3)都给出了斯坦福大学机器学习——EM算法求解高斯混合模型的一个下界。如果我们现在通过猜测初始化了一个斯坦福大学机器学习——EM算法求解高斯混合模型的值,我们希望得到在这个特定的斯坦福大学机器学习——EM算法求解高斯混合模型下,更紧密的下界,也就是使等号成立。根据Jensen不等式等号成立的条件,当斯坦福大学机器学习——EM算法求解高斯混合模型为一常数时,等号成立。即:

斯坦福大学机器学习——EM算法求解高斯混合模型

由上式可得斯坦福大学机器学习——EM算法求解高斯混合模型,又斯坦福大学机器学习——EM算法求解高斯混合模型,因此斯坦福大学机器学习——EM算法求解高斯混合模型。再由上式可得:

斯坦福大学机器学习——EM算法求解高斯混合模型

上述等式最后一步使用了贝叶斯公示。

EM算法有两个步骤:

(1)通过设置初始化斯坦福大学机器学习——EM算法求解高斯混合模型值,求出使似然方程最大的斯坦福大学机器学习——EM算法求解高斯混合模型值,此步骤称为E-步(E-step)

(2)利用求出的斯坦福大学机器学习——EM算法求解高斯混合模型值,更新斯坦福大学机器学习——EM算法求解高斯混合模型。此步骤称为M-步(M-step)。过程如下:

repeat until convergence{

   (E-step) for each i, set

斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型

      (M-step) set

斯坦福大学机器学习——EM算法求解高斯混合模型

那么,如何保证EM算法是收敛的呢?下面给予证明:

假设斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型是EM算法第t次和第t+1次迭代所得到的参数斯坦福大学机器学习——EM算法求解高斯混合模型的值,如果有斯坦福大学机器学习——EM算法求解高斯混合模型,即每次迭代后似然方程的值都会增大,通过逐步迭代,最终达到最大值。以下是证明:

斯坦福大学机器学习——EM算法求解高斯混合模型

不等式(4)是由不等式(3)得到,对于任意斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型值都成立;得到不等式(5)是因为我们需要选择特定的斯坦福大学机器学习——EM算法求解高斯混合模型使得方程斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型处的值大于在斯坦福大学机器学习——EM算法求解高斯混合模型处的值;等式(6)是找到特定的斯坦福大学机器学习——EM算法求解高斯混合模型的值,使得等号成立。

最后我们通过图形的方式再更加深入细致的理解EM算法的特点:

斯坦福大学机器学习——EM算法求解高斯混合模型

由上文我们知道有这样的关系:斯坦福大学机器学习——EM算法求解高斯混合模型,EM算法就是不断最大化这个下界,逐步得到似然函数的最大值。如下图所示:

首先,初始化斯坦福大学机器学习——EM算法求解高斯混合模型,调整斯坦福大学机器学习——EM算法求解高斯混合模型使得斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型相等,然后求出斯坦福大学机器学习——EM算法求解高斯混合模型使得到最大值的斯坦福大学机器学习——EM算法求解高斯混合模型;固定斯坦福大学机器学习——EM算法求解高斯混合模型,调整斯坦福大学机器学习——EM算法求解高斯混合模型,使得斯坦福大学机器学习——EM算法求解高斯混合模型斯坦福大学机器学习——EM算法求解高斯混合模型相等,然后求出使斯坦福大学机器学习——EM算法求解高斯混合模型得到最大值的斯坦福大学机器学习——EM算法求解高斯混合模型;……;如此循环,使得斯坦福大学机器学习——EM算法求解高斯混合模型的值不断上升,直到k次循环后,求出了斯坦福大学机器学习——EM算法求解高斯混合模型的最大值斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型

四、   EM算法应用于混合高斯模型(GMM)

再回到GMM:上文提到由于隐变量斯坦福大学机器学习——EM算法求解高斯混合模型的存在,无法直接求解参数,但可以通过EM算法进行求解:

E-Step:

 
斯坦福大学机器学习——EM算法求解高斯混合模型

M-Step:

 
斯坦福大学机器学习——EM算法求解高斯混合模型

(1)参数斯坦福大学机器学习——EM算法求解高斯混合模型
对期望斯坦福大学机器学习——EM算法求解高斯混合模型的每个分量斯坦福大学机器学习——EM算法求解高斯混合模型求偏导:

斯坦福大学机器学习——EM算法求解高斯混合模型

令上式为0,得:

斯坦福大学机器学习——EM算法求解高斯混合模型

(2)参数 

观察M-Step,可以看到,跟斯坦福大学机器学习——EM算法求解高斯混合模型相关的变量仅仅有斯坦福大学机器学习——EM算法求解高斯混合模型。因此,我们仅仅需要最大化下面的目标函数:

斯坦福大学机器学习——EM算法求解高斯混合模型

又由于斯坦福大学机器学习——EM算法求解高斯混合模型,为约束条件。因此,可以构造拉格朗日算子求目标函数:

斯坦福大学机器学习——EM算法求解高斯混合模型

求偏导:

斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型得:

斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型带入上式得:

斯坦福大学机器学习——EM算法求解高斯混合模型

最后将斯坦福大学机器学习——EM算法求解高斯混合模型带入得:

斯坦福大学机器学习——EM算法求解高斯混合模型

(3)参数斯坦福大学机器学习——EM算法求解高斯混合模型

斯坦福大学机器学习——EM算法求解高斯混合模型

令上式为零,解得:

斯坦福大学机器学习——EM算法求解高斯混合模型

五、   总结

EM算法利用不完全的数据,进行极大似然估计。通过两步迭代,逐渐逼近最大似然值。而GMM可以利用EM算法进行参数估计。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148679.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot整合Mybatis超详细流程

    SpringBoot整合Mybatis超详细流程SpringBoot整合Mybatis超详细流程文章目录SpringBoot整合Mybatis超详细流程前言详细流程0.引入Mybatis1.创建数据2.创建程序目录3.理解后台访问流程4.核心文件配置5.编写entity6.编写dao7.编写Mapper8.编写Service9.编写Controller10.运行项目参考文章前言MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且

    2025年7月16日
    0
  • vue长列表渲染_vray渲染白模教程

    vue长列表渲染_vray渲染白模教程循环在模板中可以用v-for指令来循环数组,对象等。循环数组我们可以用v-for指令基于一个数组来渲染一个列表。v-for指令需要使用iteminitems形式的特殊语法,其中it

    2022年7月29日
    10
  • 内连接,左右连接和全连接的区别是什么_sql左连接和右连接区别

    内连接,左右连接和全连接的区别是什么_sql左连接和右连接区别举例说明假设您有两个表,每个表只有一个列,表数据如下 AB–13243546 注意,(1,2)是A表唯一的,(3,4)是公共的,并且(5,6)是B表独有的 内连接 内连接是A表的所有行交上B表的所有行得出的结果集 select*fromaINNERJOINbona.a=b.b;se…

    2022年9月19日
    1
  • 一些书籍和下载链接地址读研究生

    一些书籍和下载链接地址读研究生

    2022年1月7日
    42
  • shell数组变量赋值_形参可以是常量变量或表达式

    shell数组变量赋值_形参可以是常量变量或表达式1.定义数组bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似于C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。在Shell中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:【示例】定义数组:array_name=(value0value1value2value3)数组的值类型任意,个数不限可以不使用连续的下标,而且下标的范围没有限制:array_name=([0]

    2025年6月26日
    0
  • 图像处理算法其实都很简单「建议收藏」

    图像处理算法其实都很简单「建议收藏」要学习高斯模糊我们首先要知道一些基本概念:线性滤波与卷积的基本概念    线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。

    2022年5月17日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号