李航《统计学习方法》之HMM隐马尔可夫模型

文章目录

  • 前言
  • 一、基本概念
    • 1、语言描述:
    • 2、符号表示
    • 3、基本假设
    • 4、例子
    • 5、隐马尔可夫模型解决的三个基本问题
  • 二、概率计算算法
    • 1、向前算法
      • 算法:
      • 例题
    • 2、向后算法
  • 三、学习算法
    • 1、监督学习算法
      • 背景
      • 方法
    • 2、无监督学习
      • Baum-Welch算法
  • 四、预测算法
    • 1、近似算法
    • 2、维特比算法

前言

隐马尔可夫在语音识别、自然语言处理、生物信息、模式识别有广泛的应用,然而对于隐马尔科夫的流程需要深入的学习和探究,才好对马尔科夫场,条件随机场有更深入的掌握的理解。


一、基本概念

1、语言描述:

该模型是关于时序的概念模型,由一个隐藏的马尔科夫链随机生成不可观测的状态序列,再由状态生成观测,随后产生观测随机序列的过程。

  • 序列的每一个位置又可以看成一个时刻

2、符号表示

(1)Q表示所有状态集合,q表示某一状态;
(2)V表示所有可能的观测集合,v表示每一次具体观测。
(可以直观看到,比如观测红白球问题,V就是红球白球两种观测可能)
(3)I表示状态序列,i表示具体状态;
(4)O表示对应状态序列的观测序列,o表示具体;

  • 以上四项问题中已知

(5)A状态转移矩阵(方阵),aij是矩阵元素表示在前一时刻是qi的条件下,当前时刻为qj的概率。(前面状态为qi后面状态为qj)
(6)B观测概率矩阵(不一定是方阵),bj(k)为其中元素表示在状态是qj的条件下,生成观测是vk的概率。
(7)π是初始状态概率矩阵,等于时刻一时状态是qi的概率。

  • 隐马尔可夫模型λ=(A, B, π)(A和π决定了隐藏的马尔科夫链,生成状态序列,B决定如何从状态到观测)

3、基本假设

(1)齐次马尔科夫:在任意时刻的状态只依赖于前一时刻的状态,与其他时刻无关

(2)观测独立性:任意时刻的观测只依赖于当前时刻,与其他时刻无关。

4、例子


说明:四个盒子随机选一个盒子,在在该盒子中随机选一个球,记录颜色,放回;下一步重复,重复五次以后得到一个观测序列O=(红,红,白,白,红)

  • 解答过程:

确定状态集合Q={盒子1,盒子2,盒子3,盒子4}

观测集合V={红,白}

观测序列和观测序列长度为5

初始概率分布为π=(0.25, 0.25,0.25, 0.25)转置

状态转移概率分布A=

备注:行数表示上次对应的状态数,列数表示本次对应的状态数。

5、隐马尔可夫模型解决的三个基本问题

(1)概率问题:模型λ下观测序列O出现的概率P(O|λ)(2)学习问题:观测序列概率P(O|λ)最大,用极大似然估计的方法估计参数。

(3)预测问题:给定观测序列,求最有可能的对应的状态序列。

二、概率计算算法

  • 观测序列的向前算法、向后算法

1、向前算法

算法:

  • 输入模型λ,观测序列O

  • 输出观测序列概率P(O|λ)


(1)初始化前向概率,是初始状态和初始观测的联合概率
(2)递推式,计算到下一时刻部分观测序列,且在下一时刻处于状态qi的前向概率
其中
表示到t时刻观测到O1,O2…Ot并在t时刻处于状态qj而在t+1时刻处于qi的联合概率。
继而求和是为了在时刻t的所有可能N个状态qj求和。

例题

考虑盒子和球模型λ,状态集合Q={1,2,3} 观测集合V={红,白}
A=
a11(0.5)表示上次选中了盒1,这次又选中盒1,
a12(0.2)表示上次选中了盒1,这次选中了盒2

