提纲
1 简介
2 EDA
3 UDA
4 Dependency tree morphing
5 总结
参考文献
1 简介
目前数据增强的方法层出不穷,在接下来的篇章,我们着重介绍其中几种类型的数据增强的代表性方法,首先我们来看看基于规则的数据增强的方法, **基于规则的方法通过一定的规则显示地修改原始数据,从而增加数据的多样性,这种类型的方法形式更加直观,更容易被理解** ,作为首先学习的数据增强方法最适合不过了。
2 EDA
**这应该是大家都耳闻过的一种数据增强方法,通过对原始数据进行一系列的随机替换,插入,删除和交换的token级别(增,删,改,换)的操作来获取更加多样性的数据,** 在下游多个文本分类数据取得不错效果。这几种数据增强操作的细节介绍如下。
图1: EDA操作介绍
a) 同义词替换(SR)
随机从句子中选择n个词(非停用词),将选中的词随机替换成对应的同义词。 **之所以不对停用词进行替换,在于停用词本身对于句子而言没有太大帮助,在例如检索,搜索场景下甚至会过滤掉停用词,所以在这里没有进行替换的必要,后续的不涉及停用词的操作理由也是如此。**
b) 随机插入(RI)
随机找到句子中一个词(非停用词)对应的随机一个同义词,将该同义词插入到句子中一个随机的位置,重复以上步骤n次。
c) 随机交换(RS)
随机选择句子中的两个词,然后交换彼此的顺序,重新以上步骤n次。
d) 随机删除(RD)
遍历句子中的每个位置,对于每个位置上的词,以概率p进行随机删除。
**由于长文本拥有更多的词,所以能够在承受更多的噪声下同时保持原始的类别标签。为此,EDA在将上述同义词替换,随机插入,随机交换中的操作次数n跟文本长度l关联起来,即n=p*l,其中p是随机删除操作中的概率,从而允许长文本有更多数据增强操作。**
**在下游的分类任务中,无论训练数据量的多少,EDA都能带来明显的模型性能提升,同时,平均水平上,使用EDA和一半的训练数据训练的模型性能能够达到只使用全部训练数据训练的模型的效果。**
图2: EDA带来的模型性能提升
此外,由于是下游任务是分类任务,为了确认EDA操作是否会导致文本类别发现变化(原文本类别是A,经过EDA后得到的新文本类别是B),论文还进行了相应的可视化分析, **最终发现数据增强的文本紧紧围绕在原文本周围,对于大部分数据增强的文本而言,依旧会保留原文本的类别标签。**
图3: 可视化分析
最后就是每个文本应该通过EDA去扩充多少数量的数据呢? **通过实验发现,训练数据越少的话,模型更容易过拟合,所以应该通过数据增强扩充更多的数据。当训练数据较为充足时,数据增强扩充数量超过4个以后就不会带来新的帮助了。**
3 UDA
如果手头只有少量的标注数据和大量的未标注数据,应该怎么利用数据增强训练模型?就让UDA来告诉你答案。 **UDA提出了一种关于如何有效地对未标注数据进行噪声处理的方法,这里的噪声处理通过更加先进的数据增强办法进行替代,该方法在相同的一致性训练框架中对多个任务带来实质性的改进。**
图4: UDA框架
**如图中所示,UDA包括两部分,对标注数据进行监督学习的左半部,以及对未标注数据约束一致性的右半部分。损失函数也包括两部分,左边部分是标注样本的交叉熵损失,右边部分是未标注样本的一致性惩罚损失(希望模型对于未标注样本在引入数据增强前后的数据的预测结果尽可能接近)。**
图6: UDA的损失函数
UDA中跟文本相关的数据增强方法有以下两种,
a) Back-translation
顾名思义,就是将句子从A语言翻译成B语言,然后再翻译回A语言。 **但是在实验中发现释义的多样性比起翻译的质量或者有效性更为重要,所以在翻译模型的文本生成采用了随机采样,而不是较为常用的beam search。**
b) Word replacing with TF-IDF
Back-translation的方法虽然善于保持句子的全局语义,但是对于需要保留的词缺乏有效控制,但是对于分类任务而言,有些关键词显得尤为重要。 **基于此,在回译的基础上,计算句子中每个token的TF-IDF得分,根据TF-IDF得分计算对应的对应token需要被替换的概率(TF-IDF得分越低的token越缺乏信息量,越应该被替换),根据该概率决定token是否需要保留或者替换。一旦确定某个token需要被替换后,将随机从词表中选择一个非关键词的token进行替换。**
在训练中很容易遇到一个问题,就是模型很快就在小量的监督数据集上过拟合,但是在大量的非标注数据上依旧欠拟合 **。基于此,论文提出了一种名为TSA的训练技巧,对于训练的每个时间步,关于监督数据上的损失只计算那些置信度得到小于阈值(阈值会随着时间步不断增加)的样本。这种方式可以防止模型在简单的标注数据上过度训练。**
4 Dependency tree morphing
这是一种受图像处理启发的数据增强方法,基于NLP的依赖树结构,提出两个数据增强操作,“cropping”,移除句子中依赖树中的连接,类似于图片的裁剪,“rotation”,移动句子中围绕根节点的树分支,类似于图片的旋转。
借助于NLP句法分析输出的以根节点为中心的依赖树结果,可以得到文字中各个成分的属性以及彼此之间的关系,如下图的a示例。Cropping的思想是去识别句子中的我们想去聚焦的部分,同时移除其他部分。可以理解为保留句子的某些重要部分,然后移除掉其余不相关部分,进而扩充成新的句子。例如一个主谓宾结构的句子,通过这种方式可以分别得到主谓,谓宾等多个句子。Cropping可能会导致句子层面上的语义迁移,但是它依旧保留局部的句法标签,甚至浅层的语义标签。Rotation则是选择根节点作为句子的中心,然后去旋转围绕着根节点的可变性树片段(可变性树片段通常由语言的形态分类定义)。可以理解为对于大多数对顺序不严格的语言,可以通过调整句子中各个成本的顺序来生成新的数据,同时保持语义的一致。这不是跟小学中把主动句改成被动句的思路如出一辙嘛。
区别于其他的数据增强方法,Dependency tree morphing更能保留句子基本的语义信息。
图7: Dependency tree morphing示例
5 总结
rule-based的数据增强方法多多少少都有规则的影子,在设计上都比较直观,容易理解,对于少量标注数据而言,通过rule-based的数据增强办法能方式模型在标注数据上轻易过拟合,同时还能进一步的提升模型预测效果。
参考文献
1.(2019,) EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
https://aclanthology.org/D19-1670.pdf
2.(2020,) UNSUPERVISED DATA AUGMENTATION FOR CONSISTENCY TRAINING
https://arxiv.org/pdf/1904.12848v3.pdf
3.(2018) Data Augmentation via Dependency Tree Morphing for Low-Resource Languages