隐马尔可夫模型(HMM)原理

本文主要讨论隐马尔科夫模型的三大要素,三大假设和三大问题。

1、引入

  隐马尔可夫模型是一个关于时序的概率模型,它描述了一个由隐藏的马尔可夫链生成状态序列,再由状态序列生成观测序列的过程。其中,状态之间的转换以及观测序列和状态序列之间都存在一定的概率关系。隐马尔可夫模型主要用来对上述过程进行建模。为了方便后面的讨论,我们先定义一些符号:

  设共有N个隐藏状态,状态集合可以表示为:

  设共有M个观测状态,观测集合为:

  注:隐藏状态的数目和观测状态的数目不一定相同。

2、模型概述

  隐马尔可夫模型主要有三大要素,分别是:初始状态向量,状态转移概率矩阵A和观测概率矩阵B。此三大要素决定了一个模型。模型可表示为:

  1)初始状态向量 。模型最开始的时候处于哪状态?这个就靠初始状态向量,它决定了模型在最开始时每个状态的概率。若有N个状态,则初试状态向量的长度为N。

  其中:表示状态i作为初始状态的概率,所有的概率之和为1.

  2)状态转移概率矩阵A。此矩阵主要描述了不同状态之间的转移概率。由于共有N个状态,则状态转移概率矩阵的大小为N*N。  

  其中:表示状态i直接转移到状态j的概率。并且,状态转移概率矩阵的每一行的概率之和为1.

  3)观测概率矩阵B。表示由状态生成观测的概率。其符号表示为:

  其中:表示由状态j生成观测k的概率。同样,矩阵的每一行的概率之和为1.

注:上面三大要素在模型的训练过程中一直保持不变。

除了上面的三大要素之外,隐马尔可夫模型还有三大假设。

  1)齐次马尔可夫假设。又叫一阶马尔可夫假设,即任意时刻的状态只依赖前一时刻的状态,与其他时刻无关。符号表示为:

  推广:n阶马儿可夫模型:任意时刻的状态只依赖前面n个时刻的状态,与其他时刻无关。

  2)观测独立性假设。任意时刻的观测只依赖于该时刻的状态,与其他状态无关。

  3)参数不变性假设。上面介绍的三大要素不随时间的变化而改变,即在整个训练过程中一直保持不变。

至此,我们介绍了三大要素和三大假设,现在我们要解决三大问题:概率计算问题,预测问题和学习问题。下面分别对其进行详细介绍。

3、概率计算问题

问题描述:此问题主要是在已知模型参数的条件下,求给定观测序列出现的概率。设状态序列为:,其对应的观测序列为:

1)暴力计算法 --> 时间复杂度:O(TNT)

  首先我们使用最原始的方法来分析一下。对于一个确定状态序列的概率为:

  然后计算在状态序列确定的情况下,计算观测序列的概率:

  现在我们将上面两个公式综合起来,即计算状态序列I和观测序列O同时出现的概率为:

  最后对所有可能的状态序列I计算与观测序列O的概率:

  由于状态序列I的长度为T,每个状态有N种可能,所以状态序列I共有NT种可能,然后每种可能计算与观测序列O的概率,所以时间复杂度为:O(TNT)。对于此方法的时间复杂度太高,实际上不可行。

2)前向算法 --> 时间复杂度O(TN2)

  首先,我们设在时刻t的状态为qi,且观测序列为o1,o2,…,ot的概率为

  根据齐次马尔可夫假设和观测独立性假设,我们知道每个观测只与它当前时刻的状态有关,而每一个状态只与它前一时刻的状态有关。于是t+1时刻的前向概率为:

  在t+1时刻的观测概率只与t+1时刻的状态i有关,即首先计算在t+1时刻状态i生成观测ot+1的概率,然后遍历上一时刻t中各个状态的前向概率,再乘以上一时刻的状态j转换成状态i的概率。于是就得到了前向概率的递推公式。

图3.1 前向概率递推示意图

前向算法过程如下:

A)初始化

B)从前向后,逐步递推,对t=1,2,…,T-1

C)对T时刻的所有前向概率求和。

  前向算法的时间从t=1~T进行遍历;然后在时刻t,首先需要对该时刻每个可能的状态(共N个状态)进行遍历;对每一个可能的状态,我们需要计算它与前一时刻的所有状态之间的转移概率。所以算法的最终时间复杂度为O(TN2)。

3)后向算法 --> 时间复杂度O(TN2)

  后向算法从时刻T开始向前推进,对每一时刻t,计算当前时刻t与下一时刻t+1之间的递推关系,设时刻t+1到时刻T的观测序列为ot+1,ot+2,…,oT,于是在t时刻状态i的后向概率为:

  现在,我们分析一下从t+1时刻到t时刻的后向概率的变化。由于t时刻的后向概率只与t+1时刻的状态有关。于是,只需要考虑当前时刻t的状态i转移到t+1时刻的N个状态j的概率,以及状态j生成观测ot+1的概率以及j的后向概率。

