强化学习(一)-->隐马尔科夫模型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模型做了两个很重要的假设如下:
- 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,这个咱准备在在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 - 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻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.20.2 0.3 0.5观测状态概率矩阵为:B= 0.5 0.50.4 0.60.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模型三个问题中复杂度居中的算法。
强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础相关推荐
- 【强化学习入门】马尔科夫决策过程
本文介绍了马尔可夫决策过程,首先给出了马尔可夫决策过程的定义形式 ,其核心是在时序上的各种状态下如何选择最优决策得到最大回报的决策序列,通过贝尔曼方程得到累积回报函数:然后介绍两种基本的求解最优决策的 ...
- 深度学习:隐马尔科夫模型
概率图 隐马尔科夫模型属于概率图范畴,简单介绍一下概率图模型,概率图模型(probabilistic graphical model)是一类用图的形式表示随机变量之间条件依赖关系的概率模型,是概率论与 ...
- 【深度学习】隐马尔科夫
文章目录 一 隐马尔可夫 1. 自动机 2. 马尔可夫链和马尔可夫假设 3. 隐马尔可夫模型 3.1 马尔科夫模型中的三个问题: 3.2 似然度问题: 3.3 解码问题 案例 如何对句子进行分词 统计 ...
- 强化学习:2 马尔科夫决策过程
总结 无数的学者通过几十年的努力,提出了一套可以解决大部分强化学习问题的框架,这个框架就是马尔科夫决策过程. 马尔科夫性 ----> 马尔科夫过程 -> 马尔科夫决策过程 马尔科夫性描述的 ...
- [强化学习一]隐马尔可夫基本概念
文章目录 隐马尔可夫模型 1.隐马尔可夫模型的基本概念 1.1 隐马尔可夫模型的三个基本问题 2.概率计算方法 2.1 直接计算法 2.2 前向算法 2.3 后向算法(略) 隐马尔可夫模型 隐马尔可夫 ...
- 隐马尔科夫链(HMM)
目录 阐述 1.1 观测序列O出现的概率 1.1.1 穷举法(直接计算法) 1.1.2前向算法 1.1.3 后向算法 1.2 根据观测序列预测状态序列 1.2.1 维特比算法(动态规划) 1.3 估计 ...
- 隐马尔科夫(HMM)模型
隐马尔科夫(Hidden Markov model)模型是一类基于概率统计的模型,是一种结构最简单的动态贝叶斯网,是一种重要的有向图模型.自上世纪80年代发展起来,在时序数据建模,例如:语音识别.文字 ...
- 隐马尔科夫模型matlab工具箱说明
转自 http://blog.csdn.net/whiteinblue/article/details/40625291 隐马尔可夫模型(HiddenMarkov Model,HMM)是统计模型,它用 ...
- 隐马尔科夫模型-前向算法
转载自 隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型(HMM)一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题,这篇文章总结一下隐马尔科夫链(H ...
最新文章
- linux 内核 struct file 获取文件名 全路径
- 多选月份的日期选择器_GitHub - ylmyg/SelectionTime: Android下日期选择器,支持范围选择、多选、单选、根据输入天数选择日期...
- poj 2831(次小生成树)
- Python 中的模块和包
- 医学计算机应用研究的意义,医学图像感兴趣区域的自动提取-计算机应用研究.PDF...
- ArcGIS没有或未启动Spatial Analyst许可
- 解决Sql Server服务远程过程调用失败
- 报错:/check/src/check_log.c:27:10: 致命错误: subunit/child.h:没有那个文件或目录
- linux下通过phpize为php在不重新编译php情况下安装模块memcache
- VS2005编译Python源代码
- 基于模糊PID的液压舵机伺服系统
- dnf超时空漩涡副本路线流程图_DNF超时空漩涡副本怎么过_DNF超时空漩涡副本快速达成图文攻略...
- 人大金仓(Kingbase)数据库配置注意事项
- Jetpack Compose 无限加载列表(滚到底部自动加载更多)
- Python ------ return返回值等
- 现货交易、远期合同交易和期货交易
- ASR项目实战-交付团队的分工
- tabindex的用法
- Microsoft Windows 环境中NLS_LANG的正确设置 (文档 ID 1577370.1)
- DRM系列(11)之VIV IOCTLS