论文分享➲ ACL22:Few-Shot Class-Incremental Learning for Named Entity Recognition | 命名实体识别中的少样本类增量学习

Few-Shot Class-Incremental Learning for Named Entity Recognition

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

在这里插入图片描述

📖导读:本篇博客有🦥精读版🐇速读版🤔思考三部分;精读版是全文的翻译,篇幅较长;如果你想快速了解论文方法,可以直接阅读速读版部分,它是对文章的通俗解读;思考部分是个人关于论文的一些拙见,欢迎留言指正、探讨。


目录


🦥精读版

Abstrct

  先前针对命名实体识别(NER)的类增量学习工作依赖这样一个假设:存在大量有标记的数据可用于新类别的训练。在本研究中,我们探讨了一个更具挑战性但也更贴合实际的问题,即NER中的少样本类增量学习。在该问题中,NER模型仅使用新类别中少量的有标记样本进行训练,同时不能遗忘旧类别相关知识。为缓解少样本类增量学习中的灾难性遗忘问题,我们利用已训练的NER模型生成旧类别的合成数据,以此扩充新类别的训练数据。我们进一步开发了一个框架,该框架既能利用合成数据,又能利用当前训练集中的真实数据,对先前步骤中的NER模型进行知识蒸馏。实验结果表明,我们的方法相较于现有基准方法取得了显著的改进。

1. Introduction

  现有的命名实体识别(NER)模型通常是在带有预定义实体类别的大规模数据集上进行训练,然后直接部署到测试数据上进行实体提取,无需进一步的调整或优化。在实际应用中,NER模型在训练期间未曾见过的新实体类别的数据会不断出现,因此,人们期望NER模型能够随着时间推移,利用这些新类别的数据知识进行增量更新。在这种情况下,面临的一个挑战是,出于隐私方面的考量或内存限制等原因(Ma等人,2020年),旧实体类别的训练数据可能无法获取。如此一来,当仅使用新实体类别的标注信息对模型进行微调时,模型在旧类别上的性能很容易下降,也就是会出现灾难性遗忘的问题。为解决这一问题,先前针对NER的类增量学习相关工作(Monaikul等人,2021年)利用来自新类别训练数据集的文本,通过从旧(已有)类别上训练的先前模型中进行知识蒸馏,来对当前模型进行正则化处理。然而,这需要新的用于蒸馏的训练数据集中有大量的数据。这样的假设通常是不现实的,因为NER训练所需的词元级标注工作十分耗费人力,而且非常稀缺,对于那些新的未见过的类别来说更是如此。在本文中,我们研究了一种更贴合实际的设置,即NER中的少样本类增量学习,在这种设置下,模型 ( i ) (i) (i)利用少量标注信息对新类别进行增量学习,并且 ( i i ) (ii) (ii)无需访问旧类别的训练数据。

  在NER的少样本类增量学习方面,相关的研究工作非常有限。与NER的类增量学习相比,这种设置更具挑战性。首先,少样本类增量学习中的少样本数据集可能无法包含足够的信息,以供训练后的模型在测试期间进行泛化。其次,在无法获取旧类别数据且新数据稀缺的情况下,解决少样本类增量学习中的灾难性遗忘问题更具挑战性。在NER的类增量学习(Monaikul等人,2021年)中,同一训练序列可能包含不同类别的实体。因此,当新类别的训练数据集足够大时,其上下文(即被标记为不属于新类别实体的单词)中可能也包含大量旧类别的实体。也就是说,新的训练数据可以被视作现有实体类别的无标记重放数据集。在这种情况下,我们可以简单地通过使用来自这样一个重放数据集(Monaikul等人,2021年)的文本,将先前模型(在旧类别上训练的模型)的知识蒸馏到当前模型,以此来解决灾难性遗忘问题。然而,在少样本类增量学习中,我们不能期望仅通过利用新训练数据集中的少量样本进行知识蒸馏来避免灾难性遗忘,因为其中可能不存在足够多(甚至根本没有)旧类别的实体。

  在本文中,我们提出了一个用于实现NER少样本类增量学习的框架。如前文所述,由于少样本数据集可能未包含足够多的旧类别实体作为从先前模型进行知识蒸馏的重放数据,进而导致灾难性遗忘,因此我们考虑生成旧实体类别的合成数据用于蒸馏。这类数据被称作合成重放数据。具体而言,我们通过对NER模型进行反向操作来生成旧类别的合成数据样本。给定在旧类别上训练得到的先前模型,我们对合成数据的词元嵌入进行优化,使得先前模型在将合成数据作为输入时,其预测结果能够包含旧实体类别。通过这种方式,合成数据很可能包含旧类别的实体,利用此类数据从先前模型中进行知识蒸馏,将有助于旧类别知识的保留。此外,为确保合成(重构)数据的真实性,我们提议借助新类别中现成可用的真实文本数据,通过对抗匹配的方式,使合成数据中词元的隐藏特征与真实数据中词元的隐藏特征相匹配。需要注意的是,通过这种与真实数据进行对抗匹配而生成的合成数据将包含与新类别真实文本数据相近的语义。因此,与仅使用新类别的少量样本进行训练相比,合成数据将提供与少样本数据集样本更为接近的更多样化的上下文,从而扩充了新类别的少样本训练。进一步地,借助生成的合成数据,我们提出了一个框架,该框架利用新类别的标注信息对NER模型进行训练,同时利用合成数据以及来自新训练数据的真实文本,从先前模型中进行知识蒸馏。我们这项工作的贡献总结如下:

  • 我们率先开展了针对命名实体识别(NER)少样本增量学习的研究工作,与NER的类增量学习相比,这是一个更贴合实际但也更具挑战性的问题。

  • 我们通过提出一个框架来解决该问题,该框架利用新实体类别的真实数据以及从模型重构得到的、作为旧实体类别重放数据的合成数据,从现有模型中进行知识蒸馏。

  • 实验表明,对于NER少样本类增量学习这一任务,我们的方法相较于现有基准方法有了显著的改进。


图1:NER少样本类增量学习中不同时间步长的假定标注情况,以及在第3步训练后预期的模型预测结果。在我们的实验中,我们并不假定不同时间步长的数据集会共享相同的句子。

2. 背景

