强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础

隐马尔科夫模型HMM

隐马尔科夫模型算是比较经典的机器学习模型了,在自然语言处理、语言识别、模型识别等这些领域也得到了广泛的应用。在深度学习的崛起,尤其是RNN、LSTM等神经网络序列模型的火热,HMM的地位有些下降。但是作为一个经典的模型,学习HMM的模型和对应算法,对咱们解决问题建模的能力提高以及算法思路的扩招还是很好的。
一. 一般常见的什么样的问题需要HMM模型呢
首先咱们来看看什么样的问题可以用HMM模型解决,咱们使用HMM模型时的问题一般有两个特征。
1.咱们的问题是基于序列的,比如世界序列,或者状态序列。
2.我们的问题中有两类数据,一类序列数据是可以测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。

有了这两个特征,那么这个问题一般可以用HMM模型来尝试解决。这样的问题在时间生活中很多。==例如:==我现在在博客写文章,我在键盘上敲出来的一系列字符就是观测序列,而我实际想写的一段话就是隐藏序列,输入法的任务就是从敲入的一系列字符可能的猜测我要写的一段话,并且把最可能的词语放在最前面让我选择,这就可以看做一个HMM模型了。==再举个例子,==我在和同事说话时,我发出的一串连续的声音就是观测序列,而我实际表达的一段话就是状态序列,同事大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。
二. HMM模型的定义
对于HMM模型,首先我们假设Q是所有可能的隐藏状态的集合,V是所有可能的观测状态的集合,即:
Q={q1,q2,…,qN},V={v1,v2,…vM}
   其中,N是可能的隐藏状态数,M是所有的可能的观察状态数。

对于一个长度为T的序列,I对应的状态序列, O是对应的观察序列,即:
I={i1,i2,…,iT},O={o1,o2,…oT}
    其中,任意一个隐藏状态it∈Q,任意一个观察状态ot∈V
    HMM模型做了两个很重要的假设如下:

  1. 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,这个咱准备在在MCMC马尔科夫链中再说一下。当然这样假设有点极端,因为很多时候我们的某一个隐藏状态不仅仅只依赖于前一个隐藏状态,可能是前两个或者是前三个。但是这样假设的好处就是模型简单,便于求解。如果在时刻t的隐藏状态是it=qi,在时刻t+1的隐藏状态是it+1=qj, 则从时刻t到时刻t+1的HMM状态转移概率aij可以表示为:
    aij=P(it+1=qj|it=qi)
        这样aij可以组成马尔科夫链的状态转移矩阵A:
    A=[aij]N×N
  2. 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻t的隐藏状态是it=qj, 而对应的观察状态为ot=vk, 则该时刻观察状态vk在隐藏状态qj下生成的概率为bj(k),满足:
    bj(k)=P(ot=vk|it=qj)
        这样bj(k)可以组成观测状态生成的概率矩阵B:
    B=[bj(k)]N×M
        除此之外,我们需要一组在时刻t=1的隐藏状态概率分布Π:
    Π=[π(i)]N其中π(i)=P(i1=qi)
        一个HMM模型,可以由隐藏状态初始概率分布Π, 状态转移概率矩阵A和观测状态概率矩阵B决定。Π,A决定状态序列,B决定观测序列。因此,HMM模型可以由一个三元组λ表示如下:
    λ=(A,B,Π)
    三. 一个HMM模型实例
    下面我们用一个简单的实例来描述上面抽象出的HMM模型。这是一个盒子与球的模型,例子来源于李航的《统计学习方法》。

假设我们有3个盒子,每个盒子里都有红色和白色两种球,这三个盒子里球的数量分别是:

盒子 1 2 3
红球数 5 4 7
白球数 5 6 3
    按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次,得到一个球的颜色的观测序列:
O={红,白,红}
     注意在这个过程中,观察者只能看到球的颜色序列,却不能看到球是从哪个盒子里取出的。

那么按照我们上一节HMM模型的定义,我们的观察集合是:
V={红,白},M=2
    我们的状态集合是:
Q={盒子1,盒子2,盒子3},N=3
而观察序列和状态序列的长度为3.

			初始状态分布为:
			Π=(0.2,0.4,0.4)^T
			状态转移概率分布矩阵为:
			A=	0.5 0.2 0.3 
			    	0.3 0.5 0.2
				 	0.2 0.3 0.5
			观测状态概率矩阵为:
			B=	0.5 0.5
				    0.4 0.6
				    0.7 0.3

四. HMM观测序列的生成
    从上一节的例子,我们也可以抽象出HMM观测序列生成的过程。

输入的是HMM的模型λ=(A,B,Π),观测序列的长度T
    输出是观测序列O={o1,o2,…oT}
    生成的过程如下:

1.根据初始状态概率分布Π生成隐藏状态i1
    2.从1到T的t

a. 按照隐藏状态it的观测状态分布bit(k)生成观察状态ot
      b. 按照隐藏状态it的状态转移概率分布aitit+1产生隐藏状态it+1
    所有的ot一起形成观测序列O={o1,o2,…oT}
五. HMM模型的三个基本问题
HMM模型一共有三个经典的问题需要解决:

1. 评估观察序列概率。即给定模型λ=(A,B,Π)和观测序列O={o1,o2,…oT},计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到前向后向算法,我们在这个系列的第二篇会详细讲解。这个问题是HMM模型三个问题中最简单的。

2. 模型参数学习问题。即给定观测序列O={o1,o2,…oT},估计模型λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法, 我们在这个系列的第三篇会详细讲解。这个问题是HMM模型三个问题中最复杂的。

3. 预测问题,也称为解码问题。即给定模型λ=(A,B,Π)和观测序列O={o1,o2,…oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法,我们在这个系列的第四篇会详细讲解。这个问题是HMM模型三个问题中复杂度居中的算法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值