作者:CHEONG

公众号:AI机器学习与知识图谱

研究方向:自然语言处理与知识图谱

阅读本文之前,首先注意以下两点:

1、机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看。

2、文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:GMM第二讲,可添加微信号【17865190919】进学习交流群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!

本文主要介绍高斯混合模型的Learning问题,探讨是使用最大似然估计还是EM算法,以及完整的求解思路。

一、问题定义

看如下表格中展现了某个高斯混合模型由c1,c2,...,ckc_1,c_2,...,c_kc1​,c2​,...,ck​个高斯分布组成,其中隐变量zzz的含义是某个样本属于第i个高斯分布的概率是pip_ipi​:

C/高斯分布 c1c_1c1​ c2c_2c2​ ckc_kck​
z 1 2 k
P(z) p1p_1p1​ p2p_2p2​ pkp_kpk​

根据上述表格先给出高斯混合模型的概率密度函数p(x)p(x)p(x),公式如下:

结合表格数据,p(z=ck)p(z=c_k)p(z=ck​)是概率值pkp_kpk​,而当z=ckz=c_kz=ck​时XXX概率符合高斯分布,所以高斯混合模型的概率密度函数表示为:

因此本文求解的问题是:高斯混合模型的Learning问题,即对高斯混合模型进行参数学习。现有观测数据Observed Data X=(x1,x2,...,xk)X=(x_1,x_2,...,x_k)X=(x1​,x2​,...,xk​),隐变量ZZZ,完整数据Complete Data为(X,Z)(X,Z)(X,Z),结合上述的概率密度函数需要学习的参数即为:

本文接下来将探讨如何对上述参数Θ\ThetaΘ进行求解。

二、本文结论

结论1: 高斯混合模型Learning问题使用最大似然估计MLE,无法求出解析解,需要使用EM算法去求解高斯混合模型Learning问题的近似解。

结论2: EM算法求解过程分为E-Step和M-Step,求解过程公式推导较复杂,但需要抓住E-Step和M-Step主要目的是什么,而不能先陷入大量公式中。EM算法思想简单来说:先通过E-Step求解模型期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t)),再通过M-Step最大化期望,当迭代收敛时求出最优的参数值Θ\ThetaΘ。

三、最大似然估计为何无法求解GMM

下面首先给出若使用最大似然估计求解高斯混合模型Learning问题的推导过程:

根据上式得出结论:最后一个推导公式中log后面存在一个求和符号,对于log中存在求和符号无法继续往下求解,所以高斯混合模型无法使用MLE求出解析解,但对于单一高斯分布是可以用MLE进行求解的。

四、EM算法求解GMM

重点: 再次强调,虽然下面的公式推导很复杂,但最主要是弄清楚E-Step和M-Step主要是在做什么事情,理清楚思路比陷入到公式推导中要重要得多。

接下来讲解使用EM算法求解高斯混合模型,先给出EM算法的求解时迭代公式:

EM算法思想:先通过E-Step求解模型期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t)),再通过M-Step最大化期望,当迭代收敛时求出最优的参数值Θ\ThetaΘ。

在讲解EM算法求解高斯混合模型之前,先给出高斯混合模型的边缘概率密度函数p(x)p(x)p(x),联合概率函数p(x,z)p(x,z)p(x,z)以及条件概率密度函数p(z∣x)p(z|x)p(z∣x)。

EM算法:E-Step求解过程

接下来讲解EM算法求解高斯混合模型的E-Step,求期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t)),求解过程相对比较复杂,先直接给出期望的求解结果,不想看推导过程的可以直接跳过。经过E-Step求出的期望为:

将高斯混合模型条件概率密度函数p(z∣x)p(z|x)p(z∣x)和联合概率密度函数p(x,z)p(x,z)p(x,z)代入上式得:

下面给出该E-Step结论的推导过程,较复杂不需要了解的可以直接跳过。

可以看出上式很复杂,现在需要对上式进行简化,我们先拆除上式加和中的一项进行简化:

上式简化过程如下图展示所示:

经过简化后继续推导如下:

至此我们通过E-Step求解出高斯混合模型的期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t))

EM算法:M-Step求解过程

在E-Step我们已经求出了期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t))

将其中的ZiZ_iZi​替换成k=1,2,...,Kk=1,2,...,Kk=1,2,...,K表示,并且条件概率不展开表示为如下形式:

上面就是经过E-Step得疯狂推导得出的结论,接下来M-Step就是通过最大化期望Q(Θ,Θ(t))Q(\Theta,\Theta^{(t)})Q(Θ,Θ(t))来求解参数值:

这里以求解参数p1,p2,...,pkp_1,p_2,...,p_kp1​,p2​,...,pk​来简单讲解求解过程,使用的是拉格朗日乘子法

对于上述有约束项的最值求解,使用拉格朗日乘子法有:

我们将k从1,2,...,K1,2,...,K1,2,...,K进行赋值之后有:

其中有:

所以可得:

至此结合以下两个式子:

最终求出:

而另外两个参数求解方式和p(t+1)p^{(t+1)}p(t+1)相同。

