机器学习 Hidden Markov Models 1
Introduction
通常,我们对发生在时间域上的事件希望可以找到合适的模式来描述。考虑下面一个简单的例子,比如有人利用海草来预测天气,民谣告诉我们说,湿漉漉的海草意味着会下雨,而干燥的海草意味着会天晴,而如果海草不是很湿也不是很干燥,比如潮湿的状态,那么我们恐怕很难断定天气会怎样,可能下雨也可能天晴,我们或许可以根据昨天的天气来进行判断,根据昨天的天气和今天海草的状态,或许可以有一个更好的预测。
上面介绍的预测系统,就是我们接下来要探讨的模型的一个典型例子。在这个教程中,我们主要探讨以下几个问题:
1: 首先我们要介绍在时间域上形成概率模式的系统,比如上面提到的天气预测。
2: 然后我们会看到,在这个系统里,我们观察到的并不是我们想要预测的,我们想要预测
的模式是隐藏的,比如上面的天气预测,我们观察到的是海草的状态,但是我们要预测的是天气。
3: 最后我们会看看这个系统能够解决的一些问题,比如上面的天气预测,如何根据海草一个
礼拜的状态来判断这个礼拜的天气,如何根据海草一段时间的状态确定现在所处的季节等。
Generating Patterns
考虑一组交通灯,通常情况下,交通灯的顺序可以表示为:红灯-绿灯-黄灯然后又转回红灯,交通灯的状态可以用状态机来表示,我们可以注意到,每个状态只与之前的状态决定,就是说如果当前状态是红灯,那么下一个状态一定是绿灯,这种系统称为确定性系统,因为状态之间的转换是确定的。
再来看看另外一个例子,就是之前提到的天气预测,我们假设有三种天气:晴天,雨天和多云。一般来说,我们都知道,这三种天气之间没有确定的转换关系,晴天之后可能是雨天,也可能是多云,这种系统就是不确定性系统,因为状态之间的转换是不确定的。很明显,如果不做任何假设,我们无法建立一个有效地模型去模拟这类系统。
一个可能的解决方案就是就是加入某些假设,将不确定性系统当成确定性系统来对待,我们假设系统的当前状态取决于系统的前一状态,这个假设称为马尔科夫假设,这个假设使得问题大大简化了,但是当然代价就是丢失了很多信息。虽然这个假设很多时候和实际不符,但是这个假设却能有效地解决很多实际问题,即使它建立的模型做出的预测不是完全正确的。
Markov Process
在一个马尔科夫过程中,一个状态转移到下一个状态的概率,取决于之前的n个状态,这个过程称为n阶模型,n表示影响状态转换的其它状态的个数。最简单的马尔科夫过程是一阶过程模型,意味着当前状态只取决于前面的一个状态。
注意到,对于有MM个状态的一阶马尔科夫过程,存在M2M^{2}个转换关系,因为任何状态之间的转换都是可能的,每一个转换都有一个概率,称为转换概率,所有这些转换概率可以构成一个矩阵,称为转换概率矩阵,而非常关键的一点假设是这些转换概率是不会随着时间变化的。如下的转换矩阵显示了几种天气之间的转换概率。
从转换矩阵可知,如果昨天是晴天,那么今天是晴天的概率是0.5,而今天是多云的概率是0.375,注意每一行的概率之和应该都为1. 我们需要对这样一个系统定义一个初始状态,我们用一个向量π\mathbf{\pi}来表示这个系统的初始状态,如下所示:
从系统的初始状态可以看出,今天为晴天的概率是1。
现在,我们定义了一个一阶的马尔科夫过程,它包括
1: 状态:三个状态——晴天,雨天,多云。
2: 初始向量:用来描述系统所含初始状态的概率。
3: 状态转换矩阵:描述每个状态之间相互转换的概率。
Limitations of a Markov Process
前面我们介绍了马尔科夫过程,并且了解了马尔科夫过程的几个要素:比如初始状态,转换矩阵等等。利用马尔科夫过程,可以对一些连续发生的事件做预测。但是有的时候,有些模式利用马尔科夫过程不能有效地进行描述,比如前面的天气预测系统,为了预测今天的天气,我们需要知道昨天的天气以及转换矩阵,但是有的时候我们不知道昨天的天气,只能知道海草的状态,民谣告诉我们,海草的状态和天气是紧密相关的。这种情况下,我们有两类状态,一类是可观察的(海草的状态),另一类是隐藏的(当天的天气),我们希望可以设计一个模型,能够基于海草的状态和马尔科夫假设来预测天气,而不需要知道之前的天气情况。
我们仍然以天气预测系统为例,假设有三种天气(即三个隐藏变量)需要预测(晴天,雨天,多云),而可观察的变量:即海草的状态有四种(dry, dryish, damp,soggy),我们可以发现,可观察变量的个数与隐藏变量的个数是不一样的,而可观察变量的转换过程与隐藏变量的转换过程存在一定的联系,我们利用隐马尔科夫模型
来模拟这类系统,在隐马尔科夫模型中,有一个隐马尔科夫过程,而可观察变量与隐藏变量是有联系的。
Hidden Markov Models
下图显示了天气预测系统中,可观察变量(海草的状态)与隐藏变量(天气情况)之间的转换关系,隐藏变量之间的转换是由一个简单的一阶马尔科夫过程来描述。
图中,可观察变量与隐藏变量之间的连线表示当隐马尔科夫过程处于某一特定状态时,生成某一对应可观察变量的概率。一个可观察变量可能由任何一个隐藏变量
生成,所以生成该可观察变量的概率之和应该为1。即Pr(Obs|Sun)+Pr(Obs|Rain)+Pr(Obs|Cloud)=1Pr(Obs|Sun)+Pr(Obs|Rain)+Pr(Obs|Cloud)=1。
除了定义马尔科夫过程的概率,我们还定义了隐藏变量与可观察变量之间的转换关系,用一个矩阵表示,称为confusion矩阵,如下图所示:
我们可以看到,其每一行的和为1。
Summary
我们已经看到,隐马尔科夫模型包含以下几个要素:
隐藏状态:系统真正需要预测的状态,可以用一个马尔科夫过程描述。
可观察状态:系统显露出来的状态。
初始向量:用来描述系统中隐含模型在某一特定初始隐藏状态的概率。
状态转换矩阵:描述每个状态之间相互转换的概率。
confusion 矩阵:包含系统隐含模型在隐藏状态下生成可观察状态的概率。
所以简单来说,一个隐马尔科夫模型是一个标准的马尔科夫过程,加上一系列可观察的状态,以及可观察状态与隐藏状态的联系(用概率表示)。
参考来源:
http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html
机器学习 Hidden Markov Models 1相关推荐
- 机器学习 Hidden Markov Models 2
Hidden Markov Models 下面我们给出Hidden Markov Models(HMM)的定义,一个HMM包含以下几个要素: ∏=(πi)表示初始状态的向量.A={aij}状态转换矩阵 ...
- 机器学习算法之——隐马尔可夫模型(Hidden Markov Models,HMM) 代码实现
@Author:Runsen 隐形马尔可夫模型,英文是 Hidden Markov Models,就是简称 HMM. 既是马尔可夫模型,就一定存在马尔可夫链,该马尔可夫链服从马尔可夫性质:即无记忆性. ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
隐马尔科夫模型(Hidden Markov Models) 系列之五 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之三
隐马尔科夫模型(Hidden Markov Models) 系列之三 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之四
隐马尔科夫模型(Hidden Markov Models) 系列之四 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之一
隐马尔科夫模型(Hidden Markov Models) 系列之一 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- biosequence analysis using profile hidden Markov models(使用隐马尔可夫模型分析序列)
官方网址 下载工具后,按照网站上提供的文件来安装 HMMER is used for searching sequence databases for sequence homologs, and f ...
- [Machine Learning]Markov chain and Hidden Markov Models(HMMs)
[Machine Learning]Markov chain and Hidden Markov Models(HMMs) 隐马尔可夫模型HMM快速入门: http://homepage3.nifty ...
- Lecture 6 Sequence Tagging: Hidden Markov Models
目录 Problems with POS Tagging 词性标注的问题 Probabilistic Model of HMM HMM的概率模型 Two Assumptions of HMM HMM的 ...
最新文章
- Windows客户端C/C++编程规范“建议”——宏
- Linux命令的实现 -- ls pwd cd
- VC 6.0中添加库文件和头文件
- 数据库中char varchar nchar nvarchar的区别
- libsvm matlab 调参数,matlab – 使用libsvm调整svm
- 26-Ubuntu-文件和目录命令-其他命令-管道
- 替换SQL字段中的换行符,回车符
- Oracle表空间状态
- [C++STL]vector容器用法介绍
- mysql 客户服务号_mysql客户端及服务端常用实用工具功能总结
- 总结下2018年,我们归纳了几种将对智能安防产生影响的技术发展趋势
- l2高斯分布_浅谈为什么L2正则化有效
- Apache Traffic Server服务搭建
- JLNews新闻点评系统--君兰IT
- [转]条形码 EAN 8 码 / EAN 13 码
- 什么是分布式操作系统?有哪些优缺点?
- 用MATLAB实现一个数字图像加密解密系统
- 魔兽世界用宏显示服务器时间,魔兽世界宏命令全表
- 软件工程导论——软件工程介绍
- 韵达快递 | 快递单号查询API
热门文章
- Java调用mysqldump
- linux详细入门教程(一)------linux概述
- 液相色谱仪:堵塞的主要位置就是在色谱柱的前端
- Ecxel数据导入Oracle 数据库中
- WooYun-2016-199433 phpmyadmin 反序列化漏洞
- 大话西游2接收服务器信息失败,大话西游手游服务器连接失败 无法连接服务器解决步骤_网络-游戏圈...
- 专有软件不是唯一!试试54款开源服务器软件[转]
- Ubuntu及Debian使用Snapd安装缺少依赖的应用(如WorkBench)以及Snapd的卸载
- CSS之自定义原生checkbox样式
- android获取设备eth0,eth1,wlan0的IP地址