2.1问题定义

  假设存在一系列NER数据集 D 1 , ⋯   , D t , ⋯ \mathcal{D}^1, \cdots, \mathcal{D}^t, \cdots D1,,Dt,,这些数据集标注有互不相交的实体类别,其中 t t t 为时间步长,并且 D t = { ( X t i , Y t i ) } i = 1 ∣ D t ∣ \mathcal{D}^t = \{(X^i_t, Y^i_t)\}_{i = 1}^{|\mathcal{D}^t|} Dt={(Xti,Yti)}i=1Dt 包含 c t c^t ct 个实体类别。在此, X t i = [ x i , 1 t , ⋯   , x i , N i t ] X^i_t = [x_{i,1}^t,\cdots,x_{i,N_i}^t] Xti=[xi,1t,,xi,Nit] 以及 Y t i = [ y i , 1 t , ⋯   , y i , N i t ] Y^i_t = [y_{i,1}^t,\cdots,y_{i,N_i}^t] Yti=[yi,1t,,yi,Nit] 分别是NER的词元序列和标签序列,其长度为 N i N_i Ni,而 ∣ D t ∣ |\mathcal{D}^t| Dt 表示该数据集的规模。数据集 D 1 \mathcal{D}^1 D1 是基础数据集,假定在步骤 t = 1 t = 1 t=1 时,其对应各类别的数据规模是比较大的。数据集 { D t } t > 1 \{\mathcal{D}^t\}_{t > 1} {Dt}t>1 属于少样本数据集,每个类别大约有 K K K 个样本。在少样本类增量学习中,NER模型会随着时间推移,利用 D 1 , D 2 , ⋯ \mathcal{D}^1,\mathcal{D}^2,\cdots D1,D2, 进行增量训练,并且只有在第 t t t 个时间步长时才能获取到 D t \mathcal{D}^t Dt 的数据。在用 D t \mathcal{D}^t Dt 训练完之后,模型将会对在 D 1 , ⋯   , D t \mathcal{D}^1,\cdots,\mathcal{D}^t D1,,Dt 中遇到的所有实体类别进行联合评估,也就是说,我们不会为每个时间步长单独学习预测模块。图1展示了针对 PER、LOC、TIME 等类别在不同增量学习步骤下标注情况的一个示例。

  在图1中,我们应当注意到,在当前步骤中被标记为 O O O(表示不属于实体类别)的词元很可能包含大量来自先前类别的实体。例如,在第3步中被标注为 O O O 的词元包含了先前类别的实体,即 PER 类别和 LOC 类别。因此,当新类别有大量训练数据可用时,新数据集可被视作先前类别的无标记重放数据。例如,在Monaikul等人(2021年)的研究中,他们在CoNLL2003数据集上进行类增量学习时,仅仅通过利用新类别的训练数据进行知识蒸馏,其性能就已经与使用所遇到的所有类别完整标注进行训练时的性能相当,甚至更好。然而,在少样本类增量学习中,当前步骤的少量训练样本可能并不包含足够多的先前类别的实体。在第4节中,我们还会讨论NER中少样本类增量学习与少样本学习之间的差异。

3. NER的少样本类增量学习

3.1 所提出的框架

  参照Beltagy等人(2019年)以及Souza等人(2019年)的做法,我们使用BERT-CRF作为我们的NER模型,该模型由一个基于BERTbase 版本(Devlin等人,2018年)的编码器(带有线性投影)以及一个用于预测的条件随机场(CRF)(Lafferty等人,2001年)层构成。我们将步骤 t t t下的NER模型记为 M t M^t Mt M t M^t Mt通过从 M t − 1 M^{t - 1} Mt1进行初始化,以保留旧类别的知识。对于时间步 t > 1 t > 1 t>1时,期望 M t M^t Mt能从 D t \mathcal{D}^t Dt中学习新类别,同时不会遗忘来自 { D k } k = 1 t − 1 \{\mathcal{D}^k\}_{k = 1}^{t - 1} {Dk}k=1t1的知识。假设我们已经获取了一个关于先前实体类别 { D k } k = 1 t − 1 \{\mathcal{D}^k\}_{k = 1}^{t - 1} {Dk}k=1t1的合成数据集 D r t = { ( E i t , r , Y i t , r ) } i = 1 ∣ D r t ∣ \mathcal{D}_r^t = \{ (E^{t,r}_i, Y^{t,r}_i) \}_{i = 1}^{|\mathcal{D}_r^t|} Drt={(Eit,r,Yit,r)}i=1Drt,其中 E i t , r = [ e i , 1 t , r , ⋯   , e i , N i t , r ] E^{t,r}_i = [e^{t,r}_{i,1}, \cdots, e^{t,r}_{i,N_i}] Eit,r=[ei,1t,r,,ei,Nit,r]以及 Y i t , r = [ y i , 1 t , r , ⋯   , y i , N i t , r ] Y^{t,r}_i = [y^{t,r}_{i,1}, \cdots, y^{t,r}_{i,N_i}] Yit,r=[yi,1t,r,,yi,Nit,r]分别是重构的词元嵌入和参考标签序列。 Y i t , r Y^{t,r}_i Yit,r是一个随机采样的包含来自先前步骤各类别的标签序列,并且 E i t , r E^{t,r}_i Eit,r经过优化,使得 M t − 1 M^{t - 1} Mt1 E i t , r E^{t,r}_i Eit,r作为输入时的输出与 Y i t , r Y^{t,r}_i Yit,r相匹配。我们将在3.2节讨论合成数据集 D r t \mathcal{D}^t_r Drt的构建方式。给定当前训练数据 D t \mathcal{D}^t Dt以及已经在 D t − 1 \mathcal{D}^{t - 1} Dt1上训练过的 M t − 1 M^{t - 1} Mt1,我们建议通过利用来自 D t \mathcal{D}^t Dt的真实数据以及来自 D r t \mathcal{D}^t_r Drt的合成数据,从 M t − 1 M^{t - 1} Mt1进行知识蒸馏来训练 M t M^t Mt。这种知识蒸馏面临的挑战在于, M t M^t Mt M t − 1 M^{t - 1} Mt1的预测结果很可能包含不同的标签集,也就是说, M t M^t Mt还应当能基于来自 D t \mathcal{D}^t Dt的新实体类别进行预测。这与知识蒸馏的标准设定有所不同,在标准设定中,教师模型和学生模型共享相同的标签空间(Hinton 等人,2015年)。为解决这种标签空间差异的问题,我们分别针对 D t \mathcal{D}^t Dt D r t \mathcal{D}^t_r Drt提出了不同的知识蒸馏方法。

在这里插入图片描述

图2:(a)图1中第3步处公式(4)的 L s y n L^{syn} Lsyn示例。(b)图1中第3步处使用 D t \mathcal{D}^{t} Dt进行蒸馏的示例。 M 2 M^{2} M2 M 3 M^{3} M3分别是第2步和第3步的模型。在对 M 3 M^{3} M3进行训练之前,我们用 D 3 \mathcal{D}^{3} D3中的正确标注“TIME”替换了 M 2 M^{2} M2 在“1943”这一位置上的预测结果。

3.1.1 利用真实数据 D t \mathcal{D}^t Dt进行知识蒸馏

  从 M t − 1 M^{t - 1} Mt1 M t M^t Mt的知识蒸馏涉及使 M t M^t Mt M t − 1 M^{t - 1} Mt1之间的输出分布相匹配。然而,给定来自 D t \mathcal{D}^t Dt的一个输入序列 X X X,条件随机场(CRF)层的输出对应于一个序列层面的分布 P θ ( Y ∣ X ) P_{\theta}(Y|X) Pθ(YX),也就是 X X X所有可能标签序列的概率,其基数会随着 X X X的长度呈指数级增长。因此,要与CRF的精确输出分布进行匹配是不可行的。参照当前NER知识蒸馏领域最先进的方法(Wang 等人,2020b),我们仅用其前 S S S个预测结果来近似CRF的序列层面输出分布。具体而言,对于模型 M t − 1 M^{t - 1} Mt1,我们有:

在这里插入图片描述

