ACL2022 | 类增量学习的少样本命名实体识别

每天给你送来NLP技术干货!


©作者 | 回亭风

单位 | 北京邮电大学

研究方向 | 自然语言理解

来自 | PaperWeekly

2fb02fa6491ac81f553c0ddba83a4f52.png

论文标题:

Few-Shot Class-Incremental Learning for Named Entity Recognition

收录会议:

ACL 2022

论文链接:

https://aclanthology.org/2022.acl-long.43

Abstract

之前的面向 NER 的类增量学习的工作都是基于新类有丰富的监督数据的情况,本文聚焦更具挑战且更实用的问题:少样本 NER 的增量学习。模型只用少量新类样本进行训练,保证新类效果的前提下不遗忘旧类知识。为了解决少样本类增量学习的灾难性遗忘问题,我们使用训练好的 NER 模型对旧类生成合成数据来提升新类训练效果。我们还提出一个框架,通过合成数据和真实数据将 NER 模型从过去 step 中进行蒸馏。实验结果表明我们的方法对比 baseline 取得了很大的提升。

8c07ba3e3a5d7b16e28a22eb5d7f50d5.png

Intro

传统的 NER 通常在大规模的数据集上训练,然后直接应用到测试数据上不进行更多的适配。实际上,测试数据的实体类往往在训练集中没有出现过,因此我们希望模型可以增量地学习新的实体类。其中一个问题就是之前旧的训练数据可能由于各种原因不可用了(隐私等原因),这样会使在新类上微调时造成灾难性遗忘。

之前的工作(Monaikul 等人,2021)通过对新实体类添加输出层(AddNER)以及对输出层进行扩展(ExtandNER)两种知识蒸馏的方式解决。但是这种方式需要大量的数据,这在实际问题中不太现实。因此本文遵循了一个更加实际的设置:

(i)使用少量新类样本进行增量学习;

(ii)不需要旧类训练数据。

对于 Monaikul 等人的工作,作者认为,大量的新类监督数据也包含大量旧类的实体,虽然这些实体在新类数据上没有标注,可以看作一种无标签的旧类实体的“替代”数据集,可以通用知识蒸馏简单的解决灾难性遗忘。然而在小样本设置下,不能寄希望于使用少量样本来进行知识蒸馏。

以此为背景,本文提出一个小样本增量学习 NER 的框架。受到上述问题的启发,作者认为既然使用少量样本不行,那就生成一些合成的数据进行蒸馏。本文通过翻转 NER 模型来生成合成的数据。

具体来说,给定一个旧类训练的模型,我们可以优化合成数据的 embeddings 使得旧类模型以合成数据为输入的预测结果包含旧实体类,因此使用这些合成数据进行蒸馏可以保留旧类的信息。此外,为了保证合成数据相对真实,我们提出利用新类的真实数据,对抗地将合成数据和真实数据的 token 隐藏特征相匹配。通过对抗匹配得到的合成数据在语义上更加接近于新类的真实数据。与只在少量样本上训练相比,合成数据提供了更多样化的信息。

本文的贡献如下:

1. 本文提出了第一个少样本增量学习的 NER 模型;

2. 我们使用真实数据和生成的合成数据来进行蒸馏的模型框架;

3. 实验表明我们的方法在少样本 NER 中取得了很好的效果。

bce58a1b3a88c9672258d68193440626.png

Method

代表数据流, 是大规模源域数据, 之后都是小样本的目标域数据。每个时间步上的数据集包含 个新实体。每个时间步的数据集只在当前时间步使用,在 t 时间步上,在 上进行评估。下图是增量学习的示例:

34dcd56e9f2b14d9aa15a51c1d5ee73f.png▲ 增量学习的示例,每个时间步分别有不同的实体类,最终预测时三个实体类都要预测。

2.1 The Proposed Framework

本文使用 BERT-CRF 作为基础 NER 模型, 代表 t 时间步的模型,其由 初始化。假设我们已经得到了合成数据(如何生成合成数据在后面会讲到)。

92dfa1d28e336e1c3fe3525d2dca3a24.png

其中

82cb56b3a66c140dc2c55ee739965c7f.png

是 token 的 embeddings:

a1de2b0292ee6946d9de1ad08a5c9ca5.png

是从过去 t-1 个时刻的实体类中随机采样构成的标签序列。token 的 embeddings 通过让 模型的输出匹配上随机采样的标签序列来进行优化,随后使用真实数据和合成数据进行知识蒸馏。