aij中i表示上次选中哪个,j表示本次选哪个
B=
0.5表示盒子1里面是红球的概率,剩下的0.5是白球的概率
0.4是盒2中红球,0.6是盒2中的白球
0.7是盒3中红球,0.3是盒3中的白球
π=

初始选中各个盒子的概率。
T=3;O =(红,白,红),用前向算法计算P(O|λ )。
解答过程:
已知状态集合、观测集合、状态转移矩阵,初始状态π阵
(1) [说明:下标表示时刻,括号內部表示状态,盒1盒2盒3]
a1(1)=0.20.5=0.1
a1(2)=0.4
0.4=0.16
a1(3)=0.4*0.7=0.28
(2) [备注:a21表示上次是盒2这次转向盒1,整个大括号里面表示的是在第一次是红球条件下第二次又抽到相应的盒子的概率]
a2(1)=[a1(1)*a11+a1(2)a21+a1(3)a31]b1(2)=
[0.1
0.5+0.160.3+0.280.2]*0.5=0.077
a2(2)=[a1(1)*a12+a1(2)a22+a1(3)a32]b2(2)=
[0.1
0.5+0.160.3+0.280.2]*0.6=0.1104
a2(3)=[a1(1)*a13+a1(2)a23+a1(3)a33]b3(2)=
[0.1
0.5+0.160.3+0.280.2]*0.3=0.0606
(3)a3(1)=[a2(1)*a11+a2(2)*a21+a2(3)*a31]*b1(1)=0.04187
a3(2)=[a2(1)*a12+a2(2)*a22+a2(3)*a32]*b2(1)=0.03551
a3(3)=[a2(1)*a13+a2(2)*a23+a2(3)*a33]*b3(1)=0.05284
(4)P(O|λ)=0.04187+0.03551+0.05284=0.13022
总结:前向算法的核心就是已知最终呈现的结果,既要考虑每次试验的所有可能结果,又要考虑每次试验场景状态的转换,例如上个例子中的3个盒子的转换。每一次递推,要保证当下结点的状态是与所要求得所的某一概率所对应的状态是一致的,这样,当求马尔科夫模型下观测序列所出现的概率时,只需要对最后一步的迭代进行求和即可。

2、向后算法


于后向算法,直接以盒子(隐)和球(观测)的实例为例推导:

(1)初始化第三次取球为红球时候,即最终时刻所有状态的概率为1

(2)逆推迭代倒数第二次观察情况为白球的情况

备注:表达式少打了一个Σ符号。
注意状态转移阵中的元素aij对应的下标的对应关系,每个表达式固定的是i,这是与前向算法不同的地方,比如第一个式子中,aij i=1表示从盒1转移到某盒,而前向算法中固定的是j,j=1表示的则是从某盒转移到盒1.观测概率矩阵则是对应T次(最后一次)所观测的值,也就是说第二次的后向概率要满足第三次的观测概率。也要乘以满足下次观测的后向概率。

逆推迭代倒数第一次观察情况为红球的情况

(3)计算加和

可以发现前向算法和后向算法的结果相同
————————————————
后向算法例题来自
原文链接:https://blog.csdn.net/asdfsadfasdfsa/article/details/80913187

三、学习算法

1、监督学习算法

背景

已知的训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2)…(Os,Is)},接下来用极大似然估计法来估计隐马尔可夫模型的参数

方法

1、转移概率aij的估计:样本在t时刻处于状态i,时刻t+1转移到状态j的频数/所有频数之和
2、观测概率bj(k)估计:样本中状态为j并观测为k的频数/所有频数之和
3、初始状态概率Πi的估计为s个样本中初始状态为qi的频率