其中, { Y ^ s } s = 1 S \{\hat{Y}_s\}_{s = 1}^{S} {Y^s}s=1S是来自 M t − 1 M^{t - 1} Mt1的标签序列中概率最高的前 S S S个预测结果。我们将 S S S设定为10。通过这种方式, M t − 1 M^{t - 1} Mt1的条件随机场(CRF)输出变得易于处理。然而, M t M^t Mt仍然无法利用 M t − 1 M^{t - 1} Mt1的此类输出进行训练。这是因为 M t − 1 M^{t - 1} Mt1未曾使用 D t \mathcal{D}^t Dt中的新类别进行训练。因此,当输入序列 X X X来自 D t \mathcal{D}^t Dt时, M t − 1 M^{t - 1} Mt1会对那些标记为来自新类别实体的词元做出错误预测。为了能够利用 M t − 1 M^{t - 1} Mt1进行知识蒸馏,我们针对 { Y ^ s } s = 1 S \{\hat{Y}_s\}_{s = 1}^{S} {Y^s}s=1S提出一种修正方法。图2(b)展示了这样一个过程的示例。具体来说,在序列中那些被 D t \mathcal{D}^t Dt标记为新类别的位置上,我们用 D t \mathcal{D}^t Dt中的标注来替换 { Y ^ s } s = 1 S \{\hat{Y}_s\}_{s = 1}^{S} {Y^s}s=1S中的预测结果。我们将修正后的预测结果集记为 { Y ^ s c } s = 1 S \{\hat{Y}_s^c\}_{s = 1}^{S} {Y^sc}s=1S。对于 M t M^t Mt的训练,我们首先根据 { Y ^ s c } s = 1 S \{\hat{Y}_s^c\}_{s = 1}^{S} {Y^sc}s=1S来计算 M t M^t Mt的预测分布,如下所示:

在这里插入图片描述

其中,我们计算来自 M t M^t Mt相对于来自 M t − 1 M^{t - 1} Mt1 { Y ^ s c } s = 1 S \{\hat{Y}_s^c\}_{s = 1}^{S} {Y^sc}s=1S的预测概率。然后,可以通过最小化 P ^ M t − 1 ( Y ∣ X ) \hat{P}_{M^{t - 1}}(Y|X) P^Mt1(YX) P ^ M t ( Y ∣ X ) \hat{P}_{M^{t}}(Y|X) P^Mt(YX)之间的交叉熵,按照以下方式来训练 M t M^t Mt

在这里插入图片描述

其中, C E ( ⋅ , ⋅ ) CE(\cdot, \cdot) CE(,)是交叉熵函数。需要注意的是,在 M t − 1 M^{t - 1} Mt1 M t M^t Mt中, O O O 的定义是不同的。以图2(b)为例,步骤2中对 O O O的预测对应着步骤3中的 O O O以及 TIME,这是因为 TIME 并不在步骤2的目标实体类别当中。然而,从步骤3的标注来看,我们知道被标注为 O O O的词元并非 TIME。因此,我们可以合理地假定,来自 M 2 M^2 M2 { Y ^ s c } s = 1 S \{\hat{Y}_s^c\}_{s = 1}^{S} {Y^sc}s=1S中对 O O O的预测与 M 3 M^3 M3 O O O的定义是相匹配的,也就是说,在 { Y ^ s c } s = 1 S \{\hat{Y}_s^c\}_{s = 1}^{S} {Y^sc}s=1S O O O的语义对于 M t M^t Mt M t − 1 M^{t - 1} Mt1来说是相同的。

3.1.2 利用合成数据 D r t \mathcal{D}^t_r Drt进行蒸馏

  与 D r \mathcal{D}^r Dr中的数据不同(在 D r \mathcal{D}^r Dr中,我们知道被标注为 O O O 的词元并非来自新类别),来自 D r t \mathcal{D}^t_r Drt的数据是通过 M t − 1 M^{t - 1} Mt1重构得到的,并且仅包含先前类别的标签。来自 M t − 1 M^{t - 1} Mt1的任何被预测为 O O O 的词元,都有可能被 M t M^t Mt标注为 O O O 或者新类别。因此,对于 D r t \mathcal{D}^t_r Drt而言,不清楚该如何修正 M t − 1 M^{t - 1} Mt1的条件随机场(CRF)输出(即 { Y ^ s } s = 1 S \{\hat{Y}_s\}_{s = 1}^{S} {Y^s}s=1S)来用于 M t M^t Mt的训练。鉴于上述情况,我们借助另一种方法,即利用Lafferty 等人(2001年)提出的前向 - 后向方法,将条件随机场(CRF)的输出(也就是序列层面的标签分布)分解为针对每个词元的边际标签预测。图2(a)展示了我们利用 D r t \mathcal{D}^t_r Drt计算蒸馏损失 L s y n L^{syn} Lsyn的示例图。具体来说,设 C t C^t Ct为在步骤 t t t的NER中任意给定词元的可能标签的累积数量,即 C t = ∑ k = 1 t c t C^t = \sum_{k = 1}^{t} c^t Ct=k=1tct,其中 c t c^t ct D t \mathcal{D}^t Dt中的类别数量。对于每个具有嵌入表示 e e e的词元,我们分别将 p e t = [ p e , O t ; p e , C t − 1 t ; p e , c t t ] p^t_e = [p^{t}_{e,O}; p^{t}_{e,C^{t - 1}}; p^{t}_{e,c^{t}}] pet=[pe,Ot;pe,Ct1t;pe,ctt]以及 p e t − 1 = [ p e , O t − 1 ; p e , C t − 1 t − 1 ] p^{t - 1}_{e} = [p^{t - 1}_{e,O}; p^{t - 1}_{e,C^{t - 1}}] pet1=[pe,Ot1;pe,Ct1t1]定义为来自 M t M^t Mt M t − 1 M^{t - 1} Mt1的词元预测边际分布。 p e , O t p^{t}_{e,O} pe,Ot p e , O t − 1 ∈ R p^{t - 1}_{e,O} \in \mathbb{R} pe,Ot1R是类别 O O O 的概率,而 p e , C t − 1 t p^{t}_{e,C^{t - 1}} pe,Ct1t p e , C t − 1 t − 1 ∈ R C t − 1 p^{t - 1}_{e,C^{t - 1}} \in \mathbb{R}^{C^{t - 1}} pe,Ct1t1RCt1是截至步骤 t − 1 t - 1 t1所遇到的实体类别的概率。此外, p e , c t t ∈ R c t p^{t}_{e,c_{t}} \in \mathbb{R}^{c^{t}} pe,cttRct是步骤 t t t中新类别的概率。由于步骤 t − 1 t - 1 t1中的 O O O 对应着步骤 t t t中的 O O O 以及 c t c^{t} ct个新类别,我们首先通过计算 p ^ e t = [ sum ( p e , O t , p e , c t t ) ; p e , C t − 1 t ] \hat{p}^{t}_{e} = [\text{sum}(p^{t}_{e,O}, p^{t}_{e,c^{t}}); p^{t}_{e,C^{t - 1}}] p^et=[sum(pe,Ot,pe,ctt);pe,Ct1t]来合并 p e t p^{t}_{e} pet(此处是将 O O O c t c^{t} ct个新类别的预测进行合并)。通过这种方式, p ^ e t \hat{p}^{t}_{e} p^et将与 p e t − 1 p^{t - 1}_{e} pet1具有相同的维度。设 E r t E^t_r Ert D r t \mathcal{D}^t_r Drt中包含的所有词元的嵌入表示集合。针对 D r t \mathcal{D}^t_r Drt的蒸馏损失为:

在这里插入图片描述

其中, KL ( ⋅ ∣ ∣ ⋅ ) (\cdot || \cdot) (∣∣)是KL散度。

3.1.3 整体目标

  在步骤 t t t时用于训练 M t M^t Mt的整体目标由以下式子给出:

在这里插入图片描述

其中, L r e a l ( ⋅ ) L^{real}(\cdot) Lreal() L s y n ( ⋅ ) L^{syn}(\cdot) Lsyn()分别对应着利用 D t \mathcal{D}^t Dt中的真实数据以及 D r t \mathcal{D}^t_r Drt中的合成数据进行知识蒸馏时的损失,而 α \alpha α是一个用于平衡 D t \mathcal{D}^t Dt D r t \mathcal{D}^t_r Drt相关损失的参数。在实验中,我们设定 α = 1 \alpha=1 α=1

