上一篇《隐马尔可夫模型介绍》中讲解了马尔可夫假设和隐马尔可夫模型 HMM,并提到了 HMM 中的三个基本问题,但没有展开讨论其求解。本篇就此做出解答。

本文主要参考《HMM 学习最佳范例》。

先回顾一下,上节我们就硬币的例子提出了三个问题:

  1. 给定上述模型,观察到的结果(硬币的正反面)为O={H,T,H}的概率是多少?
  2. 若给定上述的观察结果,那么最可能的状态序列(硬币序号)是什么?
  3. A、B、π未知的情况下,如何根据 O 得到它们?

问题一是个估算问题,P(O|λ),可用向前算法和向后算法解决;

问题二是根据观察序列反向找出最可能的状态序列,是个解码问题,P(O,q|λ),q 是某状态,最常用的是 Viterbi算法;

问题三实际上是个参数估计或求解的问题,或者说是个学习问题,通过训练一步步优化参数,找到使得P(O|λ)最大的那个参数,最常用的是 Baum-Welch算法。


例子

这里,我们提出一个更加恰当的例子:

有一个宅男,不爱出门,也不愿看看窗户外面的世界。但他有个特殊的习惯,通过观察海藻来推测外面的天气情况。天气一共有3种情况 S:(晴天、多云、雨天);海藻一共有4种情况V:(干、稍干、潮湿、湿润)。海藻的情况是宅男直接观察到的,而天气的情况并没有直接观察到,而是隐藏状态,是他推测出来的。其关系如图所示:

另外,我们给出其他三个条件:

天气的状态转移矩阵A:

天气的初始概率向量π:

天气状态和海藻观察情况的混淆矩阵 B:

现在,这个 HMM 已经构建好了,如上一节所说,是一个五元组λ=(S,V,A,B,π)。

我们使用一个隐马尔科夫模型(HMM)对这个例子建模。这个模型包含两组状态集合和三组概率集合:

  • 隐藏状态:一个系统的(真实)状态,可以由一个马尔科夫过程进行描述(例如,天气)。
  • 观察状态:在这个过程中‘可视’的状态(例如,海藻的湿度)。
  • pi向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率(初始概率)。
  • 状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率
  • 混淆矩阵:包含了给定隐马尔科夫模型的某一个特殊的隐藏状态,观察到的某个观察状态的概率。

评估问题:前向算法

给定λ,要计算某个观察序列 O的概率,最不费脑子的办法就是穷举法。

如图,若求序列(dry,damp,soggy)的概率,只要把每种可能的状态序列都算一下概率,最后相加即可。一共有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)

其中每项的求解很简单,利用初始状态向量π、状态转移矩阵 A 和混淆矩阵 B,通过相乘就能得到。

可以看到,这种做法的代价是比较昂贵的,省了脑力就会相应的耗费体力,上帝是公平的。

下面提出一种颇费脑细胞,但代价比较小的算法:前向算法。

首先,定义局部概率这个概念:它是到达上图网格中间某个状态的概率,它是所有到达这个状态的可能路径的概率求和的结果。

例如,对于 t=2时Cloudy的局部概率:

有三个路径,分别计算每条路径的概率,再求和即可。相信聪明的你已经想到,我们正是利用递推的方式来求解最后结果:

首先计算 t=1的情况,然后就算 t=i 的情况(利用 t=i-1),最后得出最末时刻的概率。

其中,j 表示三个天气状态中的某一种;α1(j)表示 t=1时,天气状态为 j 时,得到观察为 k1的概率;等式的右边,表示初始状态下某天气的概率乘以该天气下得到 k1观察的概率。

这个式子中加入了状态转移矩阵的元素,就是 aij,用来递推计算,总的形式和上式一致。

最后所求概率,是一个加和,由于递推结束,不需要状态转移矩阵了。

这里有一个实际的计算过程可供参考。

为什么叫「前向算法」呢?从上面可以看出,这个算法的本质,是根据前t时的情况计算t+1时的情况,是一个逐渐向前推进的过程。

时间有限,今天先写这些,预告:

解码问题:Viterbi 算法

学习问题:Baum-Welch 算法

隐马尔可夫模型三个问题的求解(一)相关推荐

  1. 隐马尔可夫模型(三)——鲍姆-韦尔奇算法(Baum-Welch算法)

    一.问题回顾 模型参数的学习问题.即给定观测序列O={o1,o2,-oT},估计模型λ=(A,B,Π)的参数.这个问题的求解需要用到鲍姆-韦尔奇算法,我会在隐马尔可夫模型系列的第三篇博客中讲解,这个问 ...

  2. 隐马尔可夫模型-三个盒子颜色序列概率计算问题

    HMM案例 假设有3个盒子,每个盒子里都装有红.白两种颜色的球.按照下面的方法抽球,产生一个球的颜色的观测序列:开始,以概率T随机选取1个盒子,从这个盒子里以概率B随机抽出1个球,记录其颜色后,放回; ...

  3. viterbi维特比算法和隐马尔可夫模型(HMM)

    阅读目录 隐马尔可夫模型(HMM) 回到目录 隐马尔可夫模型(HMM) 原文地址:http://www.cnblogs.com/jacklu/p/7753471.html 本文结合了王晓刚老师的ENG ...

  4. 深度学习:隐马尔科夫模型

    概率图 隐马尔科夫模型属于概率图范畴,简单介绍一下概率图模型,概率图模型(probabilistic graphical model)是一类用图的形式表示随机变量之间条件依赖关系的概率模型,是概率论与 ...

  5. 语音识别与隐马尔可夫模型(HMM)

    目录 一.语音识别 二.隐马尔可夫模型 三.前向-后向算法 四.Baum-Welch算法 五.孤立词识别 公元2035年,机器人在人类社会中充当着十分重要的角色,它们可以送快递,为人类提供家政服务,甚 ...

  6. 隐马尔科夫模型matlab工具箱说明

    转自 http://blog.csdn.net/whiteinblue/article/details/40625291 隐马尔可夫模型(HiddenMarkov Model,HMM)是统计模型,它用 ...

  7. 隐马尔科夫模型 (HMM) 算法介绍及代码实现

    Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...

  8. 隐马尔可夫模型(Hidden Markov Model,HMM)是什么?隐马尔可夫模型(Hidden Markov Model,HMM)的三个基本问题又是什么?

    隐马尔可夫模型(Hidden Markov Model,HMM)是什么?隐马尔可夫模型(Hidden Markov Model,HMM)的三个基本问题又是什么? 隐马尔可夫模型 (Hidden Mar ...

  9. 隐马尔可夫模型的三个基本问题

    目录 写在前面的话 隐马尔可夫模型(HMM) 隐马尔可夫模型的三个基本问题 写在前面的话 隐马尔可夫模型(HMM)的三个基本问题,我查阅相关资料有一些自己的理解,如有错误请多指正~ 参考资料: 如何用 ...

  10. 【机器学习】隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现

    [机器学习]隐马尔可夫模型及其三个基本问题(三)模型参数学习算法及python实现 一.一些概率与期望值的计算 二.非监督学习方法(Baum-Welch算法) 三.python实现 隐马尔可夫模型参数 ...

最新文章

  1. Navicat Premium 12全系列
  2. Next.js踩坑入门系列(七) —— 其他相关知识
  3. VTK:可视化之RandomProbe
  4. Asp.Net生命周期系列一
  5. 献给网页开发者的20款Firefox插件
  6. java 三级考试_java三级考试理论题
  7. ubuntu 中怎么安装 jdk 7
  8. jmeter面试题及答案
  9. SWMM与Python的那些事 (一)
  10. 【家具CRM客户关系管理系统案例】数夫助力左右家私CRM客户关系管理系统正式上线
  11. python机械臂仿真_机械臂 python
  12. 新浪开放平台:解决获取access_token抛 21323 异常,以及接口调用
  13. 利用ADB固定Android手机的CPU频率
  14. FCPX注释解说文字标题插件:motionVFX mCallouts Simple 2
  15. LPC1768IAP(详解,有上位机)
  16. 群论(Burnside引理和Polya定理)
  17. mysql 用idb文件恢复数据
  18. 【Linux】工具(3)——gcc/g++
  19. 每天实现一个小特效:百度新闻导航栏特效
  20. 解决EMC、EMI传导干扰的八大方法

热门文章

  1. [转] 做一个让人欣赏的女子
  2. 利用微软AntiXss Library过滤输出字符,防止XSS攻击
  3. java selenium (十一) 操作弹出对话框
  4. spark读取hdfs数据本地性异常
  5. [转]用C++实现插件体系结构
  6. 不用加好友,查看对方校内照片
  7. [网络流24题] 最长k可重线段集问题 (费用流)
  8. bzoj 2555: SubString
  9. inline,block 和 inline-block 的区别
  10. fzu 2204 7 dp