ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

语音识别(3)HMM

2022-05-19 12:32:40  阅读:208  来源: 互联网

标签:状态 概率 路径 Viterbi HMM 算法 语音 序列 识别


1HMM基础

一模型、两假设、三问题

1)一个模型

随机过程:是依赖于参数的一组随机变量的全体,参数通常是时间。随机变量是随机现象的数量表现,其取值随着偶然因素的影响而改变。

例如,某商店在从时间t0到时间tK这段时间内接待顾客的人数,就是依赖于时间t的一组随机变量,即随机过程。

马尔科夫过程:随机过程的一类,系统下一时刻的状态仅与单前状态有关。

隐马尔科夫模型(HMM):用来描述一个含有未知参数的马尔科夫过程。

隐马尔可夫模型是关于时间序列的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态序列 (state sequence),再由各个状态生成一个 观测而产生观测序列 (observation sequence)的过程,序列的每一个位置又可以看作是一个时刻。

2)两个基本假设

齐次马尔可夫性假设:隐藏的马尔可夫链在时刻t的状态只和t-1的状态有关。

 

观测独立性假设:观测只和当前时刻的状态有关。

 

3)三大问题

1) 概率计算问题。即给定模型λ=(A,B,Π)λ=(A,B,Π)和观测序列O={o1,o2,...oT}O={o1,o2,...oT},计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到前向算法、后向算法和直接计算法。

2)解码问题。即给定模型λ=(A,B,Π)和观测序列O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的Viterbi算法。

3)模学习问题。即给定观测序列O={o1,o2,...oT},估计模型λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的Baum-Welch算法。

2 HMM的隐状态

隐状态、箱子、第K个高斯

隐藏状态是抽象出来的概念,由于语音信号在一个长时间断内是非平稳信号,而在一个较短的时间内则可近似看做平稳的(比如50毫秒)。平稳信号的特点在于信号的频谱分布是稳定的,不同时间段的频谱分布相似。隐马尔可夫模型将一小段频谱相似的连续信号归为一个隐状态。Viterbi算法对齐就是为了找到哪些帧归于哪个隐状态,隐马尔可夫模型的训练过程是最大化似然度,每一个状态产生的数据用一个概率分布表示。只有当相似的连续信号尽可能被归为同一个状态,似然度才能尽可能的大

类比箱子和小球,手从哪个箱子拿的球不知道,只知道拿出来后看见的小球,问小球来自哪个箱子的可能。其中,箱子就是隐状态,小球就是可观测的。箱子中有不同小球的比例,或者分布,而HMM中也有隐状态对应到特征向量的概率分布。假如箱子中小球分布符合高斯分布,假设HMM中隐状态中特征符合高斯分布,GMM混合高斯模型就是在模拟这个分布,理解性的表达可以说模拟隐状态中可观测特征的比例。只不过一个箱子中三个小球比列为3:2:1,而HMM一个隐状态中有39种特征,也是有占比。

GMM中也有隐状态,特征向量不知道来自哪个Gaussion。K1、K2、K3组成一个GMM,K1、K2、K3类比箱子1、箱子2、箱子3,类比HMM中状态1、状态2、状态3。

3 概率计算问题

前向算法、后向算法、Viterbi

概率计算问题(评估问题、序列分类问题、求可观测问题):

即给定模型λ=(A,B,Π)λ=(A,B,Π)和观测序列O={o1,o2,...oT}O={o1,o2,...oT},计算在模型λ下观测序列O出现的概率P(O|λ)。

1)直接法(不用)

 

 

2)前向算法

 

 

 

前向算法实现:

 

 

3)后向算法

 

后向算法实现:

 

4)Viterbi算法(近似)

可以回溯到最优的状态序列,求最优路径的概率代替所有路径的概率和P(O|λ)。

灵魂的拷问:这样计算最优路径的概率代替所有路径概率和P(O|λ),是不是不准了呢?又为什么能代替呢?

AI大语音:在实际语音识别中,是可以代替的。因为概率的分布比较尖,也就是某个位置的概率会非常大,其他比较小,最优路径的概率跟所有路径的概率差不多。那条最优路径的概率就如同战场上的将军、游戏里的大boss,战力已经接近总战力了,所有和所有路径的概率和很接近。

 

既然可以近似,那两种算法的概率应该差不多大才是。对比一下程序中前向算法和Viterbis算法求出来的概率。

 

灵魂的拷问:一个0.13级别、一个0.014级别的,这也叫差不大嘛?都差一个数量级了。

AI大语音:转移矩阵、发射矩阵中的概率差别不是特别大的时候是不能用来近似的,程序中的例子不具有代表性,不是类似语音识别的例子,在大多数语音识别应用中求出来两者的概率才会差不多,才能近似代替。

4 解码问题

Viterbi算法、近似算法

解码问题(对齐问题、预测问题、序列标注问题、求隐状态问题)

即给定模型λ=(A,B,Π)和观测序列O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的Viterbi算法。

Viterbi算法是最优路径算法的一种。最优路径算法:

穷举法

方法:把所有可能路径都计算一遍,最优路径自然就出来了。

优点:必然能找到最优路径。

缺点:计算量太大。

A*算法

方法:每一步只走最好走的路(目光短浅)

优点:计算快,而且这种贪心或者说启发式的算法,通常情况下,效果还是不错的。

缺点:很难找到最优解,陷入局部最优

beam search (波束搜索)

方法:每一步只走最好走的前N条路。这里的N也叫Beam Width。是A*算法的改进,当N=1时,退化为A*算法,当N=N时,退化为穷举法。

 

优点:N设置良好的话效果不错。

缺点:Beam Width越大,找到最优解的概率越大,相应的计算复杂度也越大。

1) Viterbi算法

方法:记录每个时刻的每个可能状态的之前最优路径的概率,同时记录最优路径的前一个状态,不断向后迭代,找到最后一个时间点的最大概率值对应的状态,回溯找到最优路径。

 

注意:Viterbi算法前向时只是计算概率,并记住,后向回溯时才得到最优路径。

 

 

 

 

 

算法实现:

 

2) 近似算法(不常用)

 

近似算法是前向计算时最大的就选了这个路径,也就是单步最大的路径组合成最优路径;而Viterbi是前向只计算并记住,根据最后最大的那个概率回溯选择路径。

5 学习问题

Viterbi学习算法、Baum-Welch算法

学习问题(训练问题、参数估计、求模型问题)

即给定观测序列O={o1,o2,...oT},估计模型λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的Baum-Welch学习算法和Viterbi学习算法。

 

1)Viterbi学习算法(硬对齐)

Viterbi算法需要先初始化一个HMM模型λ=(A,B,Π)。

 

 

 

 

在语音识别应用中由于HMM是从左到右的模型,第一个必然是状态一,即P(q0=1)=1。所以没有pi这个参数了。

 

1)Baum-Welch学习算法(软对齐)

 

同样,在语音识别应用中没有pi。

 

附录(魔鬼写手)

 

 

 

 

 

 

 

 

 

 

 

——————
————————————————
版权声明:本文为CSDN博主「AI大道理」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42734492/article/details/108114821

标签:状态,概率,路径,Viterbi,HMM,算法,语音,序列,识别
来源: https://www.cnblogs.com/Edison-zzc/p/16288077.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有