隐马尔科夫模型Hmm的研究

来源:互联网 发布:服务器linux系统 编辑:程序博客网 时间:2024/06/05 07:20

隐马尔科夫模型Hmm的研究

摘要

  • 隐马尔可夫模型(Hidden Markov Model,HMM)作为一种统计分析模型,创立于20世纪70年代。80年代得到了传播和发展,成为信号处理的一个重要方向,现已成功地用于语音识别,行为识别,文字识别以及故障诊断等领域。
  • 本文主要从以下几个方面研究了hmm。第一,分析了hmm经典三大问题及其推导过程。第二,总结hmm在语音信号处理上一个经典的应用——应用hmm说话人识别系统的搭建。第三,完成了hmm仿真实验,并给出了实验结果的分析。

引言

  • 一般的,隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵:

  • 1、隐含状态 S:
    这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到。(例如S1、S2、S3等等)

  • 2、可观测状态 O:
    在模型中与隐含状态相关联,可通过直接观测而得到。(例如O1、O2、O3等等,可观测状态的数目不一定要和隐含状态的数目一致。)
  • 3、初始状态概率矩阵 π:表示隐含状态在初始时刻t=1的概率矩阵,(例如t=1时,P(S1)=p1、P(S2)=P2、P(S3)=p3,则初始状态概率矩阵 π=[ p1 p2 p3 ].
  • 4、隐含状态转移概率矩阵 A:描述了HMM模型中各个状态之间的转移概率。
    其中Aij = P( Sj | Si ),1≤i,,j≤N.表示在 t 时刻、状态为 Si 的条件下,在 t+1 时刻状态是 Sj 的概率。
  • 5、观测状态转移概率矩阵B:
    令N代表隐含状态数目,M代表可观测状态数目,则:
    Bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.
    表示在 t 时刻、隐含状态是 Sj 条件下,观察状态为 Oi 的概率。
    总结:一般的,可以用λ=(A,B,π)三元组来简洁的表示一个隐马尔可夫模型。隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。

  • 同样,一个hmm模型也可以通过下图简单概括。

  • 上图有s1,s2,s3三种状态,三种状态有5种转移过程,如图示箭头表示,状态间的转移概率分别标识在图上,如s1-s1的概率是0.3。将状态序列用矩阵形式表示:
    a=这里写图片描述

  • 同时,每次转移都输出一个符号a或者b,输出符号取决于相应的概率。如,s1-s1输出a概率为0.8,输出b为0.2。

  • 那么,隐马尔科夫的”隐”体现在哪呢?假如我们得知上图所示的hmm输出符号序列aab,且是由s1开始至s3结束,那么可能存在的状态转移及其输出aab的概率有:、

    s1-s1-s2-s3: 0.3*0.8 * 0.5*1.0 * 0.6*0.5=0.036s1-s2-s2-s3: 0.5*1.0 * 0.4*0.3 * 0.6*0.5=0.018s1-s1-s1-s3: 0.3*0.8 * 0.3*0.8 * 0.2*1.0=0.01152
  • 由此可知,当我们知道hmm输出的状态序列,即便在我们知道尾状态时(起始状态必须知道),仍然不可知其具体的状态转移过程(即所谓的状态序列)。隐马尔科夫的隐即体现在此,对于马尔科夫链的观察值和状态是存在明确的一一对应关系的。

hmm的三大问题

  • 总结起来,hmm核心是三大问题,hmm能解决的问题也是这三大问题。

Q1:求观察序列出现的概率

  • 回顾引言所述的求观察序列aab出现的概率,我们可以把所有可能的状态序列求出(0.036+0.018+0.01152=0.06552),并将对应的概率依次相加,即可得到某个观察序列出现的概率。
  • 实际上这种穷举的方法计算量是非常庞大的,可以想象的是我们会重复计算很多的乘积项。为了降低计算量,Baum等人提出了一个更为有效的算法——前后项算法。

1、前向算法

  • 为了便于展示,一些hmm常用概念的符号表示如下
    这里写图片描述

  • 为了要得到概率P(O/M),利用前向算法的求解过程如下:
    这里写图片描述
    这里写图片描述

  • 其中步骤2给出了前向算法的递推公式,当我们要求前向概率αt,必须得求出前向的前向概率αt-1,以此类推一直求到α0即可。

  • 下面利用前向算法求出符号序列aab的概率
    这里写图片描述

  • 如图所示,要计算

        α1(1)=α0(1) * a11 * b11(a)=1 * 0.3 *  0.8=0.24    α2(1)=α1(1) * a11 * b11(a)=0.24 * 0.24=0.0576    ...
  • 前向算法节省运算成本的原理与动态规划类似,如计算α2(1)时直接调用α1(1)的值,从而省去了计算一些小的乘积项(0.3 * 0.8),即把需要重复计算的过程的结果保存,用时直接调用即可。

后项算法

  • 后项算法的步骤与前向算法恰好相反,先初始化后项,然后向前递推。

这里写图片描述
这里写图片描述

Q2: 求出最佳的状态序列

  • 当我们知道之前的hmm模型输出的观察序列为aab时,Q2问题实质就是求出一个最大概率出现此观察序列的状态序列。
  • 解决这个问题的算法就是维特比算法,其求解最佳状态序列的步骤如下:

这里写图片描述

Q3:求出最佳的hmm模型

  • Q3问题就是给定观察序列,确定一个hmm模型(M={A,B,π};π为初始状态),使得P(O/M)最大。
  • Baum-Welch算法可以用来解决此问题,此算法是通过EM推导出来的,而EM的结论是建立在最大似然估计的基础之上的。

Q3.1:最大似然估计

这里写图片描述

  • 对于最大似然估计法,对于已经取得了样本值x1,x2,..,xn。我们期望用一个概率模型(假设是高斯分布)去估计它们,而最终的目的就是确定这个概率模型的参数(高斯分布的参数就是u和σ^2)使这个估计达到最佳。
  • 首先我们需要构建一个似然函数,然后分别以概率模型的各个参数为变量求出当似然函数达到最大时这个参数为多少。

  • 下面通过一个最大似然函数的具体实例,其展示了最大似然估法对正态分布的估计
    这里写图片描述

  • 关于最大函数的极大值,通常是通过求导得到。 为了求导方便,我们常常会选择对数似然函数。
    这里写图片描述

Q3.2:EM算法

这里写图片描述

  • (2)-(3)使用了Jensen不等式,其中等式成立的条件
    这里写图片描述

  • 至此,一般的EM算法的步骤表示如下:
    这里写图片描述

  • 简单的概述一下EM算法:就是 (E):推测隐含变量z服从某种分布,然后, (M):不断优化这个分布的参数直至算法收敛。

  • 根据EM我们可以推导出HMM第三个问题的矩阵A和矩阵B的估计:

这里写图片描述

这里写图片描述

  • 有了这个重估公式,a矩阵和b矩阵的估计就可以得到了。实际上,通过EM求得的ab矩阵的估计就是Baum-Welch算法:
  • 此算法的求解步骤如下:
    1) 选择一个合适的aij, bij(k)的初始状态,实际应用中,我们要根据观测序列做出的最合理的ab矩阵预估值作为初始值。
    这里写图片描述

