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

Posted 栋次大次

tags:

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

目录

代码地址:https://gitee.com/liangcd/speech_learning/tree/master/gmm-em
笔者能力有限,如有错误请指正!感谢您的阅读!

潜(隐)变量模型

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

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

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

K-means

给定一个含有N个数据点的集合 x 1 , x 2 , … , x N \\left\\\\mathbfx_1, \\mathbfx_2, \\ldots, \\mathbfx_N\\right\\ x1,x2,,xN, x n ∈ R D \\mathbfx_\\mathbfn \\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 \\mathbfx_\\mathbfn xn和所有类中心 μ k \\mathbf\\mu_k μk的距离,类中心距离此数据点最近的类别,即为当前数据点的类别。
  3. 根据新的聚类结果,使用当前聚集到各个类别的数据的均值来更新当前类别的类中心。
  4. 返回第2步,直到满足一定的停止准则。

引入潜变量

  • 对于每一个数据点 x n \\mathbfx_n xn引入一个指示因子 r n k ∈ 0 , 1 r_nk \\in \\0,1\\ rnk0,1,如果 x n \\mathbfx_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\\|\\mathbfx_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\\\\beginarrayll 1 & \\text if k=\\arg \\min _j\\left\\|\\mathbfx_n-\\boldsymbol\\mu_j\\right\\|^2 \\\\ 0 & \\text otherwise \\endarray\\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(\\mathbfx_n-\\boldsymbol\\mu_k\\right)=0 \\rightarrow \\boldsymbol\\mu_k=\\frac\\sum_n r_n k \\mathbfx_n\\sum_n r_n k μkJ=2n=1Nrnk(xnμk)=0μk=nrnknrnkxn

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

GMM模型

高斯分布