隐马尔可夫模型(一)---基本概念
2015-08-05 00:22
417 查看
隐马尔可夫模型
要了解隐马尔可夫模型,首先要了解什么是马尔可夫模型。网上的一个关于天气的例子能够帮助我们理解马尔可夫模型。
1.马尔可夫模型
假设我们可以通过当前的天气状况预测未来的天气状况,同理,我们也可以通过之前一些天的天气状况预测今天的天气状况。
这种假设成立的条件是:这个模型的每一个状态都只依赖于前一个状态,这个条件称之为“马尔可夫假设”。
存在X1, ... , Xn 的一个数列,这些变量的范围,即他们所有可能取值的集合,成为“状态空间”,在天气状况的例子中,X1, ... , Xn表示的是第一天...第n天的天气状况,状态空间为“晴天,阴天,雨天”。
如果Xn+1 满足等式:
![](http://img.blog.csdn.net/20150805001013716?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
则称该数列具有马尔可夫性质,这种具有马尔可夫性质的离散随机过程称为马尔可夫过程。
该过程中,每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态。注意这和确定性系统不一样,因为这种转移是有概率的,而不是确定性的。
对于天气状况的这个例子来说,所有可能的一阶转移为:
![](http://img.blog.csdn.net/20150805001229305?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
每一个转移的概率称为状态转移概率,将这些状态转移概率用3*3的状态转移矩阵来表示为:
![](http://img.blog.csdn.net/20150805001344317?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
设每一元素为aij。
![](http://img.blog.csdn.net/20150805001548100?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
矩阵的约束条件:
![](http://img.blog.csdn.net/20150805001627287?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个矩阵表示,如果昨天是晴天,那么今天有50%的可能是晴天,37.5%的概率是阴天,12.5%的概率会下雨,很明显,矩阵中每一行的和都是1。
为了初始化这样一个系统,我们需要一个初始的概率向量:
![](http://img.blog.csdn.net/20150805001717107?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个向量表示第一天是晴天。
到这里,我们就为上面的一阶马尔科夫过程定义了以下三个部分:
状态:晴天、阴天和下雨
初始向量:定义系统在时间为0的时候的状态的概率
状态转移矩阵:每种天气转换的概率
所有的能被这样描述的系统都是一个马尔科夫过程。
2.隐马尔可夫模型
那么对于一个关在监狱里的人来说,他看不到外面的天气是怎样的,但是聪明的人有自己的办法。研究表明,海藻的状态在某种概率上是和天气的情况相关的。于是监狱里的人便可以通过监狱里藻类的状态来推断外面天气的状态。
在这个事件中,便存在两个状态集合,一个是可观察到的状态的集合(藻类的状态),一个是隐藏的状态(天气状况)。此时的天气状况便成为了一个隐藏的马尔可夫过程。
将一个隐藏的马尔可夫过程和一个与这个隐藏马尔科夫过程概率相关的并且可以观察到的状态集合建立模型,便是隐马尔可夫模型。
![](http://img.blog.csdn.net/20150805001909192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
海藻的状态和天气的状况存在的概率关系称之为混淆矩阵。
![](http://img.blog.csdn.net/20150805002003761?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这样的隐马尔可夫模型可以用一个5元组来表示,其中 N 表示隐藏状态的数量,我们要么知道确切的值,要么猜测该值,M 表示可观测状态的数量,可以通过训练集获得, π={πi} 为初始状态概率,A={aij} 为隐藏状态的转移矩阵 Pr(xt(i) | xt-1(j)),B={bik} 表示某个时刻因隐藏状态而可观察的状态的概率,即混淆矩阵,Pr(ot(i) | xt(j))。在状态转移矩阵和混淆矩阵中的每个概率都是时间无关的,即当系统演化时,这些矩阵并不随时间改变。对于一个 N 和 M 固定的 HMM 来说,用 λ={ π, A, B } 表示 HMM 参数。
![](http://img.blog.csdn.net/20150805002113158?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所以在一个隐马尔可夫模型中存在3个要素:
1.计算给定的一个可观察序列的概率
2.根据可观察序列找到最可能的隐藏状态序列。
3.根据可观察的序列找到最可能的HMM。即求出HMM中的各个参数。
下面就是一一解决这三个问题,分别用到了三个算法:前向算法,Viterbi算法,Baum-Welch算法。
未完待续。。。。。
要了解隐马尔可夫模型,首先要了解什么是马尔可夫模型。网上的一个关于天气的例子能够帮助我们理解马尔可夫模型。
1.马尔可夫模型
假设我们可以通过当前的天气状况预测未来的天气状况,同理,我们也可以通过之前一些天的天气状况预测今天的天气状况。
这种假设成立的条件是:这个模型的每一个状态都只依赖于前一个状态,这个条件称之为“马尔可夫假设”。
存在X1, ... , Xn 的一个数列,这些变量的范围,即他们所有可能取值的集合,成为“状态空间”,在天气状况的例子中,X1, ... , Xn表示的是第一天...第n天的天气状况,状态空间为“晴天,阴天,雨天”。
如果Xn+1 满足等式:
则称该数列具有马尔可夫性质,这种具有马尔可夫性质的离散随机过程称为马尔可夫过程。
该过程中,每个状态的转移只依赖于之前的 n 个状态,这个过程被称为1个 n 阶的模型,其中 n 是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程,每一个状态的转移只依赖于其之前的那一个状态。注意这和确定性系统不一样,因为这种转移是有概率的,而不是确定性的。
对于天气状况的这个例子来说,所有可能的一阶转移为:
每一个转移的概率称为状态转移概率,将这些状态转移概率用3*3的状态转移矩阵来表示为:
设每一元素为aij。
矩阵的约束条件:
这个矩阵表示,如果昨天是晴天,那么今天有50%的可能是晴天,37.5%的概率是阴天,12.5%的概率会下雨,很明显,矩阵中每一行的和都是1。
为了初始化这样一个系统,我们需要一个初始的概率向量:
这个向量表示第一天是晴天。
到这里,我们就为上面的一阶马尔科夫过程定义了以下三个部分:
状态:晴天、阴天和下雨
初始向量:定义系统在时间为0的时候的状态的概率
状态转移矩阵:每种天气转换的概率
所有的能被这样描述的系统都是一个马尔科夫过程。
2.隐马尔可夫模型
那么对于一个关在监狱里的人来说,他看不到外面的天气是怎样的,但是聪明的人有自己的办法。研究表明,海藻的状态在某种概率上是和天气的情况相关的。于是监狱里的人便可以通过监狱里藻类的状态来推断外面天气的状态。
在这个事件中,便存在两个状态集合,一个是可观察到的状态的集合(藻类的状态),一个是隐藏的状态(天气状况)。此时的天气状况便成为了一个隐藏的马尔可夫过程。
将一个隐藏的马尔可夫过程和一个与这个隐藏马尔科夫过程概率相关的并且可以观察到的状态集合建立模型,便是隐马尔可夫模型。
海藻的状态和天气的状况存在的概率关系称之为混淆矩阵。
这样的隐马尔可夫模型可以用一个5元组来表示,其中 N 表示隐藏状态的数量,我们要么知道确切的值,要么猜测该值,M 表示可观测状态的数量,可以通过训练集获得, π={πi} 为初始状态概率,A={aij} 为隐藏状态的转移矩阵 Pr(xt(i) | xt-1(j)),B={bik} 表示某个时刻因隐藏状态而可观察的状态的概率,即混淆矩阵,Pr(ot(i) | xt(j))。在状态转移矩阵和混淆矩阵中的每个概率都是时间无关的,即当系统演化时,这些矩阵并不随时间改变。对于一个 N 和 M 固定的 HMM 来说,用 λ={ π, A, B } 表示 HMM 参数。
所以在一个隐马尔可夫模型中存在3个要素:
1.计算给定的一个可观察序列的概率
2.根据可观察序列找到最可能的隐藏状态序列。
3.根据可观察的序列找到最可能的HMM。即求出HMM中的各个参数。
下面就是一一解决这三个问题,分别用到了三个算法:前向算法,Viterbi算法,Baum-Welch算法。
未完待续。。。。。
相关文章推荐
- MyEclipse 2014 for Mac 在Yosemite怎樣安裝
- Android复习笔记(11) -网络编程相关
- leetcode 081 —— Maximal Rectangle
- java synchronized详解
- java学习笔记——多态
- 母函数的一些简单总结
- ZOJ Exchange Cards 2734【母函数】
- 九度OJ 题目1024:畅通工程
- Ubuntu常用命令
- Fix this site use a plugin that is unsupported in
- 入门
- oradebug使用详解
- Nmap手册
- java学习笔记——继承
- python2.6升级到2.7
- python2.6升级到2.7
- mark---[jQuery Fancybox插件使用参数详解]
- Android-升级数据库的最佳写法
- phpstorm+Xdebug断点调试PHP
- git使用简记