1. 隐马尔科夫模型的定义

隐马尔科夫模型(hidden Markov model,HMM),描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态(state)生成一个观测(observation)从而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态的序列,称作状态序列(state sequence), 它是模型的标签(target);每个状态生成一个观测而产生的观测的随机序列,称为观测序列(observation sequence),它是模型的特征(features)。序列的每一个位置又可以看作是一个时刻。

2. 隐马尔科夫模型成立的两个基本假设

自然语言处理任务场景中,随机序列(语言序列)的状态多是不可观测的离散型随机变量(如:单词语义、词性等),序列的观测也多是离散型变量(如:文本中的单词);而在语音识别任务中,序列的观测可以是一段连续的单词的声音波形,此时可借助高斯混合模型(Guassian Mixture model,GMM)与隐马尔科夫模型(HMM)联用进行处理。

隐马尔科夫模型(HMM)的成立,默认随机序列满足两个前提假设:即齐次马尔科夫性假设观测独立性假设

设随机序列中,所有可能的状态的集合为 QQQ、可能状态的个数为 NNN、所有可能的观测的集合为 VVV、可能观测值的个数为 MMM,则它们的表达式可表示为如下所示:
Q={q1,q2,⋯,qN}Q = \{q_1, q_2, \cdots, q_N\} Q={q1​,q2​,⋯,qN​}V={v1,v2,⋯,vM}V = \{v_1, v_2, \cdots, v_M\} V={v1​,v2​,⋯,vM​}设 SSS 是长度为T的状态序列,OOO是由 SSS 产生的观测序列,它们的表达式如下所示:
S=(s1,s2,⋯,sT)S = (s_1, s_2, \cdots, s_T) S=(s1​,s2​,⋯,sT​)O=(o1,o2,⋯,oT)O = (o_1, o_2, \cdots, o_T) O=(o1​,o2​,⋯,oT​)

2.1 齐次马尔科夫性假设

