一 序

本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,有大佬做了二次整理,参见:https://blog.csdn.net/itplus/article/details/15335877

本篇主要是整理隐马尔科夫模型的三个问题及前向算法。

二 三个问题

2.1隐马尔科夫模型(Hidden Markov Models)

一个隐马尔科夫模型是一个三元组(π, A, B)。

在状态转移矩阵及混淆矩阵中的每一个概率都是时间无关的——也就是说,当系统演化时这些矩阵并不随时间改变。实际上,这是马尔科夫模型关于真实世界最不现实的一个假设。

2.2 应用

一旦一个系统可以作为HMM被描述,就可以用来解决三个基本问题。其中前两个是模式识别的问题:给定HMM求一个观察序列的概率(评估);搜索最有可能生成一个观察序列的隐藏状态序列(解码)。第三个问题是给定观察序列生成一个HMM(学习)。

问题1计算概率(评估)

 考虑这样的问题,我们有一些描述不同系统的隐马尔科夫模型(也就是一些( π,A,B)三元组的集合)及一个观察序列。我们想知道哪一个HMM最有可能产生了这个给定的观察序列。例如,对于海藻来说,我们也许会有一个“夏季”模型和一个“冬季”模型,因为不同季节之间的情况是不同的——我们也许想根据海藻湿度的观察序列来确定当前的季节。
  我们使用前向算法(forward algorithm)来计算给定隐马尔科夫模型(HMM)后的一个观察序列的概率,并因此选择最合适的隐马尔科夫模型(HMM)。

总结:第一个问题是求,给定模型的情况下(给定的HMM模型参数已知),求某种观测序列出现的概率

问题2  预测问题(解码)

给定观察序列搜索最可能的隐藏状态序列。

另一个相关问题,也是最感兴趣的一个,就是搜索生成输出序列的隐藏状态序列。在许多情况下我们对于模型中的隐藏状态更感兴趣,因为它们代表了一些更有价值的东西,而这些东西通常不能直接观察到。
  考虑海藻和天气这个例子,一个盲人隐士只能感觉到海藻的状态,但是他更想知道天气的情况,天气状态在这里就是隐藏状态。
  我们使用Viterbi 算法(Viterbi algorithm)确定(搜索)已知观察序列及HMM下最可能的隐藏状态序列。

我们知道了观测序列,也知道了HMM的参数,让我们求出造成这个观测序列最有可能对应的状态序列。

问题 3  学习

   根据观察序列生成隐马尔科夫模型。
  第三个问题,也是与HMM相关的问题中最难的,根据一个观察序列(来自于已知的集合),以及与其有关的一个隐藏状态集,估计一个最合适的隐马尔科夫模型(HMM),也就是求HMM的参数(π, A, B)。

 当矩阵A和B不能够直接被(估计)测量时,前向-后向算法(forward-backward algorithm)被用来进行学习(参数估计),这也是实际应用中常见的情况。

由一个向量和两个矩阵(pi,A,B)描述的隐马尔科夫模型对于实际系统有着巨大的价值,虽然经常只是一种近似,但它们却是经得起分析的.

三 前向算法

3.1 穷举搜索(暴力法)

给定隐马尔科夫模型,也就是在模型参数(π, A, B)已知的情况下,我们想找到观察序列的概率。还是考虑天气这个例子,我们有一个用来描述天气及与它密切相关的海藻湿度状态的隐马尔科夫模型(HMM),另外我们还有一个海藻的湿度状态观察序列。假设连续3天海藻湿度的观察结果是(干燥、湿润、湿透)——而这三天每一天都可能是晴天、多云或下雨,对于观察序列以及隐藏的状态,可以将其视为网格:

网格中的每一列都显示了可能的的天气状态,并且每一列中的每个状态都与相邻列中的每一个状态相连。而其状态间的转移都由状态转移矩阵提供一个概率。在每一列下面都是某个时间点上的观察状态,给定任一个隐藏状态所得到的观察状态的概率由混淆矩阵提供。

可以看出,一种计算观察序列概率的方法是找到每一个可能的隐藏状态,并且将这些隐藏状态下的观察序列概率相加。对于上面那个(天气)例子,将有3^3 = 27种不同的天气序列可能性,因此,观察序列的概率是:

Pr(dry,damp,soggy | HMM) = Pr(dry,damp,soggy | sunny,sunny,sunny) + Pr(dry,damp,soggy | sunny,sunny ,cloudy) + Pr(dry,damp,soggy | sunny,sunny ,rainy) + . . . . Pr(dry,damp,soggy | rainy,rainy ,rainy)

