HMM

  • 序列标注问题
  • 隐马尔可夫模型
    • 1.HMM与马尔可夫假设
    • 2.HMM三要素
    • 3.HMM样本生成
    • 4.HMM的训练(参数估计)
      • 1.状态转移概率矩阵的估计
      • 2.初始状态概率向量的估计
      • 3.发射概率矩阵的估计
    • 5.隐马尔可夫模型的预测
      • 搜索状态序列的Viterbi算法
    • 6.HMM应用于中文分词
      • 二阶隐马尔可夫模型
        • 二阶状态转移概率张量的估计
        • 二阶隐马尔可夫模型中的维特比算法
  • 总结

序列标注问题

序列标注问题是给定一个序列x=x1x2…xn,找出序列中每个元素对应的标签y=y1y2…yn的问题。其中y的取值范围称为标注集

中文分词可以当作是一个序列标注问题。对于每个词,可以用标注集为{B,E,M,S}的状态序列标注,B和E表示词首和词尾;S表示单字成词;M表示词中。标注之后,B和E标签区间对应一个词,S字符对应一个单字词。

此外,词性标注和NER问题也是序列标注问题。

隐马尔可夫模型

HMM是描述两个时序序列联合分布p(x,y)的概率模型:x序列是外界可见的,称为观测序列,y序列是外界不可见的,称为状态序列

HMM模型之所以称为,是因为在外界看,状态序列是不可见的,是待求的因变量。从这个角度来看,状态也称为隐状态,观测也称为显状态

1.HMM与马尔可夫假设

HMM
1.它的马尔可夫假设是作用于状态序列上的。当前状态yt仅仅依赖于前一个状态yt-1,连续多个状态构成隐马尔可夫链y
2.任何时刻的观测xt只依赖于该时刻的状态yt,与其他时刻的状态和观测无关。

2.HMM三要素

初始状态概率向量、状态转移概率矩阵、发射概率矩阵,被称为HMM的三元组。

HMM的基本问题有三个:样本生成、参数估计、序列预测。

设状态标注集共有N种取值,系统启动进入的第一个状态y1称为初始状态,决定y1的状态的参数向量叫做初始状态概率向量

存储从状态i到状态j的概率的矩阵叫做状态转移概率矩阵,dims=N * N。
由于xt是由yt决定的,设x共有M种取值,y有N种取值,则存储给定y条件下,求x概率的矩阵,叫做发射概率矩阵,dims=N * M。

3.HMM样本生成

假设生成长度为t的序列,则
1.先使用初始状态概率向量生成第一个隐状态y1,然后生成对应的显状态x1。
2.使用y1和状态转移概率矩阵A生成y2,使用y2和发射状态矩阵B生成x2.
3.重复步骤2,知道生成yt和xt。

4.HMM的训练(参数估计)

HMM的训练过程,其实就是对数据集进行统计,得到三元组参数。

1.状态转移概率矩阵的估计

记样本序列在时刻t处于状态si,时刻t+1转移到状态sj,统计这样的状态转移频次计入矩阵元素Ai,j;然后对Ai这一样进行归一化,就是从状态i到各个状态转移的概率了。

2.初始状态概率向量的估计

就是一种状态转移的特例,不过是从BOS到y1的状态转移,祝需要统计每个sample的第一个state,然后归一化即可。

3.发射概率矩阵的估计

统计在隐状态为si时,对应的所有显状态xj,对应于Bij,然后对Bi进行归一化。

5.隐马尔可夫模型的预测

给定观测序列,求解最可能的状态序列及其概率。

给定观测序列x和一个状态序列y,如何求解两者的联合分布概率?
p(x,y)=p(y)p(x∣y)=p(y1)∏t=2Tp(yt∣yt−1)∏t=1Tp(xt∣yt)p(x,y) = p(y)p(x|y) = p(y_{1})\prod_{t=2}^{T}p(y_{t}|y_{t-1})\prod_{t=1}^{T}p(x_{t}|y_{t})p(x,y)=p(y)p(x∣y)=p(y1​)t=2∏T​p(yt​∣yt−1​)t=1∏T​p(xt​∣yt​)

搜索状态序列的Viterbi算法

上图从左到右时序递增,虚线由初始状态概率向量决定,实线则是转移概率,由于受到观测序列的约束,不同转台发射观测的概率不同,所以每个结点本身也必须计算自己的花费。
在这里插入图片描述

Viterbi算法

6.HMM应用于中文分词

标注集为{B,M,S,E},分别表示词首、词中、单字成词、词尾。

要想进行分词任务,首先要对字符映射。建立一个Vocabulary。将观测序列和状态序列均映射为数字。
Tips:在训练时,我们会建立词表;在预测时,会遇到一些OOV词汇,这时,会统一将其映射为一个固定的id:UNK。

经过最终评测,HMM应用于中文分词F1-score只有80%左右,很低。但是,对于OOV的召回率到了40%+。
IV(In vocabulary)记不住,说明模型比较简单,欠拟合。可以通过增加模型的复杂度解决问题。

二阶隐马尔可夫模型

如果HMM中的每个状态仅依赖于前一个状态,则称为一阶
如果依赖于前两个状态,则称为二阶

在一阶中,y1由初始状态概率矩阵得到;
在二阶中,y1由初始状态概率矩阵得到;y2由一阶HMM的状态转移概率矩阵得到;y3~yt由状态转移张量得到。

二阶状态转移概率张量的估计

当t>=3时,将序列语法片段(yt−2=si,yt−1=sj,yt=sk)的频次按下标(i,j,k)计入张量Ai,j,k(y_{t-2}=s_{i},y_{t-1}=s_{j},y_{t}=s_{k})的频次按下标(i,j,k)计入张量A_{i,j,k}(yt−2​=si​,yt−1​=sj​,yt​=sk​)的频次按下标(i,j,k)计入张量Ai,j,k​

