HMM && GMM

转载:

http://www.inf.ed.ac.uk/teaching/courses/asr/2012-13/asr03-hmmgmm-4up.pdf

http://blog.chinaunix.net/uid-26715658-id-3453274.html

花了一天时间想要搞明白HMM&&GMM在语音识别中的原理,每次觉得明白了之后,仔细一想又不明白了,现在大体捋一捋顺序,好记性不如烂笔头嘛~

上面链接的第一个为英文PPT,从HMM到GMM识别和训练都有详细推导过程,下一篇为中文博客,主要讲的是HMM,大体意思都相似。

先说HMM要解决的三个问题:

1、给定观察序列,求出某个HMM模型产生此观察序列的概率,产生此序列的最大概率的HMM作为识别输出值。涉及前向算法

如在语音中,创建了K个word的模型,来了一个单词“yes",把”yes“得到的特征值分别作为K个word的输入,最后得到K个输出概率,概率最大的就是识别结果。

2、给定观察序列,找到一条状态转移路径,使当前观察序列得到最大的概率。涉及后向算法

3、训练一个HMM模型,给定一系列训练样本,得到HMM各个参数,代表一个模型。涉及前向-后向算法(EM算法的特例)

如要训练一个单词”yes"的HMM 模型,那么我选择标记的N个yes发音的样本,由此可以得到yes这个单词的HMM模型,下次来个单词yes就可以按照1得出识别结果概率。

HMM的两个定量:一个是隐藏状态(隐藏状态的个数由经验给定),一个是观察序列(隐藏状态不可观测,观察序列是由隐藏状态观察到的,所以一定程度上可以反映隐藏状态,但是二者数量不一定相同)。

相应的产生三个参数,各个状态初始概率pi,一个是A(i, j)表示由状态i转移到j的概率;一个是Bj(Ok),表示在状态j产生观察值k的概率(在这一部分,用到的是GMM模型)。

在语音中,一般为每个word创建一个HMM模型,每个状态表示一个音素(具体是什么不用费心,可以使1 2 3也可以使a b c表示)。观测值就是每个语音的特征值,对于一个单词,先对语音进行分帧,比如得到一帧的MFCC特征(大概39维,用Ok表示),这样分为n帧,就得到了n个时间状态的观察序列(O1,O2, .......On)。

那么语音识别过程如下:

给定了一个“yes”的HMM模型,模型参数Aij,Bj(Ok)都以给出,设状态数为4,。应用前向算法,具体是啥可见链接。可以求出此模型产生观测序列(O1,O2, .......On)的概率

P(O1,O2, .......On) = SUM(j){ALFAj(t+1) = SUM(i)(ALFAi(t)AijBj(Ot+1))}      1<= t <= n    1<= i, j <=4;其实就是在On时刻,各个状态j输出概率之和。

模型训练过程

模型由两部分组成,一个是HMM,一个是GMM,每个HMM状态对应一个GMM模型。那么一共的参数为(pi,Aij, Bj(Ok))再进行细化,Bj(Ok)由GMM模型给出,GMM模型(假设由M个高斯组成),三个参数(c, u, 6)其中c代表每个高斯的权重,u代表每个高斯的均值,6表示协方差矩阵。则要训练的参数变为(pi,Aij,ck, uk, rk);

给出训练样本,即很多组观测值。

那么模型训练过程遵循EM过程:

E-step:先初始化各个参数pi,Aij,ck, uk, rk,输入一个观测值序列,得到中间变量e(i,j),r(j)。

M-step:根据中间变量更新各个pi,Aij,ck, uk, rk变量,具体公式见链接,那么得到了新的参数。

重复EM部,经过所有样本训练后,即可得到相应的训练模型,即可进行上面的识别过程了,^_^

公式啥的实在不容易打,如果想详细了解,还是见链接吧。这样看来HMM&&GMM模型确实挺复杂,想要完全懂,还要多摸索。


GMMHMM(Gaussian Mixture Model Hidden Markov Model)是将高斯混合模型(GMM)与隐马尔可夫模型(HMM)结合的一种建模方法,广泛用于语音识别、时间序列建模等任务中。它能够处理多维观测数据,并通过高斯混合分布对每个状态的观测概率进行建模,从而增强对复杂数据结构的适应性[^4]。 在GMMHMM中,每个隐藏状态对应的观测概率分布由多个高斯分布的加权组合构成,这种建模方式允许模型对多维观测数据进行非线性拟合,适用于具有多模态特性的数据集。例如,在语音识别任务中,每帧语音信号经过特征提取后通常得到一个包含多个维度的特征向量(如MFCC特征),GMMHMM可以有效地对这些多维特征进行建模和状态序列解码[^4]。 ### GMMHMM处理多维数据的实现方式 GMMHMM通过以下方式支持多维数据的建模: - **多维观测分布建模**:每个状态的观测概率由多个高斯分布的线性组合表示,每个高斯分布的均值向量和协方差矩阵可以是多维的,从而适应多维观测数据的建模需求[^4]。 - **特征提取与降维**:在语音识别等任务中,原始信号通常被分帧处理,并提取多维特征(如MFCC特征),每帧对应一个低维特征向量。这种处理方式不仅降低了数据维度,还增强了特征的分辨能力,为GMMHMM建模提供了更有效的输入。 - **状态与观测的关联**:在GMMHMM中,每个音素或语音单元通常对应一个HMM状态序列,而每个状态又对应一个GMM模型来描述该状态下的观测概率分布。这种方式能够有效捕捉语音信号中时间动态变化的特性[^5]。 ### 示例:GMMHMM在多维数据建模中的应用 以下是一个使用 `hmmlearn` 库实现的 GMMHMM 示例,展示如何对多维观测数据进行建模: ```python from hmmlearn import hmm import numpy as np # 生成模拟数据:两个状态,每个状态对应二维高斯分布 np.random.seed(42) n_samples = 1000 means = np.array([[0.0, 0.0], [3.0, 3.0]]) X = np.concatenate([np.random.multivariate_normal(mean, np.eye(2), size=n_samples) for mean in means]) # 定义GMMHMM模型 model = hmm.GMMHMM(n_components=2, n_mix=2, covariance_type="diag", n_iter=50) model.fit(X) # 预测隐藏状态序列 hidden_states = model.predict(X) print("预测的隐藏状态序列前10个:", hidden_states[:10]) ``` 该示例展示了如何使用 GMMHMM 对二维观测数据进行建模,并预测其对应的隐藏状态序列[^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值