隐马尔科夫模型详解(一)

翻译 2015年07月08日 17:44:59

为了系统性的介绍隐马尔科夫模型,这里翻译一篇国外的论文《A Revealing Introduction to Hidden Markov Models》。

本文作者:Mark Stamp,圣荷西州立大学计算机学院副教授。


1.一个简单的例子

假设我们想要决定一个特定地点在几年间的年平均温度。为了使问题更有趣,我们姑且认为我们想要考虑的你年代极为久远,以至于温度计都还没有发明出来。因为我们不能够回到过去,所以我们就试图寻找一些温度的间接证据来推导。

为了简化问题,我们只考虑两种年温度,“热”和“冷”。假设现在的证据表明,一个热的年份紧跟在另一个热的年份之后的概率未0.7,同时冷的年份紧跟在另一个冷的年份之后的概率未0.6,我们就假设这样的规律在很久之前也成立,那么目前的信息我们可以归纳如下:

(1)

  H C
H 0.7 0.3
C 0.4 0.6
其中H代表“热”,C代表“冷”

同时,我们假设目前的研究表明温度和一个树的年轮大小之前存在某种关联。简单起见,我们只考虑三种不同的年轮大小,小,中和大,依次表示为S,M,L。最后,假设可行的证据,年均温度与年轮的概率关系如下:

(2)

  S M L
H 0.1 0.4 0.5
C 0.7 0.2 0.1

对于目前这套系统,状态就是年均温H或者C。从一个状态转换到另一个状态是一个马尔科夫过程(一阶),因为下一个状态仅仅依赖于目前状态,其固定概率在(1)中表示。但是实际状态是隐含的,因为我们无法直接观察到从前的温度。

尽管我们不能观察到过去的状态,但是我们可以观察到年轮的大小。从(2)中可以看到,三个年轮提供了它们与温度的概率信息。因为状态是隐含的,所以这种系统我们称之为“隐马尔科夫模型(HMM)”。我们的目标就是快速有效地使用可观察到的信息来获取马尔科夫过程中各种不同的信息。

状态转移矩阵表示如下:

(3)

A =

0.7 0.3
0.4 0.6

观察矩阵:

(4)

B =

0.1 0.4 0.5
0.7 0.2 0.1

在这个例子中,假设原始状态的分布表示为

(5)

π =

0.6 0.4

这个矩阵π,A和B是行随机矩阵,嗲表每一个元素是一个概率,并且每一行的元素相加和为1,也就是说每一行都是一个概率分布。

现在考虑一个久远的四年周期,我们观察到了一个年轮序列S,M,S,L,用0表示S,1表示M,2表示L,这个观察序列就为:

(6) 

O =(0,1,0,2)

我们希望通过(6)式的观察序列来得到最可能的HMM状态序列。也就是说,我们希望得到这四年间最可能的年均温。这并没有像它看上去的那么简单明了,因为这里对“最有可能的”有不同的可行解释。一方面,我们可以合理地定义“最有可能的”为四年间所有可能状态的最大概率的序列。动态规划可以用来高效地寻找特定的解。另一方面,我们可以合理地定义“最有可能的”为最大化预期正确状态数的序列。HMMs可以用来寻找这个序列。

动态规划和HMM方法并非一定相同。举个例子,动态规划需要有一个合法的状态转移,但是这并不是HMMs一定考虑的。哪怕所有状态转移都是合法的,HMM方法任然可以区别于动态规划,如下示例做出详细阐述。


接下来,我们表示一个HMMs中最具挑战的方面——符号表示。然后我们会讨论三种HMMs的基本的问题,并给出它们的有效算法。我们还会阐述一些在编写HMM计算机程序时需要考虑的关键问题。我们通过大量例子来总结全文,这些示例还不许要任何特别的知识,但是能够很好的阐述HMM方法的优势。

2.符号表示

设:

T = 观察序列长度

N = 模型中状态数

M = 观察符号数

Q = 不同状态的马尔科夫过程。

V = 可能的观察集

A = 状态转移概率

B = 观察概率矩阵

π = 原始状态分布

O = 观察序列

观察序列总是表示为{0,1,..., M - 1},因为这样既简化了表示又不损失一般性。Oi∈V,其中i = 0, 1, ... , T - 1。

下图展示了一个通用隐马尔科夫模型,其中Xi表示隐含状态序列,其他所有符号都已在上边解释过。


隐含在序言之后的马尔科夫过程是由当前状态和A矩阵决定的。我们只能够观察到Oi,它通过B矩阵与隐含状态相关联。

对于之前温度的例子,我们有T = 4, N = 2, M = 3, Q = {H, C}, V = {0,1,2},本例中,矩阵A,B和π都依次在(3),(4)和(5)中给出。

矩阵A = {aij}是N*N维,满足如下表述:


并且A是行随机的。注意,aij依赖于t。

矩阵B = {bj(k)}是N*M维,满足如下表述:


和A矩阵一样,B也是行随机,同时bj(k)的概率是依赖于t 的。

