在医疗、金融、法律等领域,高质量的标注数据十分稀缺、昂贵,我们通常面临少样本低资源问题。本文从「文本增强」和「半监督学习」这两个角度出发,谈一谈如何解决少样本困境。
正式介绍之前,我们首先需要思考什么才是一种好的解决少样本困境的方案?本文尝试给出了三个层次的评价策略,我们希望采取相关数据增强或弱监督技术后:
基于此,本文首先总结了nlp中的文本增强技术,然后串讲了近年来9个主流的半监督学习模型,最后主要介绍了来自Google提出的UDA(一种文本增强+半监督学习的结合体)。本文的组织结构为:
谈起文本增强技术,相信NLPer一定不会陌生,相关方法也是数不胜数。我们通常对标注数据集提供附加的感应偏置进行扩充,如何设计增强变换就变得至关重要。本文尝试从一个新角度——是否条件增强,借鉴文献[1]进行了总结归纳:
定义:既可以对标注数据进行增强(增强后标签不发生变化),又可以针对无标注数据进行增强,不需要强制引入标签信息。
词汇&短语替换
随机噪音注入
注意:EDA[2]除了进行同义词替换外,也同时采用上述三种随机噪音注入。
混合&交叉
交叉增强:类似于“染色体的交叉操作”,文献[7]将相同极性的文本进行交叉:
本节介绍的无条件增强方法,在对标注数据进行增强后标签不发生变化,但可能会造成文本主旨发生发生变化(例如情感分析中,某一时刻将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表现最好,文中也做了相应对比实验发现:
至此,我们介绍完了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] )。
总的来看,深度学习时代的半监督学习,主要针对未标注数据相关的正则化项进行设置,其通常有以下两种:(滑动查看完整公式)
重要说明:本文将 定义为人工标签,其含义是构建“标签”指导一致性正则的实施,通常采取weak数据增强方法,也可能来自历史平均预测或模型平均预测。 定义为预测标签,为模型当前时刻对无标注数据的预测,对其输入可进行strong增强或对抗扰动。
(1) Pseudo-Label [16]
Pseudo Label的原理很简单, 其损失函数定义为:
其中 为少量标注数据量,为未标注数据量, 为第m个标记数据的logit输出,为其对应的标签;为第m个未标记数据的logit输出, 为其对应的Pseudo Label,具体的做法就是选举每个未标注样本的最大概率作为其伪标签。为了降低噪音的影响,只有当置信度大于阈值时才计算相应的损失。
我们可以看出上式中第二项正是利用了熵最小化的思想,利用未标注数据和伪标签进行训练来引导模型预测的类概率逼近其中一个类别,从而将伪标签条件熵减到最小。
模拟的是一个确定性退火过程,避免陷入局部最小值,调和平衡标注和未标注数据的训练,从而使伪label更接近真实标签:
(2) Π-Model/Temporal Ensembling [17]
Π-Model 和 Temporal Ensembling来自同一篇论文,均利用了一致性正则。
Π-Model如上图所示,对无标注数据输入进行了两次不同的随机数据增强、并通过不同dropout输出得到和 ,并引入一致性正则到损失函数(L2 loss)中:
可以看出和 来自同一时间步产生的两次结果,同一个train step要进行两次前向计算,可以预见这种单次计算的噪音较大、同时降低训练速度。Temporal Ensembling则采用时序融合模型,是历史的EMA加权平均和,将其视作人工标签,同一个train step只进行一次计算,如下图所示:
(3) Mean Teacher [18]
Mean Teacher是对Temporal Ensembling的升级,仍然采用一致性正则(L2 loss)。
Temporal Ensembling是对预测结果进行EMA平均,但是每个epoch才更新一次,需要等到下一个epoch相关信息才能被模型学习。为克服这一缺点,Mean Teacher采取对模型参数进行EMA平均,其认为训练步骤的上平均模型会比直接使用单一模型权重更精确,将平均模型作为teacher预测人工标签,由当前模型(看作student)预测。
(4) Virtual Adversarial Training [19]
Virtual Adversarial Training(VAT)仍然采用一致性正则,学习一致性就要添加扰动。作者认为,随机扰动无法模拟复杂情况的输入,不同于上述SSL方法采用数据增强进行施加扰动,VAT采取对抗训练的方式添加噪音。
VAT不同于传统的有监督学习下的对抗训练(详细了解可阅读文献 [10] ),其没有标签信息,而是采用 构建一个虚拟标签,并根据这个虚拟标签计算对抗扰动方向 (通常是梯度上升的方向,为正梯度),这也是称之为“虚拟对抗训练”的原因吧~。VAT采用KL散度来计算一致性正则:
(5) UDA:Unsupervised Data Augmentation for Consistency Training[4]
UDA来自Google,同样也是采用一致性正则。一致性正则的关键在于如何注入噪声,一个好的模型对于输入扰动的任何细微变化也都应具有鲁棒性。上述SSL方法注入噪音的方法通常为高斯噪音、dropout噪音、对抗噪音,这些注入方式被认为是较弱的干扰。UDA针对图像采取一种高质量的数据增强方法——RandAugment [23],通过这种strong的干扰来提高一致性训练性能。
上图为UDA的损失函数,核心在于对无标注数据 通过strong增强转化为,采用KL散度来计算两者间的一致性损失。UDA也通过回译和非核心词替换对文本进行无监督增强,我们将在第3部分作详细介绍。
此外,UDA也利用了一些辅助技术:
(6) MixMatch [20]
MixMatch同样来自Google,与UDA类似,同样结合了熵最小化和一致性正则。其重要的操作就是通过MixMatch进行数据增强,与UDA的RandAugment不同,这种增强方式依然是weak的。MixMatch具体的数据增强操作为:
最后对于MixMatch增强后的标注数据 和无标注数据分别计算损失项,采用L2 loss引入一致性正则:
(7) ReMixMatch [21]
ReMixMatch是MixMatch原作者对自己工作的改进,主要有两点:
此外,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增强为 和weak增强为,对于标注数据只使用弱增强并计算交叉熵;对于无标注数据使用weak增强构建人工标签 ,使用strong增强构建预测标签,最终损失形式为:
其中 为置信度阈值,对低于阈值的人工标签不参与loss计算进行confidence-based masking。
至此,我们已经介绍完了近年来主流的半监督深度学习方法。回顾1.1节对一致性正则公式的介绍,我们可以发现:
我们将其归纳如下:
下图给出了上述SSL方法在不同数据集上的性能对比(指标为错误率):
我们可以发现借鉴了UDA和ReMixMatch的FixMatch,是目前的SOTA。上述大多数SSL方法都引入了一致性正则,其关键在于如何注入噪声,一个好的模型对于输入扰动的任何细微变化也都应具有鲁棒性。也许我们可以形成一个共识:通过strong增强的预测标签与weak增强的人工标签共同构建一致性损失,能够提高一致性训练性能,充分挖掘未标注数据中潜在的价值,最终增强泛化性能。
上述结合图像数据增强的半监督学习方法在CV领域已经取得成功,基本满足本文一开始提出的三个层次评价策略,特别是:在少样本场景下可以比肩充分样本下的监督学习模型性能,而在充分样本场景下,性能仍然继续提升。相关实验可以进一步阅读CV相关论文,接下来我们主要关注其在NLP的表现。
作为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框架,性能也有一定提升。
本文针对「如何解决少样本困境?」,从「文本增强」和「半监督学习」两个角度进行了介绍,简单总结如下:
在具体实践中,如何有效地解决少样本问题需要更为全面的考虑,我们可以融合文本增强、半监督学习、迁移学习、主动学习、少样本学习等构建统一的低资源NLP解决方案;如上图所示,笔者尝试给出了信息抽取领域的少样本低资源解决方案;此外,很多弱监督学习方法也被提出,这一类方法更为关键的是如何挑选样本、如何降噪学习等,希望后续有机会与大家交流~
重磅推荐!NewBeeNLP目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 面试交流 / 大厂内推 等),赶紧添加下方微信加入一起讨论学习吧!
[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
- END -
记得把NewBeeNLP设为星标哦
等你在看
联系客服