3.2 合成数据重构

  现在我们来描述如何从 M t − 1 M^{t - 1} Mt1重构 D r t \mathcal{D}^t_r Drt。给定一个随机采样的包含来自 { D k } k < t \{\mathcal{D}^k\}_{k<t} {Dk}k<t中旧实体类别的标签序列 Y Y Y,我们尝试重构与其训练数据相对应的嵌入序列 E E E。为此,我们随机初始化嵌入向量 E E E,然后使用梯度下降法对 E E E的参数进行优化,使得其通过 M t − 1 M^{t - 1} Mt1输出的结果与期望的标签序列 Y Y Y相匹配。形式上,我们通过最小化条件随机场(CRF)的训练损失来优化 E E E,如下所示:

在这里插入图片描述

  这种重构方式存在的一个问题是,最终生成的合成嵌入向量 E E E可能不真实。这将会导致在旧实体的合成数据上进行训练,但在真实数据上进行测试时出现领域差异。为缓解这一问题,我们建议通过利用来自 D t \mathcal{D}^t Dt的真实数据,促使合成数据更贴合实际情况。

  令 h l t − 1 , s y n ( E r t ) h^{t - 1,syn}_{l}(E^t_r) hlt1,syn(Ert) M t − 1 M^{t - 1} Mt1中BERT编码器第 l l l层针对合成词元嵌入向量集合 E r t E^t_r Ert所产生的隐藏状态。类似地,令 h l t − 1 , r e a l ( e m b ( X t ) ) h^{t - 1,real}_{l}(emb(X^t)) hlt1,real(emb(Xt)) M t − 1 M^{t - 1} Mt1中第 l l l层针对来自 D r t \mathcal{D}^t_r Drt的真实词元集合 X t X^t Xt所输出的隐藏状态。此外, e m b ( ⋅ ) emb(\cdot) emb()是嵌入层。我们建议通过对抗的方式来匹配 h l t − 1 , s y n ( E r t ) h^{t - 1,syn}_{l}(E^t_r) hlt1,syn(Ert) h l t − 1 , r e a l ( e m b ( X t ) ) h^{t - 1,real}_{l}(emb(X^t)) hlt1,real(emb(Xt)),使得来自真实数据和合成数据的隐藏状态彼此之间不会相差太大。通过这种方式,从 D r t \mathcal{D}^t_r Drt重构得到的嵌入向量就更有可能符合实际情况。具体而言,设 M l M_l Ml为一个二分类判别器模块,即带有Sigmoid输出的单层线性投影,其输入为真实隐藏状态和合成隐藏状态,

在这里插入图片描述

最后,用于重构 D r t \mathcal{D}^t_r Drt的损失为:

在这里插入图片描述

其中, l s = 2 , 4 , ⋯   , 12 l^s = 2, 4, \cdots, 12 ls=2,4,,12,也就是说,我们对 M t − 1 M^{t - 1} Mt1中BERT编码器的每两层进行匹配。 β \beta β是一个平衡参数,在实验中默认取值为10。由于我们使用从 M t − 1 M^{t - 1} Mt1重构得到的词元嵌入来训练 M t M^t Mt,所以在训练期间我们冻结BERT词元嵌入层,这样 M t − 1 M^{t - 1} Mt1 M t M^t Mt就能共享相同的词元嵌入。对于少样本学习的设定而言,这也是合理的,因为使用少量样本对所有模型参数进行调优会导致过拟合问题。

算法1 由 M t − 1 M^{t-1} Mt1构建 D r t \mathcal{D}^t_r Drt的算法
在这里插入图片描述

  我们应当考虑的另一个问题是,真实数据 D t \mathcal{D}^t Dt和合成数据 D r t \mathcal{D}^t_r Drt可能包含不同的实体类别集合,也就是说,少样本数据集 D t \mathcal{D}^t Dt中可能并不包含 D r t \mathcal{D}^t_r Drt中旧类别的实体。在这种情况下,对于 D r t \mathcal{D}^t_r Drt中旧类别的词元嵌入(即满足 { e i , j ∣ y i , j t , r ≠ O } \{e_{i,j} | y^{t,r}_{i,j} \neq O\} {ei,jyi,jt,r=O}的那些),将这些嵌入的隐藏状态与来自 D t \mathcal{D}^t Dt的隐藏状态进行匹配,会干扰这些嵌入朝着旧类别实体的方向进行优化,我们将在实验中对此进行展示。因此,我们对公式(4)中 E r t E^t_r Ert的定义进行了扩展,通过将 D r t \mathcal{D}^t_r Drt中旧实体类别的嵌入排除在匹配之外,也就是令 E r t = { e i , j ∣ y i , j t , r = O } E^t_r = \{e_{i,j} | y^{t,r}_{i,j} = O\} Ert={ei,jyi,jt,r=O},而 X t X^t Xt则包含来自 D t \mathcal{D}^t Dt的所有真实词元。算法1展示了构建 D r t \mathcal{D}^t_r Drt的完整流程。

  由于 D r t \mathcal{D}^t_r Drt包含了先前步骤中的旧类别实体,利用 L s y n ( D r t ) L^{syn}(\mathcal{D}^t_r) Lsyn(Drt)进行知识蒸馏将有助于保留旧实体类别的知识,也就是说,能够避免灾难性遗忘,而且无需访问先前步骤中的真实数据。此外,有了 D r t \mathcal{D}^t_r Drt M t M^t Mt不再仅仅依靠来自 D t \mathcal{D}^t Dt的少量样本进行训练,因此不太容易出现过拟合的情况。这是因为在计算能力限制范围内, D r t \mathcal{D}^t_r Drt能够构建出相对更大规模的数据,例如几千个句子。另外,由于 D r t \mathcal{D}^t_r Drt D t \mathcal{D}^t Dt的词元嵌入能够紧密匹配,所以 D r t \mathcal{D}^t_r Drt的语义可以与 D t \mathcal{D}^t Dt相近。因此,与仅使用 D t \mathcal{D}^t Dt进行训练相比, D r t \mathcal{D}^t_r Drt在训练期间为 M t M^t Mt提供了更多样化的文本信息。而且,来自 D r t \mathcal{D}^t_r Drt的旧类别实体可以被视作训练 D t \mathcal{D}^t Dt中新类别时的负样本,从而减少训练期间 M t M^t Mt在新旧类别之间产生的混淆。

4. 相关工作

类增量学习: 与持续学习(例如Hu等人在2018年所研究的那样,持续学习是按顺序在不同任务(通常具有不同类别)上进行学习,并且需要任务标签来进行预测)不同,类增量学习旨在在不知道任务标签的情况下,对所有遇到过的类别进行联合预测。Sun等人(2019年)以及Ke等人(2021年)已经针对自然语言处理(NLP)中的不同任务开展了持续学习方面的研究。近期,Monaikul等人(2021年)对NER的类增量学习进行了研究,构建了一个随时间推移能对所有遇到的类别进行统一处理的NER分类器。关于这种方法存在两个问题。首先,Monaikul等人(2021年)的方法仅适用于非基于条件随机场(CRF)的模型。然而,当前许多最先进的NER模型都是构建有条件随机场模块的(Liu等人,2019年;Chen等人,2020年;Wang等人,2021年)。其次,该方法假定新类别有大量可用数据,但这是不现实的,因为通常未见过的类别的标注数据往往很稀缺。在这项工作中,我们假定对于新类别只有少样本数据集可用,也就是少样本类增量学习,这种学习方式由Tao等人(2020年)以及Mazumder等人(2021年)提出,但尚未在NER领域开展研究。此外,需要注意的是,类增量学习与基于情节训练的元学习(Ding 等人,2021年;Finn等人,2017年)是不同的,因为元学习中的任务/类别在情节训练中可能会多次出现,而我们假定在类增量学习中每个类别的数据集仅出现一次。