一个隐马尔科夫模型由A,B和π定义,表示为λ = (A,B,π)。假设考虑一个一般的长度为四的状态序列

X = (x0, x1, x2, x3)

对应一个观察序列

O = (O0, O1, O2, O3)

然后πx0是x0的开始状态概率。同时,bx0(O0)是一个原始观察概率O0,axo, x1是状态x0到状态x1的转移概率。然后我们可以的到状态序列X的概率为:

(7)


如果继续考虑在第一部分的温度问题,其中观察序列O = (0,1,0,2),使用(7)的方式可以计算得到


类似的,我们可以直接计算每种长度为四的可能状态序列的概率,假设依旧使用(6)中所提供的观察序列。我们可以罗列这列概率结果在表1中,表中最后一列为归一化概率。

表1


为了使用动态规划寻找最优解,我们简单地选择最高概率的序列,即CCCH。为了找到最优的马尔科夫模型序列,我们选择在每个位置对应的最可能的符号。在每次选择之后,我们计算了所有概率的总和,我们得到一个H在第一个位置。在此之后,我们发现第一个位置为H的归一化概率为0.18817,因此C在第一个位置的概率为0.8113。因此马尔科夫模型选择第一个最优元素为C。我们对序列中每个元素重复这样的步骤,获得了表2的概率数据。

表2


从表2中我们找到了马尔科夫模型最优序列为CHCH。注意,这一个例子中,动态规划序列与马尔科夫序列的最优结果不同,但是所有的状态转移都是合法的。


未完待续

【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

详解隐马尔科夫模型  作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型。我们不仅会讨论隐马尔科夫模型的基...
  • FnqTyr45
  • FnqTyr45
  • 2017年11月25日 00:00
  • 322

隐马尔科夫模型总结

1.概念 状态序列: 隐藏的马尔科夫链随机生成的状态序列,称为状态序列(state sequence) 观测序列 每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(obeservat...
  • u011879578
  • u011879578
  • 2016年05月21日 21:07
  • 825

隐马尔科夫模型详解

转载请注明地址(http://blog.csdn.net/xinzhangyanxiang/article/details/8522078) 学习概率的时候,大家一定都学过马尔科夫模型吧,当时就觉得...
  • sight_
  • sight_
  • 2015年01月30日 15:24
  • 17219

一个隐马尔科夫模型的应用实例:中文分词

一个隐马尔科夫模型的应用实例:中文分词
  • ch1209498273
  • ch1209498273
  • 2016年12月24日 23:52
  • 2149

自然语言处理1-马尔科夫链和隐马尔科夫模型(HMM)

基于统计的语言模型比基于规则的语言模型有着天然的优势,而(中文)分词是自然语言处理的基础,接下来我们将注重介绍基于统计的中文分词及词性标注技术。为此做以下安排:首先介绍一下中文处理涉及到基本概念,接着...
  • tony_xjz
  • tony_xjz
  • 2013年06月03日 17:39
  • 3229

隐马尔科夫模型练习

import numpy DTYPE='float32' #学习问题 def forward(a,b,o): num_states_hidden=a.shape[0] alpha...
  • qq_32231743
  • qq_32231743
  • 2017年03月23日 22:33
  • 344

机器学习中的隐马尔科夫模型(HMM)详解

本文介绍机器学习中非常重要的隐马尔可夫模型(HMM,Hidden Markov Model),它也是一种PGM。更准确地说,HMM是一种特殊的贝叶斯网络。HMM在自然语言处理、计算机视觉,以及语言识别...
  • baimafujinji
  • baimafujinji
  • 2016年05月01日 16:03
  • 30383

隐马尔科夫模型(Hidden Markov Model,HMM)

前言在李航的《统计学方法》第十章有对隐马尔科夫模型(Hidden Markov Model,HMM)比较详细的介绍和推导公式,我参考公式结合中文分词应用实现了隐马模型观测序列的生成、前向算法、维特比算...
  • shibing624
  • shibing624
  • 2016年09月01日 17:59
  • 3175

隐马尔科夫模型(Hidden Markov Models)之理解篇和证明篇

Hidden Markov Models 一:介绍(Introduction) 我们通常都习惯寻找一个事物在一段时间里的变化模式(规律),这些模式发生在很多领域,比如计算机中的指令序列,句子中的词语...
  • wxcdzhangping
  • wxcdzhangping
  • 2015年01月07日 11:19
  • 3026

隐马尔科夫模型-基本模型与三个基本问题

隐马尔科夫模型-基本模型与三个基本问题 这次学习会讲了隐马尔科夫链,这是一个特别常见的模型,在自然语言处理中的应用也非常多。 常见的应用比如分词,词性标注,命名实体识别等问题序列标注问题均...
  • AMDS123
  • AMDS123
  • 2017年05月25日 23:13
  • 1101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:隐马尔科夫模型详解(一)
举报原因:
原因补充:

(最多只允许输入30个字)