马尔科夫模型系列文章(二)——隐马尔科夫模型

前言:前面的一片文章介绍了马尔科夫模型,以及里面的一些核心概念,如转移概率、状态、转移概率矩阵等,本次文章更进一步,介绍隐马尔可夫模型。它是在马尔科夫模型的基础之上进一步得来的。隐马尔可夫模型最重要的其实就是两个假设、三个要素、三种基本问题

一、什么是隐马尔可夫模型HMM(Hidden Markov Model, HMM)

1.1 从一个简单的例子说起

既然说它是在马尔科夫模型的基础之上发展来的,而这必然有关系了,先看一个简单的例子来描述这个情景。

在某些情况下马尔科夫过程不足以描述我们希望发现的模式。回到之前那个天气的例子,一个隐居的人可能不能直观的观察到天气的情况,但是有一些海藻。民间的传说告诉我们海藻的状态在某种概率上是和天气的情况相关的。在这种情况下我们有两个状态集合,一个可以观察到的状态集合(海藻的状态)和一个隐藏的状态(天气的状况)。我们希望能找到一个算法可以根据海藻的状况和马尔科夫假设来预测天气的状况。

其中,隐藏状态的数目和可以观察到的状态的数目可能是不一样的。在语音识别中,一个简单的发言也许只需要80个语素来描述,但是一个内部的发音机制可以产生不到80或者超过80种不同的声音。同理,在一个有三种状态的天气系统(sunny、cloudy、rainy)中,也许可以观察到四种潮湿程度的海藻(dry、dryish、damp、soggy)。在此情况下,可以观察到的状态序列和隐藏的状态序列是概率相关的。于是我们可以将这种类型的过程建模为一个隐藏的马尔科夫过程一个和这个马尔科夫过程概率相关的并且可以观察到的状态集合

看了这个例子就明白了,实际上就说如果某一个状态我们是没办法直接观察到的,但是我们可以通过观察与这个状态紧密相关的另一个我们可以观察的状态来推导那个观察不到的状态,就是这样一个过程。

2.2 HMM较为正式的定义

隐马尔可夫模型(hidden Markov model, HMM)是另一种常用的概率模型。在该模型中,观测值(可观测状态)是依据一定的概率由某些不可见的内部状态(隐状态)决定,而这些状态之间服从某种马尔科夫模型。以下为一个典型的HMM示意图:

在这幅图中,zi 就是隐状态,是没办法直接观测得到的,但是zi本身是具有马尔科夫性的,yi 是观测状态,是可以直接观察的,y实际上又是由z决定的

下面给出几个关键概念:

(1)隐状态,观测状态

(2)发射概率(emission probability)

上面的可观测状态 yi 是观测到的数据,它的取值根据条件概率


得到,这个表示在隐状态Zi的条件之下得到yi的概率.这一概率称作发射概率(emission probability)

同时,由于隐状态 zi 满足马尔科夫转移概率,即

1.3 HMM 定义的数学表达

前面都是一些文字性的描述,那么使用数学语言怎么描述HMM呢?

对于HMM模型,首先我们假设,Q是所有可能的隐藏状态的集合,,V是所有可能的观测状态的集合,即:

其中,N是可能的隐藏状态数,M是所有的可能的观察状态数。

对于一个长度为T的序列,I 对应的状态序列, O是对应的观察序列,即:

 

其中,任意一个隐藏状态 it∈Q,任意一个观察状态ot∈V.

 

二、隐马尔可夫模型的核心知识点

2.1 HMM的两个假设

(1) 齐次马尔科夫链假设——本质上就是隐藏状态是一个马尔科夫链

即任意时刻的隐藏状态只依赖于它前一个隐藏状态。当然这样假设有点极端,因为很多时候我们的某一个隐藏状态不仅仅只依赖于前一个隐藏状态,可能是前两个或者是前三个。但是这样假设的好处就是模型简单,便于求解。如果在时刻 t 的隐藏状态是,在时刻t+1的隐藏状态是, 则从时刻 t到时刻 t+1的HMM状态转移概率 aij 可以表示为:

这样 aij 可以组成马尔科夫链的状态转移矩阵A:

