GMMEM算法详解——附0-9孤立词识别demo(python实现)

Posted 栋次大次

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GMMEM算法详解——附0-9孤立词识别demo(python实现)相关的知识,希望对你有一定的参考价值。

代码地址:6.1公布
笔者能力有限,如有错误请指正!感谢您的阅读!

潜(隐)变量模型

观测变量:直接观测的数据
潜变量:

  • 无法直接被观测到,需要通过模型和观测变量进行推断
  • 利用潜变量来判断观测变量的模型,GMM HMM都是潜变量模型
  • 潜变量模型将不完数据(只有观测数据)的边缘分布转化为容易处理的完全数据(观测数据+潜变量)的联合分布。

如:聚类问题,潜变量是类别(未知),观测变量是数据点,给定观测变量,如果推断哪些是同一类?K-means

K-means

给定一个含有N个数据点的集合 { x 1 , x 2 , … , x N } \\left\\{\\mathbf{x}_{1}, \\mathbf{x}_{2}, \\ldots, \\mathbf{x}_{N}\\right\\} {x1,x2,,xN}, x n ∈ R D \\mathbf{x}_{\\mathbf{n}} \\in R^{D} xnRD,聚类的目标是将此N个数据点聚类到K个类别中,且假设K给定。

K-means思路:

  1. 引入K个D维均值向量 μ k , k = 1 , 2 , . . . , K \\mathbf{\\mu}_k,k=1,2,...,K μk,k=1,2,...,K μ k \\mathbf{\\mu}_k μk是第k个类别的聚类中心。
  2. 计算数据点 x n \\mathbf{x}_{\\mathbf{n}} xn和所有类中心 μ k \\mathbf{\\mu}_k μk的距离,类中心距离此数据点最近的类别,即为当前数据点的类别。
  3. 根据新的聚类结果,使用当前聚集到各个类别的数据的均值来更新当前类别的类中心。
  4. 返回第2步,直到满足一定的停止准则。

引入潜变量

  • 对于每一个数据点 x n \\mathbf{x}_{n} xn引入一个指示因子 r n k ∈ { 0 , 1 } r_{nk} \\in \\{0,1\\} rnk{0,1},如果 x n \\mathbf{x}_{n} xn属于第k类,则 r n k = 1 r_{nk}=1 rnk=1,否则 r n k = 0 , r_{nk}=0, rnk=0 r n k r_{nk} rnk即为潜变量
  • 定义目标函数 J = ∑ n = 1 N ∑ k = 1 K r n k ∥ x n − μ k ∥ 2 J=\\sum_{n=1}^{N} \\sum_{k=1}^{K} r_{n k}\\left\\|\\mathbf{x}_{n}-\\boldsymbol{\\mu}_{k}\\right\\|^{2} J=n=1Nk=1Krnkxnμk2
  • 优化目标:寻找合适的$r_{nk} 和 和 \\boldsymbol{\\mu}_{k}$使目标函数最小。

模型优化:两阶段迭代优化(简单EM)

  • 选择初始化的 μ k \\boldsymbol{\\mu}_{k} μk值,并保持 μ k \\boldsymbol{\\mu}_{k} μk固定,关于$r_{nk} 最 小 化 最小化 J$(E步)
    r n k = { 1  if  k = arg ⁡ min ⁡ j ∥ x n − μ j ∥ 2 0  otherwise  r_{n k}=\\left\\{\\begin{array}{ll} 1 & \\text { if } k=\\arg \\min _{j}\\left\\|\\mathbf{x}_{n}-\\boldsymbol{\\mu}_{j}\\right\\|^{2} \\\\ 0 & \\text { otherwise } \\end{array}\\right. rnk={10 if k=argminjxnμj2 otherwise 

  • 保持 r n k r_{nk} rnk固定,关于 μ k \\boldsymbol{\\mu}_{k} μk最小化 J J J(M步)
    ∂ J ∂ μ k = 2 ∑ n = 1 N r n k ( x n − μ k ) = 0 → μ k = ∑ n r n k x n ∑ n r n k \\frac{\\partial J}{\\partial \\boldsymbol{\\mu}_{k}}=2 \\sum_{n=1}^{N} r_{n k}\\left(\\mathbf{x}_{n}-\\boldsymbol{\\mu}_{k}\\right)=0 \\rightarrow \\boldsymbol{\\mu}_{k}=\\frac{\\sum_{n} r_{n k} \\mathbf{x}_{n}}{\\sum_{n} r_{n k}} μkJ=2n=1Nrnk(xnμk)=0μk=nrnknrnkxn

K-means应用:图像分割和压缩

GMM模型

高斯分布