NLP中的少样本困境问题探究
The following article is from 夕小瑶的卖萌屋 Author JayLou娄杰
公众号关注 “ML_NLP”
作者:JayLou娄杰(NLP算法工程师,信息抽取方向)
转载自:夕小瑶的卖萌屋
前言
在医疗、金融、法律等领域,高质量的标注数据十分稀缺、昂贵,我们通常面临少样本低资源问题。本文从「文本增强」和「半监督学习」这两个角度出发,谈一谈如何解决少样本困境。
正式介绍之前,我们首先需要思考什么才是一种好的解决少样本困境的方案?本文尝试给出了三个层次的评价策略,我们希望采取相关数据增强或弱监督技术后:
在少样本场景下,比起同等标注量的无增强监督学习模型,性能有较大幅度的提升; 在少样本场景下,能够达到或者逼近充分样本下的监督学习模型性能; 在充分样本场景下,性能仍然有一定提升;
基于此,本文首先总结了nlp中的文本增强技术,然后串讲了近年来9个主流的半监督学习模型,最后主要介绍了来自Google提出的UDA(一种文本增强+半监督学习的结合体)。本文的组织结构为:
NLP中的文本增强技术总结
谈起文本增强技术,相信NLPer一定不会陌生,相关方法也是数不胜数。我们通常对标注数据集提供附加的感应偏置进行扩充,如何设计增强变换就变得至关重要。本文尝试从一个新角度——是否条件增强,借鉴文献[1]进行了总结归纳:
无条件增强
定义:既可以对标注数据进行增强(增强后标签不发生变化),又可以针对无标注数据进行增强,不需要强制引入标签信息。
词汇&短语替换
基于词典:主要从文本中选择词汇或短语进行同义词替换,词典可以采取 WordNet或哈工大词林等。著名的 EDA (Easy Data Augmentation)[2] 就采用了这种方法。 基于词向量:在嵌入空间中找寻相邻词汇进行替换,我们所熟知的TinyBERT[3] 就利用这种技术进行了数据增强。 Masked LM:借鉴预训练语言模型(如BERT)中的自编码语言模型,可以启发式地Mask词汇并进行预测替换。 TF-IDF:实质上是一种非核心词替换,对那些low TF-IDF scores进行替换,这一方法最早由Google的UDA[4]提出:
随机噪音注入
随机插入:随机插入一个词汇、相应的拼写错误、占位符等,UDA[4]则根据Uni-gram词频分布进行了采样。 随机交换:随机交换词汇或交换shuffle句子。 随机删除:随机删除(drop)词汇或句子。
注意:EDA[2]除了进行同义词替换外,也同时采用上述三种随机噪音注入。
混合&交叉
混合增强:起源于图像领域的Mixup[5],这是一种表示增强方法,借鉴这种思想,文献[6]提出了wordMixup和sentMixup将词向量和句向量进行Mixup。
交叉增强:类似于“染色体的交叉操作”,文献[7]将相同极性的文本进行交叉:
回译:基于机器翻译技术,例如从中文-英文-日文-中文;我们熟知的机器阅读理解模型QANet[8]和UDA[4]都采用了回译技术进行数据增强。 句法交换:通过句法树对文本句子进行解析,并利用相关规则进行转换,例如将主动式变成被动式句子。 对抗增强: 不同于CV领域利用GAN生成对抗进行数据增强[9],NLP中通常在词向量上添加扰动并进行对抗训练,文献[10]NLP中的对抗训练方法FGM, PGD, FreeAT, YOPO, FreeLB等进行了总结。
本节介绍的无条件增强方法,在对标注数据进行增强后标签不发生变化,但可能会造成文本主旨发生发生变化(例如情感分析中,某一时刻将good 替换为了bad),带来的噪音过大从而影响模型性能。因此,我们是否可以考虑引入标签信息来引导数据生成呢?
条件增强
定义:所谓条件增强(Conditional Data Augmentation),就是意味着需要强制引入「文本标签」信息到模型中再产生数据。
深度生成模型:既然条件增强需要引入标签信息进行数据增强,那么我们自然就会联想到Conditional变分自编码模型(CVAE),文献[11]就利用CVA进行增强。想生成一个高质量的增强数据,往往需要充分的标注量,但这却与「少样本困境」这一前提所矛盾。这也正是GAN或者CVAE这一类深度生成模型在解决少样本问题时需要考虑的一个现状。
预训练语言模型:众所周知,BERT等在NLP领域取得了巨大成功,特别是其利用大量无标注数据进行了语言模型预训练。如果我们能够结合标签信息、充分利用这一系列语言模型去做文本增强,也许能够克服深度生成模型在少样本问题上的矛盾。近来许多研究者对Conditional Pre-trained Language Models 做文本增强进行了有益尝试:
Contextual Augment[12]:这是这一系列尝试的开篇之作,其基于LSTM进行biLM预训练,将标签信息融入网络结构进行finetune,是替换生成的词汇与标签信息兼容一致。
CBERT[13]:其主要思想还是借鉴了Contextual Augment,基于BERT进行finetune,将segment embedding转换融入标签指示的label embedding(如果标签类别数目大于2类,则相应扩充),如下图,替换good生成的funny与标签positive兼容。
LAMBADA [14]:来自IBM团队,其基于GPT-2将标签信息与原始文本拼接当作训练数据进行finetune(如下图所示,SEP代表标签和文本的分割,EOS是文本结束的标志),同时也采用一个判别器对生成数据进行了过滤降噪。
在最近的一篇paper《Data Augmentation using Pre-trained Transformer Models》[15]中,根据不同预训练目标对自编码(AE)的BERT、自回归(AR)的GPT-2、Seq2Seq的BART这3个预训练模型进行了对比。不同于CBERT,没有标签信息变为label embedding而是直接作为一个token&sub-token来于原文拼接。
如上图所示,采样原始标注数据的1%作为少样本场景的设置,其发现BART表现最好,文中也做了相应对比实验发现:
AE模型BERT在做文本增强后,容易被约束产生相似的文本序列,且擅长保存标签信息。 AR模型GPT-2在做文本增强后,不受约束地生成文本,不擅长无法保留标签信息。 Seq2Seq模型BART位于AE和AR之间,可以在多样性和语义保真度之间取得良好的平衡。此外,BART可以通过更改跨度掩码的长度来控制生成数据的多样性。
总结与分析
至此,我们介绍完了NLP中的文本增强技术,以[15]的实验结果为例,我们可以发现文本增强技术可以满足本文一开始给出的第一层次评价策略,即:在少样本场景下,采用文本增强技术,比起同等标注量的无增强监督学习模型,性能会有较大幅度的提升。需要注意的是,上述相关文献中,通常只针对标注数据进行文本增强。但我们是否可以充分利用领域相关的大量无标注数据解决少样本困境呢?我们将在第2部分进行介绍。
除此之外,在实践中我们也要去思考:
是否存在一种文本增强技术,能够达到或者逼近充分样本下的监督学习模型性能? 在充分样本下,采取文本增强技术,是否会陷入到过拟合的境地,又是否会由于噪音过大而影响性能?如何挑选样本?又如何降噪?
半监督学习
这一部分主要介绍如何结合大量无标注数据解决少样本困境,相应的弱监督方法层出不穷,本文着眼于「半监督学习」,借鉴CV领域的9个主流方法进行介绍,包括:Pseudo-Label / Π-Model / Temporal Ensembling / Mean Teacher / VAT / UDA / MixMatch / ReMixMatch / FixMatch。
为什么要引入半监督学习?
监督学习往往需要大量的标注数据,而标注数据的成本比较高,因此如何利用大量的无标注数据来提高监督学习的效果,具有十分重要的意义。这种利用少量标注数据和大量无标注数据进行学习的方式称为半监督学习(Semi-Supervised Learning,SSL) 。
如上图所示,在同等的少量标注样本下,半监督学习通常取得比监督学习较好的性能。进入深度学习时代以来,SSL如何在少量标注样本下达到或超越大量标注样本下监督学习的效果,SSL如何在大量标注样本下也不会陷入到“过拟合陷阱”,是SSL研究者面临的一个挑战。
近年来,半监督深度学习取得了长足的进展,特别是在CV领域;相关的研究主要着力于如何针对未标注数据构建无监督信号,与监督学习联合建模;简单地讲,就是如何在损失函数中添加针对未标注数据相关的正则项,使模型能够充分利用大量的未标注数据不断迭代,最终增强泛化性能,正如下图所展示的那样(来自文献 [4] )。
半监督深度学习方法介绍
总的来看,深度学习时代的半监督学习,主要针对未标注数据相关的正则化项进行设置,其通常有以下两种:(滑动查看完整公式)
熵最小化(Entropy Minimization): 根据半监督学习的Cluster假设,决策边界应该尽可能地通过数据较为稀疏的地方(低密度区),以能够避免把密集的样本数据点分到决策边界的两侧。也就是模型通过对未标记数据预测后要作出低熵预测,即熵最小化:
一致性正则(Consistency Regularization): 对于未标记数据,希望模型在其输入受到扰动时产生相同的输出分布。即:
重要说明:本文将 定义为人工标签,其含义是构建“标签”指导一致性正则的实施,通常采取weak数据增强方法,也可能来自历史平均预测或模型平均预测。 定义为预测标签,为模型当前时刻对无标注数据的预测,对其输入可进行strong增强或对抗扰动。
(1) Pseudo-Label [16]
Pseudo Label的原理很简单, 其损失函数定义为:
其中 为少量标注数据量,为未标注数据量, 为第m个标记数据的logit输出,为其对应的标签;为第m个未标记数据的logit输出, 为其对应的Pseudo Label,具体的做法就是选举每个未标注样本的最大概率作为其伪标签。为了降低噪音的影响,只有当置信度大于阈值时才计算相应的损失。
我们可以看出上式中第二项正是利用了熵最小化的思想,利用未标注数据和伪标签进行训练来引导模型预测的类概率逼近其中一个类别,从而将伪标签条件熵减到最小。
模拟的是一个确定性退火过程,避免陷入局部最小值,调和平衡标注和未标注数据的训练,从而使伪label更接近真实标签:
(2) Π-Model/Temporal Ensembling [17]
Π-Model 和 Temporal Ensembling来自同一篇论文,均利用了一致性正则。
Π-Model如上图所示,对无标注数据输入
可以看出
(3) Mean Teacher [18]
Mean Teacher是对Temporal Ensembling的升级,仍然采用一致性正则(L2 loss)。
Temporal Ensembling是对预测结果进行EMA平均,但是
(4) Virtual Adversarial Training [19]
Virtual Adversarial Training(VAT)仍然采用一致性正则,学习一致性就要添加扰动。作者认为,随机扰动无法模拟复杂情况的输入,不同于上述SSL方法采用数据增强进行施加扰动,VAT采取对抗训练的方式添加噪音。
VAT不同于传统的有监督学习下的对抗训练(详细了解可阅读文献 [10] ),其没有标签信息,而是采用
(5) UDA:Unsupervised Data Augmentation for Consistency Training[4]
UDA来自Google,同样也是采用一致性正则。一致性正则的关键在于如何注入噪声,一个好的模型对于输入扰动的任何细微变化也都应具有鲁棒性。上述SSL方法注入噪音的方法通常为高斯噪音、dropout噪音、对抗噪音,这些注入方式被认为是较弱的干扰。UDA针对图像采取一种高质量的数据增强方法——RandAugment [23],通过这种strong的干扰来提高一致性训练性能。
上图为UDA的损失函数,核心在于对无标注数据
此外,UDA也利用了一些辅助技术:
结合了熵最小化正则:对无监督信号 进行sharpen操作构建人工标签,使其趋近于 One-Hot 分布,对某一类别输出概率趋向 1,其他类别趋向0,此时熵最低。此外,还直接计算了熵损失。将人工标签与strong增强后的预测标签共同构建一致性正则,并计算损失时进行了confidence-based masking,低于置信度阈值不参与loss计算。 采用训练信号退火(TSA)方法防止对标注数据过拟合,对于标注数据的置信度高于阈值要进行masking,这与无标注数据正好相反。 使用初始模型过滤了领域外的无标注数据。
(6) MixMatch [20]
MixMatch同样来自Google,与UDA类似,同样结合了熵最小化和一致性正则。其重要的操作就是通过MixMatch进行数据增强,与UDA的RandAugment不同,这种增强方式依然是weak的。MixMatch具体的数据增强操作为:
对标注数据进行一次增强,对于未标注数据作K次weak增强输入模型得到average后的概率,并对其进行与UDA类似的sharpen操作得到人工标签 ,利用了熵最小化思想。将无标注数据得到的人工标签与标注数据混合在一起并进行MixUp[5]操作,进而得到增强后的无标注数据以及标注数据。
最后对于MixMatch增强后的标注数据
(7) ReMixMatch [21]
ReMixMatch是MixMatch原作者对自己工作的改进,主要有两点:
Distribution Alignment: 分布对齐,将无标注数据的人工标签与标注数据的标签分布对齐,如上图所示:根据标注数据的标签分布(Groud-truth labels)与无标注数据的平均预测(Model prediction)的比值作为“对齐因子”,缓解猜测标签的噪音和分布不一致情况。 Strong Augmentation: MixMatch不稳定的原因可能是K次weak增强会导致不同的预测,取平均值不是具有意义的目标;ReMixMatch改进这一点,引入strong增强,将weak增强后的人工标签与strong增强后的预测标签共同构建一致性正则(KL散度)。具体的增强方式CTAugment 可参考原论文。
此外,ReMixMatch还对未标注数据丢失的权重进行了退火,并引入了Rotation loss,这里不再赘述。
(8) FixMatch [22]
FixMatch也是来自Google,实质上是UDA和ReMixMatch一个综合简化版本,舍弃了sharpen操作和UDA的训练信号退火、ReMixMatch的分布对齐和旋转损失等。UDA和ReMixMatch表明引入strong增强方式,在与weak增强方式一同构建一致性正则时是有效的。FixMatch延续了这一思想,strong增强同时使用了UDA的RandAugment和ReMixMatch的CTAugment。
不同于UDA和ReMixMatch通过sharpen构建人工标签来指导一致性正则的实施,FixMatch则直接利用Pseudo-Label 构建人工标签。具体地说:记strong增强为
其中
不同半监督学习方法的对比
至此,我们已经介绍完了近年来主流的半监督深度学习方法。回顾1.1节对一致性正则公式的介绍,我们可以发现:
人工标签是构建“标签”指导一致性正则的实施,通常采取weak数据增强方法,也可能来自历史平均预测(Temporal Ensembling)或模型平均预测(Mean Teacher); 预测标签为模型当前时刻对无标注数据的预测,其输入可进行strong增强(UDA/ReMixMatch/FixMatch)或对抗扰动(VAT).
我们将其归纳如下:
下图给出了上述SSL方法在不同数据集上的性能对比(指标为错误率):
我们可以发现借鉴了UDA和ReMixMatch的FixMatch,是目前的SOTA。上述大多数SSL方法都引入了一致性正则,其关键在于如何注入噪声,一个好的模型对于输入扰动的任何细微变化也都应具有鲁棒性。也许我们可以形成一个共识:通过strong增强的预测标签与weak增强的人工标签共同构建一致性损失,能够提高一致性训练性能,充分挖掘未标注数据中潜在的价值,最终增强泛化性能。
上述结合图像数据增强的半监督学习方法在CV领域已经取得成功,基本满足本文一开始提出的三个层次评价策略,特别是:在少样本场景下可以比肩充分样本下的监督学习模型性能,而在充分样本场景下,性能仍然继续提升。相关实验可以进一步阅读CV相关论文,接下来我们主要关注其在NLP的表现。
UDA:文本增强+半监督学习
作为NLPer,我们更关心上述文本增强与半监督学习的结合在文本领域表现如何?我们主要介绍分析Google的UDA[]相关结果。
本文在第1部分重点介绍了文本增强技术,文本增强方法通常针对标注数据(有监督数据增强),我们可以看到其在少样本场景通常会取得稳定的性能提升,但相较于充分样本下的监督学习性能,也许是有限的提升("cherry on the cake")。
为克服这一限制,UDA通过一致性训练框架(正如2.2节介绍的那样),将有监督的数据增强技术的发展扩展到了有大量未标记数据的半监督学习,尽可能的去利用大量未标记数据,这也正是论文名字——无监督数据增强(Unsupervised Data Augmentation)的由来。
UDA在六个文本分类任务上结合当前如日中天的BERT迁移学习框架进行了实验。迁移学习框架分别为:(1)Random:随机初始化的Transformer;(2):BERT_base;(3):BERT_large;(4):BERT_finetune:基于BERT_large在domain数据集上继续进行预训练;
如上图所示(指标为错误率),Pre-BERT SOTA为BERT出现之前的相关SOTA模型。我们可以发现:
在少样本场景下,UDA相较于同等监督学习模型,性能明显提升; 在少样本场景下,UDA能够逼近充分样本下的监督学习模型性能,特别地,在IMDb上具有20个标注数据的UDA优于在1250倍标注数据上训练的SOTA模型。相较于2分类任务,5分类任务难度更高,未来仍有提升空间。 UDA兼容了迁移学习框架,进一步domain预训练后,性能更佳。
那么,在充分样本场景下,继续使用UDA框架表现如何?从上图可以看出,在更多、更充分的标注数据数量下,融合UDA框架,性能也有一定提升。
总结与展望
本文针对「如何解决少样本困境?」,从「文本增强」和「半监督学习」两个角度进行了介绍,简单总结如下:
文本增强提供了原有标注数据缺少的归纳偏差,在少样本场景下通常会取得稳定、但有限的性能提升;更高级、更多样化和更自然的增强方法效果更佳。 融合文本增强+半监督学习技术是一个不错的选择。半监督学习中一致性正则能够充分利用大量未标注数据,同时能够使输入空间的变化更加平滑,从另一个角度来看,降低一致性损失实质上也是将标签信息从标注数据传播到未标注数据的过程。
在具体实践中,如何有效地解决少样本问题需要更为全面的考虑,我们可以融合文本增强、半监督学习、迁移学习、主动学习、少样本学习等构建统一的低资源NLP解决方案;如上图所示,笔者尝试给出了信息抽取领域的少样本低资源解决方案;此外,很多弱监督学习方法也被提出,这一类方法更为关键的是如何挑选样本、如何降噪学习等,希望后续有机会与大家交流~
[1] A Visual Survey of Data Augmentation in NLP
[2] EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
[3] TinyBERT: Distilling BERT for Natural Language Understanding
[4] Unsupervised Data Augmentation for Consistency Training
[5] mixup: BEYOND EMPIRICAL RISK MINIMIZATION
[6] Augmenting Data with Mixup for Sentence Classification: An Empirical Study
[7] Data Augmentation and Robust Embeddings for Sentiment Analysis
[8] QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension
[9] Data Augmentation Using GANs
[10] [一文搞懂NLP中的对抗训练](https://zhuanlan.zhihu.com/p/103593948)
[11] Controlled Text Generation for Data Augmentation in Intelligent Artificial Agents
[12] Contextual augmentation: Data augmentation by words with paradigmatic relations
[13] Conditional BERT contextual augmentation
[14] Do Not Have Enough Data? Deep Learning to the Rescue!
[15] Data Augmentation using Pre-trained Transformer Models
[16] Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks
[17] Temporal ensembling for semi-supervised learning
[18] Mean teachers are better role models: Weight-averaged consistency targets improve semi-supervised deep learning results
[19] Virtual Adversarial Training: a Regularization Method for Supervised and Semi-supervised Learning
[20] MixMatch: A Holistic Approach to Semi-Supervised Learning
[21] ReMixMatch: Semi-Supervised Learning with Distribution Alignment and Augmentation Anchoring
[22] FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence
[23] RandAugment: Practical automated data augmentation with a reduced search space
下载1:四件套
在机器学习算法与自然语言处理公众号后台回复“四件套”,
即可获取学习TensorFlow,Pytorch,机器学习,深度学习四件套!
下载2:仓库地址共享
在机器学习算法与自然语言处理公众号后台回复“代码”,
即可获取195篇NAACL+295篇ACL2019有代码开源的论文。开源地址如下:https://github.com/yizhen20133868/NLP-Conferences-Code
重磅!机器学习算法与自然语言处理交流群已正式成立!
群内有大量资源,欢迎大家进群学习!
额外赠送福利资源!深度学习与神经网络,pytorch官方中文教程,利用Python进行数据分析,机器学习学习笔记,pandas官方文档中文版,effective java(中文版)等20项福利资源
获取方式:进入群后点开群公告即可领取下载链接
注意:请大家添加时修改备注为 [学校/公司 + 姓名 + 方向]
例如 —— 哈工大+张三+对话系统。
号主,微商请自觉绕道。谢谢!
推荐阅读: