摘自:https://www.zhihu.com/question/20962240/answer/64187492

隐形马尔可夫模型,英文是 Hidden Markov Models,所以以下就简称 HMM。
既是马尔可夫模型,就一定存在马尔可夫链,该马尔可夫链服从马尔可夫性质:即无记忆性。也就是说,这一时刻的状态,受且只受前一时刻的影响,而不受更往前时刻的状态的影响。

在这里我们仍然使用非常简单的天气模型来做说明。

在这个马尔可夫模型中,存在三个状态,Sunny, Rainy, Cloudy,同时图片上标的是各个状态间的转移概率(如果不明白什么是转移概率,那建议先去学习什么是马尔可夫再来看HMM)。

现在我们要说明什么是 HMM。既是隐形,说明这些状态是观测不到的,相应的,我们可以通过其他方式来『猜测』或是『推断』这些状态,这也是 HMM 需要解决的问题之一。

举个例子,我女朋友现在在北京工作,而我还在法国读书。每天下班之后,她会根据天气情况有相应的活动:或是去商场购物,或是去公园散步,或是回家收拾房间。我们有时候会通电话,她会告诉我她这几天做了什么,而闲着没事的我呢,则要通过她的行为猜测这几天对应的天气最有可能是什么样子的。

以上就是一个简单的 HMM,天气状况属于状态序列,而她的行为则属于观测序列。天气状况的转换是一个马尔可夫序列。而根据天气的不同,有相对应的概率产生不同的行为。在这里,为了简化,把天气情况简单归结为晴天和雨天两种情况。雨天,她选择去散步,购物,收拾的概率分别是0.1,0.4,0.5, 而如果是晴天,她选择去散步,购物,收拾的概率分别是0.6,0.3,0.1。而天气的转换情况如下:这一天下雨,则下一天依然下雨的概率是0.7,而转换成晴天的概率是0.3;这一天是晴天,则下一天依然是晴天的概率是0.6,而转换成雨天的概率是0.4. 同时还存在一个初始概率,也就是第一天下雨的概率是0.6, 晴天的概率是0.4.

根据以上的信息,我们得到了 HMM的一些基本要素:初始概率分布 π,状态转移矩阵 A,观测量的概率分布 B,同时有两个状态,三种可能的观测值。

现在,重点是要了解并解决HMM 的三个问题。

问题1,已知整个模型,我女朋友告诉我,连续三天,她下班后做的事情分别是:散步,购物,收拾。那么,根据模型,计算产生这些行为的概率是多少。

问题2,同样知晓这个模型,同样是这三件事,我女朋友要我猜,这三天她下班后北京的天气是怎么样的。这三天怎么样的天气才最有可能让她做这样的事情。

问题3,最复杂的,我女朋友只告诉我这三天她分别做了这三件事,而其他什么信息我都没有。她要我建立一个模型,晴雨转换概率,第一天天气情况的概率分布,根据天气情况她选择做某事的概率分布。(惨绝人寰)

而要解决这些问题,伟大的大师们分别找出了对应的算法。问题一,Forward Algorithm,向前算法,或者 Backward Algo,向后算法。 问题二,Viterbi Algo,维特比算法。问题三,Baum-Welch Algo,鲍姆-韦尔奇算法(中文好绕口)。

作者:henry
链接:https://www.zhihu.com/question/20962240/answer/64187492
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

问题1 的解决2:向前算法。

先计算 t=1时刻,发生『散步』一行为的概率,如果下雨,则为 P(散步,下雨)=P(第一天下雨)X P(散步 | 下雨)=0.6X0.1=0.06;晴天,P(散步,晴天)=0.4X0.6=0.24

t=2 时刻,发生『购物』的概率,当然,这个概率可以从 t=1 时刻计算而来。

如果t=2下雨,则 P(第一天散步,第二天购物, 第二天下雨)= 【P(第一天散步,第一天下雨)X P(第二天下雨 | 第一天下雨)+P(第一天散步,第一天晴天)X P(第二天下雨 | 第一天晴天)】X P(第二天购物 | 第二天下雨)=【0.06X0.7+0.24X0.3】X0.4=0.0552

如果 t=2晴天,则 P(第一天散步,第二天购物,第二天晴天)=0.0486 (同理可得,请自行推理)

如果 t=3,下雨,则 P(第一天散步,第二天购物,第三天收拾,第三天下雨)=【P(第一天散步,第二天购物,第二天下雨)X P(第三天下雨 | 第二天下雨)+ P(第一天散步,第二天购物,第二天天晴)X P(第三天下雨 | 第二天天晴)】X P(第三天收拾 | 第三天下雨)=【0.0552X0.7+0.0486X0.4】X0.5= 0.02904

如果t=3,晴天,则 P(第一天散步,第二天购物,第三天收拾,第三天晴天)= 0.004572

那么 P(第一天散步,第二天购物,第三天收拾),这一概率则是第三天,下雨和晴天两种情况的概率和。0.02904+0.004572=0.033612.

以上例子可以看出,向前算法计算了每个时间点时,每个状态的发生观测序列的概率,看似繁杂,但在 T 变大时,复杂度会大大降低。

