什么是HMM

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。

常见的例子

抛硬币
假设小明有两个硬币A、B,这两个硬币的正反面的概率是不一样的,我们假设A硬币正面的概率为0.6,B硬币正面的概率为0.7,那么如果我们在未来6次的硬币抛掷过程中,得到如下的结果:

硬币(Z) A B B A B A
结果(x)

这种时候就会存在三个问题:

  1. 第一次即初始投的硬币是A还是B?
  2. 若知道前一次投的硬币的种类,那后一次硬币是A还是B?
  3. 每次投掷硬币时,结果是正面还是反面?
    针对第一个问题,那么就有一个初始的概率P(π),它决定了第一个位置是A还是B,然后假设确定了初始的位置为A,那么我们就需要知道第一次投掷硬币的结果是正还是反,这就是一个生成概率P(A),然后呢我们还得知道第二次硬币是A还是B,假设是B,那么就有一个P(B|A)的转移概率。这就是HMM模型的三个参数。

针对我们上面的投掷硬币的问题,HMM模型的三个参数为(π,A,B)

其中π代表第一个位置P(A)=0.3,P(B)=0.7
A代表转移矩阵P(A|A)=0.3, P(B|A)=0.5, P(A|B)=0.4, P(B|B)=0.6
B代表生成矩阵P(正|A)=0.4,P(反|A)=0.6,P(正|B)=0.2,P(反|B)=0.8
那么下面针对HMM的三大经典问题来做出说明:

1. 概率问题

假设前提是我们知道了HMM模型的三个参数λ=(π, A, B),那么需要计算得到上图所示的观测值x=(正-反-正-正-反-正)的概率。

暴力解法

而这个时候,我们有一个量是不知道的,即状态序列Z,如果这时候要求x的概率的,那么最暴力的解法就是直接将能产生x的所有的情况列举出来,然后计算每种情况下的概率,然后求和即可。具体的情况在此就不一一列举了。

F B算法

  F/B算法分为Forward和Backward算法,其中通过p(Zk|x)=p(Zk, X1:k)*p(Xk+1|Zk)可以算出概率

2. 预测问题

假设前提是我们知道了HMM模型的三个参数λ=(π, A, B),和观测值x=(正-反-正-正-反-正),需要求解最可能的状态Z。
这种时候我们需要使用Viterbi算法。
通俗一点来讲,Viterbi算法就是将整个求解最好的Z序列分解成一个个的小任务,如先求解Zi。

硬币(Z) z1 z2 z3 z4 z5 z6
结果(x)

拿Z6来看,x=(正-反-正-正-反-正),Z=(z1,z2,z3,z4,z5,z6),那么
p(Z6)=p(Z5) * p(z6|z5) * p(正|z6) 那么:
p(Z5)=p(Z4) * p(z5|z4) * p(反|z5)
p(Z4)=p(Z3) * p(z4|z3) * p(正|z4)
p(Z3)=p(Z2) * p(z3|z2) * p(正|z3)
p(Z2)=p(Z1) * p(z2|z1) * p(反|z2)
p(Z1)=p(正|z1)* π

然后我们反过来看,首先p(Z1)=p(正|z1) * π, 那么
p(Z1-A)=p(正|A)p(A)=0.40.3=0.12或者
p(Z1-B)=p(正|B)p(B)=0.20.7=0.14
然后p(Z2)=p(Z1) * p(z2|z1) * p(反|z2) ,那么
p(Z2-A-1)=p(Z1-A)*p(A|A)*p(反|A)=0.0216
p(Z2-A-2)=p(Z1-B)*p(A|B)*p(反|A)=0.0336
由于0.0336>0.0216,那么可将0.0336这条路径记录下来,舍弃0.0216这条
这时候
p(Z2-A)=p(Z1-B)*p(A|B)*p(反|A)=0.0336
同样可得
p(Z2-B)=p(Z1-A)*p(B|A)*p(反|B)=p(Z1-B)*p(B|B)*p(反|B)=0.0672
(这里到B的两条路径概率一样,可任取一条)
…………
然后一直算下次,算到Z6
过程中把每次概率大的那条路径存储下来,这样就可以减少算法的复杂。

3.学习问题

已知观测序列X={x1,x2,…,xT},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(x|λ)最大。

