定义:

隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。

隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。

Q={q1,q2,q3,…….qN}————————————所有可能的状态集合(共有N个状态)

V={v1,v2,v3,…….vM}————————————所有可能的观测集合(共有M种可能的观测)

I={i1,i2,i3,…….…..iT}————————————长度为T的状态序列(随时间变化的状态序列)

O={o1,o2,o3,…….oT}—————————————长度为T的观察序列(随时间变化的观察序列)

A=[aij]N×N —————————————————在某一时刻t下状态为i,转移到下一时刻t+1状态为j的概率为aij.      状态转移矩阵A

B=[bj(k)]N×M————————————————在某一时刻t处于状态qj的条件下生成观测vk的概率                        观测概率矩阵B

π=(πi)——————————————————时刻t=1时的处于状态qi的概率                                                 初始状态概率π

隐马尔科夫模型可以用三元符号(A,B,π)来表示。

隐马尔科夫模型做的两个基本假设:

1)齐次马尔科夫性假设,即下一时刻t+1的状态只依赖于当前状态t与之前的时刻t-1,……1的状态无关

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

观测序列的生成过程

输入:隐马尔科夫模型(A,B,π),观测序列长度T

输出:观测序列O=(o1,o2,o3,…….oT)

(1)按照初始状态分布π产生状态i1

(2)令t=1

(3)按照状态it的观察概率分布bit(k)生成ot

(4)利用状态转移矩阵A,求出下一时刻的状态

(5)令t=t+1;如果t<T,转步(3),否则停止

隐马尔科夫模型的三个基本问题

(1)概率计算问题。给定模型L=(A,B,π)和观察序列O=(o1,o2,o3,…….oT),计算在模型L下观测序列O出现的概率P(O|L)

(2)学习问题。已知观察序列O=(o1,o2,o3,…….oT),估计模型L=(A,B,π)参数,使得该模型下观测序列概率P(O|L)最大,极大似然估计的方法

(3)预测问题,也称为解码问题,即给定观测序列,求最有可能的对应的状态序列

解决问题1——概率计算

常见的算法有两类:前向算法(forward)和后向(backward)算法。

先介绍概念上可行但计算上不可行的直接计算法,

直接计算法

给定模型L(A,B,π)和观测序列O=(o1,o2,o3,…….oT),计算P(O|L)。最直接的方法就是按概率公式直接计算。通过列举所有可能的长度为T的状态序列                         I=(i1,i2,i3,…….…..iT),求各个状态序列I与观测序列O=(o1,o2,o3,…….oT)的联合概率P(O,I|L),然后对所有可能的状态序列求和,得到P(O|L)

前向算法

定义前向概率:给定隐马尔科夫模型L,定义到时刻t部分观测序列为o1,o2,o3,…….ot且状态为qi的概率为前向概率,即

αt(i)=P(o1,o2,o3,…….ot,it=qi|L)

可以递推地求得前向概率αt(i)及观测序列概率P(O|L)

输入:隐马尔科夫模型L,观测序列O

输出:观测序列概率P(O|L)

(1)初值     α1(i)=πibi(o1)  i=1,2,……N

(2)递推 对t=1,2,…….,T-1,

αt+1(i)=[Σαt(j)aji]bi(ot+1)  i=1,2,……N

(3)终止

P(O|L)=ΣαT(i)

理解:αt(j)可以看作某个节点此时的状态他们有一个共同点就是前t时刻的观测序列都为o1,o2,o3,…….ot,现在要求αt+1(i),即前t时刻的观测序列仍为o1,o2,o3,…….ot但第t+1次的观测为ot+1状态为q,因此我们要先求得t+1时刻状态为q的概率然后转化再求观测ot+1 。由于我们最终求出的概率是考虑进去了状态q因此要求得的P(O|L)还要进行求和(步骤3)。

后向算法

首先同样要定义一个后向概率:定义在时刻t状态为qi的条件下,从t+1到T的部分观测序列为o1+t,ot+2,ot+3,…….oT的概率为后向概率,即

βt(i)=P(o1+t,ot+2,ot+3,…….oT|it=qi,L)

可以用递推的方法求得后向概率βt(i)及观测序列概率P(O|L)

算法:

输入:隐马尔科夫模型L,观测序列O

输出:观测序列概率P(O|L)

(1)βT(i)=1  i=1,2,3..。。。N

(2)对时间t=T-1,T-2,…..1

