0
点赞
收藏
分享

微信扫一扫

读论文 2021-AAAI-Continual Learning for Named Entity Recognition

半夜放水 2022-03-12 阅读 68

读论文 2021-AAAI-Continual Learning for Named Entity Recognition

文章目录

0 写在前面

什么是持续学习?

我们人类有能够将一个任务的知识用到另一个任务上的能力,学习后一个任务时也不会忘记如何做前一个任务。这种能力叫持续学习 (continual learning/ life-long learning) 总结为两点:

  • 如何能把之前任务的经验用上,使得更快更好的学习当前任务;
  • 学习当前任务时,不会忘记之前已经学会的任务。

Introduction

Motivation

  • 一些真实场景下,需要经常引入新的实体类型

    举例语音助手Siri,

  • 当存储限制或安全问题限制访问时,为新的实体类型标注新的数据集代价昂贵,甚至不可能

    1. 原始的训练数据可能不再提供

    2. 原始的训练数据也不一定包含足够数量的新的实体类型

    思路

    • 为模型应该识别的所有实体注释一个新的数据集

      ​ 随着实体类型的增加,为所有实体类型标注新的数据集不切实际且容易出错

    • 仅为新的实体类型进行标注一个新的数据集,并结合持续学习,以此数据来更新模型

      ​ 容易受到以前实体类型的灾难性遗忘

      所以寻求让现有的NER模型的知识传授给一个新的模型

      • 自训练

      确实只用标新的实体类型了,但是旧模型的误差被传播到了新的模型 [ 1 ] ^{[1]} [1]中,而没有考虑到旧模型预测的不确定性可以帮助新模型更好的了解旧实体 [ 2 ] ^{[2]} [2]

      • 知识蒸馏

contribution

  • 将CL技术应用到了NLU领域,以逐步学习NER的新的实体类型
  • 方法可以是模型能够持续学习新的实体类型而不失去识别旧实体类型的能力
  • 以半监督策略取得与完全监督设置相当的结果

Method

符号定义

最初已经训练好的模型为 M i M_i Mi,可识别的实体类型有 E i = { e 1 , … , e n } E_{i}=\left\{e_{1}, \ldots, e_{n}\right\} Ei={e1,,en}

我们想要训练一个新的模型 M i + 1 M_{i+1} Mi+1,以期望识别新的实体类型 E new  = { e n + 1 , e n + 2 , … , e n + m } E^{\text {new }}=\left\{e_{n+1}, e_{n+2}, \ldots, e_{n+m}\right\} Enew ={en+1,en+2,,en+m}和旧的实体类型 E i E_i Ei

我们仅标注一个新的数据集 D n e w D^{new} Dnew中的新实体类型 E n e w E^{new} Enew

我们想要 M i + 1 M_{i+1} Mi+1能够学习到识别新实体类型 E n e w E^{new} Enew,同时也不遗忘识别旧的实体类型 E i E_i Ei的能力

AddNER模型

image-20220302165626850
结构:

教师模型就是原来用于识别 E i E_i Ei M i M_i Mi,学生模型 M i + 1 M_{i+1} Mi+1是在 M i M_i Mi的基础上,添加了一个新的输出层,用于识别 E n e w E^{new} Enew

过程:

教师模型在 D n e w D^{new} Dnew上预测输出关于 E i E_i Ei的soft labels,学生模型在仅标注 E n e w E^{new} Enew D n e w D^{new} Dnew进行训练

旧的输出层识别用于识别 E i E^{i} Ei,输出one-hot结果 p E i M i + 1 p_{Ei}^{M_{i+1}} pEiMi+1,与教师模型输出的soft labels 结果 p E i M i p_{Ei}^{M_i} pEiMi计算两者之间的KL散度损失 L K L A d d = K L ( p E i M i , p E i M i + 1 ) L_{KL}^{Add}=KL(p_{E_i}^{M_i},p_{Ei}^{M_{i+1}}) LKLAdd=KL(pEiMi,pEiMi+1)

新的输出层识别用于识别 E n e w E^{new} Enew,输出one-hot结果 p E n e w M i + 1 p_{E^{new}}^{M_{i+1}} pEnewMi+1与人工标注数据y来计算交叉熵损失 L C E A d d = C E ( y , p E n e w M i + 1 ) L_{CE}^{Add}=CE(y,p_{E^{new}}^{M_{i+1}}) LCEAdd=CE(y,pEnewMi+1)

模型是根据每个标注的两个损失函数的加权求和进行训练的,即 L A d d = α L K L A d d + β L C E A d d L^{Add}=\alpha L_{KL}^{Add}+\beta L^{Add}_{CE} LAdd=αLKLAdd+βLCEAdd

QA

