3d基本走势图(专业版)

最通俗易懂的BiLSTM-CRF模型中的CRF层介绍

技术标签: NLP

benwenfanyizigithubbokeshangdeyuanchuangwenzhang,jieweiyouyuanwenlianjie。wenzhangmeiyouhuisedeshuxuegongshi,ershitongguoshiliyibuyibujiangjiecrfdeshixianguocheng,shirumencrffeichangfeichangheshideziliao。

概述

gaiwenzhangxiliebaokuoyixianeirong:

  • 概念介绍 — 基于 BiLSTM-CRF模型中的命名实体识别任务中的CRF层解释
  • 例子详解 — 用一个玩具的例子详细解释CRF是如何工作的
  • Chainer实现 — 用基于Chainer包的代码实现CRF层

 

背景知识

niweiyixuyaolejiedeshishenmejiaomingmingshitishibie。ruguonibulejieshenjingwangluo,crfyijiqitaxiangguanzhishiyemeiyouguanxi,wohuiyongtongsuyidongdeyuyanlaijieshiqingchu。

 

  1. 简介

zaimingmingshitishibielingyu,jiyushenjingwangluodeshixianfangfashifeichangliuxinghechangyongde。jugelizi,gaiwenjiangshudeyongciqianruheziqianrudebilstm-crfmoxingjiushiqizhongyizhong。wojiangyigaimoxingweilijieshicrfcengdegongzuoyuanli。

ruguonibuzhidaobilstm he crfdeshixianxijie,zhixuyaojizhutamenshimingmingshitishibiemoxingzhonglianggebutongdeceng。

  1. 开始之前

 

womenguidingzaishujujizhongyouliangleishiti,renminghezuzhijigoumingcheng。suoyi,qishizaiwomendeshujujizhongzonggongyou5leibiaoqian:

B-Person (人名的开始部分)

I- Person (人名的中间部分)

B-Organization (组织机构的开始部分)

I-Organization (组织机构的中间部分)

O (非实体信息)

 

ciwai,x shibaohanle5gedancideyijuhua(w0,w1,w2,w3,w4)。haiyou,zaijuzixzhong[w0,w1]shirenming,[w3]shizuzhijigoumingcheng,qitadoushi“o”。

 

  1. BiLSTM-CRF 模型

 

xianlaijianyaodejieshaoyixiagaimoxing。

ruxiatusuoshi:

shouxian,juzhongdemeigedancishiyitiaobaohanciqianruheziqianrudecixiangliang,ciqianrutongchangshishixianxunlianhaode,ziqianruzeshisuijichushihuade。suoyoudeqianrudouhuisuizhexunliandediedaiguochengbeidiaozheng。

3d基本走势图(专业版)qici,bilstm-crfdeshurushiciqianruxiangliang,shuchushimeigedanciduiyingdeyucebiaoqian。

 

 

jinguanbuxuyaolejiebilstmdeshixianxijie,danweilegenghaodelijiecrfceng,womenhaishixuyaozhidaoyixiabilstmdeshuchudaodishishenmeyisi。

 

 

如上图所示,BiLSTM层的输入表示该单词对应各个类别的分数。如W0,BiLSTM节点的输出是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) and 0.05 (O)。这些分数将会是CRF层的输入

suoyoudejingbilstmcengshuchudefenshujiangzuoweicrfcengdeshuru,leibiexuliezhongfenshuzuigaodeleibiejiushiwomenyucedezuizhongjieguo。

 

  1. 如果没有CRF层会是什么样

 

zhengrunisuofaxiande,jishimeiyoucrfceng,womenzhaoyangkeyixunlianyigejiyubilstmdemingmingshitishibiemoxing,ruxiatusuoshi。

 

 

3d基本走势图(专业版)yinweibilstmmoxingdejieguoshidanciduiyinggeleibiedefenshu,womenkeyixuanzefenshuzuigaodeleibiezuoweiyucejieguo。ruw0,“b-person”defenshuzuigao(1.5),neimewomenkeyixuanding“b-person”zuoweiyucejieguo。tongyangde,w1shi“i-person”, w2shi“o”,w3shi “b-organization” ,w4shi “o”。

3d基本走势图(专业版)jinguanwomenzaigailizizhongdedaolezhengquedejieguo,danshijiqingkuangbingbuzongshizheiyang。laikanxiamiandelizi。

 

 

xianran,zheicidefenleijieguobingbuzhunque。

 

  1. CRF层可以学习到句子的约束条件

 

crfcengkeyijiaruyixieyueshulaibaozhengzuizhongyucejieguoshiyouxiaode。zheixieyueshukeyizaixunlianshujushibeicrfcengzidongxuexidedao。

kenengdeyueshutiaojianyou:

  • 句子的开头应该是“B-”或“O”,而不是“I-”。
  • “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。
  • “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。

youlezheixieyouyongdeyueshu,cuowudeyucexuliejianghuidadajianshao。

 

  1. CRF 层

crfcengzhongdesunshihanshubaokuoliangzhongleixingdefenshu,erlijiezheiliangleifenshudejisuanshilijiecrfdeguanjian。

  1. Emission score

 

3d基本走势图(专业版)diyigeleixingdefenshushifashefenshu(zhuangtaifenshu)。zheixiezhuangtaifenshulaizibilstmcengdeshuchu。ruxiatusuoshi,w0beiyuceweib-persondefenshushi1.5.

 

 

weifangbianqijian,womenjimeigeleibieyigesuoyin,ruxiabiaosuoshi:

 

 

xiyjdaibiaozhuangtaifenshu,ishidancideweizhisuoyin,yjshileibiedesuoyin。genjushangbiao,

表示单词w1被预测为B−Organization的分数是0.1。

  1. 转移分数

 

3d基本走势图(专业版)womenyongtyiyjlaibiaoshizhuanyifenshu。liru,tb−person,i−person=0.9biaoshicongleibieb−person→i−persondefenshushi0.9。yinci,womenyouyigesuoyouleibiejiandezhuanyifenshujuzhen。

weileshizhuanyifenshujuzhengengjulubangxing,womenjiashangstart he endliangleibiaoqian。startdaibiaoyigejuzidekaishi(bushijuzidediyigedanci),enddaibiaoyigejuzidejieshu。

xiabiaoshijiashangstartheendbiaoqiandezhuanyifenshujuzhen。

 

 

rushangbiaogesuoshi,zhuanyijuzhenyijingxuexidaoyixieyouyongdeyueshutiaojian:

  • 句子的第一个单词应该是“B-” 或 “O”,而不是“I”。(从“START”->“I-Person 或 I-Organization”的转移分数很低)
  • “B-label1 I-label2 I-label3…”,在该模式中,类别1,2,3应该是同一种实体类别。比如,“B-Person I-Person” 是正确的,而“B-Person I-Organization”则是错误的。(“B-Organization” -> “I-Person”的分数很低)
  • “O I-label”是错误的,命名实体的开头应该是“B-”而不是“I-”。

 

yaozenyangdedaozheigezhuanyijuzhenni?

实际上,转移矩阵是BiLSTM-CRF模型的一个参数。在训练模型之前,你可以随机初始化转移矩阵3d基本走势图(专业版)的分数。这些分数将随着训练的迭代过程被更新,换句话说,CRF层可以自己学到这些约束条件。

 

  1. CRF损失函数

 

3d基本走势图(专业版)crfsunshihanshuyouliangbufenzucheng,zhenshilujingdefenshu he suoyoulujingdezongfenshu。zhenshilujingdefenshuyinggaishisuoyoulujingzhongfenshuzuigaode。

3d基本走势图(专业版)liru,womendeshujujizhongyouruxiajizhongleibie:

 

 

3d基本走势图(专业版)yigebaohan5gedancidejuzi,kenengdeleibiexulieruxia:

 

  • 1. START B-Person B-Person B-Person B-Person B-Person END
  • 2. START B-Person I-Person B-Person B-Person B-Person END
  • …..
  • 10. START B-Person I-Person O B-Organization O END
  • N. O O O O O O O

 

