这里简单介绍各种方案, 想了解具体的内容可以直接翻到最后看相关链接,或搜索其他介绍!
部分内容目前理解较为浅显,有错漏,希望大佬们多多指出,不吝赐教!!
https://www.sohu.com/a/305112618_500659
主要分三种:Model Based、Metric Based、Optimization Based
Model Based
主要思想是让模型学到构建特征的方法,从而对于新的类别能有好的效果,且不需重新训练模型
Metric Based
对样本进行组合,构造成对样本,进行模型训练,判断样本是否为相同类。 典型的方法是孪生网络
例如:Neural Snowball for Few-Shot Relation Learning,这篇,就是类似的逻辑
Optimization Based
重定义梯度优化算法,适配小样本任务。保证初始化让finetune从一个好的点开始。
--------------------------------------
这里介绍一篇陈丹琦团队的巨作 LM-BFF
原理
陈丹琦团队最新论文:受GPT-3启发,用小样本学习给语言模型做微调,性能最高提升30%
GPT-3的最强落地方式?陈丹琦提出小样本微调框架LM-BFF,比普通微调提升11%~
我的理解是,类似T5进行模板预测,RoBERTa预测结果。
代码:https://github.com/princeton-nlp/LM-BFF
------------------------------------
数据增强
回译、近义词替换、Mask生成等
回译:例如中文翻译成英文,再翻译回中文,如果跟原来中文不一致,则补充添加。
Mask生成,利用预训练模型中的mask逻辑,对文本中的token进行掩蔽和预测,如果预测的结果和原始的文本不一致,则补充添加
小样本学习(Few-shot Learning)综述 中提到了NER的数据增强方法有:①同标签token替换 ②同义词替换 ③实体提及替换 ④ mention切分后shuffle
预训练模型
基于预训练模型获取底层的文本语义信息等
弱监督
通过模型预测的结果加入进行训练
模型蒸馏
通过教师模型预测的logits对学生模型蒸馏。不一定是few shot的任务,可能主要还是小模型的提升。另外除了logits蒸馏外,还有中间层, 权重,matrix等蒸馏方案,具体不详细介绍
远程监督
根据已有样本 标记去噪 训练模型, 多用在关系抽取任务上, 尝试过用在NER任务,部分任务有效果,部分效果较差(需要自行分析可行性,比如特征信息较强还是文本信息较强,前者效果可用,后者建议直接数据增强)
远程监督可以不需要标注数据,直接采用已有词典,进行冷启动
迁移学习
领域迁移,需要看任务是否有相关性,有的领域迁移效果不好。 另外预训练模型finetune其实也可以理解为迁移方法。
多任务学习(MTL)
few shot很多地方用到了多任务学习,主要是多个相关任务之间的表征共享,以提高少样本数据在不同类别上的效果。
MTL 有很多形式:联合学习(joint learning)、自主学习(learning to learn)和带有辅助任务的学习(learning with auxiliary task)等
主动学习
这个其实不完全算小样本的相关问题,只不过对于相关任务来说,可以通过主动学习减少标注量,且更快速提高模型效果
小样本学习(Few-shot Learning)综述
如何解决「小样本」+「多分类」问题?
多任务学习-multi-learning总结
打开你的脑洞:NER如何进行数据增强 ?
别再用假任务做小样本学习实验了!来试试这个全新基准数据集