5.1概述5.2隐马尔科夫模型的引入5.3隐马尔科夫模型的定义5.4隐马尔科夫模型的基本算法5.5隐马尔科夫模型的各种结构类型5.6隐马尔科夫模型的一些实际问题5.1概述隐马尔可夫模型(HMM),作为语音信号的一种统计模型,今天正在语音处理各个领域中获得广泛的应用。由于Bell实验室Rabiner等人在80年代中期对HMM的深入浅出的介绍,使HMM为世界各国从事语音信号处理的研究人员所了解和熟悉,进而成为公认的一个研究热点。近几十年来,隐马尔可夫模型技术无论在理论上或是在实践上都有了许多进展。其基本理论和各种实用算法是现代语音识别等的重要基础之一。5.2隐马尔科夫模型的引入HMM是一个输出符号序列的统计模型,具有N个状态,它按一定的周期从一个状态转移到另一个状态,每次转移时,输出一个符号。转移到哪一个状态,转移时输出什么符号,分别由状态转移概率和转移时的输出概率来决定。因为只能观测到输出符号序列,而不能观测到状态转移序列(即模型输出符号序列时,是通过了哪些状态路径,不能知道),所以称为隐藏的马尔可夫模型。12,,,NSSS一个简单的三状态HMM的例子假设有一个实际的物理过程,产生了一个可观察的序列。在这种情况下,建立一个模型来描述这个序列的特征是非常重要的。如果在分析的区间内,信号是非时变的或平稳的,那么使用众所周知的线性模型来描述该信号就可以了。例如,语音信号在短时间(约10~30ms)内认为是平稳的,所以,在一段短时间内,就可以用一个全零点模型或极零点模型来描述它,这就是线性预测(LPC)模型。但整体来讲,语音信号是时变的,所以用模型表示时,其参数也是时变的。但是语音信号是慢时变信号,所以,简单的考虑方法是:在较短的时间内用线性模型参数来表示,然后,再将许多线性模型在时间上串接起来,这就是马尔可夫链(Markov链)。Markov链虽然可以描述时变信号,但不是最佳的和最有效的。而HMM的出现,既解决了用短时模型描述平稳段的信号,又解决了每个短时平稳段是如何转变到下一个短时平稳段的。HMM是由两个随机过程组成,一个随机过程描述状态和观察值之间的统计对应关系的,它解决了用短时模型描述平稳段的信号的问题;由于实际问题比Markov链模型所描述的更为复杂,观察到的事件并不是如Markov链模型中与状态一一对应,所以HMM通过另一组概率分布相联系的状态的转移统计对应关系来描述每个短时平稳段是如何转变到下一个短时平稳段的。语音识别的最大困难之一就是如何对语音的发音速率及声学变化建立模型。随着HMM被引入到语音识别领域中,这一棘手问题得到了较圆满地解决。HMM很好的描述了语音信号的整体非平稳性和局部平稳性,是一种较为理想的语音信号模型。5.3隐马尔科夫模型的定义离散Markov过程Markov链是Markov随机过程的特殊情况,即Markov链是状态和时间参数都离散的Markov过程。设在时刻t的随机变量用、其观察值用表示,则如果当的前提下,的概率是如下式所示,则称其为n阶Markov过程tStsttsSsSsS,,,221111ttsS)|()|(11111111tnttntttttttsSsSPsSsSP特别地,当如下式成立时,则称其为1阶Markov过程,又叫单纯Markov过程。系统在任一时刻所处的状态只与此时刻的前一时刻所处的状态有关。而且,为了处理问题方便,我们只考虑式(5-4)右边的概率与时间无关的情况,即:同时满足:这里是当时刻t从状态i在时刻t+1到状态j的转移概率,当这个转移概率是与时间无关的常数时,又叫是具有常数转移概率的Markov过程。另外,表示t存在时,从状态i到状态j的转移是可能的。对于任意的i,j都有则这个Markov过程,是正则Markov过程。)|()|(111111ttttttttsSsSPsSsSP]|[)1,(1itjtijsSsSPttP0)1,(ijttP1)1,(1NjijttPijttP)1,(,,21SS0)(ijtP0)(ijtP隐Markov模型HMM类似于一阶Markov过程。不同点是HMM是一个双内嵌式随机过程。正如在前一小节所介绍的一样,HMM是由两个随机过程组成,一个是状态转移序列,它对应着一个单纯Markov过程。另一个是每次转移时输出的符号组成的符号序列。在语音识别用HMM中,相邻符号之间是不相关的(这当然不符合语音信号的实际情况,这也是HMM的一个缺点,对此,已经有许多改进的HMM被提出)。这二个随机过程,其中一个随机过程是不可观测的,只能通过另一个随机过程的输出观察序列观测。设状态转移序列为,输出的符号序列为,则在单纯Markov过程和相邻符号之间是不相关的假设下(即和之间转移时的输出观察值和其他转移之间无关),有下式成立:TsssS21ToooO211isisioio因为是隐Markov模型,把所有可能的状态转移序列都考虑进去,则有:这就是上面我们计算输出符号序列aab的输出概率时所用的方法。)|()|()(111iiiiiissPssPSP),|()|()|(11iiiiiiissoPsoPSOP),|()|()()|()(11iiiSSiiissoPssPSPSOPOPHMM的基本元素根据以上的分析,对于语音识别用HMM可以用下面六个模型参数来定义,即::模型中状态的有限集合,即模型由几个状态组成。设有N个状态,。记t时刻模型所处状态为,显然。在球与缸的实验中的缸就相当于状态。:输出的观测值符号的集合,即每个状态对应的可能的观察值数目。记个观察值为,记t时刻观察到的观察值为,其中。在球与缸实验中所选彩球的颜色就是观察值。FBAOSM,,,,,SNiSSi,,2,1|ts),,(1NtSSsOMMOO,,1to),,(1MtOOo:状态转移概率的集合。所有转移概率可以构成一个转移概率矩阵,即:其中是从状态到状态转移时的转移概率,且有,。在球与缸实验中,它指描述每次在当前选取得缸的条件下选取下一个缸的概率。ANNNNaaaaA1111ijaiSjSNji,110ijaNjija11:输出观测值概率的集合。,其中是从状态到状态转移时观测值符号的输出概率。即缸中球的颜色出现的概率。根据B可将HMM分为连续型和离散型HMM等。:系统初始状态概率的集合,:表示初始状态是的概率,即,在球与缸实验中,它指开始时选取某个缸的概率。:系统终了状态的集合。这里需要说明的是,严格地说Markov模型是没有终了状态的概念的,只是在语音识别里用的Markov模型要设定终了状态。B)}({kbBij)(kbijiSjSkiiis1[],(1)iiPSsiN1jF5.4隐马尔可夫模型的基本算法前向-后向算法前向---后向算法(Forward-Backward,简称为F-B算法)是用来计算给定一个观察值序列以及一个模型时,由模型M产生出O的概率的。前向算法前向算法即按输出观察值序列的时间,从前向后递推计算输出概率。可有下面的递推公式计算得到:ToooO21},,{BAM)|(MOP)(jt(1)初始化,(2)递推公式(;)(3)最后结果后向算法与前向算法类似,后向算法即按输出观察值序列的时间,从后向前递推计算输出概率的方法。可由下面的递推公式计算得到:(1)初始化,(2)递推公式(;)(3)最后结果1)1(00)(0j)1(jitijijttobaij)()()(1Nji,,2,1,Tt,,2,1)()/(NMOPT)(it1)(NT0)(jT)(Njjtijijttobaji)()()(111,,1,TTtNji,,2,1,)1()()/(011iNiiMOP维特比(Viterbi)算法Viterbi算法解决了给定一个观察值序列和一个模型时,在最佳的意义上确定一个状态序列的问题。Viterbi算法可以叙述如下:(1)初始化,(2)递推公式(;)(3)最后结果在这个递推公式中,每一次使最大的状态组成的状态序列就是所求的最佳状态序列。ToooO,,,21},,{BAMTsssS211)1(00)(0j)1(j)()()(1maxtijijtitobajjTt,,2,1Nji,,2,1,)()/,(maxNMOSPT)(jtBaum-Welch算法这个算法实际上是解决HMM训练的,即HMM参数估计问题的。或者说,给定一个观察值序列,该算法能确定一个,使最大。Baum-Welch算法利用递归的思想,使局部放大,最后得到优化的模型参数。ToooO,,,21},,{BAM)/(MOP)/(MOP},,{BAM下面给出利用Baum-Welch算法进行HMM训练具体步骤:1)适当地选择和的初始值。一般情况下可以按如下方式设定:a)给予从状态转移出去的每条弧相等的转移概率b)给予每一个输出观察符号相等的输出概率初始值=并且每条弧上给予相同的输出概率距阵;2)给定一个(训练)观察值符号序列,由初始模型计算等,并且,由上述重估公式,计算和;3)再给定一个(训练)观察值符号序列,把前一次的和作为初始模型计算等,由上述重估公式,重新计算和;4)如此反复,直到和收敛为止;转移出去的弧的条数从状态iaij1)(kbij码本中码字的个数1ToooO,,,21),(jitijaˆ)(ˆkbijToooO,,,21ijaˆ)(ˆkbij),(jitijaˆ)(ˆkbijijaˆ)(ˆkbij5.5隐马尔可夫模型的各种结构类型按照HMM的状态转移概率矩阵(参数)分类各态历经型或遍历型HMM(ErgodicHMM):严格的讲,所谓的遍历模型就是经过有限步的转移后,系统能达到任何一个状态。即系统从一个状态允许转移到任何一个状态。在某些应用系统中,常遇到的是一步遍历模型,即经过一步跳转,系统可达到任何一个状态。这样的HMM的状态转移矩阵中的每一个元素均为大于零的数,没有零元素。显然,各态历经型HMM不符合时间顺序的要求,因为它可以回到以前到过的状态,所以只能用于不要求时间顺序的语音信号处理,如:与文本无关的说话人识别等。从左到右型HMM(Left-to-RightHMM):所谓的从左到右模型,就是指随着时间的增加,状态的转移只能是从左到右进行或停留在原来的状态,而不能出现返回到以前状态的情况,即从编号高的状态(如第状态)到编号低的状态(如第n-1或n-2等等状态)跳转的情况(这实际上是一个时序的问题,因为按照时间顺序,总是从编号低的状态向编号高的状态转移)。因此,其状态转移矩阵具有如下的形式,它是一个上三角矩阵,而表示终止状态的最后一行除了最后一个元素外全为零(当终止状态没有自转移时,则最后一行全为零)。44343324232214131211000000aaaaaaaaaa另外从状态转移结构上HMM还有其他的一些变体,如由图5-5(c)所示的由两条并行的从左到右模型组成的HMM,又称为HMM网络。它不是一般的情况,是由标准模型组合的变体,用于特殊的应用场合。这种模型较复杂,所以性能一般要比单个左右模型要好。按照HMM的输出概率分布(B参数)分类离散HMM(DHMM):离散HMM就是上面一直在介绍的HMM。在这种HMM中,每一个状态的输出概率是按观察字符离散分布的,每一次转移时状态输出的字符,是从一个有限的离散字符集中按照一定的离散概率分布选出的。在语音信号处理中,经过特征分析后,语音信号先被分割成若干帧,每帧求取一个特征参数向量,即每帧是用一个特征参数向量表示的。此时若要使用离散HMM,则需要将语音特征参数向量的时间