隐马尔科夫模型(HMM)| 一个不可被忽视的统计学习模型 | 机器语音

2020-08-04 15:17:32 浏览数 (1)

小编最早接触隐马尔科夫模型(Hidden Markov Model,HMM),是利用HMM对机械设备的隐含退化状态进行建模、估计和预测,直观的感受是HMM的建模非常便利,可解释性很强,通用性强,缺点是对转移概率和观测概率估计学习时计算量较大,尤其是维数增多时易出现维数灾难问题,但随着DNN技术的发展和GPU计算能力的增强,计算能力已不再是HMM应用的瓶颈,HMM的能力将会得到充分的释放。

在语音识别问题中,语音时序建模和观测概率建模是两个核心问题,虽然现在一提到语音识别,大家都会想到DNN、RNN、LSTM,但这些深度学习模型只是解决了观测概率建模和计算的问题(击败了传统的高斯混合模型,GMM);实际上,HMM模型才是奠定将语音识别从思维形式转变为科学问题的重要基础。

什么是隐马尔科夫模型(Hidden Markov Model,HMM)

隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。语音识别中很重要的一个问题就是对时序进行建模,这也是为什么HMM在其中得到广泛的引用。想知道隐马尔科夫模型,重点记住下面几点:

(1)首先有一个状态序列,这个序列是不可被观测的。——状态序列

(2)下一时刻的状态只与上一时刻的状态相关。——Markov特性

(3)在时序上,状态按照一定的概率跳转。——状态转移概率,状态与状态形成转移概率矩阵

(4)状态序列的每个状态可以按照一定的概率生成一个观测。——状态与观测形成观测概率矩阵

(5)观测组合成一个观测序列,观测序列是可被观测的,观测与观测之间相互独立——观测序列

隐马尔科夫模型的三要素

(1)状态转移矩阵:描述了各状态间相互转移的概率。

(2)观测概率矩阵:描述了每个状态生成每个观测的概率。

(3)初始状态概率向量:描述了初始时刻处于每个状态的概率。

举个栗子:HMM用于语音识别

语音识别的目的是将声音信号映射为文字信息,如何实现这种映射,下面举个例子:

分帧:声音实际上是一种波,要对声音进行分析,需要对声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧。分帧操作一般不是简单的切开,而是使用移动窗函数来实现,帧与帧之间一般有交叠。

声学特征提取:分帧后,语音变成了很多小段,根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。为什么转化为向量,因为数据驱动的模型和算法基本都是从数据向量或者矩阵开始。下图为例,声音信号变成了12行(假设声学特征是12维)、N列的矩阵,每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

在语音识别中,认为单词由音素构成(如The CMU Pronouncing Dictionary),音素由状态构成(通常是3个状态),接下来工作将是:把帧识别成状态、把状态组合成音素、把音素组合成单词。以下图为例,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。

HMM建模:可以看到,如果知道每帧语音对应哪个状态了,语音识别的结果也就出来了,这个核心问题自然交给了我们介绍的HMM。帧就是观测序列,状态就是状态序列,状态变化存在转移概率,状态与观测之间存在观测概率,这就构成了一个典型的HMM模型。

再举个栗子:HMM用于NLP词性标注

对句子【教授喜欢画画】进行词性标注,分词之后的结果可能是【教授/喜欢/画/画】,【教授】词性可以是名词和动名词,【喜欢】词性可以是动词和动名词,【画】词性可以是名词和动词,画成图可以表示为:

隐马是个生成模型,生成的过程是先生成状态节点,根据状态节点再生成观测节点。结合上图,生成过程可以通俗的解释成下面过程:首先先生成【教授】词性是【名词】,然后生成词【教授】;接着根据【教授】的词性节点【名词】生成【喜欢】的词性节点【动词】,然后生成词【喜欢】;接着根据【喜欢】的词性【动词】生成【画】的词性【动词】,然后生成词【画】,最后一个【画】也是这个逻辑。

参考文章

https://www.cnblogs.com/naonaoling/p/5701634.html

http://x-algo.cn/index.php/2016/02/21/hmm-hidden-markov-model-hidden-markov-model/

https://www.zhihu.com/question/20398418/answer/18080841

0 人点赞