递推公式如下:

关于后向概率的递推过程如图3.2所示。(与神经网络有点类似)

图3.2 后向概率递推示意图

后向概率算法过程:

A)初始化,将

B)从后向前,对时刻t=T-1,T-2,…,1.使用递推公式:

C)最后到达初始化状态,

4、预测问题

  问题描述:已知模型参数和观测序列,求观测序列对应的最可能的状态序列。

  此问题主要两种方法,总的来说就是计算概率最大的状态序列。

1)近似算法 --> 贪心的思想 --> 局部最优

  此算法思想是在观测O的前提下每个时刻t选择该时刻概率最大的状态。在时刻为t时,状态为i的概率为:

  然后选择时刻t中所有概率最大的状态:

  最后将每个时刻概率最大的状态组合得到状态序列:I’=(i1’,i2’,…,in’)。但该序列只能保证状态在每一时刻的最优,而不能保证整体序列的最优。

2)维特比算法 –> 动态规划

  为了使状态序列达到全局最优,我们使用动态规划的思想。首先将每个状态序列看作是一条路径,每个状态看作是路径上的一个节点。

  设时刻t=1~t’的最优状态序列为i1,i2,…,it’,则在整体最优状态序列中一定包含上述部分最优序列,否则,设整体最优状态序列在时间1~t’的最优序列为i1,i2,…,ik,则序列i1,i2,…,ik比序列i1,i2,…,it’更优与条件i1,i2,…,it’是最优的矛盾,因而,我们可以通过逐个时刻求解当前的最优状态序列,直到时刻T。

  先定义在时刻t状态为i的所有单个路径状态i1,i2,…,it中概率最大值为:

  则在时刻t+1时:

  通过上述递推公式可以计算出状态序列出现的概率,但是并没有得到相应的状态序列,于是我们需要使用下式来保存每步中的状态序列:

维特比算法过程如下:

1)初始化,在t=1时,有:

2)利用递推公式,t=2,3,…,T,

3)得到概率最大的状态序列中的最后一个状态为:

4)依次回溯,得到最优状态路径:

得到最优路径为:i1’, i2’, …, iT’。

5、学习问题

  问题描述:已知观测序列,估计模型参数。

  对于此问题主要有两种情况,首先是给出了观测序列以及对应的状态序列的监督学习方法,其次是只给出观测序列,没有给出状态序列的非监督学习方法。现在分别对其进行讨论:

1)监督学习法 --> 给出观测序列+对应的状态序列 --> 极大似然估计

  假设给出的训练集为:{(o1,i2),(o2,i2), …, (oT,iT)},此时,我们可以直接使用极大似然估计法来估计模型参数。

  A)状态转移概率估计。设由状态i直接转移到状态j的次数为Aij,则由状态i转移到状态j的概率估计为:

  B)观测概率估计。设样本中状态为j时观测为k的次数是Bjk,则状态j生成观测k的概率估计bjk’为:

  C)初试状态概率。样本状态序列中第一个状态i对应的初始概率为1,其余的为0。

2)非监督学习法 --> 只有观测序列,无相应的状态序列 --> 前向后向算法.

  在前面,我们已经介绍了前向算法和后向算法。根据前向概率和后向概率,可以得出观测序列为O且在t时刻的状态为qi的概率为:

  将时刻t的前向和后向综合进行考虑,就能得出上述公式,分析如图5.1所示。

图5.1 时刻t的状态图

  观测O在t时刻的状态为qi的概率为:

  所以,在观测为O的状态下qi出现的期望值为:

  在t时刻状态为qi且在t+1时刻状态为qj的概率为:

  其中,观测为O且t时刻的状态为qi以及t+1时刻的状态为qj的概率为:

  由于在计算at(i)时已经考虑了bi(ot)的概率,所以在上式中只有bj(ot+1)。

图5.2 时刻t到t+1的状态

  此时的观测O的概率也可以写为:

  那么由状态i转移到状态j的期望值为:

现在,我们可以估计模型参数:

A)初始状态概率向量:,其中

B)状态转移概率矩阵:,其中:

C)观测概率矩阵:,其中

  对于计算状态j生成观测vk的概率,首先需要找到每个时刻的状态j,然后找出状态j生成观测vk的数目。

6、总结

  隐马尔可夫模型主要由三大要素组成,然后利用三大假设解决三大问题。在三大问题中,首先是概率计算问题,这主要利用前向算法或后向算法;我们将前向算法和后向算法结合就可以解决只有观测序列求模型参数的问题,即学习问题;最后关于状态序列预测问题主要使用维特比算法,此算法使用动态规划的思想,使得最终计算出来的状态序列能达到整体最优。

  另外,本文后面的前向后向算法只给出了一些计算公式,并未深入的进行分析,其实这些公式可以使用EM算法来推导。

