概率图模型笔记(二) 隐马尔科夫模型(Hidden Markov Model)
写在前面
隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。最近入坑NLP,看到好多算法都涉及到HMM。那么什么样的问题需要HMM模型来解决,一般有以下两个特征:(1)我们的问题是基于序列的,比如时间序列,或者状态序列。(2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
一、HMM模型基础
首先,我们要了解下什么是马尔科夫模型。Markov Model很大,主要有四个细分领域。
这里最基础的就是Markov chain,这也是我们这篇博客的基础知识。那么什么是马尔科夫链模型呢?马尔科夫链是一种离散的随机过程,可以将其看成是一种有限自动机,但是其状态之间的转移并不是依赖于外界的输入,而是依赖于每个状态之间的转移概率。结合下面这个图可能比较好理解,图中每条边上的权重表示状态转移的概率。
转存失败重新上传取消
而HMM是马尔科夫过程的一种扩展,除了一组观测序列,我们还有相对应的一组隐藏序列,还是用图来表示
对于HMM 模型,假设Q是所有可能的隐藏状态的集合,V是所有可能的观察状态的集合,
对于一个长度为T的序列,I对应状态序列,O对应观察序列,
其中,任意一个隐藏状态 i 属于集合Q, 任意一个观察状态 o 属于集合V,如上图
HMM模型两个重要的假设:
1) 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态。当然这样假设有点极端,因为很多时候我们的某一个隐藏状态不仅仅只依赖于前一个隐藏状态,可能是前两个或者是前三个。但是这样假设的好处就是模型简单,便于求解(但同时也限制了HMM模型的效果)。如果在时刻t的隐藏状态是it=qi,在时刻t+1的隐藏状态是it+1=qj, 则从时刻t到时刻t+1的HMM状态转移概率aij可以表示为:
这样aij可以组成马尔科夫链的状态转移矩阵A:
2) 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,这也是一个为了简化模型的假设。如果在时刻t的隐藏状态是it=qj, 而对应的观察状态为ot=vk, 则该时刻观察状态vk在隐藏状态qj下生成的概率为bj(k),满足:
这样bj(k)可以组成观测状态生成的概率矩阵B:
除此之外,还需要一组在时刻t=1的隐藏状态概率分布Π:
一个HMM模型,可以由隐藏状态初始概率分布Π, 状态转移概率矩阵A和观测状态概率矩阵B决定。Π,A决定状态序列,B决定观测序列。因此,HMM模型可以由一个三元组λ表示如下:
HMM属于典型的生成式模型,即我们需要从训练数据中学到数据的分布,也就是上面介绍的HMM五要素:隐藏状态集合I,观测状态集合O, 初始隐状态概率分布Π,转移概率矩阵A以及发射概率矩阵B
二、HMM观测序列的生成
那么HMM观测序列是怎么生成的呢?
输入:HMM模型参数, 观测序列的长度T
输出:经HMM模型的观测序列
流程:
1)根据初始状态概率分布生成隐藏状态;
2)for t from 1 to T:
a). 按照隐藏状态的观测状态分布B生成观测状态;
b). 按照隐藏状态的状态转移概率分布A生成隐藏状态
所有的一起组合形成观测序列
三、HMM模型的三个问题
3.1 概率计算问题。
即给定模型λ=(A,B,Π)和观测序列O={o1,o2,...oT},计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到前向后向算法。这个问题是HMM模型三个问题中最简单的。
(1) 直接计算法
直观地,我们只要知道模型参数,就可以按照概率公式计算出给定观测序列的出现概率。虽然这种方式理论上可行但是最后计算量太大,不过我们可以通过了解这个过程来理解HMM是怎么运行的。
首先明确问题,我们最后要求得是P(O|λ),于是可以写成下列等式:
其中,右侧第一项是通过转移矩阵求一个隐藏状态序列的概率公式,右侧第二项是通过发射矩阵求由隐藏序列到最后观测序列的概率,因为隐藏状态有I种,所以最后需要把所有可能情况进行加和求解。也就是:
但是利用上述过程求解计算量非常大,是O(TN^T)阶的,这种算法不可行。
(2)前向算法
首先定义前项概率 αk(i):
给定HMM模型λ,定义到时刻t时部分观测序列为O1,O2,,,Ot,且隐藏状态为qi,即
前向算法流程:
输入:HMM模型和观测序列;
输出:观测序列概率P(O|λ)
上面的公式可能不太好理解,结合下面的图:
解释一下算法流程中递推的那一部分,可以理解为在k时刻隐藏状态为S1到Sn中的任意一个,可以根据转移矩阵将它们在k时刻无论是哪一种状态都可以计算出在k+1时刻状态为Sj的概率,也就是,得到这个概率之后自然就可以根据发射概率来求出k+1时刻的观测状态。前向算法的复杂度为O(kN^2).
(3)后向算法
跟前向算法类似,只不过是这里定义了一个后向概率
后向算法流程:
3.2 模型参数学习问题
即给定观测序列O={o1,o2,...oT},估计模型λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法。这个问题是HMM模型三个问题中最复杂的。
根据训练数据是包括观测序列和对应的隐藏序列还是只有观测序列可以分为有监督学习和非监督学习
(1) 监督学习
给定数据集
其实就是根据三元组参数的定义去数词的频数。。。
- 转移概率
- 观测概率
- 初始状态概率
(2)非监督学习
可见有监督学习情况求解模型的参数还是比较直观简单的,但是在很多时候,我们无法得到观测序列对应的隐藏状态序列,此时求解HMM模型的参数就会复杂一些,就会用到Baum-Welch算法,其实也就EM算法,只不过那个时代EM算法还没有提出概念。
我们的训练数据为:,对于任意一个样本d,观测序列,其对应的未知的隐藏状态序列为:
Baum-Welch算法第一步(EM算法的E步):求Q函数
其中表示HMM模型参数的当前估计值。
在M步我们要极大化上式。由于,而分母是常数,因此我们要极大化的式子等价于:
我们又有联合分布:
将其代入上述需要极大化的式子:
Baum-Welch算法第二步(EM算法的M步):极大化Q函数,求模型参数A, B, PAI
- 对模型参数PAI求导
由于PAI只在上式括号里的第一项出现,因此对PAI的极大化式子为:
同时注意到还满足条件, 因此根据拉格朗日乘子法,可以写出关于的拉格朗日函数为:
求导得到:
令i分别从1到N,上式可以得到N个式子,然后把这N个式子相加和得到:
这样我们就得到了的表达式:
- 对模型参数A和B也是同样的思路求解。
Baum-Welch算法流程:
输入:D个观测序列样本
输出:HMM模型参数
流程:
1) 随机初始化所有的参数
2)对于每个样本, 用前向后向算法计算
3)更新模型参数:
4)如果参数值已经收敛,则算法迭代结束,否则继续从第二部开始迭代
3.3 预测问题,也称为解码问题。
即给定模型λ=(A,B,Π)和观测序列O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法。这个问题是HMM模型三个问题中复杂度居中的算法。
维特比算法概述
需要注意的是维特比算法并不是HMM所独有的,它是一种通用的解码算法,是基于动态规划的来求序列最短路径的方法。
首先定义两个变量
- 第一个是在时刻t隐藏状态为i所有可能的状态转移路径中的概率最大值,记为:
由的定义可以得到的递推表达式:
- 第二个变量是由第一个拒不状态递推得到。我们定义在时刻t隐藏状态为i的所有单个状态转移路径中概率最大的转移路径中的第t-1个节点的隐藏状态为,其递推表达式为:
有了这两个局部状态,我们就可以从时刻0一直递推到时刻T,然后利用记录的前一个最可能的状态节点回溯,直到找到最优的隐藏状态序列。
维特比算法流程
输入:HMM模型蚕食,观测序列
输出:最有可能的隐藏状态序列
流程:
1)初始化局部状态:
2)进行动态规划递推时刻t的局部状态:
3)计算时刻T最大的,即为最有可能的隐藏状态序列的概率。计算时刻T最大的,即为时刻T最优可能的隐藏状态
4)利用局部状态开始回溯,得到每个时刻的最优状态
最终得到最优路径,即最有可能的隐藏状态序列
以上~
概率图模型笔记(二) 隐马尔科夫模型(Hidden Markov Model)相关推荐
- HMM学习笔记2 隐马尔科夫模型与前向算法
一 序 本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,有大佬做了二次整理,参见:https://blog.csdn.ne ...
- 学习笔记四:HMM(隐马尔科夫模型)
第四章 HMM 1.隐马尔科夫模型的基本概念 引入 例子:天气和冰激凌问题 想象你是2799年的气候学家,正在研究全球变暖的历史 你无法找到任何关于北京2020年夏天的天气记录 但你找到了小米的日记本 ...
- 隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)
隐马尔科夫模型(前向后向算法.鲍姆-韦尔奇算法.维特比算法) 概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概 ...
- 机器学习算法总结(七)——隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)...
概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概率相关关系.根据边的性质不同,可以将概率图模型分为两类:一类是 ...
- 10_隐马尔科夫模型HMM1_统计学习方法
文章目录 一.几个基本概念 1.隐马尔可夫模型 2.马尔科夫链 3.随机过程 4.马尔科夫性质 二.隐马尔科夫模型 1.隐马尔科夫模型的引入 2.隐马尔科夫模型定义 3.隐马尔科夫模型的两个假设 4. ...
- 统计学习方法十:隐马尔科夫模型
一.基本概念 1.马尔科夫假设:当前的状态只与之前的状态有关 2.马尔科夫过程:当前的状态只与前n个状态有关,被称为n阶马尔科夫模型. 3.马尔科夫链:可以理解为带有概率的状态转移链 3.一阶马尔科夫 ...
- 一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现
一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现 1 隐马尔科夫模型 1.1 HMM解决的问题 1.2 HMM模型的定义 1.2.1HMM的两个假设 1.2.2 HMM模型 1.3 HM ...
- 20200918:【广发金融工程】2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究
参考链接:https://www.sohu.com/a/252454782_465470 [广发金融工程]2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究 2018-09-07 11:26 ...
- HMM(隐马尔科夫模型)
HMM模型基础 介绍 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用.当然,随着目前深度学 ...
- 隐马尔科夫模型HMM详解(1)
目录 隐马尔科夫模型基本概念 隐马尔科夫模型的三个基本问题 概率计算 预测算法-Viterbi算法 HMM学习算法参考下篇文章 代码地址:https://gitee.com/liangcd/speec ...
最新文章
- Scapy脚本执行出现警告WARNING解决办法
- 部队人员官兵请假管理系统
- 执行单元测试 报TEST class 有不能识别字符
- 从朴素贝叶斯到贝叶斯网
- java random.nextbytes_Java Random类
- Windows phone UI虚拟化和数据虚拟化(一)
- android投影到创维电视,创维Miracast,手机怎么投屏到创维电视,
- iOS APP测试方法和测试工具 大揭秘
- 安卓UI相关开源项目库汇总
- 淘宝优惠券去哪里领?
- C# Gmap 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
- 百度android离线下载,离线宝app下载-百度离线宝 安卓版v1.0.0.0-PC6安卓网
- 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
- http://bbs.csdn.net/topics/392028373
- 怎样把vc6的MSComm控件接受的数据实时的显示在编辑框,并把数据实时惠存txt文件中
- 【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
- 特征工程 | 信息价值IV与群体稳定性PSI
- RISC-V学习笔记【简介】
- 多屏幕切换到但屏幕,有软件无法在当前屏幕上无法显示
- 网络安全:细致分析与防范策略