美文网首页NLP学习
BiLSTM+CRF学习笔记

BiLSTM+CRF学习笔记

作者: xiaogp | 来源:发表于2020-05-19 19:04 被阅读0次

    参考 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

    相关文章

      网友评论

        本文标题:BiLSTM+CRF学习笔记

        本文链接:https://www.haomeiwen.com/subject/cvciohtx.html