美文网首页
隐马尔科夫模型(HMM)

隐马尔科夫模型(HMM)

作者: 高永峰_GYF | 来源:发表于2018-10-30 15:32 被阅读0次

    1 简介

    隐马尔可夫模型(Hidden Markov Model),简称HMM, 是一种基于概率统计的模型,是一种结构最简单的动态贝叶斯网,是一种重要的有向图模型。它用来描述一个含有隐含未知参数的马尔可夫过程(Markov Process)。其难点是从可观察参数中确定该过程的隐参数,然后利用这些参数来作进一步的分析。

    自上世纪80年代发展起来,隐马尔科夫模型是比较经典的机器学习模型了,它在语音识别、文字识别、自然语言处理、模式识别等领域得到广泛的应用。当然,随着深度学习的崛起(RNN,LSTM等神经网络序列模型),HMM的地位有所下降。但是作为一个经典的模型,学习HMM的模型和对应算法,对我们解决问题建模的能力提高以及算法思路的拓展还是很好的。

    1.1 马尔可夫过程(Markov Process)

    马尔可夫过程 (Markov Process),它因俄罗斯数学家安德烈·马尔可夫而得名,代表数学中具有马尔可夫性质的离散随机过程。它的原始模型马尔可夫链,由安德烈·马尔可夫于1907年提出。

    随机过程中,每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态。注意这和确定性系统不一样,因为这种转移是有概率的,而不是确定性的。

    X1, … , Xn,每个状态值取决于前面有限个状态。如果 Xn+1 对于过去状态的条件概率分布仅是 Xn 的一个函数,则

    这里 x 为过程中的某个状态。这个恒等式可被看作是马尔可夫性质

    通俗的说就是,随机过程中某一时刻的状态,只与它前一时刻的状态有关,以上就是马尔科夫性质。我们知道自然世界中的很多现象都不符合这一性质,但是我们可以假设其具有马尔科夫性质,这为原来很多无章可循的问题提供了一种解法。 

    如果某一随机过程满足马尔科夫性质,则称这一过程为马尔科夫过程,或称马尔科夫链。

    马尔可夫链(Markov Chain),描述了一种状态序列,其每个状态值取决于前面有限个状态。马尔可夫链是具有马尔可夫性质的随机变量的一个数列。这些变量的范围,即它们所有可能取值的集合,被称为“状态空间”,而 Xn 的值则是在时间 n 的状态。

    状态间的转移概率(可以写成状态转移矩阵)

    在马尔科夫链中,每一个圆圈代表相应时刻的状态,有向边代表了可能的状态转移,权值表示状态转移概率。 

    1.2 HMM中的隐

    这里“隐”指的是马尔科夫链中任意时刻的状态变量是不可见的,也就是说状态序列S0,S1,...,St无法直接观测到。但是HMM中每时刻有一个可见的观测值Ot与之对应,而且Ot有且仅于当前时刻隐状态St有关,St外化表现为Ot的概率称为输出概率,因此隐马尔科夫模型的结构图如下所示。

    因此,隐马尔科夫模型中马尔科夫链指的是隐状态S0,S1,...,St序列。

    2 HMM模型五元组

    HMM模型可以用五元组(O,S,A,B,π)表示。其中

    O:{o0,o1,...,0n}表示观测序列,是系统的外在可观测变量。

    S:{s0,s1,...,sn}表示隐状态序列,是导致系统外在表现变化的内因。

    A:{aij=p(sj|si)}表示状态转移概率。  这个概率 表明了隐状态从一种状态转换到另一种状态的概率。

    B:{bij=p(oj|si)}表示输出概率。 这个概率表明了从某种隐变量到可观测值的概率。

    π :{ π 0,π1,...,πm},表示初始状态概率分布

    3 HMM 模型的三个基本问题

    根据以上HMM模型五元组表示,我们可以归纳出HMM模型解决的三个经典的问题。 

    1) 评估观察序列概率。即给定模型λ=(A,B,π)和O={o1,o2,...on}(状态转移矩阵A,输出矩阵B,和观测序列O这些已知),计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到前向后向(forward/Backward )算法,这个问题是HMM模型三个问题中最简单的。

    这就是评估问题,最显而易见的一个应用就是异常检测,如果一个多次HMM模型实验的结果都显示观测序列出现的概率较小,说明观测序列和模型不太吻合,则可以断定系统可能出现了异常。该问题最简单粗暴的解法就是直接组合出所有的可能隐藏状态序列,然后求出每个隐藏状态序列导致观测序列发生的概率,最后将概率求和即是最终结果。但是列举出所有可能的状态序列是一个指数爆炸增长的问题,在实际系统中不太可能实现。因此有人提出了forward/Backward 算法。 

    2)预测问题,也称为解码问题。即给定模型λ=(A,B, π )和O={o1,o2,...on} (状态转移矩阵A,输出矩阵B,和观测序列O这些已知) ,求最有可能产生该观测序列的隐藏状态序列,这个问题的求解需要用到基于动态规划的维特比算法。这个问题是HMM模型三个问题中复杂度居中的算法。

    这个问题通常被称作解码问题,该问题通常也被称作“由果溯因”。隐状态通常是导致系统外在表现变化的“内因”,观测序列只是隐状态变化带来的“结果”。最常见的应用就是语音识别,即将某一段语音转化成对应的文字序列。解决该问题也可以采用同问题一类似的枚举法,只需要将所有可能序列的概率求和改为找最大概率对应序列即可,但同样效率不高。因此解决此类问题常用Viterbi算法。

    3)模型参数学习问题。即给定观测序列O={o1,o2,...on},估计模型λ=(A,B, π )的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法。这个问题是HMM模型三个问题中最复杂的。

    已知仅仅是很多观测序列,估计HMM模型的参数的可能取值。这个问题被称作学习问题,通过大量的样本数据去学习最优的模型参数,该问题的求解比较复杂,常采用Baum-Welch算法。

    4 参考

    如何用简单易懂的例子解释隐马尔可夫模型? https://www.zhihu.com/question/20962240

    相关文章

      网友评论

          本文标题:隐马尔科夫模型(HMM)

          本文链接:https://www.haomeiwen.com/subject/tfmgtqtx.html