参考文献:

[1] 李航,统计学习方法

[2] peghoty, http://blog.csdn.net/itplus/article/details/15335811

[3] LiXiang, http://www.leexiang.com/hidden-markov-model

[4] jihite, http://www.cnblogs.com/kaituorensheng/archive/2012/12/06/2806263.html

时间: 2024-11-14 16:02:37

隐马尔可夫模型(HMM)原理的相关文章

隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇里会用到.在李航的<统计学习方法>中,这个算法的讲解只考虑了单个观测

隐马尔可夫模型HMM与维特比Veterbi算法(一)

隐马尔可夫模型HMM与维特比Veterbi算法(一) 主要内容: 1.一个简单的例子 2.生成模式(Generating Patterns) 3.隐藏模式(Hidden Patterns) 4.隐马尔可夫模型(Hidden Markov Model) 一.一个简单的例子 考虑一个简单的例子,有人试图通过一片海藻推断天气--民间传说告诉我们'湿透的'海藻意味着潮湿阴雨,而'干燥的'海藻则意味着阳光灿烂.如果它处于一个中间状态('有湿气'),我们就无法确定天气如何.然而,天气的状态并没有受限于海藻的

七月算法-12月机器学习在线班--第十七次课笔记-隐马尔科夫模型HMM

七月算法-12月机器学习--第十七次课笔记-隐马尔科夫模型HMM 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 隐马尔科夫模型 三个部分:概率计算,参数估计,模型预测 1,HMM定义 HMM由初始概率分布π.状态转移概率分布A以及观测概率分布B确定. Eg:以中文分词为例子 隐状态为="2",是不是终止字,是/否?(Y/N)即是不是最后一个字. A矩阵:第一个:当前是终止字,下一个也是终止字的概率 B是当前的隐状态是终止词,

隐马尔科夫模型HMM

隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析.在早些年HMM模型被非常广泛的应用,而现在随着机器学习的发展HMM模型的应用场景越来越小然而在图像识别等领域HMM依然起着重要的作用. 引言: 隐马尔科夫模型是马尔科夫链的一种,它

隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在隐马尔科夫模型HMM(一)HMM模型中,我们讲到了HMM模型的基础知识和HMM的三个基本问题,本篇我们就关注于HMM第一个基本问题的解决方法,即已知模型和观测序列,求观测序列出现的概率. 1. 回顾HMM问题一:求观测序列的概率 首先我们回顾下HMM模型的问题一.这个

隐马尔可夫模型HMM与维特比Veterbi算法(二)

隐马尔可夫模型HMM与维特比Veterbi算法(二) 主要内容: 前向算法(Forward Algorithm) 穷举搜索( Exhaustive search for solution) 使用递归降低问题复杂度 前向算法的定义 程序实现前向算法 举例说明前向算法 一.前向算法(Forward Algorithm) 目标:计算观察序列的概率(Finding the probability of an observed sequence) 1. 穷举搜索( Exhaustive search fo

隐马尔科夫模型HMM(一)HMM模型

隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率(TODO) 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学习的崛起,尤其是RNN,LSTM等神经网络序列模型的火热,HMM的地位有所下

隐马尔科夫模型 HMM(Hidden Markov Model)

本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定这个大名鼎鼎的模型,也省着之后遇到再费心. Outline 模型引入与背景介绍 从概率图讲起 贝叶斯网络.马尔科夫模型.马尔科夫过程.马尔科夫网络.条件随机场 HMM的形式化表示 Markov Model的形式化表示 HMM的形式化表示 HMM的两个基本假设 HMM的三个基本问题 Evalution

【ML-13-1】隐马尔科夫模型HMM

[ML-13-1]隐马尔科夫模型HMM [ML-13-2]隐马尔科夫模型HMM--前向后向算法 [ML-13-3]隐马尔科夫模型HMM--Baum-Welch(鲍姆-韦尔奇) [ML-13-4]隐马尔科夫模型HMM--预测问题Viterbi(维特比)算法 目录 基础知识-马尔可夫链 HMM简介 HMM定义 HMM模型的三个基本问题 举例 一.基础知识-马尔可夫链 1.1 马尔可夫性质 设{X(t), t ∈ T}是一个随机过程,E为其状态空间,若对于任意的t1<t2< ...<tn<

标注-隐马尔可夫模型HMM的探究

1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 后向算法2.4 一些概率与期望值的计算3 学习算法3.1 监督学习3.2 非监督学习--Baum-Welch算法3.3 Baum-Welch模型参数估计公式4 预测算法4.1 近似算法4.2 维特比算法Viterbi algorithm 隐马尔可夫模型(hidden Markov model,HMM)是可用于标注问题的统计学习