关于HMM(隐马尔可夫模型)相关推荐

  1. NLP基础 : HMM 隐马尔可夫模型

    Hidden Markov Model, HMM 隐马尔可夫模型,是一种描述隐性变量(状态)和显性变量(观测状态)之间关系的模型.该模型遵循两个假设,隐性状态i只取决于前一个隐性状态i-1,而与其他先 ...

  2. 李航《统计学习方法》之HMM隐马尔可夫模型

    李航<统计学习方法>之HMM隐马尔可夫模型 文章目录 前言 一.基本概念 1.语言描述: 2.符号表示 3.基本假设 4.例子 5.隐马尔可夫模型解决的三个基本问题 二.概率计算算法 1. ...

  3. HMM隐马尔科夫模型(附维特比代码)

    背景知识:马尔科夫模型 1 马尔科夫的局限性 在一些情况下,我们并不能直接得到观测的结果,比如在天气系统中,我们不能直接得到天气的状态,但是我们有一堆蚂蚁,可以从蚂蚁的行为状态找到天气变化的关系规律. ...

  4. 第五篇:HMM 隐马尔可夫模型

    目录 概览 训练 预测(维特比算法) 概览 HMM本身也是用于序列标注,为什么需要HMM? POS 标记,我们按照一句话为一个类别,也就是将该句子中的每个词的对应的类别,连起来作为一个类别,比如NN_ ...

  5. 【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码

    本文摘要 · 理论来源:[统计自然语言处理]第七章 自动分词:[统计学习方法]第十章 隐马尔可夫模型 · 代码目的:手写HMM进行中文分词 作者:CSDN 征途黯然. 一.数据集   数据集的形式如下 ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法24:HMM隐马尔可夫模型

    Python机器学习算法实现 Author:louwill Machine Learning Lab HMM(Hidden Markov Model)也就是隐马尔可夫模型,是一种由隐藏的马尔可夫链随机 ...

  7. HMM隐马尔科夫模型浅析

    http://www.zhihu.com/question/20962240 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Yang Eninala 链接:http:/ ...

  8. HMM隐马尔可夫模型(HMM)攻略

    隐马尔可夫模型 (Hidden Markov Model,HMM) 最初由 L. E. Baum 和其它一些学者发表在一系列的统计学论文中,随后在语言识别,自然语言处理以及生物信息等领域体现了很大的价 ...

  9. 机器学习——HMM(隐马尔可夫模型的基本概念)(一)

    [开始之前]由于隐马尔可夫模型属于机器学习中比较难也比较重要的知识,所以此算法笔者将分段讲解,本文主要讲的是隐马尔可夫模型的定义以及相关例子,在后续的文章中会讲到概率计算方法如前向算法.后向算法.学习 ...

  10. HMM隐马尔可夫模型进行中文文本分词

    文章目录 一.HMM简述 1.引入 2.隐马尔科夫模型 (1)定义(Definition of a hidden Markov model) (2)应用 3.前向算法(了解) 4. 维特比算法 5.前 ...

最新文章

  1. 我帮公司财务写了个“群发工资条”的Python脚本
  2. python中两个矩阵之间的点乘_Python基础--数据分析库--Numpy
  3. Qt中用ODBC连接excel中文乱码问题
  4. Dubbo注册中心宕机
  5. 【数据结构与算法】之深入解析“我的日程安排表I”的求解思路与算法示例
  6. android java json与实体互相转换工具
  7. Git 常用命令和教程
  8. zoj 1088 System Overload
  9. c语言检查密码是否出现回文,C程序检查数字是否为回文
  10. seleniumphantomJs相关
  11. 30天python从入门到精通_2019最新《Python从入门到精通之30天快速学Python教程 》
  12. Elasticsearch--进阶-Query DSL基本使用和match_all---全文检索引擎ElasticSearch工作笔记010
  13. HTML中的几种空格
  14. Realtek网卡如何识别具体型号是8111B/8111C/8111D还是8111E
  15. 10-Redis 笔记
  16. 1500个javascript特效
  17. 逻辑斯谛回归(logistic regression)
  18. Pyton学习—循环语句
  19. Tensorflow移动端之如何将自己训练的MNIST模型加载到Android手机上
  20. webdav同步书签-floccus

热门文章

  1. app 自动化 打开app (二)
  2. Redis常用命令入门4:集合类型
  3. adb ps shell 查看进程_adb中ps命令的详解
  4. 国仁网络:揭秘成为“网红”背后的艰辛道路,达人不签约MCN的10个理由。
  5. JAVA 网络编程中TCP和UDP
  6. Matlab中 intlinprog函数用法简介
  7. IO流 | IO流的应用举例
  8. 2023年软考报哪门比较好?
  9. android图形框架之surfaceflinger分析(一)
  10. 软件兼容性与软件兼容性测试