二阶隐马尔可夫模型中的维特比算法

这里要注意这个delta(i,j,k)的定义,是以(si, sj)结尾的路径的最大概率。

最终,阶隐马尔可夫模型略微提升了OOV的召回率,但是分词的结果依旧不太好。

总结

HMM能够在一定程度上解决新词识别的问题;但是中文分词的效果不理想,哪怕是升级到二阶隐马尔可夫模型,F1值依然没有提升。看来朴素的HMM不适合segment,需要更高级的模型。

自然语言处理入门-第4章 隐马尔可夫模型与序列标注相关推荐

  1. 复现经典:《统计学习方法》第 10 章 隐马尔可夫模型

    本文是李航老师的<统计学习方法>[1]一书的代码复现. 作者:黄海广[2] 备注:代码都可以在github[3]中下载. 我将陆续将代码发布在公众号"机器学习初学者", ...

  2. 《统计学习方法》第10章 隐马尔科夫模型 HMM算法 纯Python代码实现 + 前后向算法矩阵形式 + 课后习题答案

    理论知识:<统计学习方法>第10章 隐马尔科夫模型 一.HMM算法矩阵写法 前向算法 P(O∣λ)=πTBo1ABo2ABo3⋯ABoT(1,1,1)TP(O| \lambda) = \p ...

  3. 【统计学习方法】第10章 隐马尔可夫模型

    隐马尔可夫模型(hidden Markov model,HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型. 1.隐马尔可夫模型的基本概念 隐马尔可夫模 ...

  4. 第九章 隐马尔科夫模型HMM

    文章目录 1 隐马尔科夫模型定义 2 概率计算算法 2.1 前向概率 2.2 概率计算 3 学习算法 3.1 EM算法 3.2EM在HMM 4 预测算法 1 隐马尔科夫模型定义 隐马尔科夫模型是一个s ...

  5. biosequence analysis using profile hidden Markov models(使用隐马尔可夫模型分析序列)

    官方网址 下载工具后,按照网站上提供的文件来安装 HMMER is used for searching sequence databases for sequence homologs, and f ...

  6. 自然语言处理之hmm(隐马尔可夫模型)

    自然语言处理 Part 3 hmm(隐马尔可夫模型) 文章目录 自然语言处理 前言 隐马尔科夫模型 一.基本定义 二.两个重要假设 三.主要解决问题 四.维特比算法 1.已知条件 2.初始化局部状态 ...

  7. 马尔可夫模型与隐马尔可夫模型

    http://www.cnblogs.com/baiboy/p/hmm2.html 转自:白宁超 摘要:最早接触马尔可夫模型的定义源于吴军先生<数学之美>一本.直到做自然语言处理时,才真正 ...

  8. 一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!

    1. 马尔可夫网络.马尔可夫模型.马尔可夫过程.贝叶斯网络的区别 相信大家都看过上一节我讲得贝叶斯网络,都明白了概率图模型是怎样构造的,如果现在还没明白,请看我上一节的总结: 贝叶斯网络 这一节我们重 ...

  9. 一次性弄懂马尔可夫模型、隐马尔可夫模型、马尔可夫网络和条件随机场!(词性标注代码实现)

    文章目录 1. 马尔可夫网络.马尔可夫模型.马尔可夫过程.贝叶斯网络的区别 2. 马尔可夫模型 2.1 马尔可夫过程 3. 隐马尔可夫模型(HMM) 3.1 隐马尔可夫三大问题 3.1.1 第一个问题 ...

最新文章

  1. ORACLE SQL: 经典查询练手第二篇
  2. C# 加载 SQLite DLL问题
  3. 怎样把本软件是否注册的标志加在程序里?(注:不想加在数据库里)
  4. JZOJ 5922. 【NOIP2018模拟10.23】sequence
  5. numpy中reshape,multiply函数
  6. mysql生产应用_MySQL备份利器之Xtrabackup--生产应用
  7. 在线ASCII流程图编辑器工具
  8. c语言程序设计第三版何钦铭课后答案_C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案.pdf...
  9. 线性代数学习笔记——矩阵主要公式
  10. web前端vue融云即时通讯上手
  11. 介绍3种JavaScript重定向到另一个网页的方法
  12. Java微信小程序的授权登陆
  13. python获取本机IP
  14. python列表姓氏_Python 批量生成中文姓名(百家姓)
  15. 以教务管理的成绩单查询为例,SSM整合开发过程详解(spring、springmvc、mybatis)
  16. 淘宝天猫京东补流量主要采用的方式是什么呢
  17. 未来15年,还有一波“增量”机会
  18. 【cocos源码学习】cocos2d-x-4.0 Android Demo工程结构的简析
  19. 2020年中国SCADA行业产值、市场规模及竞争格局分析[图]
  20. 如何配置 Cilium 和 BGP 协同工作?

热门文章

  1. Faster RCNN原理篇(一)——Bounding-Box Regression边界框回归的学习和理解
  2. C语言链接mysql数据库实现简易的学生信息增删改查
  3. 社区发现(三):LPA算法(标签传播算法)
  4. 魔鬼R包—SNPassoc的下载与安装
  5. 银河英雄传说 acwing-238 并查集
  6. 【补题】Bin Packing Problem
  7. java申请暨资格审查表_毕业论文答辩申请暨资格审查表刘金花
  8. 2023年批量下载和改名音频专辑(系列3之selenium-wire方式)
  9. 磁盘管理——RAID 0
  10. Camtasia2020视频录制软件的安装及pj顶级屏幕录像视频编辑软件