hmm学习笔记(二)
学习hmm近一周的时间,做个总结。
参考 李航的《统计学习方法》第9章,第10章
本文包含:
1.hmm模型
2.前向后向算法
3.Baum-Welch算法
4.维特比算法
1.hmm模型
Q:所有可能的状态的集合(一般是指隐藏状态),N是指可能的状态数

V:所有可能的观测的集合,M是可能的观测数

I:长度为T的状态序列。(一般是指隐藏状态),T是时间

O:对应的观测序列。和I一样的时间T,表明一一对应。

A:状态转移概率矩阵
      (A=[a_{ij}]_{N*N})
    (a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i}),i=1,2,...,N;j=1,2,...,N)
aij是指时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率。(上一时刻状态i,转移到下一时刻状态j的概率)
B:观测概率矩阵
          (B=[b_{j}(k)]_{N*M})
          (b_{j}(k)=P(o_{t}=v_{k}|i_{t}=q_{j}),k=1,2,...,M;j=1,2,...,N)
bj(k)指在时刻t处于状态qj的条件下,生成观测为vk的概率。(状态为j,生成观测为k的概率)
pai:初始状态概率向量
      (\pi =(\pi_{i}))
      \pi_{i}=P(i_{1}=q_{i}),i=1,2,...,N
pai(i)时刻t=1处于状态qi的概率。(初始时刻的状态也是不确定的,也可能是各个状态的分布)
hmm模型参数:可由pai,A,B构成,pai和A决定状态序列,B决定观测序列。hmm模型用lambda表示:
      (\lambda =(A,B,\pi ))
2.问题一:概率计算问题
给定hmm模型,和观测序列O,计算在模型lambda下观测序列O出现的概率
2.1前向算法
前向概率:给定hmm,定义到时刻 t 观测序列为 {o1,o2...ot},且状态为qi的概率。
      (\alpha _{t}(i)=P(o_{1},o_{2},...,o_{t},i_{t}=q_{i}|\lambda ))
(已知观测序列o,t 时刻状态为 i 的前向概率 )
初值:

递归:

理解一下:
-   
(\alpha _{t}(j)*a_{ji}) 时刻 t 观测到o1,o2...ot,并在 t 时刻处于状态 qj ,而在时刻t+1状态为 qi 的联合概率
 -   
(\sum_{j=1}^{N}\alpha _{t}(j)*a_{ji}) 对所有状态 qj 求和,时刻 t 观测到o1,o2...ot,并在时刻t+1状态为 qi 的联合概率,这一步可以认为是:到t+1状态为qi的前一时刻所有的概率之和。类似下面这个图。
 

-   
(\sum_{j=1}^{N}\alpha _{t}(j)*a_{ji}*b_{i}(o_{t+1})) 时刻t+1观测到o1,o2...ot+1,且状态为qi ,对比前向概率的定义,可得出此结果即为
 
终止:
     T时刻,所有的状态都加起来(跟状态 i 无关了,也即跟隐藏状态无关了)
2.2后向算法
后向概率:给定hmm,时刻 t,状态为qi 的条件下,从t+1到T的观测为{ot+1,...,oT}的概率
      (\beta _{t}(i)=P(o_{t+1},o_{t+2},...,o_{T}|i_{t}=q_{i},\lambda ))
(时刻 t 状态为 i 的情况下,从t+1到T的观测到ot+1....oT的概率,叫后向概率)
初值:

递归:

欲求,可以先看其与
,下一时刻的关系
,时刻t+1状态为 j,从t+2到T的观测为ot+2...oT的概率。
比较一下这两个,就知道,只需要把 t+1 到 t+2 段的概率求出即可,t+2到T是重复的 ,即可用
表示
第一种理解:
      上一时刻状态 i 转移到下一时刻 j 的概率
    上一时刻状态 i ,下一时刻状态 j ,且在状态 j 的条件下,观测为 ot+1的联合概率,注意,这时候要结合
,这表示状态  j 观察到ot+2... oT的概率
      上一时刻状态 i ,下一时刻状态 j ,且在状态 j 的条件下,观测到ot+1,ot+2...oT的概率
所有状态 j 相加,就跟 j 无关了,类似下面的图
    上一时刻状态为 i ,下一时刻观测到ot+1,ot+2...oT的概率

对比一下定义即可得:
         \beta  _{t}(i)=\sum_{j=1}^{N}a_{ij}*b_{j}(o_{t+1})*\beta _{t+1}(j)
第二种理解:
      状态为 j ,观测为ot+2,...,oT的概率
      状态为 j ,观测为ot+1,ot+2...oT的概率
    上一时刻状态为 i ,下一时刻状态为 j ,且在状态 j 下观测为ot+1,ot+2...oT的联合概率
  为什么用 aij ?  因为要用来表示
