『NLP学习笔记』隐马尔可夫模型和维特比算法

隐马尔可夫模型和维特比算法

文章目录

  • 一. 什么是隐马尔可夫模型(HMM)
    • 1.1. 命名实体识别问题概述
    • 1.2. 隐马尔可夫模型
  • 二. HMM模型的参数
    • 2.1. HMM的转移概率(transition probabilities)
    • 2.2. HMM的发射概率(emission probabilities)
    • 2.3. HMM的初始隐状态概率
  • 三. 用HMM解决序列标注问题,HMM的学习算法
    • 3.1. 生成模型与判别模型的区别
    • 3.2. HMM参数学习(监督学习)
  • 四. HMM代码实践
  • 五. 维特比算法(Viterbi Algorithm/HMM的预测算法)
    • 5.1. 维特比算法介绍
    • 5.2. 计算过程
    • 5.3. 回溯计算
    • 5.4. 结论
  • 六. 参考文献

一. 什么是隐马尔可夫模型(HMM)

1.1. 命名实体识别问题概述

  • 命名实体识别(Named Entity Recognition,NER),是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等等,并把我们需要识别的词在文本序列中标注出来。
  • 命名实体识别是信息抽取、问答系统、句法分析、机器翻译等NLP上层应用的重要基础工具,在自然语言处理技术走向实用化的领域中占有重要地位。
  • 信息抽取(IE)=命名实体识别+关系抽取,最终将非结构化文本转化为结构化知识。
『NLP学习笔记』隐马尔可夫模型和维特比算法_第1张图片
  • 这里说一下序列标注任务的标签体系:
『NLP学习笔记』隐马尔可夫模型和维特比算法_第2张图片
  • 在我们今天使用的NER数据集中,一共有7个标签: 采用的标注体系是BIO
  1. “B-ORG”:组织或公司(organization)
  2. “I-ORG”:组织或公司
  3. “B-PER":人名(person)
  4. “I-PER”:人名
  5. “O”:其他非实体(other)
  6. “B-LOC": 地名(location)
  7. “I-LOC”:地名
  • 文本中以每个字为单位,每个字必须分别对应上面的任一标签。但为什么上面标签除了"O"(其他)之外都是一个实体类型对应两个标签呢?请小伙伴们仔细看标签前面有分为"B"和"I"的不同,“B"表示begin,实体开头的那个字使用"B"对应的标签来标注,在实体中间或结尾的部分,用"I"来标注
  • 比如说"自贸区"对应的标注是:自(B-LOC)贸(I-LOC)区(I-LOC),这三个字都对应一个"地名"的标签,但是第一个字属于实体开头的字,所以使用"B"开头的标签,后面两个字的标签都是"I"开头。
  • 注意:"B"后面是不可以跟其他类型的”的,例如:自(B-PER)贸(I-LOC)区(I-LOC)就是于错误的标注,因为实体开头"B"标注成了人名,即使实体中间标注成了地名,这个实体的标注方法也是非法的。上面的错误原因就是我们 要从语言模型(例如BERT, LSTM)后面再加上概率图模型,例如条件随机场(CRF),用来约束模型的输出,防止出现不合规的标注输出。

1.2. 隐马尔可夫模型

  • 隐马尔可夫模型(Hidden Markov Model, HMM),是一种概率图模型,属于生成模型笼统的说,我们上面说的"BIO"的实体标签,就是一个 不可观测的隐状态,而HMM模型描述的就是由这些 隐状态序列(实体标记) 生成 可观测结果(可读文本) 的过程。简而言之隐马尔可夫模型描述的是:隐藏的状态生成观测的结果
  • 在我们今天的问题当中,隐状态序列是实体标记序列,而可观测序列是我们可读的原始语料文本序列。例如:
『NLP学习笔记』隐马尔可夫模型和维特比算法_第3张图片
  • HMM模型有两个基本假设(非常重要):
  • t t t个隐状态(实体标签)只跟前一时刻的 t − 1 t-1 t1隐状态(实体标签)有关,与除此之外的其他隐状态无关。
    例如下图中:蓝色的部分指的是 i t i_t it只与 i t − 1 i_{t-1} it1有关,而与蓝色区域之外的所有内容都无关,而 P ( i t ∣ i t − 1 ) P(i_t|i_{t-1}) P(itit1)指的是隐状态 i i i t − 1 t-1 t1时刻转向 t t t时刻的概率,具体转换方式下面会细讲。
  • ②观测独立的假设,我们上面说过,HMM模型中是由 隐状态序列(实体标记)生成可观测结果(可读文本)的过程。
    观测独立假设是指在任意时刻观测 o t o_t ot只依赖于当前时刻的隐状态 i t i_t it,与其他时刻的隐状态无关。
