Hidden Markov Models

下面我们给出Hidden Markov Models(HMM)的定义,一个HMM包含以下几个要素:

∏=(πi)表示初始状态的向量。A={aij}状态转换矩阵,里面的元素表示概率:Pr(xki|xk−1j)B={bij}confusion矩阵,表示可观察变量与隐藏变量的转换概率:Pr(yi)|Pr(xj)

\begin{equation*} \begin{split} & \prod=(\pi_{i}) \qquad \text{表示初始状态的向量。} \\ & A=\{a_{ij}\} \qquad \text{状态转换矩阵,里面的元素表示概率:$Pr(x_{i}^{k} | x_{j}^{k-1})$} \\ & B=\{b_{ij}\} \qquad \text{confusion矩阵,表示可观察变量与隐藏变量的转换概率:$Pr(y_{i})|Pr(x_{j})$} \\ \end{split} \end{equation*}
值得注意的一点是,这里面定义的概率都是与时间不相关的,意味着这些概率不会随着时间的变化而变化,这一点假设与实际情况不符合,但是将问题大大简化了。

如果一个系统可以用HMM来描述,那么HMM模型可以解决三类问题:

Evaluation:

通过HMM得到可观察变量的概率。这类问题属于识别问题,假设我们有很多描述不同系统的
HMM模型,和一组观察变量,我们想知道哪个HMM模型与这组观察变量最匹配,及最有可能生成这组观察变量。我们会用一种forward算法去计算每个HMM模型生成这组观察变量的概率,然后挑选生成概率
最大的HMM模型。这类问题最常见的是用于语音识别,语音识别会用到很多HMM模型,每个HMM模型都modeling一个特定的词汇,而观察变量就是一个说出口的词汇,那么找出最有可能生成这个词汇的HMM,从而确认该词汇是什么。

Decoding:

找到最可能生成可观察变量的隐藏变量。这是第二类问题,一般是寻找隐藏变量,通过观察变量,寻找隐藏变量。比如最初的天气系统,我们能够利用的观察变量(海草的状态),但是我们希望预测的是隐藏变量(天气)。我们会介绍Viterbi算法来解决这类问题。

Learning:

给定可观察变量,生成一个HMM。第三类问题,通常是最困难的一类问题,就是通过一组观察变量,以及观察变量与隐藏变量的关系(这里的关系不是转换矩阵,只是观察变量与隐藏变量的相关性),确定一个最佳的HMM模型,也就是要求出HMM的(πi,A,B)(\pi_{i},A,B)。我们会介绍forward-backward算法来解决这类问题。

接下来,我们将详细讨论这三类问题和相应的算法。

Forward Algorithm

第一类问题是给定HMM模型,求解可观察变量的概率,我们仍然以天气预测为例,假设我们有一个HMM模型描述天气之间的转换关系,以及天气与海草的状态之间关系,现在我们有一组观察变量,比如说海草连续三天的状态,假设这三天的状态分别为(dry,damp,soggy),这三天的天气可能是晴天,雨天或多云的任何一种,我们用下图表示天气
与海草的状态之间的关系:

图中上面三行的每一列显示了可能的天气,而天气的每一个状态又会影响到下一天的天气状态,所以它们之间相互连接,天气之间的转换关系由状态转换矩阵给出,最下面一行是观察变量,隐藏变量生成观察变量的概率由confusion矩阵给出。要计算这个HMM模型生成观察变量的概率,最直观的一种方式是把所有可能路径的概率相加,在图上所示的模型里,有27种路径,所有要把27个概率之和相加,这显然是非常耗时的。

所以,我们换个角度考虑,我们采用一种递归的方式去计算观察变量的概率,我们先定义一个局部的概率用来表示马尔科夫过程到达一个中间状态的概率,我们先来看看如何计算这些中间概率,假设整个可观察变量序列长度为T,(Y1,Y2,...YT)(Y_{1},Y_{2},...Y{T}),考虑如下的一张图,给出了可观察变量的状态以及一阶转换关系,我们可以计算该模型到达某一中间状态的概率,就是所有到达该中间状态的路径的概率之和,比如我们想计算t=2t=2时隐藏变量为Cloudy的概率:

所有到达Cloudy的路径可以由下图表示:

我们定义状态jj在tt时刻的局部概率为Pat(j)Pa^{t}(j),那么该局部概率可以表示为:

Pat(j)=Pr(observation | hidden state is j )×Pr(all paths to state j at time t)

Pa^{t}(j)=Pr(\text{observation | hidden state is j }) \times Pr(\text{all paths to state j at time t})
由此类推,该观察序列里,最后一个观察变量所对应的几个隐藏变量的局部概率包括了该HMM模型中,所有路径的概率之和,下图给出了该HMM模型最后一列状态的局部概率,

可以看到,该局部概率包括了该HMM模型的所有路径,所以这些局部概率之和就等于所有路径的概率之和,也就等于该HMM模型所生成的观察变量序列的概率。

虽然我们给出状态jj在tt时刻的局部概率表达式,但是对于t=1t=1,即初始状态的局部概率,没有路径到达初始状态,我们用初始概率向量π\pi定义状态的初始概率,即:
Pr(state|t=1)=π(state) Pr( \text{state} | t = 1) = \pi(\text{state}),因此初始状态jj的局部概率为状态jj的初始概率乘以associated observation概率:

Pat=1(j)=π(j)⋅bj,t=1

Pa^{t=1}(j)=\pi(j) \cdot b_{j,t=1}
我们已经给出了隐藏变量在初始状态的局部概率,也给出了隐藏变量在后续时刻的局部概率为: Pat(j)=Pr(observation | hidden state is j )×Pr(all paths to state j at time t)Pa^{t}(j)=Pr(\text{observation | hidden state is j }) \times Pr(\text{all paths to state j at time t}),该表示中,右边的第一项是可以由confusion矩阵得到的,而为了计算右边的第二项,我们可以计算每个到达该状态的路径的概率,然后将所有的概率相加,如下图所示:

随着时序的增加,我们可以看到,要计算的路径会以指数级增长,但是由于这些局部概率之间存在的递归关系,我们可以用下列式子表示t+1t+1时刻的局部概率与tt时刻局部
概率的关系:

Pat+1(j)=bj,t+1∑i=1nPat(i)⋅aij

Pa^{t+1}(j)=b_{j,t+1}\sum_{i=1}^{n}Pa^{t}(i) \cdot a_{ij}
通过这几个表达式,我们可以计算一个观察序列在t=1,2,...Tt=1,2,...T时刻的局部概率,然后将t=Tt=T时刻的局部概率相加,就是该HMM模型产生该观察序列的概率。

我们重新总结一下这个算法,利用forward算法计算一个时序长度为T的观察序列的概率,观察序列我们定义为如下所示:

YT=y1,y2,...yT

Y^{T}={y_{1},y_{2},...y_{T}}
其中, yy表示观察变量的某个状态。隐藏变量的局部概率我们定义为:

Pat=1(j)=π(j)⋅bj,t=1Pat+1(j)=bj,t+1∑i=1nPat(i)⋅aij

\begin{equation*} \begin{split} & Pa^{t=1}(j)=\pi(j) \cdot b_{j,t=1} \\ & Pa^{t+1}(j)=b_{j,t+1}\sum_{i=1}^{n}Pa^{t}(i) \cdot a_{ij} \end{split} \end{equation*}
而最终该观察序列的概率为:

Pr(Y)=∑j=1nPat=T(j)

Pr(Y)=\sum_{j=1}^{n}Pa^{t=T}(j)
所以通过给定的HMM模型,我们可以计算一个观察序列的概率。如果给定了一个观察序列,想要找到最匹配该观察序列的HMM模型,我们可以选择生成该观察序列的概率最高的HMM模型。

参考来源:

http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html

机器学习 Hidden Markov Models 2相关推荐

  1. 机器学习 Hidden Markov Models 1

    Introduction 通常,我们对发生在时间域上的事件希望可以找到合适的模式来描述.考虑下面一个简单的例子,比如有人利用海草来预测天气,民谣告诉我们说,湿漉漉的海草意味着会下雨,而干燥的海草意味着 ...

  2. 机器学习算法之——隐马尔可夫模型(Hidden Markov Models,HMM) 代码实现

    @Author:Runsen 隐形马尔可夫模型,英文是 Hidden Markov Models,就是简称 HMM. 既是马尔可夫模型,就一定存在马尔可夫链,该马尔可夫链服从马尔可夫性质:即无记忆性. ...

  3. 隐马尔科夫模型(Hidden Markov Models) 系列之五

    隐马尔科夫模型(Hidden Markov Models) 系列之五 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...

  4. 隐马尔科夫模型(Hidden Markov Models) 系列之三

    隐马尔科夫模型(Hidden Markov Models) 系列之三 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...

  5. 隐马尔科夫模型(Hidden Markov Models) 系列之四

    隐马尔科夫模型(Hidden Markov Models) 系列之四 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...

  6. 隐马尔科夫模型(Hidden Markov Models) 系列之一

    隐马尔科夫模型(Hidden Markov Models) 系列之一 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...

  7. biosequence analysis using profile hidden Markov models(使用隐马尔可夫模型分析序列)

    官方网址 下载工具后,按照网站上提供的文件来安装 HMMER is used for searching sequence databases for sequence homologs, and f ...

  8. [Machine Learning]Markov chain and Hidden Markov Models(HMMs)

    [Machine Learning]Markov chain and Hidden Markov Models(HMMs) 隐马尔可夫模型HMM快速入门: http://homepage3.nifty ...

  9. Lecture 6 Sequence Tagging: Hidden Markov Models

    目录 Problems with POS Tagging 词性标注的问题 Probabilistic Model of HMM HMM的概率模型 Two Assumptions of HMM HMM的 ...

最新文章

  1. MyEclipse 常用操作
  2. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...
  3. KB929828:在Vista中使用Sysprep /generalize时出错
  4. Nginx系列篇二:linux搭建Nginx负载均衡
  5. 六月计划#2B(6.10-6.16)
  6. Win10修改注册表,提示无法创建密钥
  7. HDFS中的NameNode和DataNode
  8. 潘多拉 搭建 php服务器,OpenWrt/LEDE/潘多拉固件4G网卡上网之【HiLink模式上网教程】...
  9. win7桌面图标消失的3种解决方案
  10. 内Sane外Win:敏捷需要一流的项目经理
  11. Spring 事务传播行为
  12. Android 12/12L 全面升级、微信和“吃鸡”都在用 Flutter,2021 Google 开发者大会你看了吗?
  13. lxr-0.3.1 源码阅读 How To.
  14. 杭州的旅游景点与民间传说故事
  15. 传销分子为什么喜欢国学? PS:尽信书不如无书!
  16. QT数据库访问技术简介
  17. MJExtension使用指导
  18. 网速测试大师的软件怎么回事,网速测试大师
  19. 快速入门vb语言——第一天
  20. 腾讯云——轻量数据库服务

热门文章

  1. Java学习之仿写Tomcat
  2. 华三服务器管理口地址_常用设备管理口默认用户名密码汇总
  3. 整理总结:《量化炼金术:中低频量化交易策略研发》
  4. 2022年职业发展方向分析
  5. python实现二进制转十进制
  6. Python使用栈十进制转二进制、十进制转任意进制(代码)
  7. 2019年计算机/软件学院发生变化的大学集合!完结版!
  8. eclipse项目的maven工程找不到主类的解决办法
  9. 【中英双语】Unity:从零开始构建2D游戏
  10. Cobalt Strike 之团队服务器的搭建与DNS通讯演示