阅读大概需要10分钟

跟随小博主,每天进步一丢丢

作者:

Yang Eninala
链接:

https://www.zhihu.com/question/20962240/answer/33438846

昨天通俗易懂的讲解了什么是HMM,没看的点这里。那么今天就来看看,具体理论是什么以及数学上怎么计算的呢?

导读

和HMM模型相关的算法主要分为三类,分别解决三种问题:

1)知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),我想知道每次掷出来的都是哪种骰子隐含状态链)。

这个问题呢,在语音识别领域呢,叫做解码问题。这个问题其实有两种解法,会给出两个不同的答案。每个答案都对,只不过这些答案的意义不一样。第一种解法求最大似然状态路径,说通俗点呢,就是我求一串骰子序列,这串骰子序列产生观测结果的概率最大。第二种解法呢,就不是求一组骰子序列了,而是求每次掷出的骰子分别是某种骰子的概率。比如说我看到结果后,我可以求得第一次掷骰子是D4的概率是0.5,D6的概率是0.3,D8的概率是0.2.在这里我们主要讲第一种解法。

2)还是知道骰子有几种隐含状态数量,每种骰子是什么转换概率,根据掷骰子掷出的结果可见状态链,我想知道掷出这个结果的概率
看似这个问题意义不大,因为你掷出来的结果很多时候都对应了一个比较大的概率。问这个问题的目的呢,其实是检测观察到的结果和已知的模型是否吻合。如果很多次结果都对应了比较小的概率,那么就说明我们已知的模型很有可能是错的,有人偷偷把我们的骰子給换了。

3)知道骰子有几种隐含状态数量,不知道每种骰子是什么转换概率,观测到很多次掷骰子的结果可见状态链,我想反推出每种骰子是什么(转换概率)
这个问题很重要,因为这是最常见的情况。很多时候我们只有可见结果,不知道HMM模型里的参数,我们需要从可见结果估计出这些参数,这是建模的一个必要步骤。

问题阐述完了,下面就开始说解法。(0号问题在上面没有提,只是作为解决上述问题的一个辅助)

0.一个简单问题

其实这个问题实用价值不高。由于对下面较难的问题有帮助,所以先在这里提一下。

知道骰子有几种,每种骰子是什么,每次掷的都是什么骰子,根据掷骰子掷出的结果,求产生这个结果的概率。

解法无非就是概率相乘:

1.看见不可见的,破解骰子序列

这里我说的是第一种解法,解最大似然路径问题。
举例来说,我知道我有三个骰子,六面骰,四面骰,八面骰。我也知道我掷了十次的结果(1 6 3 5 2 7 3 5 2 4),我不知道每次用了那种骰子,我想知道最有可能的骰子序列。

其实最简单而暴力的方法就是穷举所有可能的骰子序列,然后依照第零个问题的解法把每个序列对应的概率算出来。然后我们从里面把对应最大概率的序列挑出来就行了。如果马尔可夫链不长,当然可行。如果长的话,穷举的数量太大,就很难完成了。

另外一种很有名的算法叫做Viterbi algorithm. 要理解这个算法,我们先看几个简单的列子。

首先,如果我们只掷一次骰子:

看到结果为1.对应的最大概率骰子序列就是D4,因为D4产生1的概率是1/4,高于1/6和1/8.

把这个情况拓展,我们掷两次骰子:

结果为1,6.这时问题变得复杂起来,我们要计算三个值,分别是第二个骰子是D6,D4,D8的最大概率。显然,要取到最大概率,第一个骰子必须为D4。这时,第二个骰子取到D6的最大概率是

同样的,我们可以计算第二个骰子是D4或D8时的最大概率。我们发现,第二个骰子取到D6的概率最大。而使这个概率最大时,第一个骰子为D4。所以最大概率骰子序列就是D4 D6。

继续拓展,我们掷三次骰子:

同样,我们计算第三个骰子分别是D6,D4,D8的最大概率。我们再次发现,要取到最大概率,第二个骰子必须为D6。这时,第三个骰子取到D4的最大概率是