βt(i)=Σaijbj(ot+1t+1(j)    i=1,2,……..N

(3)P(O|L)=Σπibi(o11(i)

理解:βt+1(i)可以看作某时刻t+1状态为qj,对之后时刻t+2….T观测到的序列。由于后一项状态只与前一项状态有关,因此只需考虑时刻t到t+1的转换为qj的概率,即可能的N个转换为qj的概率aij.以及在时刻t+1此状态下观测值为o1+t的观测概率。

(一些概率和期望的计算:利用我们的前向概率和后向概率,可以得到单个状态的概率和两个状态的概率:1.已知L和O,求t时刻状态为qi的概率,2.已知L和O,求t时刻状态为的qi且t+1时刻状态为qj的概率(某时刻的后验转换概率)3.可以根据上述计算期望)

学习算法

监督学习方法

假设已知训练数据包含S个长度相同的观测序列和对应的状态序列{ (O1,I1),(O2,I2),………..,(OS,IS)},那么可以利用极大似然估计法来估计隐马尔科夫模型的参数。具体方法如下:

1.转移矩阵aij的估计

设样本中时刻t处于状态i时刻t+1转移到状态j的频数为Aij,那么状态转移概率aij为Aij/ΣAij

2.观测概率bj(k)的估计

设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的概率bj(k)为 Bjk/ΣBjk

3.初始状态概率πi的估计为S个样本中初始状态为qi的频率

由于监督学习需要使用训练数据,而人工标注训练数据往往代价很高,有时会利用非监督学习的方法。

Baum-Welch算法

假设训练 数据只包含S个长度为T的观测序列{O1,O2,…..OS},将状态变量看作是隐变量,那么隐马尔科夫模型实际上是含有隐变量的概率模型。

P(O|L)=ΣP(O|I,L)P(I|L)

他的参数可以由EM算法来实现。

预测算法

隐马尔科夫模型预测的两种算法:近似算法与维特比算法。

近似算法

在每个时间t选择在该时刻最有可能出现的状态i*,从而得到一个状态序列I*=(i1*,i2*,……..,iT*)

可以根据前面的前向概率和后向概率求出某一时刻,最大概率的状态。

维特比算法

用动态规划解隐马尔科夫模型预测问题,即用动态规划求概率最大路径。这时一条路径对应着一个状态序列。


参考文献:统计学习方法

隐马尔可夫模型(hidden Markov model,HMM)的更多相关文章

  1. [综]隐马尔可夫模型Hidden Markov Model (HMM)

    http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...

  2. 隐马尔科夫模型(hidden Markov model, HMM)

  3. 隐马尔可夫模型(Hidden Markov Model)

    隐马尔可夫模型(Hidden Markov Model) 隐马尔可夫模型(Hidden Markov Model, HMM)是一个重要的机器学习模型.直观地说,它可以解决一类这样的问题:有某样事物存在 ...

  4. 隐马尔科夫模型(hidden Markov Model)

    万事开头难啊,刚开头确实不知道该怎么写才能比较有水平,这篇博客可能会比较长,隐马尔科夫模型将会从以下几个方面进行叙述:1 隐马尔科夫模型的概率计算法  2 隐马尔科夫模型的学习算法 3 隐马尔科夫模型 ...

  5. 从马尔可夫模型(Markov Model)到隐马尔可夫模型(Hidden Markov Model)

    1.参考资料: 博客园 - 刘建平随笔:https://www.cnblogs.com/pinard/p/6945257.html 哔站up主 - 白手起家的百万富翁:https://www.bili ...

  6. 隐马尔科夫模型(Hidden Markov Models)

    链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...

  7. 隐马尔科夫模型(Hidden Markov Models) 系列之三

    转自:http://blog.csdn.net/eaglex/article/details/6418219 隐马尔科夫模型(Hidden Markov Models) 定义 隐马尔科夫模型可以用一个 ...

  8. 隐马尔科夫模型(Hidden Markov Models) 系列之五

    转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ...

  9. 隐马尔科夫模型(Hidden Markov Models) 系列之二

    转自:http://blog.csdn.net/eaglex/article/details/6385204 隐含模式(Hidden Patterns) 当马尔科夫过程不够强大的时候,我们又该怎么办呢 ...

  10. 隐马尔科夫模型(Hidden Markov Models) 系列之一

    转自:http://blog.csdn.net/eaglex/article/details/6376826 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能 ...

随机推荐

  1. Shift Register(Using Submodule)

    /*************************************************** /  Shift Register module by Submodule /  Progra ...

  2. PHPstorm配置远程及本地服务器

    首先打开PHPStorm的设置. 找到如下页面 OPEN一个项目,路径为XAMPP的安装路径 选择Local or mounted folder 设置以上属性,upload/download proj ...

  3. 设计模式中类的关系之组合关系(Composition)

    组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合:它同样体现整体与部分间的关系,但此时整体与部分是不可分的,它们具有统一的生存期,整体的生命周期结 ...

  4. 浅谈push推送的一点感受

    在手机已成为生活必不可分的一部分,push服务伴随而来.ios的apns,android随着谷歌退出中国市场,各家在android的推送不断展开.有厂商的推送,如小米.华为.魅族.oppo等,还有中间 ...

  5. Easyui 基于kindeditor的扩展

    源码 /** * Author : ____′↘夏悸 * Easyui KindEditor的简单扩展. * 有了这个之后,你就可以像使用Easyui组件的方式使用KindEditor了 * 前提是你 ...

  6. staticmethod classmethod修饰符

    一.staticmethod(function) Return a static method for function.A static method does not receive an imp ...

  7. js array filter pop push shift unshift方法

    JavaScript Array filter() 方法  JavaScript Array 对象 实例 返回数组 ages 中所有元素都大于 18 的元素: var ages = [32, 33,  ...

  8. 抒发一下这些天用django做web项目的一些体会

    最近接触了一段时间的python,觉得python写脚本还是挺方便的,做一个简单的桌面应用也很nice,但是随着深入,对python做功能复杂的web项目我彻底死心了​,每个环节都是一堆的坑,部署阶段 ...

  9. try git

    Git allows groups of people to work on the same documents (often code) at the same time, and without ...

  10. Unix OpenCV安装

    官方下载:https://sourceforge.net/projects/opencvlibrary/files/  最好下载2.4.13版本,不然可能会有很多奇奇怪怪的问题 解压后: mkdir ...