首先需要声明的是,GMM是Gaussian Mixture Model,混合高斯模型,是一个模型。EM算法,Expection Maximization期望最大是一套计算框架(framework),一系列的计算流程(迭代式的)。一般地,我们可以使用EM算法来求解GMM问题,即 put GMM into EM framework

EM迭代流程为:

θ(g+1)=argmaxθM-Step∫zlogp(X,z|θ)p(z|X,θ(g))dzE-Step

\theta^{(g+1)}=\underbrace{\arg\max_\theta}_{\textrm{M-Step}}\underbrace{\int_z\log p(X,z|\theta)p(z|X,\theta^{(g)})dz}_{\textrm{E-Step}}

X={x1,x2,…,xN}X=\{x_1, x_2,\dots,x_N\}
其 joint density 或者叫 log joint density:

logP(X)=∑i=1Nlog∑ℓ=1kαkN(xi|μℓ,σℓ)

\log P(X)=\sum_{i=1}^N\log\sum_{\ell=1}^k\alpha_k\mathcal{N}(x_i|\mu_\ell,\sigma_\ell)

混合高斯模型(GMM)参数集 Θ={μ1,…,μk,Σ1,…,Σk,α1,…,αk−1}\Theta=\{\mu_1, \dots,\mu_k,\Sigma_1,\dots,\Sigma_k,\alpha_1,\dots,\alpha_{k-1} \}

P(xi|Θ)=∑ℓ=1kαℓN(xi|μℓ,Σℓ)

P(x_i|\Theta)=\sum_{\ell=1}^k\alpha_\ell\mathcal{N}(x_i|\mu_\ell,\Sigma_\ell)

ΘMLE=argmaxΘ∑i=1Nlog∑ℓ=1kαℓN(xi|μℓ,Σℓ)

\Theta_{MLE}=\arg\max_\Theta\sum_{i=1}^N\log\sum_{\ell=1}^k\alpha_\ell\mathcal{N}(x_i|\mu_\ell,\Sigma_\ell)

其中 L(Θ|X)=∑i=1Nlog∑ℓ=1kαℓN(xi|μℓ,Σℓ)\mathcal{L}(\Theta|X)=\sum\limits_{i=1}^N\log\sum\limits_{\ell=1}^k\alpha_{\ell}\mathcal{N}(x_i|\mu_{\ell},\Sigma_{\ell}),混合的情形下,不再像单高斯(single mode Gaussian)的情况,不存在一个显示的解析解,一种常规的替代方案是使用迭代的方式去寻找(像MCMC算法那样,收敛到稳态?:-D),而这一方式正是著名的EM算法。

所谓迭代的方式即是提供如下的一种递归关系:

Θ(g+1)=f(Θ(g))

\Theta^{(g+1)}=f(\Theta^{(g)})

EM算法给出的 f(⋅)f(\cdot) 是:

Θ(g+1)=argmaxΘ∫zP(X,z|Θ)P(z|X,Θ(g))dz

\Theta^{(g+1)}=\arg\max_{\Theta}\int_zP(X,z|\Theta)P(z|X,\Theta^{(g)})dz

该递推关系还应至少满足,logP(X|Θ(g+1))>logP(X|Θ(g))\log P(X|\Theta^{(g+1)})>\log P(X|\Theta^{(g)})(Log Likelihood)

其中引变量 ziz_i(zi={1,…,k}z_i=\{1,\dots,k\}) 标识样本 xix_i 所属的高斯号(哪一个高斯),这样就将GMM的fitting问题转换为了single mode Gauss的fitting问题了(将每个高斯对应的数据摘出来)。引变量的存在使得问题得以简化。对所添加的隐藏变量的要求是不能改变边缘分布(marginal distribution):

p(xi)=∫zip(xi|zi)N(xi|μzi,Σzi)p(zi)αzidzi

p(x_i)=\int_{z_i}\underbrace{p(x_i|z_i)}_{\mathcal{N}(x_i|\mu_{z_i},\Sigma_{z_i})}\underbrace{p(z_i)}_{\alpha_{z_i}}dz_i

又因为 ziz_i是离散型随机变量,取值为 zi={1,…,k}z_i=\{1,\dots,k\},又可将积分符号改造为求和符号。也即:

p(xi)=∑zi=1kp(xi|zi)p(zi)=∑zi=1kαziN(xi|μzi,Σzi)

p(x_i)=\sum_{z_i=1}^kp(x_i|z_i)p(z_i)=\sum_{z_i=1}^k \alpha_{z_i}\mathcal{N}(x_i|\mu_{z_i},\Sigma_{z_i})

此时关于 xix_i的边缘分布,刚好就是 L(Θ|X)=∑i=1Nlog∑ℓ=1kαℓN(xi|μℓ,Σℓ)\mathcal{L}(\Theta|X)=\sum\limits_{i=1}^N\log\underbrace{\sum\limits_{\ell=1}^k\alpha_\ell\mathcal{N}(x_i|\mu_{\ell},\Sigma_{\ell})}

也即添加引变量之后并未改变数据的边缘分布。