少样本学习: 少样本学习的模型通常先使用基础数据集进行训练,然后学习利用少量样本对未见过的目标类别进行预测。其中一类相关研究工作是基于度量学习展开的。这类工作一般涉及通过学习比较词元特征与类别原型(Hou等人,2020年)或者与目标类别的已存储查询样本(训练数据)(Yang 和Katiyar, 2020)来进行预测。后者违反了我们的类增量学习设定,因为出于隐私等问题,存储训练数据是不可行的。另外,Huang等人(2020年)通过利用来自网络的带噪或无标签数据进行数据扩充,以此避免少样本学习中的过拟合问题。我们的方法与Huang等人(2020年)类似,即我们也会使用额外的数据来扩充当前步骤的少样本训练,只不过我们使用生成的合成数据而非真实数据。近期,Cui等人(2021年)提出了Template NER,这是一种好用的少样本学习NER模型,它将NER转化为一个序列到序列的问题。我们的少样本类增量学习与常规少样本学习存在不同之处在于:i)少样本学习要求不同类别的数据同时到达,并且对所有目标类别都要有完整的标注,而少样本类增量学习的数据是按顺序依次到达的,且仅包含当前步骤中各类别的标注。ii)现有的少样本NER相关工作为目标类别和基础类别分别构建了不同的预测模块,并且在评估过程中忽略了基础类别的性能表现,因此与类增量学习不兼容。

无数据蒸馏: 无数据蒸馏指的是在教师模型的训练数据不可用的情况下,我们从教师模型向学生模型进行知识蒸馏的情形。一种典型的解决方案是从已训练好的教师模型中重构合成训练数据以用于蒸馏。这样的设定此前在图像分类(Yin 等人,2020年)和文本分类(Ma等人,2020年)的模型压缩方面已经有所探索。然而,在NER场景中,这一设定尚未被研究过。我们将无数据蒸馏用于在少样本类增量学习中实现当前步骤与先前步骤的模型之间的知识转移。

5. 实验

5.1 数据集与实现

  遵循先前在NER类增量学习方面的相关工作(Monaikul等人,2021年),我们使用两个数据集进行实验:CoNLL2003和Ontonote 5.0。对于CoNLL2003数据集,我们的结果是按照Monaikul等人(2021年)的做法,对每个步骤中实体类别进行八种不同排序后取平均值得到的。对于Ontonote 5.0数据集,我们按照字母顺序对实体进行排序,并针对不同步骤对不同实体类别的两种组合开展实验。附录中的表3和表4列出了每个步骤所使用的实体类别。由于CoNLL2003是一个相对较小的数据集,我们针对它开展了5-shot和10-shot的实验,而针对Ontonote 5.0只进行5-shot的实验。参照Yang 和Katiyar(2020年)的做法,我们的基础数据集(也就是步骤1的数据集)是CoNLL2003和Ontonote 5.0的训练数据,并且仅用步骤1中包含的实体类别进行标注。少样本数据集则是通过贪心采样(Yang 和Katiyar,2020年)从评估数据集中采样得到的。每个步骤所得到的NER模型都会在整个测试集上进行测试。更多详细内容请参考附录。

5.2 基线模型与消融研究

  我们将自己的方法与NER类增量学习(CI NER)领域的前沿工作进行对比。此外,我们实现了EWC++(Chaudhry 等人,2018年)方法,并设其中的参数 α = 0 \alpha=0 α=0,也就是利用权重正则化来避免遗忘,而非生成合成数据。我们还实现了FSLL(Mazumder 等人,2021年)方法,这是一种在图像分类领域基于度量学习的少样本类增量学习的前沿方法。正如在相关工作部分所提到的,我们的方法可被视为无数据蒸馏。因此,我们也纳入了AS - DFD(Ma等人,2020年)方法,它是文本分类领域无数据蒸馏的前沿方法。具体来说,我们使用AS - DFD中描述的对抗正则化方法而非公式(8)来构建 D r t \mathcal{D}^t_r Drt。我们还对L - TAPNet + CDT(Hou等人,2020年)方法进行调整以用于对比。L - TAPNet + CDT是在带有条件随机场(CRF)模块的序列标注少样本学习方面的前沿工作。关于我们如何将其适配用于类增量学习,请参考附录内容。

  作为一项消融研究,我们将自己的方法与以下几种情况进行对比: i i i O u r s ( α = 0 ) Ours (α = 0) Ours(α=0),仅使用 D t \mathcal{D}^t Dt进行训练,并且将参数 α \alpha α设置为0。 i i ii ii O u r s ( α = 0 , m a r g ) Ours (α = 0, marg) Ours(α=0,marg),同样是将 α \alpha α设置为0进行训练。不同之处在于,我们不使用基于 L r e a l ( D t ) L^{real}(\mathcal{D}^t) Lreal(Dt)的序列级蒸馏,而是像之前在公式(4)所描述的那样,将条件随机场(CRF)的输出分解为针对每个词元的边际预测。通过这种方式,对于基于条件随机场(CRF)的NER模型,我们可以直接应用CI NER(Monaikul等人,2021年)中的词元级蒸馏方法。将其与 O u r s ( α = 0 ) Ours (α = 0) Ours(α=0)进行对比,旨在展示针对基于条件随机场(CRF)的模型直接应用词元级蒸馏的性能表现。 i i i iii iii O u r s ( β = 0 ) Ours (β = 0) Ours(β=0),我们通过设置 β = 0 \beta=0 β=0来检验 L a d v L^{adv} Ladv的有效性。 i v iv iv O u r s Ours Ours ( a l l (all (all t o k e n s ) tokens) tokens),该情况会将 D r t \mathcal{D}^t_r Drt中的所有合成词元与 D t \mathcal{D}^t Dt中的真实词元进行匹配,而不是像公式(8)之后所描述的那样,仅将 D r t \mathcal{D}^t_r Drt中标记为 O O O 的词元与 D t \mathcal{D}^t Dt中的词元进行匹配。


表1:CoNLL2003上5-shot学习的结果。


表1:CoNLL2003上10-shot学习的结果。

5.3 少样本类增量学习的结果

  表1和表2展示了在CoNLL2003数据集上少样本类增量学习不同步骤的F1分数。这些数值是按照(Monaikul等人,2021年)中的做法,对八种排列情况取平均值得到的。我们的方法在5次采样学习和10次采样学习这两种情况下,均优于所有考虑在内的基线方法。尤其需要指出的是,CI NER(Monaikul等人,2021年)在所有方法中结果最差。这是因为CI NER的性能依赖于来自 D t \mathcal{D}^t Dt的大量数据,以便对先前的实体进行重放学习。所以,在少样本场景下它表现不佳,毕竟在少样本场景中,仅有少量样本的 D t \mathcal{D}^t Dt可能并不包含用于重放学习的旧类别实体。此外,我们发现AS - DFD(Ma等人,2020年)的性能略低于 O u r s ( β = 0 ) Ours (β = 0) Ours(β=0),也就是仅使用基于 L c r f L^{crf} Lcrf重构的数据进行知识蒸馏的情况。AS - DFD是为文本分类而设计的,在该方法中,他们使用来自BERT的特殊词元 [CLS] 的特征进行分类,而文本中非特殊词元的特征则通过一个扩充的语言建模任务来进行训练。然而,在NER中,非特殊词元的特征是直接用于预测的。因此,同时使用语言建模来训练这些特征可能会干扰模型学习NER所需的特定任务信息。

  在消融研究中,我们发现我们的对抗匹配方法确实提高了合成数据的质量( O u r s Ours Ours vs. O u r s ( β = 0 ) Ours (β = 0) Ours(β=0)),尤其是在将重构的旧实体的词元排除在匹配之外时( O u r s Ours Ours vs. O u r s Ours Ours ( a l l (all (all t o k e n ) token) token))这种提升更为明显。此外, O u r s ( α = 0 , m a r g ) Ours (α = 0, marg) Ours(α=0,marg)的性能低于 O u r s ( α = 0 ) Ours (α = 0) Ours(α=0),这表明对于基于条件随机场(CRF)的模型直接应用CI NER(Monaikul等人,2021年)的方法可能并非最优选择。


