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} 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 \\mathbf{x}_{\\mathbf{n}} xn和所有类中心 μ k \\mathbf{\\mu}_k μk的距离,类中心距离此数据点最近的类别,即为当前数据点的类别。
- 根据新的聚类结果,使用当前聚集到各个类别的数据的均值来更新当前类别的类中心。
- 返回第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=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\\{\\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=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(\\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}} ∂μ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) \\mathcal{N}(\\mathbf{x} \\mid \\boldsymbol{\\mu}, \\mathbf{\\Sigma})=\\frac{1}{(2 \\pi)^{D / 2}} \\frac{1}{|\\mathbf{\\Sigma}|^{1 / 2}} \\exp \\left\\{-\\frac{1}{2}(\\mathbf{x}-\\boldsymbol{\\mu})^{\\mathrm{T}} \\boldsymbol{\\Sigma}^{-1}(\\mathbf{x}-\\boldsymbol{\\mu})\\right\\} \\tag{1} N(x∣μ,Σ)=(2π)D/21∣Σ∣1/21exp{−以上是关于GMMEM算法详解——附0-9孤立词识别demo(python实现)的主要内容,如果未能解决你的问题,请参考以下文章