1. 动机
实体关系是知识图谱中不可或缺的一层重要信息,它们描述了实体之间的语义关系,这种连接使得知识图谱能够表达更为丰富的知识信息。然而现实生活中的命名实体识别(NER)任务往往受限于实体类别数量大,相关数据标注差等问题。
为此本文利用上下文学习技术,将命名实体识别能力融入大规模的预训练语言模型,实现了一种可以有效完成命名实体识别任务的方法,这种方法甚至可以仅利用少数演示实例实现即时识别新的实体类型。和先前采用微调的方法相比,本文提出的方法不需要代价较高的重训练过程,并且可以不用调整模型参数就实现即时识别新实体类型。与基于度量的方法相比,此方法可以动态地利用指令和演示中需要的信息,而不是局限于固定的度量空间。2. 贡献
(1)提出了一种可以只使用少量实例就能即时有效识别新实体类型的上下文NER模型。
(2)设计了一种元函数预训练算法,它可以将预训练语言模型建模为元函数并将上下文NER能力注入预训练语言模型。
(3)如何将上下文能力注入小模型中是大模型时代NLP的重要研究方向,本文的研究有益于未来工作的新方向。3. 方法
在上下文学习中,模型会从指令和演示实例中阅读到目标实体类型的信息,然后提取目标类型的实体,这样就可以实现即时提取新关系类型,而不需要重新训练模型。本文中NER任务被转化为序列到序列的生成式任务,其中输入序列包含指令、演示实例以及目标文本,输出序列为目标实体及其类型。图1是一个抽取示例。指令是指包含目标实体的序列,用于引导模型的抽取,如图1中绿色部分所示。演示实例主要有两个作用,一个是可以提供目标类型的相关知识,另一个是用于规范模型的输出格式,如图1中蓝色部分所示。最后黄色的部分是目标文本,指定模型的抽取任务在该文本上进行。输出中实体及其类型用is连接,is前为实体,is后为其对应的类型,输出采用这种自然语言的表示形式可以更好地利用预训练语言模型的文本生成能力。图1 NER任务示例
鉴于上文中给定的任务形式,本文采用编码器-解码器结构的模型(例如T5)作为主要功能模块。
3.2 元函数预训练
尽管像GPT-3这类规模较大的预训练语言模型具有上下文学习的能力,这样的能力并不能总保持在可控的状态。此外,NER任务不像分类和问答任务那样,与这些预训练语言模型原生的预训练任务并不一致,需要更加复杂的片段抽取和类型判别。因此本文在这部分介绍了一种算法,可以将上下文NER能力注入预训练语言模型,并使其保持可控、可预测状态,具体的做法为:1.通过元函数损失来优化预训练语言模型,让输入中包含的隐式抽取模式能够接近显式微调过的实体抽取模型。2.通过抽取损失优化预训练语言模型,从而使上下文NER可以有效定位并分类实体。
在展开介绍元函数预训练之前,文章还介绍了一些预训练的设定。首先是数据处理,本文提出在构建数据集的过程中,加入一些NIL数据来模拟真实世界中那些并不能抽取到目标实体的情况,同时提出将实体类型匿名化处理,不直接使用原始的类型名,这种方式可以很好地提升上下文学习能力。整个预训练部分的损失函数被定义为:其中,α为元函数损失的系数,元函数损失和抽取损失都将在后文中介绍。
元函数预训练的流程如图2所示,可以看到额外引入了一个在演示实例上预训练好的抽取函数,后续尽可能地缩短两个抽取函数之间的差距,从而实现对该部分模型的优化。图2 元函数预训练流程图
符号化的表示上述过程,即给定指令I,演示实例D以及输入文本T,首先将它们输入编码器,得到其特征:按照本文的做法,这里会忽略实例D的特征,选取I和T的特征作为隐式抽取函数的特征,即:为了得到微调后函数的特征,这里文章提出在原先的编码器基于给出的演示示例进行一次梯队下降,并用这个微调过的编码器在同样的输入上进行编码,从而得到该函数的特征,即:按照文章的假设,这里即把 理想抽取函数的特征,因此元函数的损失可以定义为 和 之间的距离:其中 代表欧氏距离。需要注意的是,计算这个损失函数的梯度时, 会被视为常量。因此,这个元函数的损失可以用下式计算:其中 为编码器的参数, 代表输入,计算出的这个梯度将被用于更新编码器的参数。
除了元函数损失,文章提出还需要利用一个抽取损失来预训练语言模型。给定指令I,演示实例D以及输入文本T,序列到序列形式的实体抽取函数会直接逐字自回归地建模生成概率。因此可以将抽取损失表示为:为了训练模型的实体抽取能力,本文设计了两个预训练抽取任务,包含一个实体抽取任务以及一个伪抽取语言建模任务。实体抽取任务用来训练模型从文本中抽取实体的能力,任务包含了上下文NER设定(指令+实例+文本)以及传统NER设定(指令+文本)。伪抽取语言建模任务是用于减小实体抽取任务和原始的语言建模任务之间的差距,该任务通过将一些并非抽取任务的语料转化为类似抽取任务的训练数据,训练模型抽取实体并预测实体类型的能力。4. 实验
4.1 对比实验
对比实验部分,选择在CoNLL03等四个数据集上进行少样本的NER抽取,用于对比的基线模型包含两种,一种是预训练语言模型,如T5,GPT等,另一种为预训练的NER模型(少样本方法), 下表为实验结果,评估指标为Micro-F1值:表1 对比实验结果表
从实验结果可以看出,少样本NER任务即使是对于预训练好的大规模语言模型仍然具有挑战性,这可能是由于语言建模任务和NER任务的差别较大。而本文提出的模型MetaNER可以达到很好的上下文NER性能,基本在所有测试的数据集上都有较大的性能提升。
此外,表格结果可以看出本文提出的上下文NER方法更加鲁棒。对比预训练的NER模型,本文的方法在一些数据领域跨度较大的情况下提升更加明显,例如在NCBI-disease以及SEC-filings两个数据集上。结果证明元函数预训练方法的确能够有效地将上下文学习能力注入预训练语言模型中,无论是MetaNER-base还是MetaNER的整体表现都更加理想。
4.2 消融实验
作者还对元函数预训练、伪抽取语言模型预训练以及实体类型匿名化处理做了消融实验,按照这个顺序,实验结果如下表所示:表2 消融实验结果表
结果表明,元函数预训练对于提升模型的上下文学习能力有非常关键的作用,这也是本文一个非常核心的思想。为了进一步验证该部分的效果,作者从数据集中采样了1000个样本,计算元函数和替代抽取函数之间特征的差异,结果如图3所示,可以看出元函数的特征已经非常接近微调过的抽取函数。图3 特征对比图
此外,实验结果还表明,伪抽取语言建模任务和类型匿名化都对模型上下文NER的能力有提升,其中类型匿名化主要是通过防止模型对类型名字过拟合从而提升上下文NER能力的。
5. 总结
本文介绍了一种基于上下文学习的NER方法,它将预训练语言模型建模为元函数,从而将上下文NER能力注入预训练语言模型中,实现模型即使识别新类型实体的效果,实验结果表明这个方法可以有效提升模型上下文NER的能力。上下文学习能力是一种非常有效的能力,未来其他NLP任务也可以尝试探索基于上下文学习的解决方法。