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 xn∈RD,聚类的目标是将此N个数据点聚类到K个类别中,且假设K给定。
K-means思路:
- 引入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个类别的聚类中心。
- 计算数据点 x n \\mathbfx_\\mathbfn xn和所有类中心 μ k \\mathbf\\mu_k μk的距离,类中心距离此数据点最近的类别,即为当前数据点的类别。
- 根据新的聚类结果,使用当前聚集到各个类别的数据的均值来更新当前类别的类中心。
- 返回第2步,直到满足一定的停止准则。
引入潜变量
- 对于每一个数据点 x n \\mathbfx_n xn引入一个指示因子 r n k ∈ 0 , 1 r_nk \\in \\0,1\\ rnk∈0,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=1N∑k=1Krnk∥xn−μk∥2
- 优化目标:寻找合适的$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=argminj∥∥xn−μj∥∥2 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 ∂μk∂J=2n=1∑Nrnk(xn−μk)=0→μk=∑nrnk∑nrnkxn
K-means应用:图像分割和压缩
GMM模型
高斯分布
- D维高斯变量的高斯分布:
N ( x ∣ μ , Σ ) = 1 ( 2 π ) D / 2 1 ∣ Σ ∣ 1 / 2 exp − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) (1) \\mathcalN(\\mathbfx \\mid \\boldsymbol\\mu, \\mathbf\\Sigma)=\\frac1(2 \\pi)^D / 2 \\frac1|\\mathbf\\Sigma|^1 / 2 \\exp \\left\\-\\frac12(\\mathbfx-\\boldsymbol\\mu)^\\mathrmT \\boldsymbol\\Sigma^-1(\\mathbfx-\\boldsymbol\\mu)\\right\\ \\tag1 N(x∣μ,Σ)=(2π)D/21∣Σ∣1/21exp−2以上是关于GMMEM算法详解——附0-9孤立词识别demo(python实现)的主要内容,如果未能解决你的问题,请参考以下文章