Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
之前我们介绍过BERT+CRF来进行命名实体识别,并对其中的BERT和CRF的概念和作用做了相关的介绍,然对于CRF中的最优的标签序列的计算原理,我们只提到了维特比算法,并没有做进一步的解释,本文将对维特比算法做一个通俗的讲解,以便大家更好的理解CRF为什么能够得到最优的标签序列。
通过阅读本文你将能回答如下问题:
- 什么是维特比算法?
- 为什么说维特比算法是一种动态规划算法?
- 维特比算法具体怎么实现?
首先,让我们简单回顾一下BERT和CRF在命名实体识别中各自的作用:
命名实体识别中,BERT负责学习输入句子中每个字和符号到对应的实体标签的规律,而CRF负责学习相邻实体标签之间的转移规则。详情可以参考这篇文章CRF在命名实体识别中是如何起作用的?。该文章中我们对CRF做了简单易懂的介绍,其中提到CRF的损失函数计算要用到最优路径,因为CRF的损失函数是求最优路径的概率占所有路径概率和的比例,而我们的目标是最大化这个比例。那么这里就涉及到计算最优路径的问题。这里的路径在命名实体识别的例子中,就是最终输出的与句子中的字或符号一 一对应的标签序列。不同标签序列的顺序组成了不同的路径。而CRF就是要找出最正确的那条标签序列路径,也就是说这条标签路径的概率将是所有路径中最大的,那么我们可以穷举出所有可能的标签路径,计算出每条路径的概率和,然后比较出最大的那条,但是这样做的代价太大了,所以crf选择了一种称为维特比的算法来求解此类问题。
维特比算法(英语:Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的维特比路径。
看看下面这个命名实体识别的例子:

上图共有5层(观测序列的长度),每层3个节点(状态的个数),我们的目标就是找到从第一层到第五层的最优路径。
首先,我们分别计算红、黄、蓝三个节点的输入连线的概率,以红色节点举例,我们先假设红色节点在最优路径上,那么输入到该节点的三条连线中,概率最大的那条一定在最优路径上,同理,我们再分别假设黄色和蓝色节点在最优路径上,我们也能各找到一条概率最大的连线,这样就得到了下面的图:

然后,我们接着刚才的思路继续找后面一层的三条最优的连线:

假设找到的最优连线如下:

然后,接着在后面的层应用这个方法:


此时,看上面最后一张图,我们有了3条候选最优路径,分别是棕色、绿色和紫色,用标签来表达如下:

那么哪条才是最优路径呢?
就是看哪条路径的概率和最大,那条路径就是最优路径。
但是在实际实现的时候,一般会在计算各层的最优候选连线的时候,就记录下前继连线的概率和,并记录下对应的状态节点索引(这里将已经计算出的结果记录下来供后续使用的方式,就是维特比算法被称为动态规划算法的原因),这样到最后一层的时候,最后一层各候选连线中概率最大的,就是在最优路径上的那条连线了,然后从这条连线回溯,找出完整的路径就是最优路径了。
一直在说概率最大的路径,那么这个概率具体指什么呢?
还记得上一篇文章介绍条件随机场(CRF)的时候提到,条件随机场其实是给定了观测序列的马尔可夫随机场,在一阶马尔可夫模型中,定义了以下三个概念:
- 状态集合Q,对应到上面的例子就是:
{B-P, I-P, O} - 初始状态概率向量Π,对应到上面的例子就是:
{B-P:0.3, I-P:0.2, O:0.5}
这里的概率数值是随便假设的,仅为了方便举例说明。 - 状态转移概率矩阵A:

CRF中给定了观测序列做为先验条件,对应到上面的例子就是:

其中的概率数值同样是随便假设的,为了方便举例。
下图中红色节点的概率(可以看成是一个虚拟的开始节点到该节点的连线的概率)的计算方式如下:
初始状态为B-P的概率Π(B-P) * 该节点的观测概率P(小|B-P)

下图中红色节点的三条连线概率的计算方式如下:
上一层对应节点的概率 * 上层对应节点到该节点的转移概率 * 该节点的观测概率P(明|B-P)

其它层之间的节点连线的概率同理计算可得,然后通过上面介绍的维特比算法过程就可以计算出最优路径了。
ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O。

Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?的更多相关文章
- 【算法】CRF(条件随机场)
CRF(条件随机场) 基本概念 场是什么 场就是一个联合概率分布.比如有3个变量,y1,y2,y3, 取值范围是{0,1}.联合概率分布就是{P(y2=0|y1=0,y3=0), P(y3=0|y1= ...
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
- 标注-CRF条件随机场
1 概率无向图模型1.1 模型定义1.2 因子分解2 条件随机场的定义2.2 条件随机场的参数化形式2.3 条件随机场的简化形式2.4 条件随机场的矩阵形式 3 条件随机场的概率计算问题 3.1 前向 ...
- CRF 条件随机场工具包
CRF - 条件随机场 工具包(python/c++) 项目案例 ConvCRF+FullCRF https://github.com/MarvinTeichmann/ConvCRF 需要的包Opti ...
- Machine Learning系列--CRF条件随机场总结
根据<统计学习方法>一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出 ...
- CRF条件随机场简介
CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(H ...
- viterbi维特比算法和隐马尔可夫模型(HMM)
隐马尔可夫模型(HMM) 原文地址:http://www.cnblogs.com/jacklu/p/7753471.html 本文结合了王晓刚老师的ENGG 5202 Pattern Recognit ...
- CRF条件随机场简介<转>
转自http://hi.baidu.com/hehehehello/item/3b0d1f8ba1c2e5c698255f89 CRF(Conditional Random Field) 条件随机场是 ...
- CRF条件随机场
CRF的进化 https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考: http://blog.echen.me/2012/01/03/intro ...
随机推荐
- sql查询入门
SQL语言是一门相对来说简单易学却又功能强大的语言,它能让你快速上手并很快就能写出比较复杂的查询语句.但是对于大多数开发者来说,使用SQL语句查询数据库的时候,如果没有一个抽象的过程和一个合理的步骤, ...
- JS单例对象与构造函数对象的区别
JavaScript对象有几种: 内置对象如Global,Math对象等等. 本地对象如Object.Function.Array.String.Boolean.Number.Date.RegExp. ...
- Centos 新建用户
Centos 新建用户 为什么要新建用户? 因为root的权限太多,不方便多人多角色使用,所以添加一个用户 添加用户 新建用户 adduser '用户名' 添加用户密码 passwd '用户名' 输入 ...
- 小白学 Python(10):基础数据结构(列表)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- Eureka和zookeeper的比较
什么是CAP? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不 ...
- python中根据时间获取周数,通过周数获取时间
# 时间## 时间和周数 import time import datetime # 获取今天是第几周 print(time.strftime('%W')) # 获取当前是周几(0-6,0代表周一) ...
- Redis(九)哨兵:Redis Sentinel
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的. Redis从2.8开始正式 ...
- 一起来刷《剑指Offer》——不修改数组找出重复的数字(思路及Python实现)
数组中重复的数字 在上一篇博客中<剑指Offer>-- 题目一:找出数组中重复的数字(Python多种方法实现)中,其实能发现这类题目的关键就是一边遍历数组一边查满足条件的元素. 然后我们 ...
- 蓝桥杯基础练习 Huffuman树
基础练习 Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Hu ...
- Spring Cloud gateway 网关服务 一
之前我们介绍了 zuul网关服务,今天聊聊spring cloud gateway 作为spring cloud的亲儿子网关服务.很多的想法都是参照zuul,为了考虑zuul 迁移到gateway 提 ...