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

一、什么是隐马尔可夫模型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个球,分为红色和白色两种球,这三个盒子里球的数量分别是:

按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是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

马尔科夫模型系列文章(二)——隐马尔科夫模型相关推荐

  1. .net 面试题系列文章二(附答案)

    .net 面试题系列文章二(附答案) 内容摘要:本文是.net 面试题系列的第二篇,该系列文章是对网上所有.net面试题的收重新集整理後的系列文章,囊括了c#面试题,vb.net面试题,asp.net ...

  2. FPGA经验谈系列文章——FPGA开发方向以及算法开发模型

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA经验谈系列文章--FPGA开发方向以及算法开发模型 前言 接口方向 算法方向 总结 前言 FPGA开发笼统的说可以分为两个方向 ...

  3. 强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用

    强化学习系列文章(二十七):VPG+Beta分布在CartPoleContinuous环境中的应用 在第七篇笔记(https://blog.csdn.net/hhy_csdn/article/deta ...

  4. 强化学习系列文章(二十三):AirSim Python API图像与图像处理

    强化学习系列文章(二十三):AirSim Python API图像与图像处理 参考网址:https://microsoft.github.io/AirSim/image_apis/#segmentat ...

  5. 强化学习系列文章(二十八):进化强化学习EvoRL的预实验

    强化学习系列文章(二十八):进化强化学习EvoRL的预实验 最近在研究强化学习解决离散空间的组合优化问题时,接触到了很多进化算法,实际体验也是与RL算法不相上下.进化算法也常用于优化神经网络的参数,C ...

  6. 马尔科夫系列——一、隐马尔可夫模型 - 马尔可夫链、HMM参数和性质

    发现简书上有一个作者写的有关马尔科夫系列的文章写得详细.生动并且系统,特转载过来学习一下.原文地址:隐马尔可夫模型 - 马尔可夫链.HMM参数和性质 目录 一.马尔可夫性质 二.马尔可夫链 例子:假设 ...

  7. 马尔科夫系列——三、隐马尔可夫模型 - 学习问题 - Baum-Welch算法

    转载的过程中发现,原文有些地方不太理解,就阅读了其他的文章,然后把代码的实现也引进来了.之前并没有验证代码的准确性,后面有人说,代码可能有问题,我尝试了修改.把简单修改版本的也放上来. 目录 一.训练 ...

  8. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...

    前言 隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 马尔可夫模型理论与分析 参考<统计学习方法>这本书,书上已经讲得 ...

  9. 隐马尔科夫模型(HMMs)之三:隐马尔科夫模型

    隐马尔科夫模型(Hidden Markov Models) 定义 隐马尔科夫模型可以用一个三元组(π,A,B)来定义: π 表示初始状态概率的向量 A =(aij)(隐藏状态的)转移矩阵  P(Xit ...

  10. HMM模型:马尔可夫链、隐马尔可夫模型

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 4.1 马尔科夫链 在机器学习算法中,马尔可夫链(Markov ...

最新文章

  1. python selenium模块使用出错解决,Message: 'geckodriver' executable needs to be in PATH
  2. 求两条轨迹间的hausdorff距离_自动控制原理 | 根轨迹法
  3. 《Linux内核完全注释》《完全剖析》 » 阅读本书所需的基础知识 -- 再次强调。
  4. python-k近邻分类器-KNN
  5. python 接口测试 如何写配置文件_python接口自动化测试 - configparser配置文件解析器详细使用...
  6. 温昱:架构实践全景图
  7. 2019 下半年,程序员怎么过?
  8. 物联网给快递业带来新变革
  9. JavaScript自有属性与原型属性
  10. 大数据建模步骤有哪些
  11. MacOS Mojave 安装 AI 東北きりたん 东北切蒲英 NEUTRINO 教程
  12. python三维图形注释_python – Matplotlib:注释3D散点图
  13. 在多台终端设备的i茅台应用中,实现同时自动化预约X酒的解决方案
  14. 低延时直播系统开发技术方案
  15. 使用Python脚本读取fasta文件
  16. 【亲测可用】云里黑白第十三回——解决出现问题,你的PIN不可用,单击以重新设置PIN,诊断启动,禁用服务
  17. PHPCMS网站登陆增加点触验证码
  18. 图论学习笔记——一笔画(最少笔画)问题
  19. 【转】iOS25彩票 幸运转盘
  20. 台式计算机开关电源的电压规格,台式计算机ATX开关电源检修技巧

热门文章

  1. 数据结构课程设计---图书管理系统
  2. C++ IE缓存管理研究
  3. 服务器系统安装oracle数据库,oracle数据库服务器安装教程
  4. Windows 7 驱动开发
  5. 网络socket编程(c语言)
  6. 服务器2008系统驱动安装,三招搞定Server 2008驱动程序问题
  7. 2018年让你的技术学习快人一步!
  8. unity蛮牛游戏API
  9. Flash Builder 4.6 序列号
  10. 计算机接电信光猫无法上网,电信光猫上网设置方法