同上,我们可以计算第三个骰子是D6或D8时的最大概率。我们发现,第三个骰子取到D4的概率最大。而使这个概率最大时,第二个骰子为D6,第一个骰子为D4。所以最大概率骰子序列就是D4 D6 D4。

写到这里,大家应该看出点规律了。既然掷骰子一二三次可以算,掷多少次都可以以此类推。我们发现,我们要求最大概率骰子序列时要做这么几件事情。首先,不管序列多长,要从序列长度为1算起,算序列长度为1时取到每个骰子的最大概率。然后,逐渐增加长度,每增加一次长度,重新算一遍在这个长度下最后一个位置取到每个骰子的最大概率。因为上一个长度下的取到每个骰子的最大概率都算过了,重新计算的话其实不难。当我们算到最后一位时,就知道最后一位是哪个骰子的概率最大了。然后,我们要把对应这个最大概率的序列从后往前推出来。

2.谁动了我的骰子?

比如说你怀疑自己的六面骰被赌场动过手脚了,有可能被换成另一种六面骰,这种六面骰掷出来是1的概率更大,是1/2,掷出来是2,3,4,5,6的概率是1/10。你怎么办么?答案很简单,算一算正常的三个骰子掷出一段序列的概率,再算一算不正常的六面骰和另外两个正常骰子掷出这段序列的概率。如果前者比后者小,你就要小心了。

比如说掷骰子的结果是:

要算用正常的三个骰子掷出这个结果的概率,其实就是将所有可能情况的概率进行加和计算。同样,简单而暴力的方法就是把穷举所有的骰子序列,还是计算每个骰子序列对应的概率,但是这回,我们不挑最大值了,而是把所有算出来的概率相加,得到的总概率就是我们要求的结果。这个方法依然不能应用于太长的骰子序列(马尔可夫链)。

