隐马尔可夫模型(hidden Markov model,HMM)
定义:
隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。
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状态为qi ,因此我们要先求得t+1时刻状态为qi 的概率然后转化再求观测ot+1 。由于我们最终求出的概率是考虑进去了状态qi 因此要求得的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+1)βt+1(j) i=1,2,……..N
(3)P(O|L)=Σπibi(o1)β1(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)的更多相关文章
- [综]隐马尔可夫模型Hidden Markov Model (HMM)
http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...
- 隐马尔科夫模型(hidden Markov model, HMM)
- 隐马尔可夫模型(Hidden Markov Model)
隐马尔可夫模型(Hidden Markov Model) 隐马尔可夫模型(Hidden Markov Model, HMM)是一个重要的机器学习模型.直观地说,它可以解决一类这样的问题:有某样事物存在 ...
- 隐马尔科夫模型(hidden Markov Model)
万事开头难啊,刚开头确实不知道该怎么写才能比较有水平,这篇博客可能会比较长,隐马尔科夫模型将会从以下几个方面进行叙述:1 隐马尔科夫模型的概率计算法 2 隐马尔科夫模型的学习算法 3 隐马尔科夫模型 ...
- 从马尔可夫模型(Markov Model)到隐马尔可夫模型(Hidden Markov Model)
1.参考资料: 博客园 - 刘建平随笔:https://www.cnblogs.com/pinard/p/6945257.html 哔站up主 - 白手起家的百万富翁:https://www.bili ...
- 隐马尔科夫模型(Hidden Markov Models)
链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之三
转自:http://blog.csdn.net/eaglex/article/details/6418219 隐马尔科夫模型(Hidden Markov Models) 定义 隐马尔科夫模型可以用一个 ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之二
转自:http://blog.csdn.net/eaglex/article/details/6385204 隐含模式(Hidden Patterns) 当马尔科夫过程不够强大的时候,我们又该怎么办呢 ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之一
转自:http://blog.csdn.net/eaglex/article/details/6376826 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能 ...
随机推荐
- POJ 3667 Hotel(线段树)
POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...
- ARM(CM3)的汇编指令
转http://blog.csdn.net/gaojinshan/article/details/11534569 16位数据操作指令 名字 功能ADC 带进位加法(ADD with Carry) ...
- IPBX和话机对接
某厂家的话机和IPBX进行对接问题: 1. 该话机作为主叫方,呼叫能够正常建立 2. 该话机作为被叫方.呼叫无法建立,IPBX发送INVITE消息给该话机,该话机回复400 具体消 ...
- 升级/安装主题插件提示权限不足 输入FTP解决办法
在VPS上升级WordPress的时候遇到了权限不足的问题,情况如下: 经过查找发现,是由于升级程序没有权限更改WordPress的目录导致的,解决的方法也很容易,只需要ssh到vps,运行 chow ...
- NTP协议
NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步.NTP基于UDP报文进行传输,使用的UDP端口 ...
- GNU_MAKE--工程管理
GNU MAKE--工程管理 makefile是为工程组织编译,为“自动化编译”,一旦写成,只需要一个make命令,整个工程完全自动编译,极大提高了软件开发效率.make是一个命令工具,是一个解释ma ...
- PHP抓取网络数据
涉及到的知识点不多 file_get_contents:读取数据: preg_match_all:正则匹配: 和匹配之后的数据分析. 不同网页所需要抓取的数据是不同的,所以正则表达式自然也不一样,针对 ...
- IE6鼠标悬停Bug
当鼠标放置于某个文字链接之上,文字或文字背景改变为其他颜色或样式的效果是我们最经常见到的鼠标悬停效果.在CSS中,这个效果靠伪元素:hover来实现,只不过在文字链接中:hover被应用在了锚点元素& ...
- C++数组类型与函数类型
之所以将C++的数组类型与函数类型拿到一块说,是因为两者在很多地方都一样. 首先,声明形式上类似: 数组类型: type [num] ...
- Hadoop科普文—常见的45个问题解答 · Hadoop
个模式 · 单机(本地)模式 · 伪分布式模式 · 全分布式模式 2. 单机(本地)模式中的注意点? 在单机模式(standalone)中不会存在守护进程,全部东西都执行在一个JVM上. 这里相同没 ...