这里写图片描述

这里写图片描述

基于hmm的语音识别系统

  • 一个hmm与文本有关的语言识别系统结构如上图所示。
  • 首先,提取说话人的语音特征(如倒谱及△倒谱等)的时间序列。
  • 然后用hmm从左到右建立这些时间序列的声学模型。
  • 在识别阶段,先从输入语言信号提取特征矢量的时间序列,然后利用hmm计算输入序列的生产概率,并根据一定的相似性准则来判断输出结果。

hmm的仿真实验

  • 初始状态转移矩阵为TRANS,观测值概率矩阵为EMIS。各矩阵的值如下:

TRANS =

  `[0.9 0.1; 0.05 0.95;];`

EMIS =

    [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;    7/12, 1/12, 1/12, 1/12, 1/12, 1/12];
  • 由上述的hmm模型随机生成一个可观测序列seq以及状态转移序列states,其值如下:

seq =

 2     2     3     2     6     1     1     1     1     1

states =

 1     1     1     1     1     2     2     2     2     2
  • 利用维特比算法求出的预测状态转移序列

likelystates =

 1     1     1     1     1     2     2     2     2     2
  • 下面利用Baum-Welch算法得出TRANS及EMIS矩阵的预测,先给其一个初始化值:

TRANS_GUESS =

    [0.85 0.15; 0.1 0.9];

EMIS_GUESS =

    [0.17 0.16 0.17 0.16 0.17 0.17;0.6 0.08 0.08 0.08 0.08 0.08];
  • 最终,算法输出的预测值如下:

TRANS_GUESS =

0.8500    0.15000.1000    0.9000

EMIS_GUESS =

0.1700    0.1600    0.1700    0.1600    0.1700    0.17000.6000    0.0800    0.0800    0.0800    0.0800    0.0800
  • 可见,维特比算法和Baum-Welch算法的预测值与实际值相差无几。其中,观察序列的长度与TRANS及EMIS矩阵的初始化值对结果有比较大的影响。
原创粉丝点击