混合高斯模型(GMM)是使用非常广泛的统计模型,一种非常高调的说法是,混合高斯模型能拟合一切数据。虽然实际还是受到很多限制,比如混合高斯分布数量需要确定等等,不难看出其强大指出。此文包含以下内容:

  • GMM模型
  • EM算法

GMM模型

1.1 简单理解GMM

首先讲一讲什么是高斯分布。在自然界数据中有个奇怪的现象:数据量满足一定量后,其统计分布呈现钟型。前人由此分析得到高斯分布。高斯分布的主要参数是数据的平均值μ\muμ和方差σ2\sigma^2σ2,记作N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2)。

从字面上理解,GMM脱胎于高斯分布,简单来说,它是多个高斯分布的混合。GMM的基本思想是,使用多个高斯分布拟合任意曲线。相比高斯分布,GMM引入另一个参数πk\pi_{k}πk​,对应第kkk个高斯分布的系数值,所以混合高斯分布可记作
GMM=∑k=1Nπk⋅N(μ,σ2)GMM = \sum_{k=1}^{N} \pi_{k} \cdot N(\mu,\sigma^2)GMM=k=1∑N​πk​⋅N(μ,σ2)
其中,πk\pi_{k}πk​是数据指向第k个高斯分布的概率。GMM思想主要体现在聚类算法上:聚类算法将数据归类到最大可能的几个集合中,形成几个类。通常,也称这种功能性明显的变量为(隐\潜变量),可理解为数据的隐藏性质。借此,GMM也能用于实现聚类。

GMM模型在处理数据时,先把数据丢到单独一个高斯分布中,接着就是简单的高斯分布问题。假设一组数据符合GMM,那么只需要估计GMM模型三个参数就好。常用的基础算法是EM算法。EM算法的好处是,它特别适合应对隐变量存在时的参数估计,但是需要提前设定好隐变量的数量。

1.2 图解GMM模型

按照之前的叙述,GMM模型是几个高斯分布的组合,示意图如下:
如果把GMM模型的估计分为两步,第一步估计πk\pi_{k}πk​得到数据指向模型的概率,第二部估计第k组高斯分布的参数μk\mu_{k}μk​和σk2\sigma_{k}^2σk2​,显然第一步是最关键也最为难以理解的部分,即,如何得到数据属于某个高斯分布的概率?

记数据指向第k个模型为事件γk\gamma_{k}γk​,其集合序列为γ=[γ1,...,γk]\gamma=[\gamma_{1},...,\gamma_{k}]γ=[γ1​,...,γk​]。于是,数据x指向第k个模型的概率为,P(x∣γk=1)=πkP(x|\gamma_{k}=1)=\pi_{k}P(x∣γk​=1)=πk​。当已知某个数据指向哪个高斯分布,即γ\gammaγ已知,则数据的概率就是高斯分布概率,有
πk=P(x∣γk=k)=N(x∣μk,σk2)\pi_{k}=P(x|\gamma_{k}=k) = N(x|\mu_{k},\sigma_{k}^2)πk​=P(x∣γk​=k)=N(x∣μk​,σk2​)
数据可能出现在每个高斯分布上,于是数据的实际概率为
P(x)=∑k=1NπkN(x∣μk,σk2)P(x) =\sum_{k=1}^N \pi_{k} N(x|\mu_{k},\sigma_{k}^2)P(x)=k=1∑N​πk​N(x∣μk​,σk2​)
当观察时间序列X=[x1,....,xT]X=[x_{1},....,x_{T}]X=[x1​,....,xT​]已知的时候,首要完成的任务是估计模型参数(π,μ,Σ)(\pi,\mu,\Sigma)(π,μ,Σ),记Σ=σk2\Sigma=\sigma_{k}^2Σ=σk2​。使用对数似然估计方法,X的联合概率表示为:
L(x1,...,xT;π,μ,Σ)=∏i=1T∑k=1NπkN(xi∣μk,σk2)L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \prod_{i=1}^{T}\sum_{k=1}^N \pi_{k} N(x_{i}|\mu_{k},\sigma_{k}^2)L(x1​,...,xT​;π,μ,Σ)=∏i=1T​∑k=1N​πk​N(xi​∣μk​,σk2​)
取对数能帮助解开累乘符号,但不能再解开每个log里的累加符号,依旧难以求导取0,估计值。所以,以上估计,将使用EM算法求出。

EM算法

2.1 简单理解EM算法

从高斯混合模型参数的求解任务,我们知道,需要实现的任务是估计出每个高斯模型中的μk\mu_{k}μk​和σk2\sigma_{k}^2σk2​。以上使用对数似然的方法无法估计多类相同参数,而EM算法可以,当然EM算法需已知类的个数

