本文主要是介绍《Few-Shot Named Entity Recognition: A Comprehensive Study》论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Few-Shot Named Entity Recognition: A Comprehensive Study
最近发现读论文get idea有点困难,不如参考大佬的笔记来做做总结,今天主要总结一下few-shot NER,这是一篇few-shot NER的综述《Few-Shot Named Entity Recognition: A Comprehensive Study》
1. Motivation
NER一种经典的方法是在PLM提供的表示之上添加一个线性分类器,并在域标签上使用交叉熵目标来微调整个模型,该方法很简单,且在几个基准上提供了强有力的结果。
但即使有了这些PLM,构建NER系统仍然是一项劳动密集型、耗时的任务。注释大量的域内标记标记语料库,需要丰富的领域知识和专家经验。然而,这与现实世界的应用程序场景形成了对比,后者只有非常有限数量的标记数据可用于新域。因此本文研究了一个具有挑战性但实际的研究问题:few-shot NER。本文做法如下:
- 创建原型作为不同实体类型的表示,并通过最近邻标准分配标签(we create prototypes as the representations for different entity types, and assign labels via the nearest neighbor criterion)
- 不断地使用带有噪声标签的web数据进行预训练,这些数据可以大量使用,以提高NER的准确性和鲁棒性(we continuously pre-train PLMs using web data with noisy labels that is available in much larger quantities to improve NER accuracy and robustness)
- 使用未标记的域内标记,使用自训练来预测它们的软标签,并结合有限的标记数据进行半监督学习。(we employ unlabeled in-domain tokens to predict their soft labels using self-training, and perform semi-supervised learning in conjunction with the limited labeled data)
2. Contribution
- 第一次对前人很少研究的few-shot NER方面进行了系统的研究,并提出了三种不同的方案及其组合。(We present the first systematic study for few-shot NER, a problem that is previously little explored in the literature. Three distinctive schemes and their combinations are investigated.)
- 对来自不同领域的10个公共NER数据集对这些方案进行了综合比较。(We perform comprehensive comparisons of these schemes on 10 public NER datasets from different domains.)
- 与现有的在少镜头和无训练的NER设置上的方法相比,本文所提出的方案简单且实现了SoTA性能。(Compared with existing methods on few-shot and training-free NER settings , the proposed schemes achieve SoTA performance despite their simplicity.)
3. Background on Few-shot NER
3.1 Few-shot NER
一个序列标注任务,输入长度为 T , X = [ x 1 , x 2 , . . . , x T ] T,X=[x_1,x_2,...,x_T] T,X=[x1,x2,...,xT],输出为相应的 T T T长度标记序列 Y = [ y 1 , y 2 , . . . , y T ] , y ∈ Y Y=[y_1,y_2,...,y_T],y∈Y Y=[y1,y2,...,yT],y∈Y是一个热向量,指示来自预定义的离散标签空间的每个标记的实体类型。
NER的训练数据集通常由成对数据 D L = { ( X n , Y n ) } n = 1 N D^L=\{(X_n,Y_n)\}^N_{n=1} DL={(Xn,Yn)}n=1N组成,其中N是训练示例的数量。传统的NER系统是在标准的监督学习范式中进行训练的,这通常需要大量的成对例子,即N很大。在现实世界的应用程序中,更有利的场景是为每种实体类型只给出少量的标记示例(N很小),因为扩展标记数据增加了注释成本,降低了客户参与度,这就产生了few-shot NER这个挑战性的任务。
3.2 Linear Classifier Fine-tuning
在 NER 领域中常用的基于预训练模型的 Pipeline 方法是将预训练模型作为特征提取器,在预训练模型之后直接添加一层 Linear 和 Softmax,训练的时候调整 Linear 的参数,预训练模型的参数可以选择训练也可以选择保持不变。
4. Few-shot NER 三个问题
可能有人会问为什么要将 Few-shot 应用到 NER 中,毕竟 NER 可以通过一些远程监督的方法获取到 NER 标注样本,但是远程监督方法存在一定问题。
4.1 利用远程监督方法构建NER标注数据存在的问题
- 远程监督方法获取到的样本会存在很多噪声;
- 无法保证远程监督标注的领域完全适应以及词表的完整性(实体OOV的问题)
因此将 Few-shot 方法应用 NER 也是一个很值得研究的方向。
4.2 将 few shot learning 应用于 NER 领域中需要面临的三个核心问题
- How to adapt meta-learning such as prototype-based methods for few-shot NER? (如何将元学习方法作为 prototype-based 的方法应用到 few-shot NER 领域中?)
- How to leverage freely-available web data as noisy supervised pre-training data?(如何利用大量免费可用的网页数据构造出 noisy supervised 方法中的预训练数据?)
- How to leverage unlabeled in-domain sentences in a semi-supervised manner?(如何在半监督的范式中利用好 in-domain 的无标注数据?)
5. Methods
5.1 Prototype-based Methods
基于 meta-learning 方法的 few-shot 方法(meta-learning 的核心思想:让模型在多个具有大量标注数据的任务上学习,从而具备泛化到某个只有少量标注数据的任务上)
-
定义两个集合 S 和 Q:
s u p p o r t s e t S = { ( X i , Y i ) } i = 1 M × K support set S=\{(X_i,Y_i)\}^{M×K}_{i=1} supportsetS={(Xi,Yi)}i=1M×K
q u e r y s e t Q = { ( X ^ i , Y ^ i ) } i = 1 M × K ′ query set Q=\{(\hat X_i,\hat Y_i)\}^{M×K'}_{i=1} querysetQ={(X^i,Y^i)}i=1M×K′
Support set(M 个 entity types, 每个 entity types 有 K/K’ 个 sentence);
-
Prototypes:在与单个 token 相同的表示空间中将 entity type 表示为向量;(也就是把 label 映射为对应的向量,向量的构造方法是将所有属于该类别的 token 向量求和平均。)
c m = 1 ∣ S m ∣ ∑ x ∈ S m f θ 0 ( x ) c_m=\frac{1}{|S_m|}\sum_{x∈S_m}f_{\theta_0}(x) cm=∣Sm∣1x∈Sm∑fθ0(x)
-
对于一个新输入的 token 来说,将其输入模型后得到的输出和所有 prototypes 进行距离计算;
q ( y = I m ∣ x ) = exp ( − d ( f θ 0 ( x ) , c m ) ) ∑ m ′ exp ( − d ( f θ 0 ( x ) , c m ′ ) ) q(y=I_m|x)=\frac{\exp(-d(f_{\theta_0}(x),c_m))}{\sum_{m'}\exp(-d(f_{\theta_0}(x),c_{m'}))} q(y=Im∣x)=∑m′exp(−d(fθ0(x),cm′))exp(−d(fθ0(x),cm))
-
训练过程中 support set 中的 entity type 会通过采样不断迭代变化,infer过程中 则是对新的 token 使用最近邻(NN)算法计算最接近的那个类别。
5.2 Noisy Supervised Pre-training
- 动机
通过预训练模型可以用于获取每个句子甚至每个 token 的 embedding 表示。但这些表示有个特点就是他们对于所有下游任务都是不可知的,也就是说预训练模型在预训练过程中对待每个 token 都是一致的。但是很多下游任务中,对某些特定的 token 需要有特别的处理。
eg:在 NER 任务中,对于“Mr. Bush asked Congress to raise to $ 6 billion”这句话,模型需要能够辨认出“Congress”是一个 entity,而“to”只是一个普通的 token。
如何能让预训练模型具备这种识别实体的能力呢?
- 方法: 利用**大规模带噪声的网页数据(WiNER)来进行噪声监督预训练(noisy supervised pre-training)**的方法。
- 思路: 在 WiNER 中,包含着相较于下游任务更为丰富的实体类型,比如“Musician”和“Artist”通常表示的是两种不同的实体类型,而在常见的 NER 评测标准中二者都被归类为“Person”类型。(有点像是颗粒度)
- 优点: 使用大规模带噪声的数据预训练模型时,模型既可以学到区分实体的能力,又不会学到和下游任务完全一致的信息导致模型过拟合
5.3 Self-training
类型: 半监督学习方法
特点: 利用到了大量无标注数据和少量标注数据
思路:
- 先通过标注数据学习一个 teacher 模型;
- 通过 teacher 模型给无标注数据进行标注 soft 标签;
- 使用标注数据和具有 soft 标签的数据训练 student 模型
6. Experiment
- backbone network:pre-trained base RoBERTa
- dataset:
6.1 Results
- LC :linear classifier fine-tuning(fine-tuning 整个模型)
- P :prototype-based method
- NSP :noisy supervised pre-training
- ST:self-training
- 通过比较第 1 列和第 2 列(或比较第 3 列和第 3 列),可以看出在大多数数据集中(特别是在 5-shot 的设置下)噪声监督预训练取得了最好的结果,这表明 NSP 任务赋予了模型更强的提取 NER 相关特征的能力。
- 第 1 列和第 3 列之间的比较的是 LC 和基于原型的方法之间的差别:虽然基于原型的方法在 5-shot 中比 LC 在 CoNLL、WikiGold、WNUT17 和 Mul-tiwoz 上获得了更好的性能,但在其他数据集和平均统计数据上,它不如 LC,说明基于原型的方法只有在标记数据非常有限的情况下才能产生更好的结果。
- 当比较第 5 列和第 1 列(或比较第 6 列和第 2 列)时,可以看到使用 Self-Training 始终比仅使用标记数据进行微调更有效,这表明 ST 是能够有效利用域内未标记数据的方法。
- 第 6 列则展示了大多数情况下 F1 的最高分数,表明本文提出的三个方案是相互补充的,并且可以结合起来在实践中产生最佳结果。
6.2 研究结果总结
- 有噪声监督的预训练可以显著提高NER的准确性(Noisy supervised pre-training can significantly improve NER accuracy, and we will release our pre-trained checkpoints.)
- 当未标记数据和标记数据之间的数据量比例较高时,自我训练可以持续提高少镜头学习(Self-training consistently improves few-shot learning when the ratio of data amounts between unlabeled and labeled data is high. )
- 原型学习的性能在不同的数据集上有所不同。当标记的示例数量较少,或者在无训练设置中给出新的实体类型时,它很有用。(The performance of prototype learning varies on different datasets. It is useful when the number of labeled examples is small, or when new entity types are given in the training-free settings.)
参考杨夕
这篇关于《Few-Shot Named Entity Recognition: A Comprehensive Study》论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!