作者 | Nine 整理 | NewBeeNLP
Few shot learning(小样本学习)就是要用很少量标注样本去完成学习任务,前几天有同学在交流群里问关于小样本NER的资源,今天一起来看一篇Amazon AI Lab在ACL2022上发表的论文。
这篇文章提出的方法其实很简单,一段话就能描述完:
用双塔模型来解决Few shot NER的问题,他们用了两个BERT Encoder,一个Encoder编码每个token的表征,另一个Encoder对_label的BIO tag的自然语言形式(或者用其他文本对Label进行描述)进行编码,获取Label 表征,然后求待预测文本中每个token与所有label表征的相似度,求相似度最大的label。
结束了,是不是很简单,但效果很不错,在多个few shot NER的数据集上拿到了SOTA。
Few shot learning(小样本学习)就是要用很少量标注样本(support set)的去完成学习任务,小样本学习中又有很多方法是 metric-based方法,这篇论文中提出的方法也是metric-based方法,这类方法主要是计算样本的表征,并与support set中的类别表征做相似度,从而将样本分类到与它表征最近的类别中去,这其实是一个最近邻的思想。但是之前的一些方法都没有充分利用label name 的语义信息。
这篇论文的 核心点在于使用了label name的语义信息为模型提供额外的信息 。它的 核心假设是:标签的名称承载了标签的含义信息,而这些信息同样是模型可以从数据中归纳出来的 ,但如果数据不够,那就用label name来凑嘛。
举个例子,当相同的先验被用于labels和words的时候,“张三”的表征一定是与PERSON这个label的表征相近的,而不是与DATE的表征。
那看样子,label name还挺有用的,在我之前介绍的\<关系抽取>ACL2022关系抽取SOTA之PL-Marker[1]中,也用到了类似的手法:
PL-Marker中用meaningful words的embedding来初始化
这里提两个概念,Source dataset 和 Target datasets,两者区别如下:
首先他们在多个source datasets上面训练他们的模型models,然后他们在多个unseen few shot target datasets上面验证 经过finetuning 和 不经过 finetuning 的模型的效果。
模型结构
类似于双塔模型,用了两个BERT Encoder,一个document encoder 和 一个label Encoder(label encoder他们也尝试了GloVe)。模型步骤如下:
个表征(加上other一共L个label name, 则BIO一共有
个),组成label的表征矩阵 ;
相比之前做NER的网络结构,他们的这种方式不需要在遇到新的dataset和没见过的Label name的时候去初始化一个新的顶层分类器,而是直接用BERT_label Encoder生成label表征。
他们认为这样做是有好处的,因为他们假设这样做模型不会忘记先验知识,因为不会有参数被丢掉,也不会为不同的数据集随机初始化参数。
对于没有source dataset可用的场景,就把第一步跳过。
按照这个模型的结构和流程,实际上计算label 表征可以用任意形式的文本,他们考虑了两种形式:
论文中对CoNLL-2003和Ontonotes两个数据集中的Label给定的label name,其他数据集的详见论文附录A2
上下文表征的方式,相对于只用Label name的方式,在不同的数据集上有涨有跌,并不适合所有的数据集,比如对于存在粗粒度的实体类型和细粒度的实体类型的数据集(FEW_NERD),由于同一个粗粒度的实体类型下的细粒度实体类型的上下文很相近,所以用上下文作为Label表征的输入,效果不是很好:
上下文表征 vs label name表征
source dataset:Ontonotes数据集
在实验中,他们尝试了两种场景:
模型结果
他们认为 在source datasets上面pre-finetuning的时候,不但label和token的表征进行对齐,而且在更新label encoder,让它能够针对source dataset生成更有用的label表征 。
他们采用zero shot的方式来验证他们的这个想法,在source dataset上面pre-finetuning,但是不在target set上进行finetune,并且对于target set中label name,如果出现在source dataset中,就给它改个同义名字。
1-shot vs 0-shot vs rename label 0-shot
结果证明,在zero-shot的效果与one-shot的效果差不多(除了MISC以外,因为这个label在source dataset中完全没出现过),而改名后的zero-shot的效果也还不错,从而验证了他们上面的想法。
[1]
<关系抽取>ACL2022关系抽取SOTA之PL-Marker: https://zhuanlan.zhihu.com/p/496000441
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有