问题1的解决3:向后算法

顾名思义,向前算法是在时间 t=1的时候,一步一步往前计算。而相反的,向后算法则是倒退着,从最后一个状态开始,慢慢往后推。

隐形马尔可夫模型——前向算法就是条件概率相关推荐

  1. 隐马尔科夫模型-前向算法

    转载自  隐马尔科夫模型-前向算法 隐马尔科夫模型-前向算法 在该篇文章中讲了隐马尔科夫模型(HMM)一基本模型与三个基本问题 隐马尔科夫模型-基本模型与三个基本问题,这篇文章总结一下隐马尔科夫链(H ...

  2. 隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)

    隐马尔科夫模型(前向后向算法.鲍姆-韦尔奇算法.维特比算法) 概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概 ...

  3. 机器学习算法总结(七)——隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)...

    概率图模型是一类用图来表达变量相关关系的概率模型.它以图为表示工具,最常见的是用一个结点表示一个或一组随机变量,结点之间的变表是变量间的概率相关关系.根据边的性质不同,可以将概率图模型分为两类:一类是 ...

  4. 机器学习算法拾遗:(七)隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)

    1.隐马尔科夫模型HMM 隐马尔科夫模型的图结构如下 从上图中主要有两个信息:一是观测变量xi 仅仅与与之对应的状态变量yi 有关:二是当前的状态变量yi 仅仅与它的前一个状态变量yi-1 有关. 隐 ...

  5. 隐马尔可夫模型之Baum-Welch算法详解

    隐马尔可夫模型之Baum-Welch算法详解 前言 在上篇博文中,我们学习了隐马尔可夫模型的概率计算问题和预测问题,但正当要准备理解学习问题时,发现学习问题中需要EM算法的相关知识,因此,上一周转而学 ...

  6. 隐马尔可夫模型-概率计算算法

    隐马尔可夫模型-概率计算算法 上一篇博客简单介绍了隐马尔科夫模型算法的基本思想,但是没有介绍计算如何区计算它的状态转移概率矩阵,观测概率矩阵和初始状态概率向量如何计算,这节我们就来谈谈. 给出之前讲过 ...

  7. 隐马尔科夫模型之Baum-Wech算法

    隐马尔科夫模型之Baum-Wech算法 https://blog.csdn.net/u014688145/article/details/53046765 Baum-Wech算法之EM算法 https ...

  8. 隐马尔科夫模型C#语言算法实现

    开发工具: Visual Studio v2010 .NET Framework 4 Client Profile 版本历史: V1.1 2011年06月09日 修正UMDHMM在Baum-Welch ...

  9. 隐马尔科夫模型c#语言算法实现,HMM学习最佳范例四:隐马尔科夫模型

    四.隐马尔科夫模型(Hidden Markov Models) 1.定义(Definition of a hidden Markov model) 一个隐马尔科夫模型是一个三元组(pi, A, B). ...

最新文章

  1. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)
  2. GitHub项目功能理解
  3. 安装arm虚拟机_虚拟机Parallels出手:苹果M1的Mac能运行Win 10 还挺顺畅
  4. Excel VBA数组使用方法
  5. 【转】pda的广播扫码uni-app
  6. 偶然翻开旧日记本,发现了好多的情诗!!!!
  7. 【大宝的犀牛】飞利浦RQ370剃须刀建模教程
  8. 前端大作业之淘宝页面设计
  9. 干货!从AI应用的五大要素看,AI产业存在哪些机会?(算力算法)
  10. jq ajax简单使用方法
  11. 计算机连接不上蓝牙鼠标,图文教您win7系统蓝牙鼠标连接不上的处理方法
  12. 汽车APP功能开发特点主要有哪些
  13. 问题解决:nvcc fatal : Unsupported gpu architecture ‘compute_75‘
  14. Xcode 13.4.1如何显示文件拓展名
  15. Better to follow, follow to be better(2019 ICCV)
  16. android邮箱附件传输,Android上发送带附件的邮件
  17. 致自己,时时需要修炼内功
  18. U盘exe病毒解决方法
  19. 异常检测——Anomaly Detection
  20. 利用CSS3实现蓝天白云大海景象

热门文章

  1. RabbitMQ (四)实现延迟消息
  2. matlab mle pci为nan,matlab - 使用mle()估计自定义分布的参数 - 堆栈内存溢出
  3. java datetime int_关于jodatime:Java中DateTime对象之间的小数天数
  4. mysql写放大,canvas实现图片根据滑块放大缩小效果
  5. 自动化测试框架cucumber_基于Cucumber和Testng的WebUI自动化测试方法与流程
  6. Actor-critic强化学习方法应用于CartPole-v1
  7. 关于山东大学(威海)全向组海韵三队提交的 RT-Thread 技术报告中的若干疑点
  8. 第十六界智能车竞赛:这问题怎么越来越多了呢?
  9. 炼一项专业技能c语言,C语言程序设计_安徽新华电脑专修学院
  10. 矩阵用jordan解决initial-value问题_矩阵与数值计算(6)——矩阵幂级数 sin A、cos A...