meizhongkenengdelujingdefenshuweipi,gongyountiaolujing,zelujingdezongfenshi

 

,eshichangshue。

ruguodishitiaolujingshizhenshilujing,yejiushishuodishitiaoshizhengqueyucejieguo,neimedishitiaolujingdefenshuyinggaishisuoyoukenenglujinglidefenzuigaode。

genjuruxiasunshihanshu,zaixunlianguochengzhong,bilstm-crfmoxingdecanshuzhijiangsuizhexunlianguochengdediedaibuduangengxin,shidezhenshilujingsuozhandebizhiyuelaiyueda。

 

 

xianzaidewentishi:

  1. 怎么定义路径的分数?
  2. 怎么计算所有路径的总分?
  3. 当计算所有路径总分时,是否需要列举出所有可能的路径?(答案是不需要)
    1. 真实路径分数

 

3d基本走势图(专业版)jisuanzhenshilujingfenshu,esi,shifeichangrongyide。

womenxianjizhongzhuyililaijisuansi

“START B-Person I-Person O B-Organization O END”这条真实路径来说:

3d基本走势图(专业版)juzizhongyou5gedanci,w1,w2,w3,w4,w5

3d基本走势图(专业版)jiashangstartheend zaijuzidekaishiweizhihejieshuweizhi,jiwei,w0,w6

Si = EmissionScore + TransitionScore

 

 

zheixiefenshulaizibilstmcengdeshuchu,zhiyux0,start hex6,end ,zeshewei0。

 

 

这些分数来自于CRF层,将这两类分数加和即可得到Si 和 路径分数eSi

 

  1. 所有路径的总分

 

如何计算所有路径的总分呢?我们将以一个玩具的例子详细讲解。

这部分是最重要的并且也是比较难的,但不用担心,我将用玩具的例子尽可能简单的讲清楚里面的细节。

Step 1

我们定义的损失函数如下:

 

 

现在我们把它变成对数损失函数:

 

 

由于我们的训练目标通常是最小化损失函数,所以我们加上负号:

 

 

前面我们已经很清楚如何计算真实路径得分,现在我们需要找到一个方法去计算

 

 

Step 2:回忆一下状态分数 和 转移分数

为了简化问题,我们假定我们的句子只有3个单词组成:

X = [w0, w1 ,w2]

另外,我们只有两个类别:

LabelSet = {l1, l2}

 

状态分数如下:

 

 

转移矩阵如下:

 

 

 

Step 3:开始奋斗!(纸和笔准备好!)

记住:我们的目标是:

 

整个过程是一个分数的积聚过程。它的实现思想有点像动态规划。首先,w0所有路径的总分先被计算出来,然后,我们计算w0 -> w1的所有路径的得分,最后计算w0 -> w1 -> w2的所有路径的得分,也就是我们需要的结果。

 

接下来,你会看到两个变量:obs和 previousPrevious存储了之前步骤的结果,obs代表当前单词所带的信息。

 

 

如果我们的句子只有一个单词,我们就没有之前步骤的结果,所以Previous 是空。我们只能观测到状态分数 obs =【x01,x02】

W0 的所有路径总分就是:

 

 

 

 

(请集中注意)

 

 

你可能疑惑为啥要扩展previous 和 obs 矩阵呢?因为这样操作可以是接下来的计算相当高效,你很快就能意会到这点。

 

 

实际上,第二次迭代过程也就完成了。

 

 

发现了吗,这其实就是我们的目标,

 

 

 

 

 

 

读到这边,差不多就大功告成了。这一步,我们再重复一次之前的步骤。

 

 

 

 

跟上一步骤一样。我们用新的previous计算总分:

 

 

完结,撒花!

我们最终得到了我们的目标,

,我们的句子中共有3个单词和两个类别,所以共有8条路径。

 

2.6 对句子的单词词性做预测

