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

李航《统计学习方法》之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.16
0.3+0.28
0.2]*0.5=0.077
a2(2)=[a1(1)*a12+a1(2)a22+a1(3)a32]b2(2)=
[0.1
0.5+0.16
0.3+0.28
0.2]*0.6=0.1104
a2(3)=[a1(1)*a13+a1(2)a23+a1(3)a33]b3(2)=
[0.1
0.5+0.16
0.3+0.28
0.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的频率
注🐖:因为需要人工标注,代价较大,所以就会使用无监督学习

2、无监督学习

Baum-Welch算法

四、预测算法

1、近似算法

2、维特比算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6000毫安以上智能手机_展望2021年智能手机市场:这5大技术要爆发

2020年是极不平凡的一年,在黑天鹅、政治动荡等事件的冲击下,许多行业都按下了暂停键,智能手机行业自然也不例外。销售渠道受阻、供应链生产紧张,导致智能手机市场整体出货量呈现持续下跌的状况,严峻的市场行情让智能手…

无监督学习之聚类方法(K-Means、层次聚类)

一、导入 无监督学习中需要对无标记样本进行训练学习进而找到数据的内在性质和逻辑结构,聚类方法是为了为无监督学习的数据分析提供的基础学习方法。 聚类将数据集划分为若干个子集(每个子集称为类或者簇),如果一个样本只属于一个…

js调用python接口_JavaScript如何调用Python后端服务

欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 PythonAppium框架APP的UI自动化、 PythonSelenium框架Web的UI自动化、 PythonUnittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注…

详细地图_一目了然:蒙城学区划分详细地图

从明天(8月5日)起,小学一年级,初中一年级可在网上注册、报名了。根据区域内适龄学生人数、学校分布、学校规模、班额规定、交通状况等因素,以街道、路段、门牌号、居住小区、村组等构成要件,按照确保公平和免试就近入学的原则&…

奇异值分解SVD(证明全部省略)

SVD知识梳理一、引入二、SVD的定义、性质定义例题奇异值分解一定存在紧奇异值分解和截断奇异值分解几何解释三、SVD算法计算过程四、SVD与矩阵近似五、python实现六、应用一、引入 主成分分析PCA、潜在语义分析都会用到SVD 不要求A矩阵是方阵,SVD是线性代数中相似对…

jq 比较两个时间是否在同一天_jq: 属性-class

.aadClass() 添加class用法和前面的text方法一样&#xff0c;可以传字符串&#xff0c;可以传函数。值用空格隔开可以增加多个class<.removeClass() 移出class值<他们在一起也可以链式调用。链式调用: 取值的时候返回return结果&#xff0c;赋值返回this,表示可以继续调用…

李航《统计学习方法》之EM算法及其推广

EM算法是一种迭代方法&#xff0c;可以看作用坐标下降法来最大化对数似然估计下界的过程。 一、引入 &#xff08;一&#xff09;算法介绍 1、例题 有三枚硬币&#xff0c;ABC他们出现正面的概率分别是Π&#xff0c;p和q。进行如下投掷实验&#xff1a;先投掷A&#xff0c…

获取选中_【字节】如何实现选中复制的功能

Barnett Demesne公园中在白雪覆盖的山坡上玩耍的一家&#xff0c;北爱尔兰贝尔法斯特(© Stephen Barnes/Alamy)本题摘自于我 github 上的面试每日一题&#xff1a;https://q.shanyue.tech&#xff0c;并有大厂面经及内推信息&#xff0c;可在左下角打开本题原文链接在一些…

c语言 bool_程序的数据要放到哪里呢?|C语言第二篇

在C语言第一篇里我写到了编译器&#xff0c;在这里补充一个点&#xff0c;文本编辑器&#xff0c;编译器&#xff0c;IDE(集成开发环境)的区别。文本编辑器是用作编写普通文字的应用软件&#xff0c;如window的记事本&#xff0c;atom&#xff0c;sublime&#xff0c;它常用来编…

项目职责_项目经理的9个职责

虽说懂技术是项目经理的一个必要项&#xff0c;但事实上&#xff0c;很多技术出身的人&#xff0c;根本干不好项目经理。当项目经理之前&#xff0c;是活儿管你&#xff0c;让你干什么你就干什么&#xff0c;只对任务结果负责&#xff0c;对整体目标不负责。当项目经理之后&…

jenkins 安装插件失败_Jenkins 自动化安装插件

手工安装 Jenkins 插件的方法通常&#xff0c;我们有两种方法安装 Jenkins 插件。第一种方法是到 Jenkins 插件管理页面搜索插件&#xff0c;然后安装。第二种方法是上传 Jenkins 插件的 hpi 文件安装。这两种方法能满足大多数人的需求。第一种方法&#xff0c;如下图所示&…

anaconda下python中matplotlib画图无法显示中文

第一步&#xff1a;在自己电脑里选择喜欢的字体&#xff0c;搜索位置为C:\Windows\Fonts&#xff0c;我选择的是SimSun 第二步 查找Matplotlib默认字体目录 打开anaconda prompt,输入python&#xff0c;接下来进入查找过程 查找代码如下 import matplotlib print(matplotlib.…

Python编程及高级数据分析

一、介绍&#xff08;11月22日&#xff09; 小问题找函数 大问题找包 python数据分析常用的包 数据库实现的功能的在panda包里面找 其中M\S\P是数据可视化工具 深度学习使用的包是pytorch(facebook支持) 中文的nlp&#xff1a;Jieba、pynlpir 英文的nlp:NLTK 学python前的准…

helm安装_Helm部署和体验jenkins

运行在Kubernetes上的Jenkins下图来自rancher官方博客&#xff0c;在kubernetes环境下&#xff0c;jenkins任务被交给各个pod执行&#xff0c;这些pod在需要时被创建&#xff0c;任务结束后被销毁&#xff0c;这样既能合理利用资源&#xff0c;又能给每个任务提供一致的干净的初…

【无标题】【一周安全资讯1223】一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》;15亿条纽约房产记录泄露

要闻速览 1、一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》 2、国家数据局《“数据要素”三年行动计划 (2024—2026年)》公开征求意见 3、中国信息通信研究院发布《公共数据授权运营发展洞察 (2023年)》 4、15亿条纽约房产记录泄露&#xff0c…

自定义键盘码_无线+矮轴≤299?ikbc S200 2.4G 机械键盘测评

早在18年初&#xff0c;Cherry就发布了适用于笔记本及超薄键盘的全新轴体MX Low Profile&#xff0c;也就是为人所熟知的“矮轴”。之后Ducky、酷冷至尊、FILCO、ikbc等一众厂商也先后推出了搭载Cherry矮轴的超薄机械键盘&#xff0c;不过市场表现一直有些不温不火。在码呆看来…

simpledateformat格式_如何使用SimpleDateFormat?

SimpleDateFormat是一种比较常用的时间类&#xff0c;可以实现对时间按照一定的字符串格式进行处理。DateFormat类的作用把时间对象转化成指定格式的字符串。反之&#xff0c;把指定格式的字符串转化成时间对象。DateFormat是一个抽象类&#xff0c;一般使用它的的子类SimpleDa…

李沐老师的《动手学深度学习PyTorch》中的d2lzh_python包的安装

关于RNN章节 以及模型章节等会使用到d2l的python包 cmd下载地址&#xff1a;pip install d2l -i https://pypi.doubanio.com/simple/

人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓

阅读本文前&#xff0c;请您先点击上面的“十点姐姐”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

c语言未声明的标识符什么意思_C语言中%d和%f是什么意思啊?

%d表示输入或输出十进制有符号数&#xff1b;%f表示输入或输出浮点数&#xff08;float&#xff0c;四字节表示&#xff09;&#xff1b;在C语言中输出不同数据时需要用到不同的格式字符&#xff0c;%d是用来输出十进制整型数据的实际长度输出&#xff0c;%f是以小数形式输出单…