1. 不同输出层,对同一个token有不同的标注,如何处理?

  • 如果所有层都为O,则为O

  • 如果有一个为B-,其他为O,则输出B-

  • 如果多个输出层为B-,其他层为O,那么给最高概率的输出层B-

  • 如果预测一个标签为I-,那么前面的标签必须与之匹配,否则再次使用启发性算法确定最终输出

疑问

1. 每次新增加类型,是不是都要新增加一个输出层,还是说,模型训练完,就把输出层给删除了,最后只保留一个输出层?

ExtendNER模型

image-20220303091052838
结构:

M i + 1 M_{i+1} Mi+1是在 M i {M_i} Mi的基础上,对输出层进行了扩展,拓展部分能够识别 E n e w E^{new} Enew(m个)新实体类型.假定 M i M_i Mi能识别n个实体类型,那么对应的标记矩阵为h×(2n+1),则 M i + 1 {M_{i+1}} Mi+1对应的标记层维度为h×(2n+2m+1)

过程

如果一个token被标记为新实体类型,那么将使用交叉熵损失函数,否则教室模型的软标签和结果使用KL散度损失

损失计算和AddNER一致,

获得最终 标签是通过Viterbi算法获取,其中发射矩阵时 M i + 1 M_{i+1} Mi+1的输出结果,转移矩阵是是防止出现不可能的转换,直接硬编码

image-20220303100452513

疑问

发射矩阵时 M i + 1 M_{i+1} Mi+1的输出结果是one-hot还是软标签??

Experimental Evaluation

数据集

  • CoNLL-03
image-20220303101259593
  • OntoNotes
image-20220303101307857

Experimental setup

CoNLL-03、OntoNotes分别划分为4、6个不相交的子集 D 1 , D 2 , D 3... D_1,D_2,D3... D1,D2,D3...

Experiment

AddNER&ExtendNER

避免实体的顺序之间有任何依赖关系,使用了不同的实体顺序

对照实验

研究KD对传授先前知识的效果

使用一个no-KD的方法----自训练

image-20220303103414704
对比迁移学习方法

和AddNER一样,在 M i {M_i} Mi基础上,增加一个输出层,不同的是,把老的输出层frozen,以保留识别老实体的能力,然后用 D n e w D^{new} Dnew(仅标注了 E n e w E^{new} Enew)训练新的输出层

result

free transfer model the average performance at step 2 was 56.21.(F1 score)

frozen transfer model , the average overall F1 scores at step 2 was 57.49

疑问
  1. 识别老实体的能力不是在模型里吗??感觉没啥用

  2. in this setting,we may choose to freeze the encoder when updating the model (frozen transfer) or not (free transfer).

D n e w D^{new} Dnew仅标注 E n e w E^{new} Enew和完全标注的对比

​ 1. CL fully-annotated model

每一步,使用完全标注的 D i D_i Di进行训练

​ 2. non-CL last slice model

每一步,使用 D i D_i Di从头开始训练

​ 3. non-CL complete model

每一步,使用( D 1 , . . . , D i ) D_1,...,D_i) D1,...,Di)进行训练

疑问
  1. CL fully-annotated model完全标注了,是怎么进行CL的

Result

image-20220303111450176
  • 在CoNLL-03数据集 student模型分数逐步增加,说明模型能学到识别新实体能力的同时,也保留识别老实体的能力

  • 对比硬标签模型,CoNNL-03中平均比硬标签好0.37分,OntoNotes中比硬标签模型好0.81

  • 比每一步的non-CL last slice model都要好,说明从 M i M_{i} Mi M i + 1 M_{i+1} Mi+1克隆编码器对student模型的成功至关重要,或者说,仅对新数据进行从头训练,即使新数据完全标注,也并不是特别有效

  • non-CL complete model和CL fully-annotated model显然会比extendNER结果好,但随着新的实体类型的增加,他们标注数据的代价太过昂贵,extendNER可以在仅标注新的数据类型,就可以达到良好的整天性能

验证学生模型是否能够在学习一个新的实体类型时,保留先前学习过的实体类型知识
image-20220303181933271

在ExtendNER Student模型上进行测试, e 1 e_1 e1折线表示 每一步 s t e p i step_i stepi中模型预测实体类型 e 1 e_1 e1的平均F1 score,这表示了学生模型在每一步中保留识别 e 1 e_1 e1知识的程度,

虽然部分出现下降的确实,但是这种下降并不显著,可以说明对先前知识有着很好的保留,甚至可以获取通过KD训练的实体的知识

Conclusions

提出了一种用于命名实体识别的持续学习的方法,通过拓展模型来识别新的实体类型,并且更新训练时,只需要标注数据集中的新实体类型,并利用知识蒸馏,防止遗忘和逐步学习新的实体类型

展望

  • 集成一个学习过的crf层来考虑标签之间的全局依赖关系

  • 研究类似的方法来更新在一个领域的模型,以支持不同领域的新实体类型

举报

相关推荐

0 条评论