看着简单,其实这个算法在现实中是不可行的。上面的例子为了讲解容易,状态值和观察值都很小,但是实际中的问题,隐状态的个数是非常大的。按照状态值是N个,观察值是K个。总共观察长度为T,我们的路径总个数就是N^T,(时间复杂度是是

HMM学习笔记2 隐马尔科夫模型与前向算法相关推荐

  1. 学习笔记:隐马尔科夫

    马尔科夫过程 马尔科夫模型 aij从i状态转移到j状态的概率 n元条件概率计算量会很大,解决办法:一阶马尔科夫模型降低事件之间的关联度 定义:马尔科夫模型可以用一个三元组(π,A,B)来定义: 1. ...

  2. 强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础

    隐马尔科夫模型HMM 隐马尔科夫模型算是比较经典的机器学习模型了,在自然语言处理.语言识别.模型识别等这些领域也得到了广泛的应用.在深度学习的崛起,尤其是RNN.LSTM等神经网络序列模型的火热,HM ...

  3. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...

    前言 隐马尔可夫模型(HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 马尔可夫模型理论与分析 参考<统计学习方法>这本书,书上已经讲得 ...

  4. 隐马尔科夫模型和维特比算法

    隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程.其难点是从可观察的参数中确定该过程的隐含参数.然后利用这些参数来作进一步的分析 ...

  5. 【一起入门MachineLearning】中科院机器学习第*课-概率图模型:隐马尔可夫模型(前向算法+维特比算法+条件随机场)

    专栏介绍:本栏目为 "2021秋季中国科学院大学周晓飞老师的机器学习" 课程记录,不仅仅是课程笔记噢- 如果感兴趣的话,就和我一起入门Machine Learning吧

  6. 学习笔记四:HMM(隐马尔科夫模型)

    第四章 HMM 1.隐马尔科夫模型的基本概念 引入 例子:天气和冰激凌问题 想象你是2799年的气候学家,正在研究全球变暖的历史 你无法找到任何关于北京2020年夏天的天气记录 但你找到了小米的日记本 ...

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

    隐马尔科夫模型,Hidden Marcov Model,是可用于标注问题的统计学习模型,描述由隐藏的马尔科夫链随机生成观测序列的过程,属于生成模型,是一种比较重要的机器学习方法,在语音识别等领域有重要 ...

  8. NLP入门概览(4)—— 序列标注a:隐马尔科夫模型(HMM)

      在这一部分中,我们将要介绍NLP领域最常见的一类问题:序列标注. 1. 序列标注   在NLP领域中,有许多的任务可以转化为"将输入的语言序列转化为标注序列"来解决问题.比如, ...

  9. 隐马尔科夫模型HMM之前后向算法Python代码实现,包括2个优化版本

    ☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 (3)HMM学习问题:Baum-Welch算法 (4)  HMM预测问题:维特比算法 本篇算法原理分析 ...

最新文章

  1. 工作后,拉开你和同龄人差距的,不是出身,不是努力,而是……
  2. 如何比较PixelCNN与DCGAN两种Image generation方法?
  3. 分享Kali Linux 2016.2第48周虚拟机
  4. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第2章-带时延位置的离散多智能体系统的一致性
  5. spring-声明式事务管理
  6. 关于scriptManager与JS代码兼容问题
  7. oracle的删除的row如何,Oracle 删除大表中部分数据
  8. mybatis mysql 调用存储过程 多个返回值_MyBatis的SQL执行流程不清楚?很简单!
  9. 关于 2020 年的前端趋势预测
  10. 水土不服?谈一谈机器学习在金融风控实践经验
  11. Python爬虫实战01:Requests+正则表达式爬取猫眼电影
  12. puppet部署三 配置puppet
  13. JSP程序设计实训(五)——JSP基本语法(一)
  14. 常用数字信号处理方法在matlab上的实现(目录和先导)
  15. 用C/C++打造数字时钟程序(附代码),竟然只要100行代码!
  16. [cogs2482][二分答案]Franky的胡子
  17. [计算机网络] 实验 5 电子邮件
  18. 女神找我帮忙--图片转成手绘,该不该答应?
  19. termios的例子
  20. OrientDB 图状数据库示例

热门文章

  1. 商场三十六计——第33计 “苦肉计”
  2. okhttp原理详解
  3. python模拟登录bwapp(不带图形验证码)
  4. 大数据分析:王宝强离婚事件到底有多火热!
  5. ubuntu下tftp server的安装
  6. 兴业银行电子账单读取
  7. matlab 结构体内容引用自非结构体数组对象
  8. 【加油站的良好出发点问题】
  9. IDEA Kafka:The configuration ‘xxx‘ was supplied but isn‘t a known config
  10. bWAPP中SQL注入思路