注意:这里的“状态转移矩阵A”实际上就是马尔科夫链的“概率转移矩阵”,它的大小是NxN的方阵,N表示的是隐藏状态的可能取值数目。

(2)观测独立性假设。

即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻 t 的隐藏状态是 it=qj, 而对应的观察状态为 ot=vk, 则该时刻观察状态 vk在隐藏状态 qj下生成的概率为 bj(k),满足:

这样 bj(k) 可以组成观测状态生成的概率矩阵B:

注意:这里的意思是,在某一个时刻,观测状态仅仅与这一时刻的隐藏状态有关,而与之前的观测状态是无关的,实际上也就是说观测序列并没有组成一个马尔科夫链哦!

所以这里的矩阵B称之为观测值转移矩阵。它是一个N行M列的矩阵,N表示隐藏状态的取值种类数,M表示观测值的状态取值种类数。

除此之外,我们需要一组在时刻t=1的隐藏状态概率分布 π:

注意:这里的初始概率分布是一个N维向量,N表示隐藏状态的取值种类数。

2.2 HMM模型的三要素

一个HMM模型,可以由隐藏状态初始概率分布π, 状态转移概率矩阵A观测状态概率矩阵B决定,这称之为隐马尔科夫模型的三要素。π,A决定隐藏状态序列,B决定观测序列。因此,HMM模型可以由一个三元组λ表示如下:

 

2.3 从一个简单的例子来看HMM的三要素

再看三个基本问题之前,先看一个简单的例子,有了例子便于理解。

下面我们用一个简单的实例来描述上面抽象出的HMM模型。这是一个盒子与球的模型,例子来源于李航的《统计学习方法》。
假设我们有3个盒子,每个盒子里都有10个球,分为红色和白色两种球,这三个盒子里球的数量分别是:

image


按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次抽球,得到一个球的颜色的观测序列如下:

注意:在看到这个问题我们首先用弄清楚什么是观测值,观测值的状态有哪几种,什么是隐藏值,隐藏状态有哪几种。

因为我们能够看到的是我们每次抽取球的颜色,所以球的颜色就是我们的观测值,每一个球(即每一个观测值)只有红或者是白,所以观测值的状态有2种。至于这个抽出来的球到底是来自哪一个盒子,这是不知道的,所以每一次抽的球到底来自于哪一个盒子就是我们的隐藏值,因为一共有三个盒子,所以每次抽球可能来自于三个盒子中的一个,所以隐藏状态有三种。

而我们要做的就是根据我们抽到球的颜色,判断这个球到底来自于哪一个盒子。

按照我们上一节HMM模型的定义,我们的观察集合是:

我们的状态集合是:

而观察序列和状态序列的长度为3.
初始状态分布为:

状态转移概率分布矩阵为:

观测状态概率矩阵为:

2.4 HMM的三个基本问题

通过上面的例子我们已经构造出了一个HMM模型的三要素,但是这究竟怎么去使用这几个要素呢?还要根据实际的问题而定,一般在HMM中,会有三类问题需要解决。
(1)评估观察序列概率——前向后向的概率计算

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


(2)模型参数学习问题——Baum-Welch算法(状态未知) ,这是一个学习问题

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

后面如果有时间再详细说一说这个算法,可以参考下面几篇文章:

https://yq.aliyun.com/articles/373224?spm=a2c4e.11153940.0.0.7b326c05yHaI2F

 

(3)预测问题——也称为解码问题,Viterbi算法

即给定模型λ=(A,B,π)和观测序列O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法,这个问题是HMM模型三个问题中复杂度居中的算法。可以参考下面的文章:

https://yq.aliyun.com/articles/602716?spm=a2c4e.11153940.0.0.7b326c05yHaI2F

https://www.cnblogs.com/jacklu/p/6225073.html

 

三、HMM第一类问题的求解

依然使用上面的例子,第一类问题的求解如下面步骤:参考这篇即可,公式太多,输入起来很麻烦!

隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

 

参考链接:

https://yq.aliyun.com/articles/602152?utm_content=m_1000002340

https://www.cnblogs.com/jacklu/p/6225073.html

https://blog.csdn.net/qa38113202/article/details/81843247

https://blog.csdn.net/maverick17/article/details/79574917

https://blog.csdn.net/maryyu8873/article/details/82952650

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值