在估计过程中,EM算法首要解决的问题是,隐变量引入造成最大似然估计中每个log项内,都有累加问题。熟悉似然估计的人知道,估计函数取对数后,如果log内依然存在累加项,很难进一步完成估计。于是,根据Jensen不等式,这个问题得以解决,详细解决过程请继续往下阅读。然后估计过程被分为两个相互递进的过程:E步M步,分别对应Expectation和Maximization。

  • E步:估计数据xix_{i}xi​由属于哪类高斯分布,即估计γ\gammaγ。估计时固定μ\muμ和Σ\SigmaΣ为常数,π\piπ同样可由高斯分布求出,也固定为常数;
  • M步:已知数据是由第k类产生,估计第k类参数μ\muμ、Σ\SigmaΣ和π\piπ。

2.2 详解EM算法

2.2.1 EM的估计方程

上述说道,GMM中直接使用极大似然方法,无法借助对数手段打开所有项。先写一遍方程在此,方便后面对比

前面已经说过,EM算法用于估计带隐变量的参数,GMM里面隐变量是γ\gammaγ,这里使用一般EM算法介绍中的隐变量符号ZZZ。对数似然表示中引入为ZZZ,则有
L(θ)=logP(X∣θ)=log∑ZP(X,Z∣θ)=log∑ZP(Z∣θ)P(X∣Z,θ)L(\theta) = log P(X|\theta) =log \sum_{Z} P(X,Z|\theta) \\ =log \sum_{Z} P(Z|\theta)P(X|Z,\theta)L(θ)=logP(X∣θ)=logZ∑​P(X,Z∣θ)=logZ∑​P(Z∣θ)P(X∣Z,θ)
其中集合{X,Z}\{X,Z\}{X,Z}称作完备集合,是一个len(X)×len(Z)len(X) \times len(Z)len(X)×len(Z)大小的矩阵,即表示X的数据在Z类中的映射。θ\thetaθ表示要估计的参数,GMM任务中代表μ\muμ、Σ\SigmaΣ和π\piπ。GMM模型里,上式最终变换的含义为,P(Z∣θ)P(Z|\theta)P(Z∣θ)代表属于哪类高斯分布的概率(隐变量),P(X∣Z,θ)P(X|Z,\theta)P(X∣Z,θ)代表数据在对应高斯分布上的概率。

目前依旧难以直接估计,需要借助Jensen不等式。设θ′\theta'θ′是当前的参数值,θ\thetaθ是下个时刻需要估计的参数,取对数表达式的差值为
L(θ)−L(θ′)=log∑ZP(Z∣θ)P(X∣Z,θ)−logP(X∣θ′)=log∑ZP(Z∣θ)P(X∣Z,θ)×P(Z∣θ′)P(Z∣θ′)−logP(X∣θ′)=log∑ZP(Z∣θ′)×P(Z∣θ)P(X∣Z,θ)P(Z∣θ′)P(X∣θ′)≥∑ZP(Z∣θ′)×logP(Z∣θ)P(X∣Z,θ)P(Z∣θ′)P(X∣θ′)L(\theta)-L(\theta') = log\sum_{Z} P(Z|\theta)P(X|Z,\theta)-log P(X|\theta') \\ = log\sum_{Z} P(Z|\theta)P(X|Z,\theta)\times \frac{P(Z|\theta')}{P(Z|\theta')}-log P(X|\theta') \\ = log\sum_{Z} P(Z|\theta')\times \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')} \\ \geq \sum_{Z} P(Z|\theta') \times log\frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')}L(θ)−L(θ′)=logZ∑​P(Z∣θ)P(X∣Z,θ)−logP(X∣θ′)=logZ∑​P(Z∣θ)P(X∣Z,θ)×P(Z∣θ′)P(Z∣θ′)​−logP(X∣θ′)=logZ∑​P(Z∣θ′)×P(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)​≥Z∑​P(Z∣θ′)×logP(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)​