2.1.1 Distilling with Real Data

本文在 CRF 解码方面采用 topK 个预测序列,例如对于 模型,有:

fc5b527b86c362e22bcdeb4d1ebec820.png

▲ Mt-1对于Dt数据X的topK序列的预测概率分布

但是对于 来说, 无法准确预测 的新类别。为了从 中蒸馏知识,我们对 模型的预测序列进行了校正。示例如下图所示:

e43eccc13f5de0b0b5087f17763409e4.png▲ 将step2生成的标注结果其中1943位置的标签替换为“TIME”

这一步就是在训练 之前,将 的新类数据 X 输入到 中得到 topK 个预测结果,然后找到 X 中属于新类别的位置,将 得到的标签序列对应位置直接替换为新类标签。根据校正后的标签序列,计算预测的分布:

290416c8192a93450aa734881c3d8eb9.png▲ Mt对于校正后的topK序列的预测概率分布

真实数据蒸馏的损失为一个交叉熵损失:

4e88e0de0fffadcec2d36ab38c72f9c0.png▲ CE Loss

注:校正后的标签中“O”类别的语义在 M2 和 M3 中是一致的,因此这种校正不会造成额外的影响。

2.1.2 Distilling with Synthetic Data

与真实数据不同的是,合成数据只包含 t 步之前的标签,因此无法像真实数据一样对 CRF 的输出结果进行校正(   预测的“O”有可能在  中是“O”也有可能是新类)。

这里对于合成数据每个 token 的 embeddings,定义:

26844f32c07c2730cc40ec88377ad953.png▲ Mt模型预测的边缘概率分布

792e158c54c7d4cd528d0bb2f7c4fae4.png▲ Mt-1模型预测的边缘概率分布

其中:

64fb9bc5054e479299943472f419af49.png

▲ 1~t步累积的实体类数目

1c6078db64c72ba5f617502e16f3b1e6.png

▲ 属于“O”类的边缘概率

44f40f0549e3471d2b49e2e0e7f92c21.png▲ 属于Ct-1实体类的边缘概率

10de0e1e6dbe7223aa681548f2c046e3.png

▲ 属于新实体类的边缘概率

文章中将 t 步的边缘概率分布进行了一个合并,因为  中的“O”类实际上包含了 t 步的新实体类,合并方式如下:

71e853b2b86968215dc994effa1caf1c.png▲ 合并(个人认为这里书写错误,Ct-1不应该再减个1)

保证合并后 t 和 t-1 步的边缘概率分布维度一致。

合成数据的蒸馏损失为 KL 散度损失:

40fab633c568957c2c88c5a07d8fdf46.png▲ KL散度损失

最后,模型训练总的损失为 CE 和 KL 损失的加权和,本文权重参数设为 1:

ae76ab7ef8754ffca4cfb482c6e3b86c.png▲ 总loss

这里简单分析一下,CE 损失的目的是让模型学到新实体的知识,因为采用了类似于 teacher forcing 的方式,直接将正确标签插进去了,所以也能一定程度上减少模型对于其他位置预测结果的偏差,保留旧知识。KL 损失的目的是让两个模型对于合成数据预测的边缘概率分布尽可能一致,主要使模型保留旧知识,避免灾难性遗忘。

2.2 Synthetic Data Reconstruction

合成数据的构建一个很自然的想法是,随机采样旧实体类的序列 Y,然后随机初始化合成数据的嵌入 E,优化 E 使得  模型输出匹配上 Y。其损失函数为:

0d60d55754c7493178c728725a9a8c9d.png▲ 负对数损失

但是这样合成的数据可能并不真实,在合成数据上训练并且在真实数据上测试会存在 domain gap。因此本文提出使用对抗训练,利用真实数据使合成数据更加真实。

定义:

b72fe576d5aca52101b73b2154c6d35a.png

▲ Mt-1中BERT第l层的输出(合成数据)

4ce32323b39cf3d3f7281b6d314a4800.png

▲ Mt-1中BERT第l层的输出(Dt中真实数据)

作者希望两个隐藏状态能够彼此靠近。这里引入一个二分类判别器,由一个线性层和一 sigmoid 激活函数组成。二分类判别器的训练目标和对抗损失如下:

379b44987e90993eee227f97f343af2a.png▲ 二分类器的目标

