Press "Enter" to skip to content

NLP中一些简单的数据增强技术

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

数据增强技术已经是图像领域的标配,通过对图像的翻转、旋转、镜像、高斯白噪声等技巧实现数据增强。然而,在NLP领域,情况有所不同:改变某个词汇可能会改变整个句子的含义,那幺在NLP领域,如何使用数据增强技术呢?

 

ICLR 2019 workshop 论文《EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks》介绍了几种NLP数据增强技术,并推出了[EDA github代码]( jasonwei20/eda_nlp )。EDA github repo提出了四种简单的操作来进行数据增强,以防止过拟合,并提高模型的泛化能力。下面进行简单的介绍:

 

1. 同义词替换(SR: Synonyms Replace) :不考虑stopwords,在句子中随机抽取n个词,然后从同义词词典中随机抽取同义词,并进行替换。

 

2. 随机插入(RI: Randomly Insert) :不考虑stopwords,随机抽取一个词,然后在该词的同义词集合中随机选择一个,插入原句子中的随机位置。该过程可以重复n次。

 

3. 随机交换(RS: Randomly Swap) :句子中,随机选择两个词,位置交换。该过程可以重复n次。

 

4. 随机删除(RD: Randomly Delete) :句子中的每个词,以概率p随机删除。

 

上述四种数据增强技术效果如何呢?(这里以文本分类实验为例)

 

在英文的数据上出奇的好!经过上述四种操作,数据增强后的句子可能不易理解,但作者们发现模型变得更加鲁棒了,尤其是在一些小数据集上。实验结果如下:

 

 

我们可以发现,仅仅使用50%的训练数据,使用EDA就能够达到原始模型使用100%训练数据的效果。

 

可能有人会问:使用EDA技术后,改变后的数据和原数据的特征空间分布与其标签是否一致?

 

作者同样做了一个实验,在产品评论数据集上,使用RNN结合EDA数据增强进行训练,将最后一层的输出作为文本特征,使用tSNE进行可视化,得到如下结果:

 

 

可以发现,数据增强后的数据分布与原始数据的分布非常吻合。这也意味着EDA对于句子的修改,并没有改变数据分布以及标签的分布。

 

上述四种数据增强技术,每一个都很有用吗?

 

实验结果如下:

 

 

对于四种技术,数据集很小时,每一种技术都能够有2-3%的提升,当数据集很大时,每一种技术也能够有1%的提升。根据作者的经验来看,不要改变超过1/4的词汇的前提下,模型的鲁棒性都能得到很大的提升。

 

既然EDA很有用,大家可能有一个问题:我们要产生多少个句子来进行数据增强呢?

 

答案是取决于训练数据的大小。 当训练数据很小时,模型更容易过拟合,这时建议多生成一些数据增强的样本。当训练数据很大时,大量增加数据增强样本可能没有帮助,因为模型本身可能已经能够泛化。 实验结果如下:

 

 

其中,横轴是一个句子平均产生的增强样本数目,纵轴是模型增益。我们可以看到,当一个句子平均产生4-8个新句子时,模型提升就能达到很好的效果。 训练数据越少,提升效果效果越明显。 过多的数据增强数据实际上对模型的提升有限。 EDA中的四种简单的NLP数据增强技术能够有效提升文本分类的模型表现。

 

本文转自“机器学习小知识”,作者 杨洋

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注