[论文笔记] 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]

      [1] 自训练是用能识别旧实体的模型去标注新数据集中旧实体,这是hard label,旧模型也不是百分百准确的,旧模型的误差被传播到了新的模型中就是说的这个问题

      [2] 这种不确定性是指soft label 取代one-hot

      • 知识蒸馏

      采用KD是为了避免以前实体类型的灾难性遗忘,而不是为了压缩模型

      为了学生模型和教师模型的行为相似,学生模型被鼓励学习教室模型的输出概率分布,而不是标签

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模型

结构:

教师模型就是原来用于识别 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(pEi​Mi​​,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有不同的标注,如何处理?

比如南京市长江大桥, 可能是南京市,即标签为是I-,也可能是市长,即为B-

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

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

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

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

    比如预测一个标签为I-loc,那么前面不能是B-Org,或者不能是O,等等

    启发性算法在此处应该指按照标签的概率,顺序尝试其他的标签,直到找到能匹配的标签

疑问

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

ExtendNER模型

结构:

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)

h是token的数量, 每个实体标签有 一个B- 一个I- +1 是 O标签

过程

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

损失计算和AddNER一致,

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

疑问

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

如果是one-hot,就不需要 维特比算法了

Experimental Evaluation

数据集

  • CoNLL-03

  • OntoNotes

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的方法----自训练

前面提到过,主要区别是使用的hard label

对比迁移学习方法

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

从模仿AddNER的结构上,进行实验

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

frozen transfer model 即限制编码器更新,这是限制了模型学习新实体的能力

free transfer model 这分数是因为先前知识的灾难性遗忘

疑问
  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

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

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

    感觉是这个文字游戏,在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可以在仅标注新的数据类型,就可以达到良好的整天性能

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

在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层来考虑标签之间的全局依赖关系

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

[论文笔记]AAAI-2021-Continual Learning for Named Entity Recognition相关推荐

  1. [论文阅读笔记05]Deep Active Learning for Named Entity Recognition

    一,题目 Deep Active Learning for Named Entity Recognition[NER任务的深度主动学习] 来源:ICLR 2018 原文:DEEP ACTIVE LEA ...

  2. 论文浅尝 | Continual Learning for Named Entity Recognition

    笔记整理:李淑怡,天津大学硕士 动机 在许多真实任务下,常常需要引入新的实体类型,因此需要重新训练命名实体识别模型.当因为存储或安全问题限制对原始数据的访问时,那么为新实体类型重新标注原始数据的成本将 ...

  3. 论文笔记 Bipartite Flat-Graph Network for Nested Named Entity Recognition | ACL2020

    论文作者: 论文链接:https://arxiv.org/pdf/2005.00436.pdf 代码实现:https://github.com/cslydia/BiFlaG Abstract 作者为嵌 ...

  4. 【论文笔记-NER综述】A Survey on Deep Learning for Named Entity Recognition

    本笔记理出来综述中的点,并将大体的论文都列出,方便日后调研使用查找,详细可以看论文. 神经网络的解释: The forward pass com- putes a weighted sum of th ...

  5. 论文阅读:A Survey on Deep Learning for Named Entity Recognition

    这是一篇2020年发的命名实体识别的综述性论文,从NER的语料库,定义,评估指标,到深度学习中的NER的技术都有涉及到. A Survey on Deep Learning for Named Ent ...

  6. 【论文精读】A Survey on Deep Learning for Named Entity Recognition

    A Survey on Deep Learning for Named Entity Recognition 前言 Abstract 1. INTRODUCTION 2. BACKGROUND 2.1 ...

  7. 论文阅读:(2020版)A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法

    A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法 目录 A Survey on Deep Learning f ...

  8. 论文笔记 AAAI 2021|what the role is vs. What plays the role: Semi-supervised Event Argument Extraction v

    文章目录 1 简介 1.1 动机 1.2 创新 2 方法 3 半监督双重训练策略 4 实验 1 简介 论文题目:What the role is vs. What plays the role: Se ...

  9. A Survey on Deep Learning for Named Entity Recognition论文笔记

    前言:研究课题定为特定领域的命名实体识别,所以先阅读一篇综述,在此简单记录阅读过程. 摘要 在文章中,首先介绍现有的NER资源,包括标记的NER语料库及现成的NER工具,然后对现有的工作进行了分类:输 ...

最新文章

  1. 百度云api android,帮助文档首页/百度移动统计API/百度移动统计 Android版SDK - 百度开放云平台...
  2. 微软新员工吐槽:技术含量一般,好后悔拒绝了阿里,感觉要废掉
  3. make menuconfig错误
  4. Open XML应用安全(2)OLE机制
  5. JavaScript --- 取得鼠标事件的坐标
  6. vue 方法获取返回值_vue.js - vuex异步提交,怎么获取返回数据
  7. LTDC/DMA2D—液晶显示
  8. RookeyFrame 隐藏 首次加载菜单 的伸缩动画
  9. Illustrator 教程,如何在 Illustrator 中添加图像?
  10. OpenDrive格式高精度地图详细解析及其使用(1.栅格地图、OpenDrive坐标系以及参考线介绍)
  11. 详解使用SSH远程连接Ubuntu服务器系统
  12. struts1.x 升级到struts2的几点问题
  13. linux 实现离线迅雷,Linux 下使用 wget/aria2 进行离线迅雷批量下载
  14. Excel收纳箱:VBA一键删除当前工作表的条件格式
  15. Python爬虫笔记(3)- 爬取丁香园留言
  16. 求1!+2!+3!+.....+20!
  17. EPICS记录参考--计算输出记录(calcout)
  18. Toronto Research Chemicals丨ACP-5197 方案
  19. 北京千丁门禁卡复制 芯片是Nt芯片
  20. oracle md5 重复,33-SQLServer和Oracle使用MD5加密字符串不一致的问题

热门文章

  1. CSS 实现内容区域高度自适应,超出有滚动条
  2. TouchSlide触屏滑动特效插件的使用
  3. 身为程序员碰到最奇葩的需求是怎样的?
  4. Gridview求和,求平均数,非常简单实用
  5. 组成原理—内存及内存与CPU的关系
  6. 2021年中职组网络安全山东省赛“正式” 赛卷
  7. 微信小程序-逆地址解析
  8. 在线python3_Python3练习项目10:在线聊天室(下)
  9. 由 BigDecimal 舍入算法引发的血案:ROUND_HALF_UP 与 ROUND_UP
  10. Android Fragment---管理Fragment