图3:针对ontonote 5.0数据的5-shot类增量少样本学习,其中每个步长含两类组合。(a)P 1 (b)P 2。在附录中,我们包含了ontonote 5.0的类别组合(P 1和P 2)以及相应的消融研究。

  图3展示了在Ontonote 5.0数据集上进行类增量学习的结果。由于相较于在CoNLL2003数据集上的实验而言,这里涉及更多的步骤,所以参照先前少样本类增量学习(Tao等人,2020年;Mazumder 等人,2021年)方面的相关工作,我们将F1分数绘制成曲线,以此来突出不同方法随时间变化的相对差异。我们的方法始终优于各基线方法。需要注意的是,随着增量学习步骤数量增多,这些曲线未必一定是单调递减的。这种情况确实有可能发生,因为使用某些类别进行训练能够对其他下游类别的性能产生有益影响,从而(局部地)提升整体性能。在附录中,我们也展示了基于Ontonote 5.0数据集的消融研究情况。

在这里插入图片描述

图4:10-shot LOC→PER(即第1步在LOC上进行训练,第2步在PER上进行训练)的真实词元嵌入和合成词元嵌入的T-SNE图。 D 2 D^{2} D2是PER的10-shot数据集。我们对模型 M 1 M^{1} M1(即仅在LOC上训练)中BERT编码器最后一层的词元嵌入进行可视化。(a)我们的方法( β = 0 \beta = 0 β=0), D 2 D^{2} D2 D r 2 D^{2}_{r} Dr2的词元之间不存在对抗匹配。(b)我们的方法(所有词元),对 D 2 D^{2} D2的所有词元与 D r 2 D^{2}_{r} Dr2的所有词元进行匹配。(c)我们的方法,在对抗匹配中排除被标记为来自旧类别(即LOC)实体的合成词元。真实分布指的是来自测试数据集的词元,这些词元在训练期间是不可用的。我们使用黑色椭圆来标记来自真实分布中被预测为LOC(即旧实体)的词元。

5.4 词元嵌入的可视化

  图4展示了10-shot的LOC→PER(在图注中有相关解释)的词元隐藏状态的t-sne图。在图(a)中,我们可以发现存在一些合成词元与真实的LOC词元非常接近(黑色椭圆内的绿色点)。这些位于黑色椭圆内的合成词元就是重构的LOC词元。相反,合成语境(也就是椭圆外的其余合成词元)与真实分布相距甚远。这可能是因为语境包含了更多样化的信息,从而使其更难以被重构。真实词元和合成词元之间的这种差异可能会导致训练和测试之间出现域偏移,因为我们是基于合成词元进行训练,却在真实词元上进行测试。需要注意的是,在LOC的黑色椭圆中没有来自 D 2 \mathcal{D}^2 D2(红点)的词元,这表明在少样本数据集 D 2 \mathcal{D}^2 D2中可能不存在LOC实体,这与非少样本学习情况不同,在非少样本学习中, D 2 \mathcal{D}^2 D2可以包含大量旧类别(如LOC)的实体。图(b)展示了将来自 D r 2 \mathcal{D}^2_r Dr2的所有合成词元与来自 D 2 \mathcal{D}^2 D2的所有真实词元进行匹配的结果。通过这种方式,大部分合成词元都能与真实词元相匹配,除了只有少数合成词元与真实的LOC词元对齐。这是因为少样本数据集 D 2 \mathcal{D}^2 D2可能并不包含来自旧类别LOC的实体。在这种情况下,对抗匹配会干扰合成词元被重构为LOC的过程。这样一来,重构的嵌入序列将会包含更少来自旧类别(LOC)的信息。在图(c)中,我们排除了那些旨在被重构为旧类别LOC的合成词元,也就是在算法1中的目标标签序列 Y Y Y里被标记为LOC的词元。结果就是,合成词元既包含了LOC相关内容,又包含了与真实分布对齐的语境信息。

在这里插入图片描述

        图5:在CoNLL2003数据集上,相对于 β = 0 \beta = 0 β=0时,不同 β \beta β值的10-shot学习的F1分数增益情况。

5.5 β β β值变化的结果

  我们研究了模型性能与 β β β值(即控制对抗匹配程度的参数)之间的关系。图5展示了在CoNLL2003数据集上不同步骤中,采用不同 β β β值时的F1分数情况。我们进行了10-shot的实验,并报告了相较于 β = 0 β=0 β=0时F1分数的增益情况。我们注意到,在一系列 β β β值(即[1, 16])范围内,整个实验的平均F1分数都呈现出正向增益。这些结果表明,所提出的在真实数据与合成数据( D t \mathcal{D}^t Dt D r t \mathcal{D}^t_r Drt)之间进行的对抗匹配总体上是有益的,并且对 β β β值的选取并不敏感。

6. 结论

  我们首次开展了针对NER的少样本类增量学习方面的研究工作。为解决灾难性遗忘问题,我们提出从先前时间步训练得到的模型中重构旧实体类别的合成训练数据。此外,合成数据能够让模型在更多样化的语境下进行训练,从而降低其对当前步骤中少量训练样本过拟合的可能性。实验结果表明,我们的方法优于各基线方法,使得NER模型能够利用少量样本从新类别中进行增量学习。

附录A 每一步的实体类别


表3:在CoNLL2003上每个步骤中的实体类别。


表4:在OntoNote 5.0上每个步骤中的实体类别。括号内的类在同一步中进行训练。

附录B 数据重构算法

  算法1展示了采样合成标签序列以及重构词元嵌入序列的流程。具体而言,我们通过分别对词元序列的长度以及实体跨度进行采样来构建一个标签序列。

附录C OntoNote 5.0的消融研究

  图6展示了在Ontonote 5.0数据集上进行的消融研究情况。其中, α = 0 \alpha = 0 α=0 对应的是仅使用 L r e a l L^{real} Lreal进行训练。 β = 0 \beta = 0 β=0则意味着在重构过程中不进行对抗训练。


图6:OntoNote 5.0数据上的5-shot类增量少样本学习消融研究,每一步有两个类组合。(a) P 1 (b) P 2

