BiLSTM+CRF学习笔记

参考 https://www.cnblogs.com/createMoMo/p/7529885.html

数据编码准备

采用BIO编码,在BI后面指定实体了类别

B-Person
I- Person
B-Organization
I-Organization
O

BiLSTM-CRF 模型结构

BiLSTM-CRF1.png

1.句子中的每一个词/字符都被表征为一个向量,如果包含词性,就是词性和词向量的拼接
2.词性向量是随机初始化的,词向量是预先训练的
3.所有向量都会放在神经网络中继续调整训练
4.BiLSTM-CRF的输入就是词的embedding,输出是词的预测标签的分数

BiLSTM-CRF2.png

1.BiLSTM的输出是每个预测标签的分数, 比如w0这个词,输出是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) , 0.05 (O). 这个输出作为CRF层的输入.
2.在CRF层接受到输入之后,CRF在众多标签序列路径中,选择将拥有最高预测得分的标签序列作为最后的预测结果

BiLSTM的局限性

BiLSTM实体识别1.png

LSTM可以直接完成实体识别的任务,此时LSTM的预测标签的得分作为实体识别的结果,比如w0预测为B-Person,因为得分最高为1.5

BiLSTM实体识别2.png

1.单单只有LSTM可能会预测得到非法结果,比如下图LSTM的预测结果是 I-Organization -> I-Person -> O -> I-Organization -> I-Person,这是非法的,因为 I-Organization后面不可能接I-Person
2.LSTM没有考虑到标签的上下文限制

CRF层的作用

CRF能学到标签的上下文限制,可以对LSTM的预测结果进一步加入约束条件来保证预测结果的合法性
这些限制条件比如:
1.第一个词必须是B或者O,不能是I
2.B -> I -> I这样的组合,后面的类别必须一致,比如B-Person -> I-Person -> I-Person,不能是B-Person -> I-Organization -> I-Person等等
3.O后面接I是非法的
有了这些限制之后,非法的标签序列会显著减小

CRF层详解

BiLSTM-CRF3.png

CRF层的损失函数包含两部分
第一部分是发射概率或者发射得分,这个发射概率由BiLSTM层产生,比如w0发射B-Person的概率得分是1.5

给每一个标签设置索引如下

Label Index
B-Person 0
I-Person 1
B-Organization 2
I-Organization 3
O 4

此时Xw1y2=0.1, 表示w1词对于B-Organization的发射概率是0.1

1.第二部分是转移概率或者转移得分
2.使用Tyiyj来表示转移得分,比如Ty0y1=0.9表示从B-Person -> I-Person, 因此得到一个转移矩阵
3.为了使转移矩阵更加稳定鲁棒,需要增加两个新标签,START和END,START是句子的开始,END是句子的结尾
4.从转移矩阵可以明显看出标签之间的上下文限制.比如句首必须是B或者I,不能是I,因为从STRAT到I的得分非常低,等等.
5.转移矩阵是BiLSTM-CRF的一个参数,在模型训练之前,转移矩阵需要随机初始化,这个矩阵会随着模型的训练一致迭代更新,换句话说CRF层能够自动学习到这个矩阵,不需要手工指定转移矩阵.

转移矩阵.png

CRF损失函数计算

CRF损失函数的计算包含真实路径所有路径,其中真实路径是所有可能路径中分数最高的路径.
如果有一个包含5个词的句子,它的可能路径包括
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
3.START B-Person I-Person O B-Organization O END
4.O O O O O O O
等等
设第i种路径的分数是Pi,则所有路径的分数和是Ptotal = P1 + P2 + ... + Pn = es1 + es2 + ... + esn,其中e是自然对数
如果第10条路径是真实路径,那么第10条路径就是训练集的金标准路径,第10条路径的得分占比是所有路径中最大的
CRF层的损失函数的主要部分如下

loss func.png

BiLSTM-CRF模型会一直更新内部参数(发射概率和转移概率),来使得真实路径的占比增大

真实路径得分的计算

CRF的损失函数关乎真实路径得分和所有路径得分,真实路径得分的占比随着训练逐渐增大
对于真实路径的得分esi,由于e是自然对数,所以只要计算si即可
如果START B-Person I-Person O B-Organization O END 是真实路径,那么
1.这个句子有5个词组成
2.额外增加了START和END使得一共有七个词

Si = EmissinScore + TransitionScore 真实路径得分是序列的发射概率得分加转移概率得分

EmissinScore = x0,start + x1,B-Person + x2,I-Person + x3,O + x4,B-Organization + x5,O + x6,END

这些发射得分来自于LSTM层
1.x1,B-Person + x2,I-Person + x3,O + x4,B-Organization + x5,O来自与BiLSTM层,x0
2.start和x6,END可以随机初始化为0

Transition Score = Tstart,b-person + Tb-person,i-person + Ti-person,o + To,b-organization + Tb-organization,o + To,end

这些转移分数来自于crf层,换句话说转移分数是CRF层的参数.

所有路径得分计算

最简单的方法就是枚举出所有可能路径,然后根据发射概率+转移概率计算路径得分,这种方法是低效的,训练时间不可接受

CRF损失函数的化简


image.png

期望这个比率增大,所以损失函数加入负号
加入log,一方面因为取了e作为底数,另一方面可以将除法转化为减法
Srealpath可以单独计算,所有路径得分的计算过程如下
1.假设一个句子有三个词w0,w1,w2
2.标签有两个l1,l2
在w0处,没有转移概率,只有发射概率,因此


w0处totalScore.png

在w1处,需要w0发射概率+w0->w1转移概率+w1发射概率,因此


w0-w1 totalScore.png

在w2处,需要w0发射概率+w0->w1转移概率+w1发射概率+w1->w2转移概率+w2发射概率
w0->w1->w2.png

模型对新数据的推断过程

通过BiLSTM+CRF的模型训练,分别得到发射概率和转移概率如下


发射概率.png

转移概率.png
第一个词w0

第一个词w0的推断label很简单,由于不存在转移概率,直接以发射概率最大为准,比如w01=0.2,w02=0.8,则第一个词w0的推断标签是l2
记录下标签[l2]

第二个词w1

整个句子包括w0->w1


w0-w1的推断过程1.png

这个矩阵需要竖着看
第一列是所有当前第二个词是l1的所有情况
第二列是所有当前第二个词是l2的所有情况

w0-w1的推断过程1.png

取每一列的分数最大值作为当前词label下的最优路径
比如如果当前词的label是l2,那么最优路径是x02+x12+t22,分数是0.4
这两个label下的最优结果,传递给第三个词再计算,作为第三个词之前所有词的基础发射概率
由于0.5是最大得分,记录下标签l1,和历史标签拼接得到 l2->l1

第三个词w2
w0->w1->w2.png

第一列是第三个词是l1标签的所有路径可能,其中之前历史路径已经使用第二个词各标签下的最大分数路径
如果矩阵得分计算如下,依旧还是取列的最大值


w0->w1->w2 2.png

w0->w1->w2 3.png

由于最大得分是0.9,此时的标签是l2,历史策略是0.5,所以最优路径是 l2->l1->l2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351