zoukankan      html  css  js  c++  java
  • HMM隐马尔科夫模型

    马尔科夫过程

    在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名。马尔可夫过程是不具备记忆特质的。换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立、不相关的。

    一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程。这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态。最简单的马尔科夫过程是一阶模型,它的状态选择仅与前一个状态有关。这里要注意它与确定性系统并不相同,因为下一个状态的选择由相应的概率决定,并不是确定性的。


    尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。马尔可夫链是具有马尔可夫性质的随机变量的一个数列。这些变量的范围,即它们所有可能取值的集合,被称为“状态空间”,而Xn的值则是在时间n的状态。若Xn=i,就说过程在n时刻处于状态i,假设每当过程处于状态i,则过程在下一时
    刻处于状态j的概率aij为一定值。即对任意n≥1,Xn+1对于过去状态的条件概率分布仅是Xn的一个函数


    这样的随机过程称为Markov链。

    状态转移矩阵

    对于有N个状态的一阶马尔科夫模型,共有N*N个状态转移,因为任何一个状态都有可能是所有状态的下一个转移状态。每一个状态转移都有一个概率值,称为状态转移概率——这是从一个状态转移到另一个状态的概率。所有的N*N个概率可以用一个状态转移矩阵表示。

    定义下面的矩阵A为状态转移概率矩阵:


    满足条件:


       1=<i,j<=N.


    注意这些概率并不随时间变化而不同——这是一个非常重要(但常常不符合实际)的假设。



    隐马尔科夫模型HMM

    隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
    在正常的马尔可夫模型中,状态对于观察者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。

    HMM是一种用参数表示的用于描述随机过程统计特性的概率模型,它是一个双重随机过程。HMM 由两部分组成:马尔可夫链和一般随机过程。其中马尔可夫链用来描述状态的转移,用转移概率描述。一般随机过程用来描述状态与观察序列间的关系,用观察值概率描述。对于HMM模型,状态转换过程是不可观察的,因而称之为“隐”马尔可夫模型。


    一个HMM的例子

    设有N个罐,每个罐子中有很多彩色的球,球的颜色由一组概率分布矢量来描述。实验是这样进行的,根据某个初始概率分布,随机选取N个罐予中的一个,例如第i个罐子,再根据这个罐子中彩色球颜色的概率分布,随机的选择一个球,记下球的颜色,记为O1,再把球放回罐子中,又根据描述罐子的转移概率分布随机地选择下一个罐子,例如第j个罐子,再从罐子中随机选一个球,记下球的颜色,迎为O2,一直进行下去,可以得到一个描述球的颜色序列O1,O2,⋯,由于这是一些观测到的事件,因而称之为观测值序列。但罐子之间的转移以及每次选取的罐子都被隐藏起来了,并不能直接观测到。而且从每个罐子中选取球的颜色并不是与罐子一一对应,而是由该罐子中球的颜色的概率分布随机决定的。此外,每次选择哪一个罐子由一组转移概率所决定。


    一个HMM可以由下列参数描述:

    1.   N:模型中,Markov链的状态数目。记N个状态为θ1,θ2,⋯,θN,记t时刻Markov链所处的状态为qt,显然qt∈(θ1θ2,⋯,θN)。在罐子和球的实验中罐子就相当于HMM中的状态。

    2.M:每个状态对应的可能的观测值数目。记M个观测值为v1,v2,,vM,记t时刻的观测值为Ot,其中Ot∈(v1,v2,,vM)。在罐子和球的实验中所选球的颜色就是HMM模型中的观测值。

    3 π:初始概率分布矢量 π =( π1, π2,⋯, πN),其中
     πi=P(qt=θi),1=<i<=N.
    在罐子和球的实验中,指实验开始时选择的某个罐子的概率。

    4.A:状态转移概率矩阵,A=(aij)N*N。其中,
    aij=P(qt+1=θj/qt=θi)              1≤i,j≤N 
    在罐子和球的实验中是指每次选取当前罐子的条件下,选取下一个罐子的概率。

    5.B:观测值概率矩阵,B=(bjk)N*M,其中
    bjk=P(Ot=vk/qt=θj),1≤j≤N,1≤k≤M
    在罐子和球的实验中,bjk就是第j个罐子中球的颜色k出现的概率。
    这样,记HMM为:
     λ =(N,M,π,A,B) 
    或简写为:
    λ =(π,A,B) 

    HMM可以分为两部分,一个是Markov链,由π、A来描述,产生的输出为状态序列:另一个随机过程,由B来述,产生的输出为观测值序列。


    HMM基本算法

    给定的一个HMM,必需要解决三个基本问题,围绕着三个基本问题,人们研究出了三个基本算法,这三个问题是:

    问题1 HMM的概率计算问题
    给定观测序列o={ol,o2,⋯,ot}和模型λ,怎样有效地计算观测变量序列o的在给定模型下的概率P(OIλ)

    问题2 HMM的最优状态序列问题
    给定观测序列O={o1,o
    2,⋯,ot)和模型λ,怎样选择一个相应的状态序列q={q1,q2,⋯,qt),能够在某种意义上最优(例如,更好的解释“观测变量”)?


    问题3:HMM的训练问题(参数估计问题)

    给定观测序列O={o1,o2,⋯,ot,)和初始条件,如何调整模型参数λ=(π,A,B)使P(Olλ)为最大?


    前向一后向算法

    这个算法是上述第一个问题的解决方案。


    前向算法

    定义前向变量为:
    αt(i)=P(o1,o2,…,ot,qt=θiIλ),l≤t≤T
    那么,有,
    a)初始化
    α1(i)=πi*bi(o1)
    b)递归

    c)终结


    后向算法

    定义后向变量为:
    βt(i)=P(ot+I,ot+2,…,oT|qt=θiλ),1≤t≤T-1
    其中,βT(i)=1,后向算法的计算过程如下:
    a)初始化
    βT(i)=1,1≤i≤N
    b)递归

    c)终结

    后向算法初始化时对于所有的状态i定义βT(i)=1。


    Viterbi算法

    问题2是寻求“最优”状态序列。‘‘最优’’的意义有很多种,由不同的定义可得到不同的结论。这里讨论的最优意义上的状态序列Q*,是指使P(Q|O,λ)最大时所确定的状态序列。这实际上是一个动态规划问题。这个过程可以用Viterbi算法来实现。Viterbi算法可以叙述如下:
    定义δt(i)为t时刻沿一条路径ql,q2,⋯,qt,且qt=θi,产生出o1,o2,⋯,ot的最大概率,即有

    那么求取最优状态序列Q*的过程为:
    a)初始化

    b)递归

    C)终结

    其中符号argmax符号定义为,如果i=I,f(i)达到最大值,那么



    d)求最佳状态序列


    Baum—Welch算法

    这个算法解决了上面提到的问题三,即HMM训练或参数估计问题,即给定一个观测值序列O={o1,o2,⋯,oT},该算法能够确定一个模型λ=(π,A,B)使P(Olλ)为最大。这是一个泛函极值问题,因而不存在一个最佳方案来估计λ。在这种情况下,Baum—Welch算法利用递归的思想,使P(Olλ)为局部最大,最后得到模型的参数。其实就是用了EM算法的思想。
    定义ξt(i,j)为给定训练序列O和模型λ时,时刻t
    时Markov链处于θi状态和时刻t+1时处于θj状态时的概率,即

    ξt(i,j)=P(O,qt=θi,qt+1=θj|λ)
    根据前向变量和后向变量的定义可以导出:
    ξt(i,j)=[αt(i)aijbj(ot+1)βt+1(j)]/P(Olλ)
    那么t时刻Markov链处于θi状态的概率为:

    于是.表示从θi状态转移出去的期望值数目,而表示从θi状态转移到θj状态的期望值数目。由此导出了Baum-Welch算法中著名的重估公式


    那么HMM的参数λ=(π,A,B)的求取过程为;根据观测序列O和选取的初始模型λ0=(π,A,B),由重估公式求得一组新的参数露亦即得到了一个新模型,可以证明。即有重估公式得到的λ在表示观测值序列O的方面要好,那么重复这个过程,逐步改进模型参数,直到满足一定的收敛条件,即不再明显增大,此时的就是所求之模型,

    HMM用于模式识别

    HMM是一种动态模式识别工具,能够对一个时间跨度上的信息进行统计建模和分类。

    在语音识别中,要首先建立一种对应关系,例如,使一个字对应一个HMM,这里的状态就是指这个音所包含的全部可能的音素(或其细分,或其组合)。对应于此字的一个观测样本,这些音素按照一定的先后顺序出现,这就形成了HMM中的状态序列,现实中不可观测到。相应的观测过程的现实就是每个字母所对应的声音信号的振幅。为了建立上述对应关系,首先应对
    该字的一组观测样本(该字的若干个声音信号)进行学习,也就是说相应的状态序列缺失的情况下进行HMM的参数估计。用数理统计的语言来说,就是不完全数据的参数估计。

    在学习了每个字的参数后,就可以用来识别。也就是对一组观测样本(一个字的声音信号),找到最大可能产生该观测样本的那个模型作为该字的代表。

    基于方法的孤立词识别系统的基本思想:在训练阶段,用HMM的训练算法(如Baum一welch算法),建立系统词汇表中每个单词对应的HMM,记为λ。在识别阶段,使用前向一后向算法或Viterbi算法求出各个概率P(O/λi),其中O为待识别词的观测值序列。最后选取最大的P(O/λi))所对应的单词斌为O的识别结果。


    版权声明:

  • 相关阅读:
    10分钟学会在Ubuntu 18.04 LTS上安装NFS服务器和客户端
    脱发、秃头防不胜防?这里有一份给码农的减压指南 [转自机器之心]
    Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本
    ubuntu tree 查看目录结构
    Clion快捷键
    斜杠与反斜杠的记法
    C++ 既有约定
    docker其他参考资料
    标准错误重定向、标准输入重定向
    第一本Docker书读书笔记
  • 原文地址:https://www.cnblogs.com/walccott/p/4956953.html
Copyright © 2011-2022 走看看