理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)

参考链接:http://www.zhihu.com/question/20962240

参考链接:http://blog.csdn.net/ppn029012/article/details/8923501

本博文链接:http://www.cnblogs.com/dzyBK/p/5011727.html

1 题设

假设有n个骰子(从1~n编号),每个骰子有m面,每面标有一个数字且不重复,数字取值限制在[1,m]。(1)若有放回地取出一个骰子投,当前取到哪个骰子与前一次取到的是哪个骰子相关。(2)同一个骰子出现不同数字的概率不一定相同(即不是均匀分布),不同骰子出现同一个数字的概率也不一定相同(即完全是n个不同的骰子)。

对于条件(1)可表达为:

式中,pij表示前一次取到第i个骰子时,当前取第j个骰子的概率。

对于条件(2)可表达为:

式中,qij表示第i个骰子出现数字j的概率。

数学里,将骰子(或骰子编号)称为HMM的隐性状态,将骰子的每面(或每面上的数字)称为隐性状态的表现。将矩阵Pnn称为隐性状态的转移概率矩阵,将矩阵Qnm称为隐性状态的表现概率矩阵。HMM可表示为{n,m,Pnm,Qnm}。

那HMM到底有什么作用勒?现在我们进行以下操作。

我们有放回地取k次骰子投,记录下每次投掷后的数字ai。设投掷结束后得到数字序列为A=[a1,a2,…,ak],那么A对应的骰子序列是什么勒?显得有很多种可能,每个数字可选的骰子有n个,所以共有u=k^n种可能的骰子序列,设为{B1,B2,…,Bu}。

注意:因为是有放回地取骰子,所以取到骰子可能重复。记录的数字也有可能重复,且两个重复的数字可能来源于同一个骰子,也可能来源于不同的骰子。

注意:以下将骰子编号与骰子等价,骰子编号序列与骰子序列等价。

2 基本问题

我想知道,A对应的骰子序列为Bi=[b1,b2,..,bk]的可能性有多大?

解法:概率乘法。

3 解码问题

我想知道,A最有可能对应的骰子序列是什么?

等价于:求使A出现的概率最大的骰子序列。

解法一:穷列举法。列举使A出现的u=k^n个可能的骰子序列,然后按照基本问题的解法计算每个骰子序列的使A出现的概率,概率最大者对应的骰子序列为所求。此法只对骰子个数少且骰子面数也少的情况适用。

解法二:最大似然估计。

(1)求使a1出现的概率最大的骰子,易进行,假设为b1

(2)在b1出现的情况下,求使a2出现的概率最大的骰子,易进行,假设为b2

(3)在b2出现的情况下,求使a3出现的概率最大的骰子,易进行,假设为b3

(n)在bn-1出现的情况下,求使an出现的概率最大的骰子,易进行,假设为bn

于是所求骰子序列为B=[b1,b2,..,bn]。

4 预测问题

假如我现在还没有取骰子投,我想知道我能投到A=[a1,a2,…,ak]的可能性有多大?

等价于:设骰子序列Bi(i=1,2,…,u)使A出现的概率为hi,则问题等价于求hi之和。

解法一:穷列举法。与解码问题相似,只不过解码问题是在{hi,hi,…,hu}中找最大者,而估计问题是求所有hi之和。

解法二:前向推导法。

其实就是一个迭代的过程。设出现[a1,a2,…,ai](i<k)的概率为gi,则出现[a1,a2,…,ai,ai+1]的概率为:

sum表示对矩阵Gi内的所有元素求和。

解释:ai+1可能来自n个骰子中的任何一个,所以有qi+1。同时,不管这次取到哪个骰子,前一次取到的骰子也有n种可能,所以有Pnn

5 学习问题

以上问题都必须已知Pnn和Qnm的情况才能进行。而实际应用中,这两个矩阵通常都未知或已知一部分。学习问题就是确定Pnn和Qnm的过程。现在假设我们有多组(越多越好)观测数据(即多组A,可通过反复投掷得到),根据这些观察数据我们就可以(近似地)确定Pnn和Qnm

详见:

6 相关概念

(1)马尔可夫链,马尔可夫随机场(MRF),马尔可夫过程等本质上都是HHM。

(2)我们取了k次骰子,每次取时都对应一个随机变量Xi,代表此次取的骰子(编号),k个随机变量的取值范围构成的集合称为HHM的状态空间,用Ω表示。这里,Ω={1,2,..,n}。

7 应用条件

应用HHM需要满足三个条件:

(1)马尔可夫假设:系统或模型的当前(隐性)状态都只依赖于前一个(隐性)状态:

