python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...
1 GMM基础
高斯混合模型(GMM)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。
灵魂的拷问:为什么GMM可以拟合出任意类型的分布?
AI大语音:不仅GMM可以,只要性质不太奇怪的混合模型一般都能近似任意分布。这个思想和泰勒展开、傅里叶变换是类似的,任何波形都可以用正弦波叠加表示,而且频率还是基频的整数倍。
利用高斯混合模型进行聚类,本质上可以这么理解:
数据的分布由若干高斯分布组合而成,需要通过传入的无标记数据,求解出各个高斯模型的参数和各个模型的先验概率!不同于一般利用最大似然估计参数的情况在于由于传入的数据无标记,也就是说缺少了观测数据的类别这个隐藏信息,所以这个隐藏信息的概率分布也成了估计内容之一,从而无法通过求偏导进行梯度下降来求解,于是利用了EM。
设有随机变量X,则混合高斯模型可以用下式表示:
其中N(x∣μk,Σk)称为混合模型中的第k个分量。
其中, ∈ ,为高斯分布的均值向量, ∈ × ,为高斯分布的协方差矩阵。
若有三个聚类,可以用三个二维高斯分布来表示,那么分量数K=3。 πk是混合系数,且满足:
可以认为πk就是每个分量N(x∣μk,Σk)的权重。
2 GMM的隐变量
隐变量是一个辅助变量,GMM的隐变量表示的是样本x属于哪一个高斯分布。
隐变量是一个向量,并且这个向量中只有一个元素取值为1,其它的都是0。因为假设只有一个高斯分量被选中并产生观测数据。然而我们的GMM的一个观测数据在直观上应该是每个高斯分量都有产生,而不是由一个高斯分量单独生成,只是重要性不同(由系数控制)
假设我们知道数据可以分为两类,在随机抽取一个数据点,不知道这个数据来自第一类还是第二类,类比GMM中K1、K2的高斯分模型,不知道数据来自哪个分模型。
隐变量就是为了描述数据归属看不见这个现象的。
隐变量是一个离散的随机变量。
GMM中K1、K2、K3类比箱子1、箱子2、箱子3,类比HMM中状态1、状态2、状态3。
3 GMM训练问题
极大似然估计、EM
1) 极大似然估计
利用不完全数据(只有观测数据)的边缘分布。
给定一些观测数据X={x},假设{x}符合混合高斯分布:
求解一组混合高斯模型的参数使得:
对目标函数取对数:
对数似然函数分别对参数 , , 求导,使得导数等于0,来更新参数。
目标函数是和的对数,这时候求导比较困难,形式复杂,同时,还有个问题就是求一个参数的时候会依赖其他参数的值,但是其他参数的值其实也是未知的,也是待估计的。
因此需要EM算法。
2)EM算法估计
利用完全数据的联合概率分布。
完全数据的似然函数:
取对数:
计算 的后验概率:
完全数据的对数似然关于潜变量的期望值Q函数:
对参数 , , 求导,使得导数等于0,来更新参数。(过程中应用到拉格朗日乘子法)
4 EM算法深入理解
第一层:E期望+M最大化(看山是山)(直观理解)
所谓直观理解就是将EM分成E步+M步进行组合。
隐变量的似然度:
E-step:
M-step:
第二层:局部下限构造(看山是沙)(细致入微)
细致入微看看E步M步的本质。
补充三个知识:
a) Jenson不等式
若f(x)为严格凹函数,X为实值随机变量,且期望存在,则下述不等式成立:
f(E(X))<=E(f(X))
当且仅当X≡E(X),即X为常数时,不等式取等号。
Jensen不等式应用于凸函数时,不等号方向反向,也就是:
f(E(X))>=E(f(X))、
(AI大道理:很多资料将左图称为凸函数,右图称为凹函数,这是翻译问题,不必理会。见图判断最准确。)
b) 条件概率
c) 联合分布求和等于边缘分布
深入到基于隐变量的EM算法的收敛性证明, 基于log(x)函数的Jensen不等式构造, 容易证明,EM算法是在反复的构造新的下限,然后进一步求解。
利用补充知识a)的Jenson不等式:
什么是KL散度?KL散度 是衡量两个概率分布之 间差异的一个度量。
在之前的EM算法中,E步所计算的 ( , )实际上等价于计算ℒ( , )
从参数空间理解EM算法:
红线表示观测数据的对数似然,蓝线表示在原始参数下,下边界ℒ (q, θ )的变化,在M步,最大化下边界ℒ (q, θ) 关于参数θ,得到新的参数,此时得到的新的下边界绿线所示,继续进行E步和M步,直到达到观测数据的最大似然。
先固定当前参数, 计算得到当前隐变量分布的一个下届函数, 然后优化这个函数, 得到新的参数, 然后循环继续。
第三层:K-均值方法是一种Hard EM算法(看峰是山)(举一反三)
举一反三,概率的极端是0和1,那么K-means也是EM算法的一种。
k均值聚类算法是一种迭代求解的聚类分析算法,其步骤是:
k均值聚类是使用最大期望算法。
K-均值在讨论隐变量的决定时候,用的是dirac delta 分布, 这个分布是高斯分布的一种极限。
第四层:EM 是 广义EM的特例(看山是群山峻岭)
广义EM包括传统EM和类似K-means算法的其他EM。
充分理解了k-均值和EM算法本身的演化和差异可以理解到隐变量是存在一种分布的。
跨过隐变量, 进入隐分布的境界。
只要满足E步骤是固定参数优化隐分布, M步骤是固定隐分布优化参数,都是广义EM算法。
附录(魔鬼写手)
——————
浅谈则止,细致入微AI大道理
扫描下方“AI大道理”,选择“关注”公众号
欢迎加入!
▼下期预告▼
AI大语音(七)——基于GMM的0—9语音识别系统
▼往期精彩回顾▼
AI大语音(一)——语音识别基础
AI大语音(二)——语音预处理
AI大语音(三)——傅里叶变换家族
AI大语音(四)——MFCC特征提取
AI大语音(五)——隐马尔科夫模型(HMM)
留你心,言你想
python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...相关推荐
- python gmm em算法 2维数据_python自学日记18——数据结构与算法(2)
这两天找了很多关于Python讲解数据结构和算法的书和视频,最终确定下来<python数据结构与算法分析>以及北京大学线上课程"数据结构与算法python版",先看了课 ...
- ASR 混合高斯模型GMM的理解
混合高斯模型(GMM)是使用非常广泛的统计模型,一种非常高调的说法是,混合高斯模型能拟合一切数据.虽然实际还是受到很多限制,比如混合高斯分布数量需要确定等等,不难看出其强大指出.此文包含以下内容: G ...
- 运动检测(前景检测)之(二)混合高斯模型GMM
因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新的方法和思路.个人了解的大概概括为以下一些: 帧差.背景减除(GMM.CodeBook. SOBS. SACON. VIBE. W4.多 ...
- 混合高斯模型(GMM)
1.GMM模型 单高斯模型的基本表达式为, N(x;μ,Σ)=12π|Σ|−−−−−√exp[−12(x−μ)TΣ−1(x−μ)] N(x;\mu,\Sigma)=\frac{1}{\sqrt{2\p ...
- 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}
https://blog.csdn.net/lin_limin/article/details/81048411会对GMM和EM做详细介绍 本文参考: http://www.ituring.com.c ...
- 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)
最近在看晓川老(shi)师(shu)的博士论文,接触了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被论文中 ...
- EM算法 估计混合高斯模型参数 Python实现
EM算法 估计混合高斯模型参数 Python实现 EM算法是一种用来解决含有隐变量问题的算法,混合高斯模型中对于某个数据我们并不知道是来自于哪个模型,因此可以视为隐 变量,故可以采用隐含高斯模型来求解 ...
- 【机器学习】python使用matplotlib进行二维数据绘图并保存为png图片
端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...
- 可视化:python绘制多组多维数据雷达图
超过3维的数据用雷达图可以十分直观地展示.本文实践过程中以灰度共生矩阵的4项常用指标为例. python绘制多组多维数据雷达图 所使用的数据如下所示:每一行是一个样本,每个样本有4维特征(列). 封装 ...
最新文章
- Superset配置hive数据源
- python下异常处理
- 眼睛很疼(2005-5-10)
- Unity3D4.* NGUI制作动态字库
- 美团点评境外度假团队前端项目开发实践总结
- 【建议收藏】数据中心服务器基础知识大全
- .NetCore Session.Redis
- 组合数学-容斥原理-求指定区间内与n互素的数的个数
- vue视频保存不下来_女子直播吃章鱼被“反杀”!拔不下来了,视频超痛……
- 单片机编程用什么软件?单片机开发软件有哪些?
- 解析二进制文件的工具方法
- oracle12c集群安装—grid安装
- 台电平板(X80HD)刷WIN10
- 处理器仿存带宽_《CPU与内存的带宽搭配》
- 新知实验室 TRTC在线上教育场景中的一种应用实践
- 有理数相加c语言结构体,有理数的加法
- n-gram代码实现源码
- 实现表格隔行变色的方法
- Severance:BoD[官方英文版][资源收集分享]
- 不同操作系统计算机传输文件(scp命令)
热门文章
- python界面-python 可视化界面
- js 语音识别_js语音识别_js 语音识别库 - 云+社区 - 腾讯云
- 基于语音识别技术的声控鼠标光标程序设计
- 10.66道经典的Java基础面试题集锦为何晴空
- 【Spring笔记】使用javaconfig配置
- 【二叉树】剑指offer:二叉树中序遍历的下一个节点
- 【王道计组笔记】数制、编码、校验
- 蓝桥杯1427: -买不到的数目(百钱百鸡问题变体)
- ubuntu16.04安装python.h_ubuntu16.04安装python3.6踩过的坑
- 博思得标签打印机驱动_惠普LaserJet 5200n驱动-惠普HP LaserJet 5200n打印机驱动下载 v61.074.561.43官方版...