HMM模型学习笔记(前向算法实例)
HMM算法想必大家已经听说了好多次了,完全看公式一头雾水。但是HMM的基本理论其实很简单。因为HMM是马尔科夫链中的一种,只是它的状态不能直接被观察到,但是可以通过观察向量间接的反映出来,即每一个观察向量由一个具有相应概率密度分布的状态序列产生,又由于每一个状态也是随机分布的,所以HMM是一个双重随机过程。
HMM是语音识别,人体行为识别,文字识别等领域应用非常广泛。
一个HMM模型可以用5个元素来描述,包过2个状态集合和3个概率矩阵。其分别为
隐含状态S,可观测状态O,初始状态概率矩阵π,隐含状态概率转移矩阵A,观测状态转移概率矩阵 B。
HMM在实际应用中主要用来解决3类问题。
1. 评估问题。
即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样有效计算这一观测序列出现的概率。(前向后向算法)
2. 解码问题。
即给定观测序列 O=O1O2O3…Ot和模型参数λ=(A,B,π),怎样寻找满足这种观察序列意义上最优的隐含状态序列S。(维特比算法)
3. 学习问题。
即HMM的模型参数λ=(A,B,π)未知,如何求出这3个参数以使观测序列O=O1O2O3…Ot的概率尽可能的大。(鲍姆-韦尔奇算法)
这篇文章是针对第一个问题来说的,一般采用的是前向后向算法来解决评估问题。这里将的是前向算法。
在此之前,先引入几个符号:
at(i) : 表示到第t个观察值Ot时处于状态i。
: 表示在状态i下产生观察值 的概率。
现在来看一下前向算法的理论来源。
因为我们要解决的是模型估计问题。即计算概率
。将其利用如下公式化简:

因此首先要先计算
,其中Q为一给定的状态序列 。又有
。
其中

所以
。
因此最后求得

由此可以看见其计算复杂度非常大,为
。
为了解决这个问题,前向算法就出现了。首先定义了一个前向变量 。表示从1到t,输出符号o序列,t时刻处于状态i的累计输出概率。
因为前向变量有如下性质:
初值:
,且
,最后有递推关系:
。
为什么这样就可以简化计算复杂度呢?其原因很简单,因为每一次的at(i),我们都可以用at-1(i)来计算,就不用重复计算了。如下示意图可以帮助我们形象的理解:

看了这么多公式,是不是头晕了?不急,下面看一个实例就会完全明白的。
题目:HMM模型如下,试通过前向算法计算产生观察符号序列O={ABAB}时每个时刻的 和总概率。

当然初始概率矩阵π=(1,0,0),即开始处于状态1。按照上面的公式理论,我们的递推依次解出at(i)。解法如下:
t=1时:

t=2时:

t=3时:

t=4时:

所以有最后的结果:

最后将其计算过程示意图表示如下:

转载自:https://www.cnblogs.com/tornadomeet/archive/2012/03/24/2415583.html
用于学习笔记
HMM模型学习笔记(前向算法实例)的更多相关文章
- HMM模型学习笔记(维特比算法)
维特比算法(Viterbi) 维特比算法 编辑 维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中.术语“维特比 ...
- Web安全学习笔记之DES算法实例详解
转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...
- HMM的学习笔记1:前向算法
HMM的学习笔记 HMM是关于时序的概率模型.描写叙述由一个隐藏的马尔科夫链随机生成不可观測的状态随机序列,再由各个状态生成不可观測的状态随机序列,再由各个状态生成一个观測而产生观測的随机过程. HM ...
- 概率图模型学习笔记:HMM、MEMM、CRF
作者:Scofield链接:https://www.zhihu.com/question/35866596/answer/236886066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- 隐马尔可夫模型(HMM) 学习笔记
在中文标注时,除了条件随机场(crf),被提到次数挺多的还有隐马尔可夫(HMM),通过对<统计学习方法>一书的学习,我对HMM的理解进一步加深了. 第一部分 介绍隐马尔可夫 隐马尔可夫模型 ...
- 条件随机场CRF(三) 模型学习与维特比算法解码
条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在CRF系列的前两篇,我们总结了CRF的模型基 ...
- ArcGIS案例学习笔记-中国2000坐标转换实例
ArcGIS案例学习笔记-中国2000坐标转换实例 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:西安1980.中国2000.WGS84(GPS)等任意坐标系 ...
- ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试
http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试 刚开始学习tf时,我们从 ...
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
随机推荐
- 利用原生JS实现网页1920banner图滚动效果
内容描述:随着PC设备硬件性能的进步和分辨率的不断提高,现在主流网站逐渐开始采用1920banner图,为适应这一趋势,博主设计了1920banner图的滚动效果,代码利用了原生JS实现了1920ba ...
- JavaScript高级程序设计学习(一)之介绍
作为一名web开发人员,日常用的最多的就是js,也就是大名鼎鼎的ECMAScript,又称javascript.再次声明js与java除了语法上相似,没有半毛钱关系.据说之所以叫javascript, ...
- 理解JSON.stringify()高级用法
一:JSON.stringify() 该方法是把javascript对象转换成json字符串. 基本语法:JSON.stringify(value, [, replacer], [, space]) ...
- Android学习之六种事件响应方法汇总
java源码如下: 1.MainActivity.java源码 package com.example.responsetest; import android.app.Activity; impor ...
- 动手动脑(lesson 3)
一· 答:本质上一样,但在内存分配时有区别.如下图: 二· 程序运行结果截图: 答案截图: 三· 四· 答:构造函数与参数个数不匹配. 五· 运行结果截图: 总结:所有类的变量都默认初始化为null, ...
- 深入理解 JVM(上)
菜鸟拙见,望请纠正(首先:推荐一本书[链接:https://pan.baidu.com/s/15I062n5LPYtRmueAAUFuFA 密码:kyo1]) 一:JVM体系概述 1:JVM是运行在操 ...
- WPF中TreeView.BringIntoView方法的替代方案
原文:WPF中TreeView.BringIntoView方法的替代方案 WPF中TreeView.BringIntoView方法的替代方案 周银辉 WPF中TreeView.BringIntoVie ...
- Luogu P2827 蚯蚓
看到题目就可以想到直接开的堆模拟的过程了吧,这个还是很naive的 注意在用堆做的时候也是要明智一点的,对于蚯蚓长度的相加肯定不能直接遍历并加上,还是可以差分一下的 其实说白了就是把集体加->单 ...
- ES6入门之let、cont
一.前提 解决ES5中只有全局作用域和函数作用域,没有块级作用域而带来的不合理的场景. let 基本用法 用法和var 一样,只是let声明的变量只有在let命令所在的代码块有效 { let a = ...
- Centos7部署elasticsearch并且安装ik分词以及插件kibana
第一步 下载对应的安装包 elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch ik分词下载:https://gith ...