附录D 补充细节

  我们将NER模型的学习率设置为5e-5。该模型使用 D t \mathcal{D}^t Dt进行50个轮次的训练,在5-shot实验中学习批次大小设为1,在10-shot实验中设为2。对于使用 D r t \mathcal{D}^t_r Drt进行训练的情况,每个重构类别的批次大小为5。参照Ma等人(2020年)的做法, D r t \mathcal{D}^t_r Drt中的词元嵌入初始化为均值为0、标准差为0.35的正态分布 N ( 0 , 0.35 ) N(0,0.35) N(0,0.35),然后使用1e-1的学习率对其进行优化。我们设定 n e m a x = 4 n^{max}_{e}=4 nemax=4以及 n s m a x = 30 n^{max}_{s}=30 nsmax=30。我们的代码是基于Huggingface进行修改的,使用Python 3.7和PyTorch 1.7.0,在8块P100 GPU上运行,每块GPU的内存为16GB。按照先前的相关工作,在构建 D r t \mathcal{D}^t_r Drt时,我们会在打算重构的词元嵌入序列前后分别添加 [CLS][SEP] 词元,使其与BERT的输入格式保持一致。然后,我们在 [SEP] 之后添加 [PAD] 来构建长度为128的填充嵌入序列。在算法1中,我们冻结了 [CLS][SEP][PAD] 的嵌入,也就是说,正文中公式(10)的梯度不会反向传播到 [CLS][SEP][PAD] 的嵌入中。在每个时间步,我们为每个先前的类别重构150个样本。这些样本在当前步骤训练完成后会被丢弃。

附录E 将 L-TapNet+CDT 适配用于类增量学习

  将L-TapNet+CDT适配用于类增量学习存在两个挑战。i)与少样本学习不同,在少样本学习中,少样本数据集包含针对所有目标类别的完整标注,而类增量学习的数据集仅包含当前类别的数据,也就是说,旧类别或未来类别的实体都被标记为 O O O。ii) O O O的语义会随着不同时间步发生变化。在没有对当前类别和先前类别进行完整标注的情况下,不清楚如何收集标记为 O O O的词元来为当前类别构建 O O O的原型,因为在当前步骤中被标记为 O O O的词元如果属于旧实体类别,可能会处于某个实体跨度内。

  为解决上述问题,在每个时间步,我们都会采样一个同时标注了当前类别和旧类别的模拟 少样本数据集。我们利用新类别的实体来构建相应的原型。这些原型会被保存下来以供后续步骤使用,也就是说,它们会被固定作为这些类别分类时的分类权重。我们使用模拟 数据集中被标记为 O O O的词元来构建当前 O O O原型。模拟 数据集中旧类别的标签不会直接用于预测。需要注意的是,与少样本类增量学习相比,这可能是一个相对更简单的问题,因为模拟 数据集包含了旧类别的标签,尽管我们避免将它们用于预测。


🐇速读版

1. 论文要解决什么问题?

背景介绍
  命名实体识别任务这里就不过多介绍了(如果不清楚可以查阅相关介绍),大多数NER模型在训练时基于固定的实体类型集,比如LOC(地名)、PER(人名)、ORG(机构),那么它在部署后就只能识别这三类,这导致其适用性和泛化性过于局限。在实际部署中,可能会面临持续变化的功能需求。比如,在特定时期,要求模型在已有类型基础上新增对 RISK(风险)、FOOD(食物)类型的识别能力;而在后续阶段,又可能进一步提出识别 CERT(认证)类型的增量需求,这就是比传统NER任务更难的类增量NER(或持续NER)任务 。

【注】持续学习分为三种学习场景:①任务增量学习;②域增量学习;③类增量学习。NER的持续学习场景属于最难的类增量学习,因此在NER任务上,“持续学习”与“类增量学习”是等价的概念。

【注】少样本类增量NER是一个相对复杂且很绕的概念,为了使读者思路清晰,特意在此对下文中使用的一些相关词组作以说明,以免产生歧义:

  • 旧类型:比如上述提到的LOC、PER、ORG这三个类型就是旧类型;
  • 新类型:比如上述提到的RISK、FOOD就是新类;(当然,在持续学习中,新、旧只是相对的,会不断迭代,在下一个阶段,旧类就变成了LOC、PER、ORG、RISK、FOOD这5类,新类则是CERT这个类型)
  • 旧类型实体:属于旧类型中某个类具体的实体词,比如“小明”、“北京”等;
  • 旧类型的训练数据:仅标注LOC、PER、ORG这三类标签的数据;(注意,此数据中是有可能包含新类型的实体,不过此时对应的标签是O,也就是非实体)
  • 新类型的训练数据:仅标注RISK、FOOD这两类标签的数据;(同理,此数据中也是有可能包含旧类型实体,不过对应的标签也是O)

  为实现类增量NER,一个直观的想法就是,想让它识别哪些新类型,那就用这些新类型的标注数据重新训练模型(当然,模型也需要做一些小改动,比如修改分类头)即可。然而,单使用新类型(如RISK、FOOD)训练会导致一个严重的问题,即模型在成功习得对新类型的识别能力的同时,却丧失了对旧类型(如LOC、PER、ORG)的识别功能,这就是持续学习中常见的灾难性遗忘问题。要想避免这一问题,就需要加入旧类型一同训练。那么旧类型的注释数据从何而来?一种思路是使用先前用过的旧类型的训练数据,但出于隐私因素或内存限制等原因,先前旧类型的训练数据可能无法获取。另一种思路是在新类型的标注数据上,额外添加对旧类型的人工标注,然后重新训练模型。显然这种想法也有局限性,即人工标注费时费力,效率太低。

  为了在不需要人工标注的情况下仍然能引入旧类型的信息,有人(Monaikul等人,2021年)想到了通过知识蒸馏的方法巧妙地引入旧类型信息,由此便提出了NER任务上的首个类增量学习(或持续学习)方法。该方法的具体原理是,利用之前在旧类型数据上已经训练好的模型作为教师模型,对新类型的训练数据进行预测,得到其中旧实体的Logits预测值并作为伪标签,以此作为一种正则化手段,从而避免灾难性遗忘。简单来说就是让模型自动给新类型的训练数据中包含的旧类型打标签,只不过这里的标签并不是hard label,而是包含更多信息的soft label。

  显然这种方法work的前提是新类型的训练数据中包含大量的旧类型实体,这种前提在一些实际场景中并不一定能够满足,比如少样本(few-shot)场景下。少样本场景下可用的新类型的训练数据本身就很有限,因此其中包含的旧类型实体可能很少甚至没有。那么如何在有限新实体训练数据的情况下,依然能实现类增量NER呢?这就是比类增量NER任务还要难的少样本类增量NER任务。而这篇文章,就是第一个提出并解决少样本类增量NER任务的工作

难点
  在了解了少样本类增量NER任务后,不难看出它有两大难点:①可用的新类型数据有限(即少样本),导致对新类型的学习能力有限;②更为关键的是,对旧类型的数据蒸馏困难(因为少样本训练数据中包含的旧类型实体很少甚至没有),导致灾难性遗忘。

2. 如何解决的?

思路
  既然少样本数据集中包含的旧类型实体很少甚至没有,那就想办法生成旧类型数据。本质思路属于数据增强,只不过作者利用虚拟的合成数据进行增强而非真实数据。作者考虑通过模型来生成旧类型的合成数据用于蒸馏(需要注意的是,这是22年之前的文章,这时候大模型还没有发展起来,因此没有借助大模型生成数据)。作者通过逆向思维,将NER模型反过来使用,生成旧类型实体合成数据,有了新、旧类型的数据后,然后设计了一个复杂的知识蒸馏框架将这些数据利用起来,实现少样本类增量NER任务。