,时间上来看是后一时刻的状态 j 表示前一时刻的状态 i ,但是前一时刻的状态 i 先发生,后一时刻的状态 j 后发生
         这边就一样了,上一时刻状态为 i ,下一时刻观测到ot+1,ot+2...oT的概率
终止:

观察一下:
前向计算  
     T时刻,所有的状态的前向概率都加起来
    在模型
 下观测序列 {o1,o2...oT} 出现的概率,欲求
  ,前向是对
进行求和,可以推测后向应该是搞
     时刻 t=1处于状态 i 的条件下,观测为o1的概率
    时刻 t=1 状态为 i 观测为 {o2,o3...oT} 的概率
    时刻 t=1 状态为 i 观测为 {o1,o2...oT} 的概率
      求和,与状态 i 无关,观测为 {o1,o2...oT}的概率
即  
前后向结合起来,可以写成一般形式:
  
计算概率和期望:
给定模型和观测O,在时刻 t 处于状态 qi 的概率:


给定模型和观测O,在时刻 t 处于状态 qi ,且在时刻 t+1 处于状态 qj 的概率:

所以

后面部分的参考 隐马尔科夫模型 HMM(一)HMM 模型 ,讲的很细,还有配合的代码
hmm学习笔记(二)的更多相关文章
- WPF的Binding学习笔记(二)
		
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
 - AJax 学习笔记二(onreadystatechange的作用)
		
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
 - [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
		
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
 - JMX学习笔记(二)-Notification
		
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
 - java之jvm学习笔记二(类装载器的体系结构)
		
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
 - Java IO学习笔记二
		
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
 - 《SQL必知必会》学习笔记二)
		
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
 - NumPy学习笔记 二
		
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
 - Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
		
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
 - Redis学习笔记二 (BitMap算法分析与BitCount语法)
		
Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...
 
随机推荐
- HTML常用标签-<head>内常用标签
			
HTML常用标签-<head>内常用标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML是什么 1>.超文本标记语言(Hypertext Ma ...
 - oracle中所有存在不存在的用户都可以使用dba连接到数据库
			
oracle中所有存在不存在的用户都可以使用dba连接到数据库及解决方式 以前一直使用conn /as sysdba连接数据库,不明白里面的意思.今天无意中使用其他的用户名密码连接到dba竟然也可以( ...
 - Git记录-Git版本控制介绍
			
git config命令用于获取并设置存储库或全局选项.这些变量可以控制Git的外观和操作的各个方面. 如果在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息: ...
 - 四、Kafka 核心源码剖析
			
一.Kafka消费者源码介绍 1.分区消费模式源码介绍 分区消费模式直接由客户端(任何高级语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造 ...
 - [译]Quartz.NET 框架 教程(中文版)2.2.x 之第五课 SimpleTrigger
			
第五课 SimpleTrigger 如果你需要在一个指定时间段内执行一次作业任务或是在指定的时间间隔内多次执行作业任务,SimpleTrigger应该能满足你的调度需求.例如,你希望触发器在2015年 ...
 - 11个实用的CSS学习工具[转载收藏]
			
1. 盒子模型的幻灯片 通过3D转换效果产生的互动的幻灯片.按向左或向右箭头键切换,全屏观看会有更好的效果. 2. CSS Diner 通过一个简单的小游戏让你学习CSS selector,输入正确的 ...
 - HDU 1160 FatMouse's Speed (最长上升子序列)
			
题目链接 题意:n个老鼠有各自的重量和速度,要求输出最长的重量依次严格递增,速度依次严格递减的序列,n最多1000,重量速度1-10000. 题解:按照重量递增排序,找出最长的速度下降子序列,记录序列 ...
 - Codeforces Round #540 (Div. 3)题解
			
题目链接: https://codeforces.com/contest/1118 A题: 题意: q次查询,给你一个n,要你用1和2来凑出n,1的花费为a,2的花费为b,求花费的最小值. 思路: 我 ...
 - Windows无法访问局域网内共享文件夹[0x800704cf,0x80070035]解决方案
			
Windows7系统突然无法访问访问其他windows机器的共享文件夹,出现0x800704cf或者0x80070035错误: 解决方案如下两张图,配置与下面两张图为准,即可解决: 1:window+ ...
 - dorado 的学习位置、控件使用方法查找、示例演示地址
			
dorado的学习位置: http://wiki.bsdn.org/display/dorado7/Project+Home dorado的控件使用方法查找: http://dorado7.bsdn. ...