(2)输出独立性假设:状态的表现只与此状态相关。

(3)不动性假设:状态与具体时间无关

马尔可夫假设更哲学说法是未来决定于现在而不是过去。

8 马尔可夫随机场(MRF)、吉布斯随机场(GRF)及条件随机场(CRF)之间的关系

理论沉淀:隐马尔可夫模型(Hidden Markov Model, HMM)的更多相关文章

  1. [综]隐马尔可夫模型Hidden Markov Model (HMM)

    http://www.zhihu.com/question/20962240 Yang Eninala杜克大学 生物化学博士 线性代数 收录于 编辑推荐 •2216 人赞同 ×××××11月22日已更 ...

  2. 隐马尔科夫模型(hidden Markov model, HMM)

  3. 隐马尔可夫模型(Hidden Markov Model)

    隐马尔可夫模型(Hidden Markov Model) 隐马尔可夫模型(Hidden Markov Model, HMM)是一个重要的机器学习模型.直观地说,它可以解决一类这样的问题:有某样事物存在 ...

  4. 隐马尔科夫模型(hidden Markov Model)

    万事开头难啊,刚开头确实不知道该怎么写才能比较有水平,这篇博客可能会比较长,隐马尔科夫模型将会从以下几个方面进行叙述:1 隐马尔科夫模型的概率计算法  2 隐马尔科夫模型的学习算法 3 隐马尔科夫模型 ...

  5. 从马尔可夫模型(Markov Model)到隐马尔可夫模型(Hidden Markov Model)

    1.参考资料: 博客园 - 刘建平随笔:https://www.cnblogs.com/pinard/p/6945257.html 哔站up主 - 白手起家的百万富翁:https://www.bili ...

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

    链接汇总 http://www.csie.ntnu.edu.tw/~u91029/HiddenMarkovModel.html 演算法笔记 http://read.pudn.com/downloads ...

  7. 隐马尔科夫模型(Hidden Markov Models) 系列之五

    转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ...

  8. 隐马尔科夫模型(Hidden Markov Models) 系列之三

    转自:http://blog.csdn.net/eaglex/article/details/6418219 隐马尔科夫模型(Hidden Markov Models) 定义 隐马尔科夫模型可以用一个 ...

  9. 隐马尔科夫模型(Hidden Markov Models) 系列之二

    转自:http://blog.csdn.net/eaglex/article/details/6385204 隐含模式(Hidden Patterns) 当马尔科夫过程不够强大的时候,我们又该怎么办呢 ...

  10. 隐马尔科夫模型(Hidden Markov Models) 系列之一

    转自:http://blog.csdn.net/eaglex/article/details/6376826 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能 ...

随机推荐

  1. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  2. javascript模块化编程(AMD规范的加载器)

    关于AMD规范可以参考阮一峰的这篇文章Javascript模块化编程(二):AMD规范 简单来说,AMD规范就是异步方式加载模块的一种方式,避免因为模块加载过慢而导致浏览器“假死”. 先贴一个学习地址 ...

  3. 微信支付(0923更新)商户支付密钥key的生成与设置

    微信支付(0923更新)商户支付密钥key的生成与设置 说明:新版微信支付,用户必须授权登录才能支付.需要商家自己设置商户号支付密钥. 设置商户号支付密钥方法如下: 1. 申请通过审核后,打开微信发来 ...

  4. C#.Net中的转义字符

    当声明一个字符串变量时有一些字符是不能以平常的方式包含在变量中的.为了解决这个问题,C#提供了两种不同的方法. 第一种方法是使用’转义序列’.例如,我们想得到如下的字符串 “Hello World H ...

  5. LinkedHashMap和HashMap区别

    import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.uti ...

  6. 纠结的NTP安装过程

    为了部署实验用的openstack环境,其中有NTP的安装环节.在这个过程中,真是折腾了一下午...遇到了一些问题! 由于公司内部网络管理的原因,很多网站没有办法访问,比如公开的时间服务站点,我找了几 ...

  7. 06 Linux下Shell介绍

    一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...

  8. 51nod 1411 矩阵取数问题 V3

    给定一个m行n列的矩阵,你可以从任意位置开始取数,到达任意位置都可以结束,每次可以走到的数是当前这个数上下左右的邻居之一,唯一的限制是每个位置只能经过一次,也就是说你的路径不自交.所经过的数的总作为你 ...

  9. jQuery formValidator手册

    什么是jQuery formValidator? jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人 ...

  10. Access数据库连接方式

    网络连接:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\server\share\folder\myAccessFile.accdb;标准安全:Pro ...