李航《统计学习方法》之HMM隐马尔可夫模型相关推荐

  1. 统计学习方法第十章隐马尔可夫模型

    最近感觉学习深度学习不能一直只注重代码,而不注重对于算法的理解,决定补一补深度学习相关的算法内容. 隐马尔可夫模型是可用于标注问题的统计学习模型,描述的是由隐藏的马尔可夫链随机生成观测序列的过程. 一 ...

  2. 《统计学习方法》——10. 隐马尔可夫模型(Python实现)

    本文主要是在阅读过程中对本书的一些概念摘录,包括一些个人的理解,主要是思想理解不涉及到复杂的公式推导.会不定期更新,若有不准确的地方,欢迎留言指正交流 本文完整代码 github 地址:https:/ ...

  3. 统计学习方法十:隐马尔科夫模型

    一.基本概念 1.马尔科夫假设:当前的状态只与之前的状态有关 2.马尔科夫过程:当前的状态只与前n个状态有关,被称为n阶马尔科夫模型. 3.马尔科夫链:可以理解为带有概率的状态转移链 3.一阶马尔科夫 ...

  4. HMM隐马尔科夫模型(附维特比代码)

    背景知识:马尔科夫模型 1 马尔科夫的局限性 在一些情况下,我们并不能直接得到观测的结果,比如在天气系统中,我们不能直接得到天气的状态,但是我们有一堆蚂蚁,可以从蚂蚁的行为状态找到天气变化的关系规律. ...

  5. NLP基础 : HMM 隐马尔可夫模型

    Hidden Markov Model, HMM 隐马尔可夫模型,是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型.该模型遵循两个假设,隐性状态i只取决于前一个隐性状态i-1,而与其他先 ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法24:HMM隐马尔可夫模型

    Python机器学习算法实现 Author:louwill Machine Learning Lab HMM(Hidden Markov Model)也就是隐马尔可夫模型,是一种由隐藏的马尔可夫链随机 ...

  7. HMM(隐马尔科夫模型)

    HMM模型基础 介绍 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学 ...

  8. 【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码

    本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词:[统计学习方法]第十章 隐马尔可夫模型 · 代码目的:手写HMM进行中文分词 作者:CSDN 征途黯然. 一.数据集   数据集的形式如下 ...

  9. HMM隐马尔可夫模型进行中文文本分词

    文章目录 一.HMM简述 1.引入 2.隐马尔科夫模型 (1)定义(Definition of a hidden Markov model) (2)应用 3.前向算法(了解) 4. 维特比算法 5.前 ...

最新文章

  1. Linux命令查看服务器信息
  2. webpack 优化笔记
  3. 推荐:梁宏达与体育评书
  4. php删除session中的值,PHP中session变量的销毁
  5. python中with学习
  6. 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践
  7. Python子类继承父类构造函数说明
  8. OpenCV图像处理(13)——指定区域截取和指定区域复制
  9. 关于微信小程序的视频的坑
  10. 你所需要的只是注意力
  11. 扩展Spring-自定义Bean的作用域(Scope)
  12. 计算机应用基础2-excel,《2014计算机应用基础excel2.doc
  13. java华氏摄氏转换练习
  14. Sphinx 简单应用
  15. php判断支付宝,PHP怎样判断是否为支付宝客户端
  16. 【Python自然语言处理】读书笔记:第五章:分类和标注词汇
  17. 企业工商信息查询第三方软件/API查询原理分析
  18. Ubuntu18.08安装到移动硬盘(UFEI引导)
  19. IT从业者的职业规划
  20. 苹果笔记本这样处理不易被套路

热门文章

  1. 雨林木风win11 32位装机版镜像v2021.07
  2. Maven依赖排除 禁止依赖传递 取消依赖的方法
  3. java 检视_Java高并发系列——检视阅读(五)
  4. 集成 websocket 的四种方案
  5. js二维数组传递java,ActiveX获取JavaScript传递的二维数组
  6. 使用 ref 对已渲染到页面的节点进行标记
  7. 惠新宸php教程_百度PHP高级顾问惠新宸:PHP在百度的发展历程
  8. linux驱动日志格式,( 转)嵌入式Linux驱动Makefile
  9. php 发送post请求json,thinkphp ,php post发送json请求,就收post请求
  10. MySQL 基础————常用数据类型