序列标注任务:BiLSTM-CRF模型中 条件随机场CRF的应用

2021/4/13 18:57:19

本文主要是介绍序列标注任务:BiLSTM-CRF模型中 条件随机场CRF的应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本文是对这篇知乎文章的学习笔记

BiLSTM-CRF

概念-命名实体识别NER中两个不同的层

-输入:词嵌入向量 ; 输出:单词对应的预测标签

先验知识-
-命名实体识别(NER)系统的目标是识别所有文字提及的命名实体。可以分解成两个子 任务:确定 NE 的边界和确定其类型

本文将围绕一个具体的实例来展开->现在假设这个数据集中仅存在两种实体,相应的,只会产生五种类别的标签如下:

-数据集中 两类实体:人名、机构名
-五类标签 :B-person,I-person,B-Organization,I-Organization,O(非实体信息)

在这里插入图片描述

(单个)词向量 w0 大小为1*n ,记录该词与词表中其他所有词的相似度(0~1)

词向量矩阵是一个压缩后的共词矩阵

输入到BiLSTM层 -> BiLSTM层输出词w0被标记为对应类别标签的分数,是一个大小为m(m=5)的列表

分数信息—输入到CRF层(作为发射分数 emission_Score)

-如果没有CRF层,变成一个只基于BiLSTM的预测模型——对于序列中每个单个的词w0,只选择BiLSTM层输出的得分最高的标签作为结果,组合成标注序列。——分类结果不准确

-CRF层 添加约束条件:如I-Person必须出现在B-Person后,BiLSTM层只给(输入)单一的词打分而不考虑上下文环境

-CRF层在训练中自动学习句子的约束条件 (end to end 方法 而非hand-crafted)

-效果:减少错误的预测序列


CRF层中两种分数:emission_score 和 transition_score

如果序列的大小为n(句子共有n个词),m类标签(句子被标注的全部可能类别)
则emission_score 的大小是n*m .

emission_score[wo][B-person] = 1.5 ,emission_score[w][pos] = 词w被标注为pos类的概率值

transition _socre的大小是m*m transition _socre[m1][m2] 序列中当前词的前一个词被标注为m1下,当前词被标注为m2的概率 . 即由m1转移到下一个状态为m2的概率

#define 概率==分数

transition_score[B-Person][I-Person] ≈1
transition_score[B-Person][I-Organization]≈0
因为句子(词序列)中一个被标注为B-Person的词后面 几乎不可能 紧跟一个被标注为I-Organization的词

-转移矩阵是BiLSTM-CRF模型中的参数,在训练之前被随机值初始化,在训练迭代过程中被更新-

[迭代优化技术:使用随机值初始化模型的参数,然后反复优化这些参数使它们接近最优解]

-CRF层与HMM模型的区别:
输入-> CRF层的输入(emission_score)来自于BiLSTM层的输出 ,且大小是nm的 ; HMM模型的输入(初始概率)的大小是1m的 ,发射(emission_matrix)大小是n*m的。[共同点:crf的发射分数、hmm的初始概率、发射概率均是模型训练前给定的,且始终不发生变化]

转移分数/转移概率分布-> CRF层的转移概率被随机值初始化,训练过程中被反复更新;HMM的转移概率是模型给定的,且始终不发生变化

过程->CRF迭代地训练直到终止条件;HMM从开始状态通过朴素贝叶斯+维特比动态规划算法优化计算过程,求出最大概率的隐状态序列。

-CRF的损失函数- - - - - - -

#序列大小为n,标签类别数为m - 枚举全部可能的标注序列共m^n种- -

定义一条路径[m1,m2,m3…mn]的分数(即一种标注序列)
si = emission_score + transition_score
emission_score = ∑ emission_socre[wi][mi] (i=1,2,3..n)
每个单词wi被标注为mi类的得分 ,n个单词相加之和

transition_score同理
对于全部可能的路径(m^n条)的总分数 = ∑每条路径的分数

exp函数:exp(x) = e^x;
si=emission_score + transition_score ; ->exp(si)

于是我们有了第i条路径的得分Pi,所有路径的得分Ptotal

定义损失函数为- log(Pi/Ptotal)

Pi/Ptotal = 该条路径的得分/所有路径的总分;显然,我们认为得分最大的路径是真实路径(预测结果) 因此,一条路径越正确——得分越高,Pi/Ptotal之比就越大,取对数后单调性不变。

在训练过程中最小化损失函数——在训练中最小化-log(Pi/Ptotal) ,即最大化 log(Pi/Ptotal) ;我们迭代地更新参数transition_score,使其朝损失函数变小的方向进行;

-最终我们得到了一组参数(即transition_score转移分数矩阵)和分数最高的路径(及其得分)

-联想最大熵模型:定义标签分布的无序性为(分布越均匀,熵值越高),训练目标——找出熵值最大的标注序列,迭代地更新参数。最终得到了一组参数和熵最大的预测序列。
因此我们基于理解给出一个结论:CRF可以看作是最大熵模型在序列标注中的应用



这篇关于序列标注任务:BiLSTM-CRF模型中 条件随机场CRF的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程