Jensen不等式(凸函数性质)
对于任意点集{xi}\{x_{i}\}{xi​},若λi>0\lambda_{i}>0λi​>0,且∑λi=1\sum \lambda_{i}=1∑λi​=1,可证明
f(∑i=1Mλixi)≤∑i=1Mλif(xi)f(\sum^{M}_{i=1}\lambda_{i}x_{i}) \leq \sum^{M}_{i=1} \lambda_{i}f(x_{i})f(i=1∑M​λi​xi​)≤i=1∑M​λi​f(xi​)
此处λ=P(Z∣θ′)\lambda=P(Z|\theta')λ=P(Z∣θ′),f(x)=log(...)f(x)=log(...)f(x)=log(...)

上式变换后有
L(θ)≥L(θ′)+∑ZP(Z∣θ′)×log⁡P(Z∣θ)P(X∣Z,θ)P(Z∣θ′)P(X∣θ′)≜B(θ′,θ)L(\theta) \geq L(\theta')+\sum_{Z} P(Z|\theta') \times \log\frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')} \triangleq B(\theta',\theta)L(θ)≥L(θ′)+Z∑​P(Z∣θ′)×logP(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)​≜B(θ′,θ)
显然B(θ′,θ)B(\theta',\theta)B(θ′,θ)是L(θ)L(\theta)L(θ)的下限,显然提升L(θ)L(\theta)L(θ)的下限有助于其逼近最大,再加上当θ=θ′\theta=\theta'θ=θ′的时候,有L(θ′)=B(θ′,θ′)L(\theta')=B(\theta',\theta')L(θ′)=B(θ′,θ′)。通过这个变换过程,问题成功的转变成求以下表达式的极大似然估计:
θ=arg⁡maxθ∑ZP(Z∣θ′)×log⁡P(Z∣θ)P(X∣Z,θ)\theta = \arg max_{\theta} \sum_{Z} P(Z|\theta') \times \log P(Z|\theta)P(X|Z,\theta)θ=argmaxθ​Z∑​P(Z∣θ′)×logP(Z∣θ)P(X∣Z,θ)
其中忽略去了部分θ′\theta'θ′相关的P(Z∣θ′)P(X∣θ′)P(Z|\theta')P(X|\theta')P(Z∣θ′)P(X∣θ′)项,可以认为是常数,不影响估计极大过程。

现在解释这样变换的好处。下面给出了极大似然方法估计函数和EM算法估计函数,分别取了对数

log⁡L(x1,...,xT;π,μ,Σ)=∑n=1N∑k=1Kπklog⁡N(xn∣μk,σk2)\log L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \sum_{n=1}^{N}\sum_{k=1}^{K} \pi_{k} \log N(x_{n}|\mu_{k},\sigma_{k}^2)logL(x1​,...,xT​;π,μ,Σ)=∑n=1N​∑k=1K​πk​logN(xn​∣μk​,σk2​) — EM算法的估计函数

log⁡L(x1,...,xT;π,μ,Σ)=∑n=1Nlog⁡∑k=1KπkN(xi∣μk,σk2)\log L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \sum_{n=1}^{N} \log \sum_{k=1}^{K} \pi_{k} N(x_{i}|\mu_{k},\sigma_{k}^2)logL(x1​,...,xT​;π,μ,Σ)=∑n=1N​log∑k=1K​πk​N(xi​∣μk​,σk2​) — 极大似然的估计函数

两者相比,EM算法的表达式在解开累乘后,log函数内不再有累加符号,累加符号被变换到了log外面,才能顺利实现参数估计。

表达式确定后,接下即可分为E和M步估计参数

2.2.2 E步

计算P(Z∣θ′)P(Z|\theta')P(Z∣θ′),也是Z的期望。对应GMM问题是,计算后验概率P(γ∣θ′)P(\gamma|\theta')P(γ∣θ′):
γkn=P(γk∣θ′)=πkN(xn∣μk,Σk)∑jπkN(xn∣μj,Σj)\gamma_{kn} = P(\gamma_{k}|\theta') = \frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{k}N(x_{n}|\mu_{j},\Sigma_{j})}γkn​=P(γk​∣θ′)=∑j​πk​N(xn​∣μj​,Σj​)πk​N(xn​∣μk​,Σk​)​
其中n指代时间序列,k、j指代第几类。

2.2.3 M步

根据求得的P(Z∣θ′)P(Z|\theta')P(Z∣θ′)和θ′\theta'θ′估计参数θ′\theta'θ′。对应GMM问题是,根据估计到的后验概率γkn\gamma_{kn}γkn​和前一时刻参数μ′\mu'μ′、Σ′\Sigma'Σ′和π′\pi'π′,估计下一时刻参数μ\muμ、Σ\SigmaΣ和π\piπ。
μk=1Nk∑n=1Nγknxn\mu_k = \frac{1}{N_{k}} \sum_{n=1}^{N} \gamma_{kn}x_{n}μk​=Nk​1​n=1∑N​γkn​xn​
Σk=1Nk∑n=1Nγkn(xn−μk)(xn−μk)T\Sigma_{k} = \frac{1}{N_{k}} \sum_{n=1}^{N} \gamma_{kn}(x_{n}-\mu_{k})(x_{n}-\mu_{k})^{T}Σk​=Nk​1​n=1∑N​γkn​(xn​−μk​)(xn​−μk​)T
πk=NkN\pi_{k} = \frac{N_{k}}{N}πk​=NNk​​
其中Nk=∑n=1NγknN_{k}=\sum_{n=1}^{N}\gamma_{kn}Nk​=∑n=1N​γkn​。

2.3 EM算法估计GMM参数的迭代过程

第一步:初始化参数μ\muμ、Σ\SigmaΣ和π\piπ
第二步:计算后验概率,即E步
第三步:计算当前估计的参数,即M步
第四步:反复迭代第二步和第三步直至收敛

ASR 混合高斯模型GMM的理解相关推荐

  1. 运动检测(前景检测)之(二)混合高斯模型GMM

    因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新的方法和思路.个人了解的大概概括为以下一些: 帧差.背景减除(GMM.CodeBook. SOBS. SACON. VIBE. W4.多 ...

  2. 混合高斯模型(GMM)

    1.GMM模型 单高斯模型的基本表达式为, N(x;μ,Σ)=12π|Σ|−−−−−√exp[−12(x−μ)TΣ−1(x−μ)] N(x;\mu,\Sigma)=\frac{1}{\sqrt{2\p ...

  3. 混合高斯模型介绍以及应用

    混合高斯模型 1. 单一的高斯模型(Gaussian single model, GSM) 2. 混合高斯模型(GMM模型) 2.1 混合高斯模型直观上的理解和描述 2.2 极大似然估计(Maximu ...

  4. 机器学习——概率分类(三)高斯概率密度与混合高斯模型

    机器学习--概率分类(三)高斯概率密度与混合高斯模型 在之前的文章机器学习--概率分类(一)朴素贝叶斯模型一文中,我们主要介绍了机器学习中的概率分类问题.我们提出了简单的朴素贝叶斯模型来进行概率密度的 ...

  5. python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...

    1 GMM基础 高斯混合模型(GMM)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况. 灵魂的拷问:为什么GMM可以拟合出 ...

  6. 详解EM算法与混合高斯模型(Gaussian mixture model, GMM)

    最近在看晓川老(shi)师(shu)的博士论文,接触了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被论文中 ...

  7. 混合高斯模型(GMM)推导及实现

    作者:桂. 时间:2017-03-20  06:20:54 链接:http://www.cnblogs.com/xingshansi/p/6584555.html 前言 本文是曲线拟合与分布拟合系列的 ...

  8. 混合高斯模型_EM算法求解高斯混合模型(GMM)

    单维的高斯模型: 求解一维的高斯模型参数时,我们可以使用最大似然法,其对数似然函数的表达式(log-likelyhood)如下: 对均值和方差求偏导可以求的高斯分布中的 在混合高斯模型中, 记 其对数 ...

  9. 聚类(1)——混合高斯模型 Gaussian Mixture Model

    聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...

最新文章

  1. PyTorch中文版官方教程来啦(附下载)
  2. 基于图像的三维模型重建——相机模型与对极几何
  3. js基础到精通全面教程--JS教程(转载)--推荐
  4. Sqoop1使用手册
  5. python技巧 pdf-求教使用python库提取pdf的方法?
  6. android改包名
  7. python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...
  8. 大数据分析平台搭建方式有哪些
  9. nyoj--20-吝啬的国度
  10. 微信小程序wxml如何判断字符串中汉语某字符_如何获取别人微信小程序的源文件?...
  11. 树莓派 摄像头 html5,视频演示如何给树莓派安装摄像头模块
  12. Docker实现ElasticSearch集群搭建
  13. C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
  14. 何为民间IP,小游戏竟然还可以这样做?脑洞大开
  15. java发送QQ邮件详细步骤
  16. Resultful API
  17. 频域串联滞后校正matlab,控制工程基础(基于Matlab的线性系统串联校正)
  18. python依次输入输出字符串_Python练习:输入一个字符串并输出该字符串中所有字符的组合,python...
  19. 灰色马尔科夫预测 matlab代码(数据量太少,有局限性)
  20. ubuntu16.04安装GTX-960M nvidia-384驱动

热门文章

  1. 【关于Log4j2】
  2. AcWing 838.堆排序
  3. 读论文,第十二天:FMG Versus EMG: A Comparison of Usability for Real-Time Pattern Recognition Based Control
  4. k8s pod内存溢出,自动重启
  5. Jenkins学习(执行命令路径,脚本上传静态html代码)(一)
  6. excel标题行列浮动显示/冻结窗口
  7. JAVA_02 j2se j2ee j2me jse jee jme
  8. python生产实战 python 闭包之庖丁解牛篇
  9. android分辨率2k3k4k,android 不同分辨率适配
  10. NTKO OFFICE文档控件为何不能自动装载?