『NLP学习笔记』隐马尔可夫模型和维特比算法_第4张图片

二. HMM模型的参数

2.1. HMM的转移概率(transition probabilities)

  • HMM的转移概率(transition probabilities)介绍如下: 下图中是从 t t t时刻转向 t + 1 t+1 t+1时刻。
  • 注意:矩阵中的每一行的概率之和为1,如第1行表示 q 0 q_0 q0 隐状态转移到其它所有隐状态的概率是多少,如果按行求和结果为1,因为概率之和都是1的。
『NLP学习笔记』隐马尔可夫模型和维特比算法_第5张图片

2.2. HMM的发射概率(emission probabilities)

  • HMM的发射概率(emission probabilities)介绍如下:
  • 注意:和上面一样矩阵中的每一行的概率之和为1
『NLP学习笔记』隐马尔可夫模型和维特比算法_第6张图片
『NLP学习笔记』隐马尔可夫模型和维特比算法_第7张图片

2.3. HMM的初始隐状态概率

『NLP学习笔记』隐马尔可夫模型和维特比算法_第8张图片

三. 用HMM解决序列标注问题,HMM的学习算法

  • 注意下面:
『NLP学习笔记』隐马尔可夫模型和维特比算法_第9张图片
  • 上面的公式图解释,容易理解:
『NLP学习笔记』隐马尔可夫模型和维特比算法_第10张图片

3.1. 生成模型与判别模型的区别

『NLP学习笔记』隐马尔可夫模型和维特比算法_第11张图片

3.2. HMM参数学习(监督学习)

  • 初识隐状态概率 π ^ q i \hat \pi_{q_i} π^qi:例如一共有5000条预料,分母就是5000,再数一下5000条中有300条是以人名为开头的,那么初始隐状态 π ^ q 人名 \hat \pi_{q_{人名}} π^q人名 的概率为300/5000。

  • 转移概率矩阵和发射概率矩阵:分子是一个联合概率,分母是一个边缘概率


『NLP学习笔记』隐马尔可夫模型和维特比算法_第12张图片

四. HMM代码实践

  • https://github.com/aespresso/a_journey_into_math_of_ml/tree/master/05_NER_hidden_markov_model/HMM_model

五. 维特比算法(Viterbi Algorithm/HMM的预测算法)

5.1. 维特比算法介绍


『NLP学习笔记』隐马尔可夫模型和维特比算法_第13张图片

『NLP学习笔记』隐马尔可夫模型和维特比算法_第14张图片
『NLP学习笔记』隐马尔可夫模型和维特比算法_第15张图片
『NLP学习笔记』隐马尔可夫模型和维特比算法_第16张图片

  • 两个表格一个记录着最大概率,一个记录着最大概率是从哪里来的。

5.2. 计算过程


『NLP学习笔记』隐马尔可夫模型和维特比算法_第17张图片



『NLP学习笔记』隐马尔可夫模型和维特比算法_第18张图片
在这里插入图片描述『NLP学习笔记』隐马尔可夫模型和维特比算法_第19张图片

  • 以此类推:

『NLP学习笔记』隐马尔可夫模型和维特比算法_第20张图片

  • 以此类推:

『NLP学习笔记』隐马尔可夫模型和维特比算法_第21张图片

5.3. 回溯计算

『NLP学习笔记』隐马尔可夫模型和维特比算法_第22张图片


在这里插入图片描述

5.4. 结论

  • 代码在第四章节。

『NLP学习笔记』隐马尔可夫模型和维特比算法_第23张图片

六. 参考文献

  • 汉语自然语言处理-隐马尔可夫模型命名实体识别NER-HMM-从零解读-概率图模型-生成模型-hidden markov model
  • 机器学习之数学之旅系列课程:https://github.com/aespresso/a_journey_into_math_of_ml
  • 一站式解决:隐马尔可夫模型(HMM)全过程推导及实现

你可能感兴趣的:(NLP学习笔记,NLP,HMM,隐马尔可夫模型,维特比算法)