数学之美——HMM模型(一)介绍
一直想写点关于数学方面的blog,这对于数据挖掘分析,NLP处理等都有着比较重要的作用,之前在CSDN上想写点HMM方面的文章,一直没写成,最近几天终于抽点时间完成了HMM的文章,加以整理,遂有这个系列文章
首先是对HMM模型的介绍。
传统的马尔可夫模型(Markov Model)主要描述了具有马尔可夫性质的一个随机过程。更特殊的来讲,是离散的马尔可夫过程——马尔可夫链(Markov Chain)。马尔可夫性质是指在给定当前和之前已发生事件后,未来发生事件仅依赖当前事件。马尔可夫过程主要具有两个性质:
1) 有限视野性:即这一刻发生的事件依赖于之前有限的已发生事件,既有
2) 时间不变性
现实中很多现象都可以用马尔可夫过程来表示,例如交通红绿灯的转换,每一次灯的状态依赖于上一次的状态(当然,排除了一些外部非正常因素),并且,在可预见时间内,状态的变化规律是不变的,不会说一直是红灯后是黄灯,突然变成红灯后还是红灯。
对于马尔可夫模型,我们可以建立一个量化模型,简单来说,这个模型包括了一个矩阵——转移矩阵(transmission matrix),和一个初始向量pi向量。转移矩阵用来表述从一个状态转移到另一个状态的发生概率,而pi向量用来表述模型的初始状态。通过这个模型,可以解决马尔可夫过程的一些问题,例如预测等问题。
当然,现实中更多的相关现象是马尔可夫过程的一个隐式变种,这就是我们今天要讨论的隐马尔可夫模型。顾名思义,在隐马尔可夫模型中,状态发生序列是未知的,只能通过一些观察得到的另一组状态发生序列来获得相关信息。例如,在语音识别中,当然无法直接识别语言,我们实际得到的只是某一个人发出的声音,而这个声音是真正的声音(这里指人类某种语言的所有语调等信息)通过和声带,空气等信息混合表现得到的。再例如一个比较常见的例子——盲人和天气,住在海边山洞中的盲人会通过石头上海藻状态来获知天气状态而无法直接得到天气状态,这里,天气状态就是一个隐藏状态,而海藻状态则是对应的可以观测到且和天气有关的状态。
隐马尔可夫模型相比马尔可夫模型,需要引入更多描述量,一般来说,HMM模型需要一个三元组来描述,HMM_Model = <pi, A, B>, 这里pi还是初始向量,这里是对隐藏状态的初始概率,A是转移矩阵,描述的隐藏状态之间的转移概率,B则是引入的混淆矩阵(Confusion Matrix),即连接隐藏状态和可观察状态之间的桥梁。如下图一个例子所示:

关于HMM的模型介绍就这么多,其实HMM模型很简单,就是一个三元组的量化描述,但是针对这个模型,主要有三个问题,而这三个问题,也分别引出了三个HMM不同方面的应用:
1, 预测。即给定一个HMM和观察状态序列,我们想知道根据这个HMM产生这个观察序列的概率有多大。
2, 解码。即给定一个HMM和观察状态序列,我们想知道什么样的隐藏状态序列最有可能产生这样的观察序列。
3, 学习。这里HMM的模型是未知的,给出已知的观察序列和隐藏状态集合,我们想建立最有可能的HMM,这也是三个问题中最难的。
to be continued
数学之美——HMM模型(一)介绍的更多相关文章
- 数学之美——HMM模型(二)解码和Forward算法
上一篇讨论了HMM的基本概念和一些性质,HMM在现实中还是比较常见的,因此也带来一了一系列的HMM应用问题.HMM应用主要面向三个方面:预测.解码和学习.这篇主要讨论预测. 简单来说,预测就是给定HM ...
- 图像切割之(五)活动轮廓模型之Snake模型简单介绍
图像切割之(五)活动轮廓模型之Snake模型简单介绍 zouxy09@qq.com http://blog.csdn.net/zouxy09 在"图像切割之(一)概述"中咱们简单了 ...
- HMM模型
通过前几时断续的学习,发现自己对HMM模型的了解还只停留在皮毛,导致在学习CRF模型并将其与最大熵模型.HMM.MEMM做比较时感觉很吃力,所以又花了两天时间使劲看了遍HMM,发现了解得确实深刻了很多 ...
- 隐马尔科夫模型HMM(一)HMM模型
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...
- HMM模型学习笔记(维特比算法)
维特比算法(Viterbi) 维特比算法 编辑 维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中.术语“维特比 ...
- 代码规范 & 数学之美读后感
代码规范链接:https://zh-google-styleguide.readthedocs.io/en/latest/contents/ 数学之美读后感 一开始看名字我以为是一本讲数学是怎么发展的 ...
- 华为C/C++编码规范+《数学之美》感想
1.排版 1.1 程序块要采用缩进风格编写, 缩进的空格数为4个.(说明: 对于由开发工具自动生成的代码可以有不一致)1.2 相对独立的程序块之间.变量说明之后必须加空行.1.3 循环.判断等语句中若 ...
- 应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型
选自:http://maotong.blog.hexun.com/6261873_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
- 应用HTK搭建语音拨号系统2:创建单音素HMM模型
选自:http://maotong.blog.hexun.com/6204849_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...
随机推荐
- bzoj 1798: [Ahoi2009]Seq 维护序列seq (线段树 ,多重标记下放)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 7773 Solved: 2792[Submit ...
- MT【193】三面角的正余弦定理
(原题为浙江名校新高考研究联盟2018届第三次联考选择压轴题) 在平面$\alpha$内,已知$AB\perp BC$,过直线$AB,BC$分别作平面$\beta,\gamma$,使得锐二面角$\al ...
- System.gc()与Runtime.gc()的区别
(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象 ...
- JavaScript -- 标签 , Break 和 Continue 语句
break 语句用于跳出循环. continue 用于跳过循环中的一个迭代. 标签引用,break 语句可用于跳出任何 JavaScript 代码块. demo: <!DOCTYPE html& ...
- 用HashSet存储不重复的对象
直接进入主题,先来创建一个类:Bean public class Bean { private int id; private String name; public Bean() { super() ...
- eos源码剖析之controller
controller::block_status,区块状态枚举类,包括: irreversible = 0,该区块已经被当前节点应用,并且被认为是不可逆的.validated = 1,这是由一个有效生 ...
- 安装【Jenkins】
前言 jenkins的一款持续集成工具, 它可以做的事情很多,其中一个主要的功能就是简化部署流程 回想一下我们的发布流程: 1.本地把项目打包 ...
- [Apio2012]dispatching 左偏树做法
http://codevs.cn/problem/1763/ 维护子树大根堆,当子树薪水和>m时,删除最贵的点 #include<cstdio> #include<iostre ...
- CS229 笔记08
CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...
- 20155338 2016-2017-2 《Java程序设计》第7周学习总结
20155338 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 本周学习了第十二章和第十三章的内容,我重点学习了第十三章时间与日期的相关内容. 时间的度量: ...