条件随机场 CRF
2019-09-29 15:38:26
问题描述:请解释一下NER任务中CRF层的作用。
问题求解:
在做NER任务的时候,神经网络学习到了文本间的信息,而CRF学习到了Tag间的信息。
- 加入CRF与否网络的差别
首先对于不加CRF层的NER网络,往往每个输出的Tag是贪心的进行选取到的,如下图所示:

这种方案的结果没有考虑到Tag之间的关系,往往会造成最后的结果是不符合正常模式的,比如出现B-Person,B-Person的情况。
加入CRF层后,CRF层会根据训练语料去学习其中存在的模式,比如B-Person,B-Person这种情况是不会出现的,其网络结构如下:

- CRF层的训练机制
CRF有两个概念,发射分数(Emission score)和转移分数(Transition score)。
Emission score:神经网络输出的各个Tag的置信度;
Transition score:CRF层中各个Tag之前的转移概率;
加入CRF层后,Loss Function为:

所以我们需要定义的就是这里的Path Score如何计算,另外真实的Path Score应该是占比最高的。
以Path Score Real举例,Path Score Real = Emission score + Transition score。
Take the real path, “START B-Person I-Person O B-Organization O END”, we used before, for example:
- We have a sentence which has 5 words, w1,w2,w3,w4,w5w1,w2,w3,w4,w5
- We add two more extra words which denote the start and the end of a sentence, w0,w6w0,w6
- SiSi consists of 2 parts: Si=EmissionScore+TransitionScoreSi=EmissionScore+TransitionScore (The emission and transition score are expanined in section 2.1 and 2.2)
Emission Score:
EmissionScore=x0,START+x1,B−Person+x2,I−Person+x3,O+x4,B−Organization+x5,O+x6,ENDEmissionScore=x0,START+x1,B−Person+x2,I−Person+x3,O+x4,B−Organization+x5,O+x6,END
xindex,labelxindex,label is the score if the indexthindexth word is labelled by labellabel
These scores x1,B−Personx1,B−Person x2,I−Personx2,I−Person x3,Ox3,O x4,Organizationx4,Organization x5,Ox5,O are from the previous BiLSTM output.
As for the x0,STARTx0,START and x6,ENDx6,END, we can just set them zeros.
Transition Score:
TransitionScore=TransitionScore=
tSTART−>B−Person+tB−Person−>I−Person+tSTART−>B−Person+tB−Person−>I−Person+
tI−Person−>O+t0−>B−Organization+tB−Organization−>O+tO−>ENDtI−Person−>O+t0−>B−Organization+tB−Organization−>O+tO−>END
- tlabel1−>label2tlabel1−>label2 is the transition score from label1label1 to label2label2
- These scores come from the CRF Layer. In other words, these transition scores are actually the parameters of CRF Layer.
最后的Preal path = escore 。
这里可能有个疑问就是为什么要做Exponential,其实道理非常简单,就是我们实际要算的是级联概率,P = P1 * P2 * P3...,但是这里直接将发射概率和转移概率做了相加是因为这里算的其实是logP,直接相加我理解是为了便于计算,其实最好是logProb相加,这样才符合直觉。
在训练模型的时候还有个需要计算的就是Total Score。
计算Total Score的时候当然可以依次计算所有的路径的得分,最后加和起来,但是这种方法的时间复杂度是不可接受的,那么有什么好的方案可以降低时间复杂度么?
这里可以使用动态规划的算法来降低时间复杂度,简单的说就是对每一层的结果进行备份,每一层的节点保存的是到当前节点的sum of score,然后递推计算下一层的结果即可。
使用dp可以将之间复杂度降低到O(S ^ 2 * L)。
- CRF层的预测机制
在预测时候,转移矩阵已经生成,那么我们需要做的就是去寻找一条最大的Score Path。和之前计算Total Path Score一样,可以枚举所有的方案,从中选择最大的一条路径,但这样暴力的枚举的方案的时间复杂度是非常高的,这个是我们不能接受的。那么有什么方案可以降低时间复杂度么?
这里依然可以使用动态规划的算法来降低时间复杂度,算法的核心思路其实并没有多大的改变,只是每层的节点存储的结果的定义有一点改变,之前的每个节点存储的是sum of score,这里的每个节点保存的是max of score,然后递推的计算下一层的结果即可。
条件随机场 CRF的更多相关文章
- 条件随机场(CRF) - 2 - 定义和形式(转载)
转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618218.html 参考书本: <2012.李航.统计学习方法.pdf> 书上 ...
- 条件随机场(CRF) - 1 - 简介(转载)
转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html 首先我们先弄懂什么是"条件随机场",然后再探索其详 ...
- 条件随机场CRF(一)从随机场到线性链条件随机场
条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估观察序列概率(TODO) 条件随机场CRF(三) 模型学习与维特比算法解码(TODO) 条件随机场(Condi ...
- 条件随机场CRF(三) 模型学习与维特比算法解码
条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在CRF系列的前两篇,我们总结了CRF的模型基 ...
- 条件随机场CRF(二) 前向后向算法评估标记序列概率
条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在条件随机场CRF(一)中我们总结了CRF的模 ...
- 条件随机场 (CRF) 分词序列谈之一(转)
http://langiner.blog.51cto.com/1989264/379166 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...
- 条件随机场CRF
条件随机场(CRF)是给定一组输入随机变量X的条件下另一组输出随机变量Y的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场.实际上是定义在时序数据上的对数线性模型.条件随机场属于判别模型. ...
- 条件随机场(CRF) - 1 - 简介
声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...
- 条件随机场(CRF) - 2 - 定义和形式
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...
- 条件随机场CRF简介
http://blog.csdn.net/xmdxcsj/article/details/48790317 Crf模型 1. 定义 一阶(只考虑y前面的一个)线性条件随机场: 相比于最大熵模型的输 ...
随机推荐
- useful_tool
记录工作学习中遇到的经典好用的工具软件. 工作篇 AxeSlide斧子演示 AxeSlide是PPT的良好替代品,跨平台,基于Html5 2D/3D技术开发.动画特效等效果十分不错.工具提供很多免费模 ...
- unittest实战(一):用例框架
import unittest class forTest0(unittest.TestCase): @classmethod def setUpClass(cls) -> None: prin ...
- 7-44 jmu-python-区间数之和 (10 分)
输入一个区间,计算里面能被3整除或被5整除的数和. 输入格式: 每行输入一个数据,代表区间左界和右界.区间包含左界和右界.数据必须是整数. 输出格式: 满足条件数和. 输入样例: 2 10 输出样例: ...
- p标签内不能嵌套块级标签
今天突然发现一个问题,那就是p标签内不能嵌套块级标签 例如: <p><p></p></p> 会被浏览器解析成 我又把 div 嵌套在里面,发现还是这样 ...
- MVC08
1. c# 索引器(indexer) using System; using System.IO; namespace IO { class Program { ]; static void Main ...
- 盒马微信小程序
盒马app刚出现,就吸足了眼球.最近看了看盒马界面,很Q,就想着仿照app写个小程序. 功能介绍 好奇微信小程序是如何制作的,也对盒马app感兴趣,就尝试写了这个盒马小程序.实现了app的部分功能,还 ...
- JS基础入门篇(三十五)—面向对象(二)
如果没有面向对象这种抽象概念的小伙伴,建议先看一下我写的JS基础入门篇(三十四)-面向对象(一)
- spring——AOP原理及源码(四)
前情回顾: 上文我们一路分析了从容器创建开始直到我们的AOP注解导入的核心组件AnnotationAwareAspectJAutoProxyCreator执行postProcessBeforeInst ...
- flask前端上传图片/文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 15 Spring Data JPA概述
Spring Data JPA 概述 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...