HMM隐马尔可夫模型来龙去脉(二)
目录
前言
前言
HMM隐马尔可夫模型,这个名字看起来熟悉,其实很是陌生。它给人一种很神秘高深的感觉,确实,很强大的一个模型,在概率论统计学应该是应用广泛而且很重要的;虽说很高深强大的一个模型,其原理确实我们最基础的理论知识不断推导计算来的。
上一篇《HMM隐马尔可夫模型来龙去脉(一)》,从HMM基础理论开始,我们可以学习得知,其原理来源于概率论基本重要知识,包括了条件概率、贝叶斯公式、概率分布函数...
而这一篇将继续探索隐马尔可夫模型,深入理解模型背后解决的各种问题,力求基本弄懂这个似乎熟悉而又陌生深奥的模型。接下来探索HMM三个经典的基本问题的解决方案,逐步通过问题推导,公式解析,算法实现,有章可循地真正来理解来龙去脉!
预备知识
建议先翻看前一篇《HMM隐马尔可夫模型来龙去脉(一)》逐步详细介绍的内容。
一般的,将HMM简单表示为一个三元组 , π是初始状态的概率分布,A是状态转移概率,B是符号发射概率。
由此观察序列可以通过以下步骤产生:
- 根据初识状态的概率分布
选择一个初识状态
.
- 设t=1.
- 根据状态
的符号发射概率分布
输出
.
- 根据状态转移概率分布
,将此时 t 的状态转移到新的状态
.
- t=t+1,如果 t<T ,重复执行步骤3和4,否则结束算法。
一、估计问题
1、问题推导
估计问题:给定一个观察序列
和模型
,如何快速计算序列O的概率。即
?
我们很直观知道,这其实就是一个条件概率的计算问题。在给定的模型条件下,可以推导以下:
首先根据预备知识可以计算任意状态序列Q下,观察序列O的概率:
而且 ,
另外根据条件概率.
综上公式,求得在模型下,
.
然而,这个直观简单的推导公式,计算时间复杂度达到指数级爆炸! ! ! ! ,所以呢,需要寻找更高效的计算方法来解决指数级时间问题。
由此,引出HMM中的动态规划方法,一般用格架的组织形式描述。格架算法示意图如下:

思想是:对于一个个状态下的HMM,某一时刻结束时,每个格子能够记录HMM所有输出符号的概率,较长子路径概率可以由较短子路径概率计算出来。
2、前向算法/后向算法
第一步,定义一个前向变量,表示在时间 t ,HMM在状态
输出一个序列的概率。
第二步,根据动态规划思想,在时间 t+1 的概率计算为: , 其中表示从状态 i 转移到状态 j 并输出观察符号O的概率。
第三步,根据前向变量,可以计算,就是在所有状态下观察到序列O的概率:
.
前向变量归纳关系图:

前向算法总结:
1、初始化:
2、归纳计算:
3、求和:
复杂度分析:步骤1计算每个前向变量需要考虑N个状态转移,步骤2计算N个前向变量,所以时间复杂度O(N*N),步骤3在时间1~T过程中,计算量为O(T),所以总时间复杂度为. 因此,使用该算法解决在多项式时间内计算问题。
后向算法方法类似,使用动态规划方法计算,后向变量定义为 ,归纳关系图如下:

后向算法总结:
1、初始化:
2、归纳计算:
3、求和:. 同理,时间复杂度也是
。
二、序列问题
1、问题推导
序列问题:给定一个观察序列
和模型
,如何快速选择最优状态序列Q,使之最好地解释观察序列O?
对该问题的正确理解就是,给定观察序列和模型后,使条件概率最大的状态序列,即
.
因此,维比特算法定义了一个维比特变量. 在时间 t 时,HMM沿着某一路径到达状态
,使观察序列O概率最大化。
.
2、维特比算法
有如下递归关系,
,根据这个递归关系,所以可以运用动态规划搜索技术。
另外,为了记录时间 t 时,HMM通过的一条概率最大的路径达到状态 ,算法设置了另外一个变量
来记录前一个时间的状态。
维比特算法如下:

三、参数估计问题
1、问题推导
参数估计问题:给定一个观察序列和模型,使得
最大化。
我们知道,HMM中的状态序列是不可见的,所以这里采用期望最大化法(EM),它可以用于含有隐变量的统计模型的参数最大似然估计。
基本思想:从得到从某一个状态转移到另一个状态的期望次数,由此得到模型
,然后,重新估计模型的参数,执行这个迭代过程,直到参数收敛于最大似然估计值。
2、期望最大化算法(前向后向算法)
这种EM方法的具体实现使用到了前向后向算法(forward-backward algorithm)。
这里需要用到几个变量表示概率:
公式(6-24):在时间 t 位于状态 ,时间 t+1位于状态
的概率
.
公式(6-25):另外,在时间 t 位于状态的概率
的参数估计公式:
公式(6-26):
公式(6-27):
公式(6-28.):
由上述公式,得出前向后向算法:

总结
至此,我们对隐马尔可夫模型(HMM)有了比较深入的理解,从原理上全面认识HMM实现思想,这一篇非常抽象的展示许多公式,虽然对这些公式不能够完全掌握,但是最重要的是,能够理解HMM三个基本问题解决方案的思想方法,这些经典奇妙的算法也是人们在不断探索中发现的并完善。所以,对于初学者来说,思想方法最重要,原理需要理明白,具体应用实现是利用已经封装好的工具。
这一篇将探索HMM三个经典的基本问题的解决方案,逐步通过问题推导,公式解析,算法实现,对于HMM理解不再天马行空般,来龙去脉基本理清!希望能帮助到像我一样初学者的伙伴,欢迎大佬交流指正!
两篇内容深入理解HMM:
我的CSDN博客:https://blog.csdn.net/Charzous/article/details/108311177
我的博客园:https://www.cnblogs.com/chenzhenhong/p/13592058.html
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Charzous/article/details/108311177
HMM隐马尔可夫模型来龙去脉(二)的更多相关文章
- HMM隐马尔可夫模型来龙去脉(一)
目录 隐马尔可夫模型HMM学习导航 一.认识贝叶斯网络 1.概念原理介绍 2.举例解析 二.马尔可夫模型 1.概念原理介绍 2.举例解析 三.隐马尔可夫模型 1.概念原理介绍 2.举例解析 四.隐马尔 ...
- HMM隐马尔可夫模型(词语粘合)
HMM用于自然语言处理(NLP)中文分词,是用来描述一个含有隐含未知参数的马尔可夫过程,其目的是希望通过求解这些隐含的参数来进行实体识别,说简单些也就是起到词语粘合的作用. HMM隐马尔可夫模型包括: ...
- HMM隐马尔科夫模型
这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...
- 机器学习-HMM隐马尔可夫模型-笔记
HMM定义 1)隐马尔科夫模型 (HMM, Hidden Markov Model) 可用标注问题,在语音识别. NLP .生物信息.模式识别等领域被实践证明是有效的算法. 2)HMM 是关于时序的概 ...
- 自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)
隐马尔科夫模型HMM 序言 文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像 ...
- HMM 隐马尔科夫模型
参考如下博客: http://www.52nlp.cn/itenyh%E7%89%88-%E7%94%A8hmm%E5%81%9A%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8 ...
- HMM:隐马尔可夫模型HMM
http://blog.csdn.net/pipisorry/article/details/50722178 隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模 ...
- 详解隐马尔可夫模型(HMM)中的维特比算法
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 4. 隐马尔可夫模型与序列标注 第3章的n元语法模型从词语接续的流畅度出发,为全切 ...
- 隐马尔可夫模型(Hidden Markov Model)
隐马尔可夫模型(Hidden Markov Model) 隐马尔可夫模型(Hidden Markov Model, HMM)是一个重要的机器学习模型.直观地说,它可以解决一类这样的问题:有某样事物存在 ...
随机推荐
- luogu P1973 [NOI2011]NOI 嘉年华 dp
LINK:NOI 嘉年华 一道质量非常高的dp题目. 考虑如何求出第一问 容易想到dp. 按照左端点排序/右端点排序状态还是很难描述. 但是我们知道在时间上肯定是一次选一段 所以就可以直接利用时间点来 ...
- bzoj 4305 数列的GCD
LINK:数列的GCD 题意: 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], ...
- Qt 之 Graphics View Framework 简介
Graphics View Framework 交互式 2D 图形的 Graphics View 框架概述.自 Qt4.2 中引入了 Graphics View,以取代其前身 QCanvas.Grap ...
- 畅购商城(四):Lua、OpenResty、Canal实现广告缓存与同步
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...
- python3 openssl问题(贼有用)
目录 一.问题描述 二.排查过程 三.总结 四.写在最后 一.问题描述 在python3 执行任何的request请求时,都会报以下的错误,纵观全网,以下基本尝试过了,对于我这个是无效的,后来不知道怎 ...
- 符合AUTOSAR(AP&CP)的嵌入式系统和软件设计工具
AUTOSAR Builder功能介绍 AUTOSAR Builder 是达索旗下一种基于 Eclipse 的开放性.可扩展工具套件,用于设计和开发符合 AUTOSAR 标准的系统和软件.最新版本20 ...
- 机器学习 | 详解GBDT梯度提升树原理,看完再也不怕面试了
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第30篇文章,我们今天来聊一个机器学习时代可以说是最厉害的模型--GBDT. 虽然文无第一武无第二,在机器学习领域并没有 ...
- JS笔记 数据类型分类以及转换
数据类型分类 原始类型(基本类型.值类型) 1.number 类型 数字类型,表示32(4字节)的整数以及64位(8字节)的浮点数 整数 bit:位 8bit=1byte 1024byte=1kb千字 ...
- 【模式识别与机器学习】——PCA主成分分析
基本思想 其基本思想就是设法提取数据的主成分(或者说是主要信息),然后摒弃冗余信息(或次要信息),从而达到压缩的目的.本文将从更深的层次上讨论PCA的原理,以及Kernel化的PCA. 引子 首先我们 ...
- OGG复制进程延迟高,优化方法一(使用索引)
日常运维过程中,可能发现OGG同步进程延迟很高: 本篇介绍其中的一种方式. OGG复制进程,或者说同步进程及通过解析ogg trail文件,输出dml语句,在目标库执行dml操作,那么延迟高可能性其一 ...