【机器学习系列】GMM第二讲:高斯混合模型Learning问题,最大似然估计 or EM算法?相关推荐

  1. 视觉机器学习20讲-MATLAB源码示例(7)-EM算法

    视觉机器学习20讲-MATLAB源码示例(7)-EM算法 1. EM算法 2. Matlab仿真 3. 仿真结果 4. 小结 1. EM算法 最大期望算法(Expectation-Maximizati ...

  2. 【机器学习自学笔记6】高斯混合模型(GMM)

    我们知道生活中的很多现象,比如身高体重的分布,都满足高斯分布 (正态分布).而高斯混合模型,则是通过多个高斯分布的叠加,实现对数据集的拟合. 高斯分布 如果学过概率论,我们知道高斯分布的公式如下: X ...

  3. python机器学习案例系列教程——极大似然估计、EM算法

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 极大似然 极大似然(Maximum Likelihood)估计为用于已知模型的参数估计的统计学方法. 也就是求使得似然函数最大的代估参 ...

  4. 机器学习算法(1)——贝叶斯估计与极大似然估计与EM算法之间的联系

    极大似然估计 在讲解极大似然估计前,需要先介绍贝叶斯分类: 贝叶斯决策: 首先来看贝叶斯分类,经典的贝叶斯公式: 其中:p(w)为先验概率,表示每种类别分布的概率:是条件概率,表示在某种类别前提下,某 ...

  5. 国科大UCAS胡包钢教授《信息论与机器学习》课程第二讲:信息论基础一

    来源:专知 信息论中最为基本的概念就是香农熵(第8页),由此可以导出信息论中其它各种定义,以至我们常规应用的其它经验式定义(以后会提到).学习信息论基础知识时要避免仅是概念与定义的简单记忆,要尽量结合 ...

  6. 【云原生系列】第二讲:Knative 简介

    目录 一. Serverless介绍 二.Knative 介绍 2.1  Knative 的定位 2.2 Knative的组成 2.2.1 Build 构建系统 2.2.2 Serving:服务系统 ...

  7. CODING 敏捷实战系列课第二讲:Scrum 敏捷项目管理核心要素之 3355

    Scrum 是敏捷开发流派中最著名和最落地的一支,全球 70% 以上公司的敏捷转型都是以 Scrum 起步.CODING 特邀敏捷顾问.CST & CTC 认证敏捷教练申健老师将在本课程 &l ...

  8. 机器学习笔记之高斯混合模型(一)模型介绍

    机器学习笔记之高斯混合模型--模型介绍 引言 高斯混合模型介绍 示例介绍 从几何角度观察高斯混合模型 从混合模型的角度观察 概率混合模型的引出 从概率生成模型的角度观察高斯混合模型 引言 上一系列介绍 ...

  9. 机器学习教程 之 EM算法 :高斯混合模型聚类算法 (python基于《统计学习方法》实现,附数据集和代码)

    之前写过一篇博客讲述极大似然方法, 这一方法通常适用于知道观测数据 Y Y Y,求解模型参数 θ \theta θ的场合,即 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ). 但是,在更 ...

  10. 其他算法-高斯混合模型

    目录 高斯模型 单高斯模型 高斯混合模型GMM 参数估计 单高斯模型参数估计-极大似然 高斯混合模型参数估计-EM算法 GMM与k-means 高斯模型 单高斯模型 当样本数据 x∈Rx\in\mat ...

最新文章

  1. Cadence快捷键设置亲测有效!
  2. C语言面试题分享(6)
  3. LeetCode MySQL 1070. 产品销售分析 III(group by 陷阱)
  4. java http超时重连_httpclient 重连机制
  5. pandas如何通过函数修改某一列的值?
  6. 【IDE】JetBrains全家桶教程系列,学生认证 + 汉化
  7. c++怎么可以在二进制文件中读取带string的数据_文件处理 | csv文件读写
  8. java 和mysql做Android_基于Android和Java后台的朋友圈的设计和实现
  9. HP02: ssh: Could not resolve hostname hp02: Name or service not known HP01: ssh: Could not resolve h
  10. Java Mail 相关资料
  11. 计算机网络技术教研活动,(2012.09.27)计算机网络技术专业教研活动(文本).doc...
  12. 商业的10个最佳Android应用程序模板
  13. 21节点六自由度梁单元 ,悬臂有限元代码
  14. 以太坊基础---奖励
  15. 关于GPIO的内部结构及编程步骤
  16. java模仿滴滴的程序_小程序模仿滴滴打车
  17. 腾讯全民wifi驱动无法安装
  18. [深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载DRB管理
  19. 使用PowerDesigner反向生成数据模型
  20. Allegro PCB Design GXL (legacy) - 导出 PCB 中元件的坐标文件

热门文章

  1. UNIX发展历史流程图
  2. nec的reset文件摘要
  3. 命令行构建Unity项目
  4. wdcp安装多种php版本共存
  5. vector容器——容量和大小
  6. 电子信息工程求职目标_广东海洋大学电子与信息工程学院电子信息工程专业欢迎你...
  7. android示例程序剖析之记事本,Android实现记事本项目完整实例,附源代码
  8. 不等式解集怎么取_6.初中数学:一个不等式的解集,都是另一个不等式的解,求a的取值范围?...
  9. python网站开发实例 flask_Python Web开发之——构建基于Flask框架的web后端项目
  10. linux 占用缓存前10_Linux查看内存使用情况应该使用什么命令