logp(X|Θ)=logp(X,z|Θ)−logp(z|X,Θ)⇓(大名鼎鼎的EM期望最大算法)Ep(z|X,Θ(g))[logp(X|Θ)]=Ep(z|X,Θ(g))[logp(X,z|Θ)]−Ep(z|X,Θ(g))[logp(z|X,Θ)]⇓logp(X|Θ)=∫zlogp(X,z|Θ)p(z|X,Θ(g))dzQ(Θ,Θ(g))−∫zlogp(z|X,Θ)p(z|X,Θ)dzH(Θ,Θ(g))⇓logp(X|Θ)=Q(Θ,Θ(g))−H(Θ,Θ(g))

\log p(X|\Theta)=\log p(X,z|\Theta)-\log p(z|X,\Theta)\\ \Downarrow(大名鼎鼎的EM期望最大算法)\\ E_{p(z|X,\Theta^{(g)})}[\log p(X|\Theta)]=E_{p(z|X,\Theta^{(g)})}[\log p(X,z|\Theta)]-E_{p(z|X,\Theta^{(g)})}[\log p(z|X,\Theta)]\\ \Downarrow\\ \log p(X|\Theta)=\underbrace{\int_z \log p(X,z|\Theta)p(z|X,\Theta^{(g)})dz}_{Q(\Theta,\Theta^{(g)})}-\underbrace{\int_z\log p(z|X,\Theta)p(z|X,\Theta)dz}_{H(\Theta,\Theta^{(g)})}\\ \Downarrow\\ \log p(X|\Theta)=Q(\Theta, \Theta^{(g)})-H(\Theta, \Theta^{(g)})\\

put GMM into EM framework

EM framework:

Θ(g+1)=argmaxΘ∫zlogp(X,Z|Θ)p(Z|X,Θ(g))dz

\Theta^{(g+1)}=\arg\max_\Theta\int_z\log p(X,Z|\Theta)p(Z|X,\Theta^{(g)})dz

  • 如何定义 p(X,Z|Θ)p(X,Z|\Theta)(ziz_i 是对高斯的指定):
p(X,Z|Θ)=∏i=1Np(xi,zi|Θ)=∏i=1Np(xi|zi,Θ)N(μzi,Σzi)p(zi|Θ)αzi=∏i=1NαziN(μzi,Σzi)

p(X,Z|\Theta)=\prod_{i=1}^Np(x_i,z_i|\Theta)=\prod_{i=1}^N\underbrace{p(x_i|z_i,\Theta)}_{\mathcal{N}(\mu_{z_i},\Sigma_{z_i})}\underbrace{p(z_i|\Theta)}_{\alpha_{z_i}}=\prod_{i=1}^N\alpha_{z_i}\mathcal{N}(\mu_{z_i},\Sigma_{z_i})

还记得 p(X|Θ)p(X|\Theta) 的形式吗?

p(X|Θ)=∑ℓ=1kαℓN(X|μℓ,σℓ)=∏i=1N∑ℓ=1kαℓN(xi|μℓ,σℓ)

p(X|\Theta)=\sum_{\ell=1}^k\alpha_\ell\mathcal{N}(X|\mu_\ell,\sigma_\ell)=\prod_{i=1}^N\sum_{\ell=1}^k\alpha_\ell\mathcal{N}(x_i|\mu_\ell,\sigma_\ell)
可见 p(X,Z|Θ)p(X,Z|\Theta) 是 p(X|Θ)p(X|\Theta) 关于高斯的指定。

  • 再来看 p(Z|X,Θ)p(Z|X,\Theta) 的定义

因为 (xi,zi)(x_i,z_i)彼此独立:

p(Z|X,Θ)=∏i=1Np(zi|xi,Θ)=∏i=1Np(zi)p(xi|zi)∑zip(zi)p(xi|zi)=∏αziN(xi|μzi,Σzi)∑αziN(xi|μzi,Σzi)

p(Z|X,\Theta)=\prod_{i=1}^Np(z_i|x_i,\Theta)=\prod_{i=1}^N\frac{p(z_i)p(x_i|z_i)}{\sum_{z_i}p(z_i)p(x_i|z_i)}=\prod\frac{\alpha_{z_i}\mathcal{N}(x_i|\mu_{z_i},\Sigma_{z_i})}{\sum \alpha_{z_i}\mathcal{N}(x_i|\mu_{z_i},\Sigma_{z_i})}

代入到EM的框架下:

E-Step:

=∑i=1N∑zi=1k(logαℓ+logN(xi|μℓ,Σℓ))p(ℓ|xi,Θ(g))=∑i=1N∑ℓ=1k(logαℓ+logN(xi|μℓ,Σℓ))p(ℓ|xi,Θ(g))

=\sum_{i=1}^N\sum_ {z_i=1}^k\left ( \log \alpha_{\ell}+\log \mathcal{N}(x_i|\mu_{\ell},\Sigma_{\ell})\right )p(\ell|x_i,\Theta^{(g)})\\ =\sum_{i=1}^N\sum_ {\ell=1}^k\left ( \log \alpha_{\ell}+\log \mathcal{N}(x_i|\mu_{\ell},\Sigma_{\ell})\right )p(\ell|x_i,\Theta^{(g)})
M-Step:

⇒αℓ=1N∑i=1Np(ℓ|xi,Θ(g))

\Rightarrow \alpha_\ell=\frac1N\sum_{i=1}^Np(\ell|x_i,\Theta^{(g)})

补充

GMM问题求解的困难在于,L(Θ|X)=∑Ni=1log∑kℓ=1αℓN(xi|μℓ,Σℓ)\mathcal{L}(\Theta|X)=\sum_{i=1}^N\log\sum_{\ell=1}^k\alpha_\ell\mathcal{N}(x_i|\mu_\ell,\Sigma_\ell),对和式求对数。(numpy提供了np.logaddexp(),:-D)

>>> import numpy as np
>>> np.logaddexp(np.log(1), np.log(1))
0.69314718055994529# np.logaddexp(x, y) = log(e^x+e^y)
>>> np.log(1+1)
0.69314718055994529# np.logaddexp(log(x), log(y)) = log(x+y)

从 GMM 到 EM 算法相关推荐

  1. 从生成模型到GDA再到GMM和EM算法

    在学习生成模型之前,先学习了解下密度估计和高斯混合模型.为什么呢?因为后面的VAE\GANs模型都需要把训练样本,也就是输入的图像样本看作是一个复杂的.多维的分布. 1. 知乎上关于图像频率的解释 作 ...

  2. GMM的EM算法实现

    在 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证 ...

  3. 语音识别入门第三节:GMM以及EM算法(实战篇)

    练习基础代码(包括音频文件.音频文件读取代码.预加重代码.分帧加窗代码.快速傅里叶变换代码)可从Github中获取,链接如下:https://github.com/nwpuaslp/ASR_Cours ...

  4. 3.GMM模型-EM算法

    项目模板和描述:链接地址 本次实验所用的数据为0-9(其中0的标签为Z(Zero))和o这11个字符的英文录音,每个录音的原始录音文件和39维的MFCC特征都已经提供, 实验中,每个字符用一个GMM来 ...

  5. 高斯混合模型(GMM)及其EM算法的理解

    一个例子 高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同 ...

  6. 使用EM算法估计GMM参数的原理及matlab实现

    相关数学概念 协方差矩阵 多维高斯分布 其中k=n,即x的维度. GMM的原理 GMM,高斯混合模型,是一种聚类算法. 1.GMM概念: -将k个高斯模型混合在一起,每个点出现的概率是几个高斯混合的结 ...

  7. 高斯混合分布EM算法

    未完待续 In Depth: Gaussian Mixture Models GMM与EM算法的Python实现

  8. GMM高斯混合模型学习笔记(EM算法求解)

    提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断添加component个数,能够随意地逼近不论什么连续的概率分布.所以我们觉得不论什么样本分布都能够用混合模型来建模.由于高斯函数具有一 ...

  9. 统计学习方法第九章作业:三硬币EM算法、GMM高维高斯混合模型 代码实现

    三硬币EM算法 import numpy as np import mathclass Three_coin:def __init__(self,pai=0.0,p=0.0,q=0.0):self.p ...

最新文章

  1. git pull遇到错误
  2. c#中SqlHelper类的编写(三)
  3. eclipse中tomcat能正常启动,在浏览器中不能打开问题
  4. C语言 多重指针--整型字符字符串 int**pp
  5. XML基本概念及增删改查操作
  6. easydialog中对js的修改
  7. win10开始菜单应用图标丢失
  8. 计算机应用基础教程学什么,[电脑基础知识]计算机应用基础教程学习.ppt
  9. PCB设计流程一原理图
  10. 福布斯中国上市公司最佳CEO排行
  11. 【git commit --amend 修改提交记录】
  12. Protocol Buffer 简介
  13. win10怎么一键释放运行内存
  14. 哈尔滨工业大学 计算机系统大作业
  15. 基于SSM的概念可视化程序设计学习系统 毕业设计-附源码021009
  16. Debain 安装SVN服务器 支持http/https 全程指导
  17. 广东开放大学成本会计
  18. 英语语法——状语和状语从句
  19. 全球工业互联网发展实践及启示!
  20. 云起时:记我们正在经历的教育之跃

热门文章

  1. 理解AOP思想(面向切面编程)
  2. mysql union 不同字段_mysql中union和union all的区别和注意点
  3. php ajax base64,php,javascript_AJax post BASE64编码到后台,php,javascript - phpStudy
  4. jfinal 一对一 实体类怎么写_新祥旭考研一对一:考前必知的四大答题技巧
  5. java懒加载注解_在springboot中实现个别bean懒加载的操作
  6. epic打开一直闪_教你用意派Epub360做酷炫的快闪H5!(附快闪H5模板)
  7. 第八届蓝桥杯第二题等差素数列
  8. Tensorflow——拟合直线
  9. 机器学习代码实战——梯度下降(gradient descent)
  10. Qt总结之十三:QUDPSocket详解