齐次马尔科夫性,假设隐藏的马尔科夫链在任意时刻 ttt 的状态只依赖于它前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 ttt 无关:
P(st∣st−1,ot−1,⋯,s1,o1)=P(st∣st−1),t=1,2,⋯,TP(s_t | s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(s_t | s_{t-1}), \ \ \ \ t=1, 2, \cdots, T P(st​∣st−1​,ot−1​,⋯,s1​,o1​)=P(st​∣st−1​),    t=1,2,⋯,T

2.2 观测独立性假设

观测独立性,假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关:
P(ot∣sT,oT,sT−1,oT−1,⋯,st+1,ot+1,st,st−1,ot−1,⋯,s1,o1)=P(ot∣st)P(o_t | s_T, o_T, s_{T-1}, o_{T-1}, \cdots, s_{t+1}, o_{t+1}, \ s_t,\ s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(o_t | s_t) P(ot​∣sT​,oT​,sT−1​,oT−1​,⋯,st+1​,ot+1​, st​, st−1​,ot−1​,⋯,s1​,o1​)=P(ot​∣st​)

3. 隐马尔科夫模型的表达式

隐马尔科夫模型 λ\lambdaλ 由初始状态概率向量 π\piπ、状态转移概率矩阵(transition probability matrix)AAA 和 观测生成概率矩阵(emission probability matrix)BBB 共同决定,其表达式如下所示:
λ=(A,B,π)\lambda = (A, B, \pi) λ=(A,B,π)模型中,AAA 与 π\piπ 确定了隐藏的马尔科夫链,决定如何生成不可观测的状态序列;BBB 确定了如何从状态生成观测,与状态序列一起决定产生何种观测序列。如下图所示:

初始状态概率向量 π\piπ 的表达式可表示为:
π=[πi]N×1=[P(s1=qi)]N×1\pi = [\pi_i]_{N \times 1} = [P(s_1=q_i)]_{N \times 1} π=[πi​]N×1​=[P(s1​=qi​)]N×1​π=[P(s1=q1),P(s1=q2),⋯,P(s1=qN)]T\pi = [P(s_1=q_1), P(s_1=q_2), \cdots, P(s_1=q_N)]^T π=[P(s1​=q1​),P(s1​=q2​),⋯,P(s1​=qN​)]T

状态转移概率矩阵 AAA 的表达式可表示为:
A=[aij]N×N=[P(st+1=qj∣st=qi)]N×N,t=1,2,⋯,T−1A = [a_{ij}]_{N \times N} = [P(s_{t+1} = q_j | s_t = q_i)]_{N \times N}, \ \ \ \ \ \ \ \ t=1, 2, \cdots, T-1 A=[aij​]N×N​=[P(st+1​=qj​∣st​=qi​)]N×N​,        t=1,2,⋯,T−1A=(P(st+1=q1∣st=q1)P(st+1=q2∣st=q1)⋯P(st+1=qN∣st=q1)P(st+1=q1∣st=q2)P(st+1=q2∣st=q2)⋯P(st+1=qN∣st=q2)⋮⋮⋱⋮P(st+1=q1∣st=qN)P(st+1=q2∣st=qN)⋯P(st+1=qN∣st=qN))A = \begin{pmatrix} P(s_{t+1} = q_1 | s_t = q_1)& P(s_{t+1} = q_2 | s_t = q_1)& \cdots & P(s_{t+1} = q_N | s_t = q_1)\\ P(s_{t+1} = q_1 | s_t = q_2)& P(s_{t+1} = q_2 | s_t = q_2)& \cdots& P(s_{t+1} = q_N | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(s_{t+1} = q_1 | s_t = q_N)& P(s_{t+1} = q_2 | s_t = q_N)& \cdots& P(s_{t+1} = q_N | s_t = q_N) \end{pmatrix} A=⎝⎜⎜⎜⎛​P(st+1​=q1​∣st​=q1​)P(st+1​=q1​∣st​=q2​)⋮P(st+1​=q1​∣st​=qN​)​P(st+1​=q2​∣st​=q1​)P(st+1​=q2​∣st​=q2​)⋮P(st+1​=q2​∣st​=qN​)​⋯⋯⋱⋯​P(st+1​=qN​∣st​=q1​)P(st+1​=qN​∣st​=q2​)⋮P(st+1​=qN​∣st​=qN​)​⎠⎟⎟⎟⎞​

观测概率矩阵 BBB 的表达式可表示为:
B=[bi(k)]N×M=[P(ot=vk∣st=qi)]N×M,t=1,2,⋯,TB = [b_i(k)]_{N \times M} = [P(o_t = v_k|s_t = q_i)]_{N \times M}, \ \ \ \ \ \ \ \ \ t=1, 2, \cdots, T B=[bi​(k)]N×M​=[P(ot​=vk​∣st​=qi​)]N×M​,         t=1,2,⋯,TB=(P(ot=v1∣st=q1)P(ot=v2∣st=q1)⋯P(ot=vM∣st=q1)P(ot=v1∣st=q2)P(ot=v2∣st=q2)⋯P(ot=vM∣st=q2)⋮⋮⋱⋮P(ot=v1∣st=qN)P(ot=v2∣st=qN)⋯P(ot=vM∣st=qN))B = \begin{pmatrix} P(o_t = v_1 | s_t = q_1)& P(o_t = v_2 | s_t = q_1)& \cdots & P(o_t = v_M | s_t = q_1)\\ P(o_t = v_1 | s_t = q_2)& P(o_t = v_2 | s_t = q_2)& \cdots& P(o_t = v_M | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(o_t = v_1 | s_t = q_N)& P(o_t = v_2 | s_t = q_N)& \cdots& P(o_t = v_M | s_t = q_N) \end{pmatrix} B=⎝⎜⎜⎜⎛​P(ot​=v1​∣st​=q1​)P(ot​=v1​∣st​=q2​)⋮P(ot​=v1​∣st​=qN​)​P(ot​=v2​∣st​=q1​)P(ot​=v2​∣st​=q2​)⋮P(ot​=v2​∣st​=qN​)​⋯⋯⋱⋯​P(ot​=vM​∣st​=q1​)P(ot​=vM​∣st​=q2​)⋮P(ot​=vM​∣st​=qN​)​⎠⎟⎟⎟⎞​

4. 隐马尔科夫模型解决的三个基本问题

4.1 观测序列概率计算

此问题,给定模型 λ=(A,B,π)\lambda = (A, B, \pi)λ=(A,B,π),求观测序列 O=(o1,o2,⋯,oT)O = (o_1, o_2, \cdots, o_T)O=(o1​,o2​,⋯,oT​) 出现的概率 P(O∣λ)P(O|\lambda)P(O∣λ)。
具体请详见作者文章:隐马尔科夫模型(HMM):计算观测序列的出现概率

4.2 状态序列推论

此问题,给定模型 λ=(A,B,π)\lambda = (A, B, \pi)λ=(A,B,π)和观测序列 O=(o1,o2,⋯,oT)O = (o_1, o_2, \cdots, o_T)O=(o1​,o2​,⋯,oT​),求在此条件下出现概率最大的状态序列 S=(s1,s2,⋯,sT)S = (s_1, s_2, \cdots, s_T)S=(s1​,s2​,⋯,sT​);即,给定模型 λ=(A,B,π)\lambda = (A, B, \pi)λ=(A,B,π)和观测序列 O=(o1,o2,⋯,oT)O = (o_1, o_2, \cdots, o_T)O=(o1​,o2​,⋯,oT​),求令条件概率 P(S∣O)P(S|O)P(S∣O) 最大的状态序列 S=(s1,s2,⋯,sT)S = (s_1, s_2, \cdots, s_T)S=(s1​,s2​,⋯,sT​)。
具体请详见作者文章:隐马尔科夫模型(HMM):状态序列推论

4.3 模型参数估计

此问题,给定观测序列 O=(o1,o2,⋯,oT)O = (o_1, o_2, \cdots, o_T)O=(o1​,o2​,⋯,oT​),求令(给定)观测序列出现概率 P(O∣λ)P(O|\lambda)P(O∣λ) 最大的模型参数 (A,B,π)(A, B, \pi)(A,B,π)。
具体请详见作者文章:

时序模型:隐马尔科夫模型(HMM)相关推荐

  1. 第十九课.隐马尔科夫模型

    目录 隐马尔科夫模型的结构 马尔科夫链与隐马尔科夫模型 实例 HMM的要素 模型的性质 推理问题:HMM的状态解码 隐状态解码问题 最大路径概率与维特比算法 使用维特比算法解码 实例演示 基于Pyth ...

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

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

  3. 【深度】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型

    详解隐马尔科夫模型 作者:David S. Batista 选自:机器之心 本文首先简要介绍朴素贝叶斯,再将其扩展到隐马尔科夫模型.我们不仅会讨论隐马尔科夫模型的基本原理,同时还从朴素贝叶斯的角度讨论 ...

  4. 10_隐马尔科夫模型HMM1_统计学习方法

    文章目录 一.几个基本概念 1.隐马尔可夫模型 2.马尔科夫链 3.随机过程 4.马尔科夫性质 二.隐马尔科夫模型 1.隐马尔科夫模型的引入 2.隐马尔科夫模型定义 3.隐马尔科夫模型的两个假设 4. ...

  5. 【火炉炼AI】机器学习044-创建隐马尔科夫模型

    [火炉炼AI]机器学习044-创建隐马尔科夫模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2 ...

  6. 一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现

    一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现 1 隐马尔科夫模型 1.1 HMM解决的问题 1.2 HMM模型的定义 1.2.1HMM的两个假设 1.2.2 HMM模型 1.3 HM ...

  7. 隐马尔科夫模型(HMM)择时应用的量化策略

    HMM模型 隐马尔科夫模型(HMM)择时应用的量化策略. 仅为研究学习使用, 不作为任何投资策略建议. 文章内容从各处整理汇总而成, 感谢各位大神分享.  具体策略代码均调试通过. 一.从大奖章讲起 ...

  8. 基于隐马尔科夫模型的道路匹配

    随着导航定位.移动互联网等技术的快速发展,手机.车载定位装置等设备都可以进行地理空间数据采集.这些不同类型的地理空间数据往往能反映出某种规律.以时空轨迹为例,这些新形式的泛在地理空间数据,能够反映个体 ...

  9. 隐马尔科夫模型(HMM)笔记(公式+代码)

    文章目录 1. 基本概念 1.1 HMM模型定义 1.2 盒子和球模型 1.3 观测序列生成过程 1.4 HMM模型3个基本问题 2. 概率计算问题 2.1 直接计算法 2.2 前向算法 2.2.1 ...

最新文章

  1. 使用 CrossOver 在 Linux运行 Windows 软件(金测OK)
  2. JQuery 表单验证--jquery validation
  3. GitHub趋势榜第一:用小姐姐自拍,生成二次元萌妹子,神情高度还原,反过来也可以...
  4. 用python画皮卡丘画法-利用Python绘制萌萌哒的皮卡丘
  5. Missing URI template variable 'XXXX' for method parameter of type String
  6. Lync-用户-电话号码-更新
  7. python实现链表的删除_B站上的免费Python课程
  8. 设计资源类网站|日常必逛设计导航
  9. Seata详解(二)
  10. 不用图像文件的圆角解决--跳起按钮制作(html)
  11. 在 MVC 控制器中使用 构造函数时行依赖注入 (IoC)
  12. mybatis驼峰映射
  13. 安卓投屏大师_苹果屏幕镜像怎么使用,AirPlay镜像怎么投屏?
  14. 支付宝——手机网站支付接口研究
  15. Building wheel for opencv-python (PEP 517) 卡住
  16. win7命令更新补丁
  17. spring4开发SpringBatch 样例 -配置文件版
  18. Js实现Flash播放效果[带源码]
  19. 谈task_struct
  20. 以过来人经验分享学习与工作

热门文章

  1. Docker安装mysql,挂载外部配置和数据时启动失败
  2. 中国程序员节,10月24日,你同意吗?
  3. [notice] child pid 13990 exit signalSegmentation fault (11) 解决办法
  4. 使用Serv-U搭建FTP服务器并公网访问
  5. 开启Ubuntu 的TFTP Server服务
  6. ARMv8之arm64架构汇编知识
  7. “当我在荒废时间的时候会有多少人在拼命。”——转自豆瓣
  8. 记录-css实现交融文字效果
  9. 【机器学习】——学习的基本分类:算法模拟的根本出发点!
  10. 暖男须知,你应该转给他看看了