隐马尔可夫(HMM)模型

  隐马尔可夫模型,是一种概率图模型,一种著名的有向图模型,一种判别式模型。主要用于时许数据建模,在语音识别、自然语言处理等领域广泛应用。

  概率图模型分为两类,一类:使用有向无环图表示变量间的依赖关系,称为有向图模型或者贝叶斯网;第二类:使用无向图表示变量间的依赖关系,称为无向图模型或者马尔可夫网。

  判别式模型:考虑条件分布P(Y, R | O),生成式模型:考虑联合分布P(Y, R, O)

HMM三个假设

  • 当前观测值只由当前隐藏状态决定
  • 当前隐藏状态由前一个隐藏状态决定
  • 隐藏状态之间转移概率不随时间改变

随机过程中某一时刻的状态st的概率分布为:

p(st|st-1,st-2,...,s0)=p(st|st-1)

即:t 时刻的状态仅依赖于 t-1 时刻的状态,与其余状态无关,这就是所谓的“马尔可夫链”

在马尔可夫链中,每一圆圈代表相应时刻的状态,有向边代表可能的状态转移,权重表示状态转移的概率

HMM模型结构图

HMM模型五元组

HMM模型可以用五元组(O, S, A, B, π)表示。其中

  • O: {o0, o1, ..., on} 表示观测系列,是系统的外在可观测变量。
  • S: {s0, s1, ..., sn} 表示隐状态序列,是导致系统外在表现变化的内因。
  • A: {aij = p(s| si)} 表示状态转移概率。
  • B: {bij = p(o| si)} 表示输出概率,又称发射概率
  • π: {π0, π1, ..., πm} 表示初始状态概率。

HMM三类问题

根据以上HMM模型五元组表示,我们可以归纳出HMM模型解决的三类主要问题。

一、评估问题

已知:状态转移矩阵 A, 初始状态概率 π,输出矩阵 B,观测序列

求:求该观测序列的可能性

解决算法:向前(forward)算法或者向后(backward)算法

二、解码问题

已知:状态转移矩阵A,初始状态概率 π,输出矩阵B,观测序列

求:最有可能产生该观测序列的隐藏状态序列

解决算法:维特比(Viterbi)算法,一种动态规划算法

三、学习问题

已知:很多观测序列

求:估计HMM模型参数的可能取值

解决算法:鲍姆韦尔奇(Baum-Welch)算法

隐马尔可夫(HMM)模型的更多相关文章

  1. 深入理解隐马尔可夫(HMM)模型

    1.安装依赖包hmmlearn 直接pip install hmmlearn可能会报错(安装这个模块需要使用C环境编译) 可以尝试用 conda install -c omnia hmmlearn安装 ...

  2. 隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 7. 词性标注 7.1 词性标注概述 什么是词性 在语言学上,词性(Par-Of- ...

  3. 隐马尔可夫(HMM)、前/后向算法、Viterbi算法

    HMM的模型  图1 如上图所示,白色那一行描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,蓝紫色那一行是各个状态生成可观测的随机序列 话说,上面也是个贝叶斯网络,而贝叶斯网络中有这么一种,如下 ...

  4. [转] 隐马尔可夫(HMM)、前/后向算法、Viterbi算法 再次总结

    最近工作需要优化LSTM-CRF经典模型中的维特比解码部分,发现对维特比一直是个模糊概念,没有get到本质,搜了一圈,发现一篇好文,mark 博主不让转载,mark个地址吧: https://blog ...

  5. 机器学习(九)隐马尔可夫模型HMM

    1.隐马尔可夫HMM模型 一个隐马尔可夫模型可以表示为\[\lambda=\{A,B,\pi\}\]具体就不说了,比较基本. 2.HMM模型的三个基本问题 1.概率计算问题:给定\(\lambda\) ...

  6. Python实现HMM(隐马尔可夫模型)

    1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别.文本翻译.序列预测.中文分词等多个领域.虽然近年来,由于RNN等深度学习方法的发展,HMM模型逐 ...

  7. 一文搞懂HMM(隐马尔可夫模型)

    什么是熵(Entropy) 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序,意味着具有确定和有 ...

  8. HMM基本原理及其实现(隐马尔科夫模型)

    HMM(隐马尔科夫模型)基本原理及其实现 HMM基本原理 Markov链:如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程.马尔可夫链是时间和状态 ...

  9. 转:隐马尔可夫模型(HMM)攻略

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

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

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

随机推荐

  1. IDEA 导出maven项目所有的依赖包到指定的目录

    问题产生: 需要把一个maven工程调整结构,部署到一个新环境中,需要把依赖的jar包,单独打到一个目录中. 解决方案: 需要两步便可以copy到指定的目录中. 第一步: 找到maven projec ...

  2. Java异常(一)Java异常简介及其框架

    Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...

  3. mybatis之Sql语句构建器

    SQL类: 方法 描述 SELECT(String) SELECT(String...) 开始或插入到 SELECT子句. 可以被多次调用,参数也会添加到 SELECT子句. 参数通常使用逗号分隔的列 ...

  4. java后台向路径发送请求获得相应参数

    从java后台向一路径发送请求,获得响应的参数,put get post ,还有一个返回URL的工具类,方便代码灵活修改 import java.io.BufferedReader; import j ...

  5. Java并发基础知识你知道多少?

    并发 https://blog.csdn.net/justloveyou_/article/details/53672005 并发的三个特性是什么? 什么是指令重排序? 单线程的指令重排序靠什么保证正 ...

  6. Python中操作HTTP请求的urllib模块详解

    urllib 是 Python 标准库中用于网络请求的库.该库有四个模块,分别是urllib.request,urllib.error,urllib.parse,urllib.robotparser. ...

  7. java.lang.VerifyError: com/google/android/gms/measurement/internal/zzw

    android studio  com.google.android.gms:play-services 运行报错:java.lang.VerifyError: com/google/android/ ...

  8. Solr常用操作命令

    1. 新建collection ./solr create_collection -c collection_vip -d /opt/lucidworks-hdpsearch/solr/server/ ...

  9. maven windows环境nexus3.0私服搭建

    下载 nexus3.x.x 需要JDK1.8版本到sonatype官网下载开源免费的OSS版本,OSS即为Open Source Software.下载地址:https://www.sonatype. ...

  10. JQuery this和$(this)的区别

    this其实是一个Html 元素. $this 只是个变量名,加$是为说明其是个jquery对象. 而$(this)是个转换,将this表示的dom对象转为jquery对象,这样就可以使用jquery ...