在之前章节我们学习了BiLSTM-CRF模型的基本结构和CRF的损失函数。现在你可以用各种开源框架搭建你自己的BiLSTM-CRF模型(Keras, Chainer, TensorFlow等)。用这些框架最爽的事情就是你不用自己实现反向传播这个过程,并且有的框架已经实现CRF层,这样只需要添加一行代码就能在你的模型中实现CRF过程。

 

本章我们会探索如何用我们训练好的模型去预测一个句子每个单词的词性。

Step 1:BiLSTM-CRF模型得到的发射分数和转移分数

假定我们的句子共3个单词组成:

 

并且,我们已经从我们的模型中得到了发射分数和转移分数,如下:

 

 

转移矩阵:

 

 

Step 2:开始预测

如果你熟悉Viterbi算法,理解这一步的知识点将会非常容易。当然,如果你不熟悉也无所谓,整个预测过程和之前求所有路径总分的过程非常类似。我将逐步解释清楚,我们先从左到右的顺序来运行预测算法。

 

 

你将会看到两类变量:obs 和 previous。Previous存储了上一个步骤的最终结果,obs代表当前单词包含的信息(发射分数)。

Alpha0 是历史最佳的分数 ,alpha1 是最佳分数所对应的类别索引。这两类变量的详细信息待会会做说明。先来看下面的图片:你可以把这两类变量当做狗狗去森林里玩耍时在路上做的标记,这些标记可以帮助狗狗找到回家的路。

 

 

 

 

现在,我们来观测第一个单词W0,很显然,W0所对应的最佳预测类别是非常容易知道的。比如,如果

,显然,最佳预测结果是l2。

 

 

 

 

 

看到这里,你可能好奇这跟之前求所有路径分数的算法没什么区别,别急,你马上就会看到不同之处啦!

 

在下一次迭代前更改previous的值:

 

 

举个例子,如果我们的得分如下:

 

 

那么我们的previous应该是:

 

 

这是什么意思呢?其实也就是说previous存储的是当前单词对应各类别的最佳路径得分。W1被预测为L1类别的最高分是0.5,路径是L2->L1,W1被预测为L2类别的最高分是0.4,路径是L2->L2。

 

这边,我们有两个变量来储存历史信息,alpha0 和 alpha1.

在本次迭代中,我们将最佳分数存储到alpha0 :

 

 

同时,最佳分数所对应的类别索引存储到alpha1:

 

 

类别L1的索引是0,L2的索引是1,所以(1,1)=(L2,L2)。表示当前最佳分数0.5对应的路径是L2->L1,最佳分数0.4对应的路径是L2->L2。(1,1)可以理解为前一单词分别对应的类别索引。

 

 

 

上面scores有错误,应该是0.5+x21+t11 等

 

更改previous的值:

 

 

假如我们的得分是:

 

 

现在我们的previous是:

 

 

现在,我们选取previous[0] 和previous[1]中最大的分数作为最佳路径。也就是0.9对应的路径是我们的预测结果。

同时,每个类别对应的最大得分添加到alpha0 和 alpha1中:

 

 

 

Step 3:根据最大得分找到最佳路径

这是最后一步,alpha0 和 alpha1将被用来找到最佳路径。

先看alpha0,alpha0中最后一个单词对应的类别得分分别是0.8 和 0.9,那么0.9对应的类别L2就是最佳预测结果。再看alpha1,L2对应的索引是0, “0”表示之前一个单词对应的类别是L1,所以W1-W2的最佳路径是: L1->L2

接着往前推,alpha1=(1,1),我们已经知道W1的预测结果是L1,对应的索引是0,(1,1)[0] = 1,所以W0对应的类别是L2。

所以我们预测的最佳路径是 L2-> L1 -> L2 。

 

原始文章链接:

转载自

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明。
本文链接:
2元中国福利彩票怎么看 2元中国福利彩票的买法 2元买彩票选几个数字 2元彩票 2元就可以打1毛的斗地主棋牌 2元彩票刮刮乐 2元就可以打1毛的炸金花棋牌 2元彩不错 2元彩是值得您信赖的 2元彩票网体彩排列三