论文方法
  首先来看如何生成合成数据的:

  合成数据要求包含旧类型信息,所以就是用现成的教师模型来逆向合成,随机采样一些包含旧类型的标签序列,如“O O LOC O”或“PER O LOC O”等,以这些标签序列为目标,对教师模型通过反向梯度优化对应的嵌入向量序列(嵌入向量的初始值随机设置),最终优化的嵌入就包含旧类型信息。
  这种逆向合成的方式存在的一个问题:最终生成的合成嵌入向量可能不真实。这将会导致在旧实体的合成数据上进行训练,但在真实数据上进行测试时出现领域差异。此时作者想到让合成数据尽可能匹配真实数据来增强其真实性,具体做法是分别得到合成数据和真实数据在BERT编码器中的不同层的隐藏状态(文中使用了2,4,…,12层),然后在所选的每层中会有一个二分类判别器,它通过对抗匹配隐藏状态,使得合成数据更加接近真实数据。但是有个问题,真实数据和合成数据中的实体类型是不一致,这可能会导致在匹配过程中,合成数据内原本优化的旧类型实体嵌入向量偏离旧类型信息,对此文章做法也很简单粗暴,去除掉旧类型实体部分,只匹配非旧实体部分的嵌入向量。
  最终的总损失由旧类型逆向优化+真实性匹配两部分构成,它意味着确保合成数据在变得更真实的同时,不会失去其本身对于旧类实体知识保留的作用。

  有了合成数据后,再看怎么利用这些数据进行训练学习: 总的训练数据就包含2类:新类型训练数据+旧类型合成数据;因此所提出的知识蒸馏框架也由2部分构成:对新类型数据的蒸馏+对旧类型合成数据的蒸馏,下面逐一介绍。

  • 对新类型数据的蒸馏

  首先先明确目标,知识蒸馏的目标就是:让学生模型( M t M^t Mt)的输出分布尽可能匹配教师模型( M t − 1 M^{t - 1} Mt1)的输出分布。那我们只需要表示出教师模型在新类型数据上的输出分布,然后让学生模型通过损失函数不断接近这个分布即可。但在教师模型的输出分布表示时有一些trick值得注意。
  第一个trick是由于模型backbone是BERT+CRF结构,因此输出分布是crf的输出分布,也就是输入序列 X X X对应的所有可能输出标签序列 Y Y Y的概率 P θ ( Y ∣ X ) P_{\theta}(Y|X) Pθ(YX),其基数会随着 X X X的长度呈指数级增长,因此作者仅用其前 S S S个预测结果来近似CRF的序列层面输出分布,以简化问题。
  通过上面的trick让教师模型的输出分布变得简化可实现,但还有个问题,教师模型( M t − 1 M^{t -1} Mt1)只具备识别旧类型的能力,对新类型它不认识,这就会导致在对新类型数据蒸馏的过程中,将新类型识别为O类,这样的话学生模型无法从教师这里学到新实体类型。但这个问题很好解决:我们有新类型实体的Golden Label啊,只需要将教师模型对新实体位置处的错误预测换为其Golden Label就可以了(即把所有前 S = 10 S=10 S=10个预测结果中新实体位置处进行修正替换),如下论文原图2(b)所示。至此,一个既包含旧实体知识、又包含新实体知识、并且可实现的教师模型输出分布就得到了。接着就是通过损失函数(文中使用交叉熵)让学生模型的输出分布接近上面修正后的教师模型输出分布。


论文原图2(b):对教师模型的输出分布进行修正。

  • 对旧类型合成数据的蒸馏

  接下来就是对旧类型合成数据的蒸馏了。也是同样的套路,先得到教师模型在旧类型合成数据上的输出分布。但这时候也有个问题:输出分布中预测为O的部分不确定有没有新类型实体,因为教师模型不认识新类型,它会把除了旧类型实体外的所有词都预测为O,因此即便有新类型实体,也会被预测为O类,这是我们不想看到的,我们希望模型对新旧实体都能正确预测。在对新类型数据的蒸馏的时候,因为其有新类型实体的Golden Label,因此可以替换修正,但此时对旧类型合成数据的蒸馏过程中,没法使用这一方法。
  此时,作者又想到了一个解决方法:利用Lafferty 等人(2001年)提出的前向 - 后向方法,将CRF的输出(也就是序列层面的标签分布)分解为针对每个词元的边际标签分布。简单来说就是不再像对新类型数据的蒸馏时那样(输出分布的表示方式是“句子级”的概率分布),而是将输出分布的表示方式转变为“token级”的边际分布。这样转变后,教师模型的边际分布由2部分构成:[被预测为〇的概率被预测为旧类型的概率],而学生模型的边际分布由3部分构成:[被预测为〇的概率被预测为新类型的概率被预测为旧类型的概率],此时将学生模型的边际分布进一步合并为[ s u m sum sum(被预测为〇的概率,被预测为新类型的概率);被预测为旧类型的概率],使其降为2维(也就是非旧概率和旧概率),与教师模型的边际分布同维,如下论文原图2(a)所示。如此一来,通过损失函数(文中使用KL散度)让学生模型的边际分布不断接近教师模型的边际分布。
  通过这种方法,学生模型可以学到教师模型对旧类型实体的知识,又不会对新类型实体产生误判。总体损失函数是交叉熵损失和KL散度1:1加权之和。


论文原图2(b):将复杂的序列级标签分布转化为每个token的边际标签预测。

3. 文章亮点

  • 开辟了首个少样本类增量NER方法。

4. 局限性(个人总结)

  • 个人觉得整个方法框架过于复杂繁琐;
  • 合成数据的过程存在一些固有缺陷,首先它难以完全还原真实数据分布,其次它是由旧模型合成的,如果旧模型本身存在偏差,就会进一步传递到合成数据中;
  • 很多持续学习工作中都是假设总增量步骤数是有限的(在持续学习中,一个任务就是一步,或叫一个阶段),这一篇也不例外。也就是说,总步数其实在设计模型初的时候就已经固定好的参数(比如最终输出的分类头数),这会导致模型无法在实际应用中即拿即用。这一点在 Learning “O” Helps for Learning More: Handling the Unlabeled Entity Problem for Class-incremental NER 这篇文章提到并改进,感兴趣可以后续解读这篇。

🤔思考

  • 这是一篇3年前发表在ACL的文章,那时候LLM还未兴起,因此文中采用了较为复杂的算法进行数据合成。而对于LLM盛行的现在,或许借助 LLM 强大的生成能力来生成数据是优先考虑的方法。
  • 文章本身解决的问题(少样本类增量NER)比较复杂,难以用简洁的方式去阐述清楚,再加之文中使用了很多复杂的公式,并且出现多处公式或编写错误(如原文2.1节首段 y i t y^t_i yit错写、3.1.1节最后一段 M t − 1 、 M t M_{t-1}、M_{t} Mt1Mt错写、3.2节倒数两段也均有错误,3.1.1节对 P θ ( Y ∣ X ) P_{\theta}(Y|X) Pθ(YX)中的 θ \theta θ也没做解释等等),这些都使得整篇文章晦涩难懂,可能需要多读几遍。单从写作角度去评判的话,确实在表达清晰性方面有所欠缺,但它开创性地首次提出了少样本类增量方法,这一创新性成果或许正是其能够获得 ACL 认可的关键原因之一。
  • 这篇文章和同年也发表在ACL的 Learn and Review: Enhancing Continual Named Entity Recognition via Reviewing Synthetic Samples 这篇很相似,指出先前方法的不足和提出的方法都很像,不过后者更倾向于跨域场景,而前者则是少样本场景。
  • 最后,吐槽一句,少样本类增量NER应该叫少样本“累”增量NER才对…😫

参考文献
Rui Wang, Tong Yu, Handong Zhao, Sungchul Kim, Subrata Mitra, Ruiyi Zhang, and Ricardo Henao. 2022. Few-Shot Class-Incremental Learning for Named Entity Recognition. In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 571–582, Dublin, Ireland. Association for Computational Linguistics.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值