78c4de83af1b746902112aa66227a7dc.png

▲ 对抗损失

最后,构建合成数据的总损失如下:

dc964783ffb51e68e7b32a17f96a2dce.png

▲ 总损失

其中,,即每两层之间进行匹配,β 是一个超参数,本文设置为 10。本文在训练过程中,冻结了 token embedding 层,目的有两点,第一是让每一个时间步之间的模型共享相同的 token embedding,第二是对于小样本设置来说,更新所有的参数会导致过拟合。

作者在这里分析,因为合成数据的实体标签都是旧类的标签,但是与其相匹配的数据却是只包含新类标签的  中的数据,作者认为这样会造成一些偏差。因此作者修改了匹配的方式,只将合成数据中标签为“O”的 token 与真实数据的 token 相匹配。

最后是生成合成数据的算法伪代码:

a16e396127b03f79f39817a19879b2f2.png▲ 生成合成数据的伪代码

ffb5a41dd9549983db45c19232d21baf.png

Experiments

3.1 数据集和设置

数据集采用 CoNLL2003(8 种实体类的顺序)和 Ontonote 5.0(按照字母排序,2 种组合方式)。

对于 CoNLL2003 采用 5-shot 和 10-shot 进行试验,OntoNote 5.0 采用 5-shot 训练。step1 是基数据集,只包含 step1 对应的实体类,few-shot 样本采用贪心采样的方式(Yang 和 Katiyar,2020)进行采样。


3.2 Baselines和消融实验

CI NER:类增量学习 NER 的 SOTA;

EWC++:一个解决灾难性遗忘的方法;

FSLL:类增量学习图片分类的 SOTA;

AS-DFD:无数据蒸馏的文本分类的 SOTA;

L-TAPNet+CDT:少样本序列标注的 SOTA。

1902f0563b9dbed983779af0021024ee.png▲ OntoNote上的消融实验


3.3 主实验

163cff469967387c8167b02b2e4973f7.png

▲ CoNLL2003 5-shot

c2fc8dd16c4a36b44c36b5dc7056f768.png

▲ CoNLL2003 10-shot

b5c160bd90411825b3e176ec0524c59b.png

▲ OntoNote 5.0 5-shot P1(左)P2(右)

作者还做了一个可视化的实验:

dcc157f2ce43aa1c056d1ece6f38c5b2.png

(a)中有少量 LOC 标签的合成数据和真实分布很接近,但是其他的更多合成数据与真实分布差的很远。这可能是因为“O”类可能包含多种多样的信息造成其很难构造,使用这样的合成数据会导致 domain shift。

(b)中合成数据匹配真实数据分布,但是只有很少一部分合成数据与 LOC 标签的 token 相近,这是由于上文所说 D2 中并不存在 LOC 标签,将合成数据所有  token 与 D2 数据匹配会导致偏离 LOC 标签,丢失很多旧标签的信息。

(c)中作者采用的方法合成数据中很多 token 与 LOC 接近,且其余 token 也与真实数据分布相匹配。

1124e545b5e94445f5fdc8ab82a81a4e.png

▲ 采用不同β

d410e45481b78c2c3c4d35b6571ae810.png

Conclusion

本文提出第一个类增量学习的少样本 NER 模型来解决灾难性遗忘。提出了使用上一时间步的模型来构建包含旧实体类的合成数据。合成数据提供了更加多样的包含新实体和旧实体的信息,使模型在少样本设置下不容易过拟合。本文也算是一篇启发性的论文,通过随机采样旧类实体标签序列以及只将“O”类与真实的新类数据以对抗的方式匹配,使合成数据更真实,且包含更多信息。


📝论文解读投稿,让你的文章被更多不同背景、不同方向的人看到,不被石沉大海,或许还能增加不少引用的呦~ 投稿加下面微信备注“投稿”即可。

最近文章

EMNLP 2022 和 COLING 2022,投哪个会议比较好?

一种全新易用的基于Word-Word关系的NER统一模型

阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果

ACL'22 | 快手+中科院提出一种数据增强方法:Text Smoothing

阿里+中科院提出:将角度margin引入到对比学习目标函数中并建模句子间不同相似程度

中文小样本NER模型方法总结和实战


下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

1a7c2daf24ebce3d301cc14a79353654.png

记得备注呦

整理不易,还望给个在看!

·

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值