概念

隐马尔可夫模型描述的是两个时序序列联合分布p(x,y)的概率模型,其中包含了两个序列:

x序列外界可见(外界指的是观测者),称为观测序列(obsevation seuence)

y序列外界不可见,称为状态序列( state sequence)

如观测x为单词,状态y为词性,我们需要根据单词序列去猜测它们的词性。

隐马尔可夫模型之所以称为“隐”, 是因为从外界来看,状态序列(例如词性)隐藏不可见,是待求的因变量。

从这个角度来讲,人们也称状态为隐状态(hidden state ),而称观测为显状态( visible state )

为什么叫“马尔可夫模型”?是因为它满足马尔可夫假设

马尔可夫假设认为:每件事情的发生概率仅与前一件事有关

当有多个满足上述假设的事件形成串联时,就构成了马尔可夫链,在NLP的领域中就称为一个二元语法模型

注:

一元语法模型:
我考上大学只与考试当天的我有关,与前一天模拟考的我没有半毛钱关系 二元语法模型:
我考上大学与我前一天模拟考的我有关

书接上回

我们先做一些约定:

Qhidden为所有隐藏状态种类的合集,有N种

例如我们之前定义了七个标签(https://www.cnblogs.com/DAYceng/p/14923065.html),那么N = 7

Vobs表示可观测的序列的合集(这里由汉字组成)

其中,V为单个的字,M为已知字的个数

有一串自然语言文本O,共T个字,则观测合集可表示为

而观测到的实体对应的实体标记就是隐状态合集I

I与O一一对应并且长度一致

注:常称T为时刻,如上式中共有T个时刻(T个字)

HMM的假设

图片出处:https://github.com/aespresso/a_journey_into_math_of_ml

假设一:

当前第个隐状态(实体标签)只跟前一时刻的隐状态(实体标签)有关,连续多个状态构成隐马尔可夫链I(隐状态合集),与除此之外的其他隐状态无关。

例如,上图中:蓝色的部分指的是只与有关,而与蓝色区域之外的所有内容都无关,而指的是隐状态时刻转向t时刻的概率。

假设二:

观测独立的假设,我们上面说过,HMM模型中是由隐状态序列(实体标记)生成可观测状态(可读文本)的过程,观测独立假设是指在任意时刻观测只依赖于当前时刻的隐状态i,与其他时刻的隐状态无关。

例如上图中:粉红色的部分指的是只与有关,跟粉红色区域之外的所有内容都无关。

至此,我们确定了状态与观测之间的关系。

接下来将介绍HMM用于模拟时序序列生成过程的三个要素(即HMM模型的三个参数):

  • 初始状态概率向量
  • 状态转移概率矩阵
  • 发射概率矩阵

初始状态概率向量

初始隐状态概率通常用π表示(不是圆周率!!

该表达式的含义:

自然语言序列的第一个字的实体标签是的概率,即初始隐状态概率

而初始状态可表示如下:p(y1丨π),给定π,初始状态y1的取值分布就确定了

状态转移概率矩阵

初始状态确定之后,如何转移到初始状态的下一个状态呢?

还记得马尔可夫假设第一条吗?t+1时刻的状态只取决于t时刻状态

我们上面提到了指的是隐状态时刻转向时刻的概率

比如说我们现在实体标签一共有种, 也就是(注意是所有可能的实体标签种类的集合), 也就是

(注意我们实体标签编号从算起)。

假设在时刻任何一种实体标签都可以在时刻转换为任何一种其他类型的实体标签

由排列组合不难得出以下结论:总共可能的转换的路径有, 所以我们可以做一个的矩阵来表示所有可能的隐状态转移概率.

图片出处:https://github.com/aespresso/a_journey_into_math_of_ml

如图所示即为状态转移概率矩阵,设矩阵为矩阵, 则表示矩阵中第i行第j列:

该表达式的含义:

某时刻实体具有一个标签,而下一时刻该标签转换到某标签的概率,即时刻实体标签为, 而在时刻实体标签转换到的概率

发射概率矩阵

回到最初的问题,有了(隐)状态yt之后,如何确定观测xt的概率分布呢?

根据尔可夫假设第二条,任意时刻观测只依赖于当前时刻的隐状态, 也叫做发射概率,描述了隐状态生成观测结果的过程

设我们的字典里有个字,

(注意这里下标从0算起, 所以最后的下标是, 一共有种观测), 则每种实体标签(隐状态)可以生成种不同的汉字(也就是观测), 这一过程可以用一个发射概率矩阵来表示, 它的维度是

图片出处:https://github.com/aespresso/a_journey_into_math_of_ml

设这个矩阵为矩阵, 则表示矩阵中第行第列:

该表达式的含义:

时刻由实体标签(隐状态)生成汉字(观测结果)的概率.

至此,HMM的概念部分基本介绍完毕

【NLP学习其二】什么是隐马尔可夫模型HMM?的更多相关文章

  1. 隐马尔科夫模型HMM学习最佳范例

    谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...

  2. 用hmmlearn学习隐马尔科夫模型HMM

    在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...

  3. HMM:隐马尔可夫模型HMM

    http://blog.csdn.net/pipisorry/article/details/50722178 隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模 ...

  4. 隐马尔科夫模型HMM

    崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首先,本 ...

  5. 基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    文章目录 1. 1. 摘要 2. 2. Map-Matching(MM)问题 3. 3. 隐马尔科夫模型(HMM) 3.1. 3.1. HMM简述 3.2. 3.2. 基于HMM的Map-Matchi ...

  6. 猪猪的机器学习笔记(十七)隐马尔科夫模型HMM

    隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来 ...

  7. 隐马尔科夫模型HMM(一)HMM模型

    隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...

  8. 机器学习之隐马尔科夫模型HMM(六)

    摘要 隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步 ...

  9. 隐马尔可夫模型HMM与维特比Veterbi算法(二)

    隐马尔可夫模型HMM与维特比Veterbi算法(二) 主要内容: 前向算法(Forward Algorithm) 穷举搜索( Exhaustive search for solution) 使用递归降 ...

  10. 隐马尔可夫模型HMM与维特比Veterbi算法(一)

    隐马尔可夫模型HMM与维特比Veterbi算法(一) 主要内容: 1.一个简单的例子 2.生成模式(Generating Patterns) 3.隐藏模式(Hidden Patterns) 4.隐马尔 ...

随机推荐

  1. 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)

    Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...

  2. Nmap浅析(2)——端口发现

    端口发现 ​ 每台网络设备最多有216(65536)个端口,端口的作用是实现"一机多用".操作系统分了65536个端口号,程序在发送的信息中加入端口号,操作系统在接收到信息后按照端 ...

  3. leecode之Implement strStr()

    KMP算法的实现: #include <stdio.h> #include <string.h> #include <stdlib.h> int strStr(ch ...

  4. gdb 调试,当发现程序退出,需要定位程序退出位置时。

    在进入gdb后设置,执行下面语句 handle SIGSEGV nopass handle SIGSEGV nostop 执行程序,触发问题,gdb侧执行c 故障出现时,执行bt,显示堆栈调用.

  5. zabbix监控之用户及用户组

    一.概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户 ...

  6. 自动升压降压充电模块 最高25.2V

    https://item.taobao.com/item.htm?id=39845484484 锂电池 https://item.taobao.com/item.htm?id=531166780681 ...

  7. 技术干货 | 轻松两步完成向 mPaaS 小程序传递启动参数

    前言 在部分场景下,需要向小程序的默认接收页(pages/index/index)传递参数. 本文将以传递 name 和 pwd 参数为例,分别介绍此场景在 Android 小程序和 iOS 小程序中 ...

  8. lua type 获取 类型

    lua中的类型作一小记 print(type("Hello world")) --> string print(type(10.4*3)) --> number pri ...

  9. java面试一日一题:再谈垃圾回收器中的串行、并行、并发

    问题:请讲下java中垃圾回收器的串行.并行.并发 分析:该问题主要考察在垃圾回收过程中垃圾回收线程和用户线程的关系 回答要点: 主要从以下几点去考虑, 1.串行.并行.并发的概念 2.如何考虑串行. ...

  10. Django(45)drf序列化类的使用(Serializer)

    前言 上一篇文章我们讲述了序列化,这篇就带大家一起来实现以下序列化 Serializer 我们使用序列化类Serializer,我们来看下源码结构,这里推荐使用pycharm左边导航栏的Structu ...