隐性马尔科夫模型学习(翻译自Wiki)

1.定义

  它是一种统计模型,系统可以在其中建模为带着不可观察到的状态的马尔科夫过程。一个HMM可以视为最简单的动态贝叶斯网络。
在一个普通的马尔科夫过程中,状态对于观察者是可见的,在一个隐形马尔科夫模型中,状态是不能直接看到的,但是由状态所决定的输出是可见的。每个状态对可能的输出记号都有一个概率分布,因此一个HMM产生的一组输出符号能提供一些关于状态序列的信息。注意形容词“隐性”指的是模型经过的状态序列是不可见的,并不是指模型的参数不可见。也就是说,即使模型的参数都是确切知道的,模型仍然是“隐性”的。这一点我们可以类比上一篇文章中关于猜硬币的赌博方案,即使我们都知道多头或少头硬币在出现H的概率等参数,我们仍无法从输出中直接看到庄家用了哪枚硬币。

2. 应用

隐性马尔科夫模型在瞬时模式识别有广泛的应用,比如语音识别、手写识别、动作识别、词类标注,音标跟踪,生物信息学。

3.架构

下图展示了一个HMM示例的大体架构。每个椭圆形代表一个可以对其赋任何值的随机变量。在图中,随机数值x(t)在时间t上是隐含的状态, x (t ) ∈ { x 1 , x 2 , x 3  }。随机数值y(t)在时间t上是观察到的数值,y (t ) ∈ { y 1 , y 2 , y 3 , y 4  }。图中的箭头表示条件依赖。

 

从图中,我们可以清晰的看到在时间t上,对给定的隐性变量x(t-1)的值,隐性变量x(t)的条件概率分布仅仅取决于隐性变量x(t-1)的值,也就是说在时间t-2上及以前的值是没有影响的。这叫做马尔科夫性质。类似的,我们观察到的变量y(t)的值也仅仅取决于隐性变量x(t)的值。

4.一个观察序列的概率

一个长为L的观察序列 的概率记为:(x遍历所有可能的隐藏节点)

  
对P(Y)的穷举计算在多数实际问题中是棘手的,原因是因为隐藏节点序列的可能性一般来说都太多了,通常与序列的长度成指数关系。然而,这个计算可以使用前向算法或者与其等价的后向算法得以大大加速。

5.使用隐性马尔科夫模型

在说使用之前,我们先看看与HMM有关的三个典型问题为:

1)给定模型的参数,计算一个特定输出序列的概率。这要求所有可能的状态序列的总和,但是我们可以使用前向算法高效的解决这个问题,这是一种动态编程的形式。

2)给定模型的参数和一个特定的输出序列,寻找到最有可能产生这个输出序列的状态序列。这要求在所有可能的状态序列中寻找到一个可能性最大的,类似的,我们可以使用维特比算法高效的解决这一问题。

3)给定一个输出序列或一组这样的序列,寻找到最有可能的状态转移集和输出概率。换句话说,给定一组输出序列,推出HMM参数的最大似然估计。这个问题现在尚没有什么简便易行的办法,但是使用 Baum-Welch 算法可以高效的得到一个局部的最大似然。这个算法也被称为Forward-Backward 算法,它是Expectation-maximization Algorithm的一个特例。

我们在这举一个具体的例子:
有两个朋友,Alice和Bob,彼此住的比较远,他们每天都会通过电话交谈他们彼此那天所做的事情。Bob只对三件事情感兴趣:在公园中散步、购物和打扫公寓。选择具体干什么仅仅由当天的天气所决定。Alice并不能清楚的知道Bob所住地方的天气状况,但是她知道一个大概的趋势。基于Bob每天告诉她的他那天做的事情,Alice尝试着去猜测那天的天气如何。

Alice认为天气就像一个离散马尔科夫模型那样,它有两种状态:“下雨”或“ 晴天”,但是她没有办法直接观测到它们,也就是说,它们对于她是隐藏的。每一天,Bob会根据天气进行“散步”“购物”“清洁”中的一项活动。由于Bob 把他的活动告诉给了Alice,那么这些就是观察。这样一个完整的系统就是一个HMM。

Alice知道一般Bob所处区域的大体天气趋势和Bob会去做的事情。换句话说,HMM的参数是知道的。用Python语言描述一下具体数值就是:

states = ('Rainy', 'Sunny')
 
observations = ('walk', 'shop', 'clean')
 
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
 
transition_probability = {
   'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
   'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
   }
 
emission_probability = {
   'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
   'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
   }

 

 


Alice 连续三天都和Bob进行聊天,并且知道了Bob第一天去散步了,第二天去购物了,第三天去为公寓做清洁了。Alice这时有两个问题:这组观察序列的总体概率是什么?(也就是说,产生这样的结果的概率到底有多大)最能解释这些观察结果的“下雨”/“晴天”的序列是什么(也就是说是这三天天气怎样变化才最有可能出现这样的结果)?
第一个问题是由前向算法来解决的。第二个问题是由维特比算法来解决的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值