我们会应用一个和前一个问题类似的解法,只不过前一个问题关心的是概率最大值,这个问题关心的是概率之和。解决这个问题的算法叫做前向算法(forward algorithm

首先,如果我们只掷一次骰子:

看到结果为1.产生这个结果的总概率可以按照如下计算,总概率为0.18:

把这个情况拓展,我们掷两次骰子:

看到结果为1,6.产生这个结果的总概率可以按照如下计算,总概率为0.05:

继续拓展,我们掷三次骰子:

看到结果为1,6,3.产生这个结果的总概率可以按照如下计算,总概率为0.03:

同样的,我们一步一步的算,有多长算多长,再长的马尔可夫链总能算出来的。用同样的方法,也可以算出不正常的六面骰和另外两个正常骰子掷出这段序列的概率,然后我们比较一下这两个概率大小,就能知道你的骰子是不是被人换了。

3.掷一串骰子出来,让我猜猜你是谁

(这个问题以后等讲了EM算法小博主再普及O.O)

一些话

上述算法呢,其实用到了递归,逆向推导,循环这些方法,我只不过用很直白的语言写出来了。如果你们去看专业书籍呢,会发现更加严谨和专业的描述。毕竟,我只做了会其意,要知其形,还是要看书的。

每日托福单词

coastline  n.海岸线

flock  n.群;棉束(=floc)

vt.聚集;成群而行

n.人名(弗洛克)

log   vi.伐木

vt.切;伐木;航行

记录;航海日志;原木

invader  n. 侵略者;侵入物

linen  n. 亚麻布,亚麻线;亚麻制品

adj. 亚麻的;亚麻布制的

n.人名;(利嫩)

推荐阅读:

精彩知识回顾

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

一分钟搞懂的算法之BPE算法

【干货】神经网络SRU

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

如何用简单易懂的例子解释隐马尔可夫模型?(进阶篇)相关推荐

  1. 如何用简单易懂的例子解释隐马尔可夫模型?

    https://www.toutiao.com/a6684542749640753678/ 2019-04-27 19:59:50 隐马尔可夫(HMM)好讲,简单易懂不好讲.不过我想说个更通俗易懂的例 ...

  2. 简单易懂的例子解释隐马尔可夫模型

    作者:Yang Eninala 链接:https://www.zhihu.com/question/20962240/answer/33438846 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...

  3. 【机器学习】用摸鱼学来解释隐马尔可夫模型(HMM)

    尝试用摸鱼学来解释隐马尔可夫模型 假如小明一周工作六天,每天工作状态都不相同,比如有活少.活多.心情好.心情差和双倍工资5种状态,不同工作状态下工作效率也不相同,活少和心情差的时候摸鱼时间多,活多.心 ...

  4. 用摸鱼学来解释隐马尔可夫模型(HMM)

    尝试用摸鱼学来解释隐马尔可夫模型 假如小明一周工作六天,每天工作状态都不相同,比如有活少.活多.心情好.心情差和双倍工资5种状态,不同工作状态下工作效率也不相同,活少和心情差的时候摸鱼时间多,活多.心 ...

  5. 如何用赌场风云解释隐马尔可夫模型(HMM)?

    来源:DataCastle数据城堡 本文约3300字,建议阅读10分钟. 本文以"赌场风云"为背景,带你直观认识隐马尔可夫模型. 一.背景介绍:赌场风云 最近一个赌场的老板发现生意 ...

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

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

  7. 隐马尔科夫模型(HMM)等文章记录

    [link] 如何用简单易懂的例子解释隐马尔可夫模型? - 知乎 --骰子举例举的不错: 一站式解决:隐马尔可夫模型(HMM)全过程推导及实现 - 知乎  --略微有点长,看看能不能看完 马尔科夫模型 ...

  8. [sklearn]决策树、随机森林、隐马尔可夫模型

    决策树 决策树(Decision Tree)是一种用于处理分类和回归问题的无监督学习算法.如下图所示为某女青年在某相亲网站的相亲决策图.这幅图描述的都是一个非常典型的决策树模型. 通过对其相亲决策的分 ...

  9. 隐马尔科夫模型 HMM 与 语音识别 speech recognition (1):名词解释

    0.引言 想在 CSDN 上看一下隐马尔科夫模型,简称HMM(Hidden Markov Model)的例子,找了几篇博文,却发现大部分都是转载的,转载的还没有出处,文中的表述与逻辑也看的人晕头转向, ...

  10. 隐马尔科夫模型——简介

    1.  前言 学习了概率有向图模型和概率无向图模型,回头再看了一下隐马尔可夫模型(hidden Markov model,HMM). HMM属于树状有向概率图模型,主要用于对时序数据的建模,它的潜在变 ...

最新文章

  1. 使用自变分原理改进正则化核回归:通过变分法推导和推广Nadaraya-Watson估计
  2. linux大爱版本Vinux 盲人也能用的OS
  3. Select多路复用
  4. opengl加载显示3D模型ase类型文件
  5. html5 如何设置导航,HTML5导航标签正确用法
  6. 扩展、统计线性化和无迹RTS平滑器
  7. 小鹏汽车4月交付量5147台 同比增长285%
  8. 机器学习框架_一文了解机器学习框架-TensorFlow的原理和用途
  9. 计算机导论答案解析,计算机导论答案解析内容.doc
  10. Codeforces Round 496
  11. Python Gensim Word2Vec
  12. QQ聊天记录恢复、迁移教程(改变默认存储位置、个人文件夹保存位置)
  13. 【小程序项目开发-- 京东商城】uni-app之分类导航区域
  14. CSDN会员服务协议
  15. qcap 教程_给winpe添加explorer教程(续):文件列表
  16. Windows磁盘活动时间100%修复
  17. ReactNative 深层连结
  18. [中国近代史] 第五章测验
  19. 夜光:Java成神之路(二)擅长的语言
  20. 信息安全实验【CA的安装与使用实验】(独立根)

热门文章

  1. ubuntu命令整理中
  2. error: Setup script exited with error: Unable to find vcvarsall.bat
  3. layer 刷新某个页面
  4. CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64
  5. 数据库能查出数据,但mybatis查询出返回的结果是null
  6. JS原型链原理(链表)
  7. JustForFly struts2标签s:generator
  8. 机器学习(2)——K-近邻算法讲解
  9. 软件构造 第三章第三节 抽象数据型(ADT)
  10. 求立方根算法--个人对立方根算法的穷举和优化