暴走的Mine

  • 2

    获得赞
  • 2

    发布的文章
  • 0

    答辩的项目

NLP数据增强方法

Python3 自然语言处理

最后更新 2020-04-28 15:34 阅读 9080

最后更新 2020-04-28 15:34

阅读 9080

Python3 自然语言处理

一、应用背景 

众所周知,深度学习中的神经网络模型都是依靠数据驱动,优质的数据能够显著提升模型的运行效果。通常来说,有监督学习的模型性能会好于无监督学习的模型。但是,有监督学习的模型需要大量的标注数据,而人工标注数据需要花费大量的人力物力,所以数据增强是一种有效的解决方案。

二、常用方法

1.传统方法在NLP领域中,对文本数据进行增强无外乎两种方法,一种是加噪法,另一种是回译法。加噪法是指在原有数据基础上通过替换句子中的某些词、删除某个词来生成新的文本数据。而回译法则是将原有文本翻译成其他语言再翻译回来的方法,由于不同语言逻辑不相同,通常会得到差异较大的数据。Easy Data Augmentation for Text Classification Tasks (EDA)提出了几种加噪的方法,论文链接,分别是同义词替换(SR: Synonyms Replace)、随机插入(RI: Randomly Insert)、随机交换(RS: Randomly Swap)、随机删除(RD: Randomly Delete)。下面进行详细介绍:

① EDA:

(1)同义词替换(SR: Synonyms Replace):不考虑停用词,在文本中随机挑选一些词进行同义词替换例如:“你打篮球的时候像cxk一样”–>“你打篮球的时候仿佛cxk一样”

(2)随机插入(RI: Randomly Insert):不考虑停用词,随机选择句子中的一个词,在这个词语的同义词集合中挑选一个插入句子中随机位置。例如:“我好爱这个世界啊”–>“喜欢我好爱这个世界啊”

(3)随机交换(RS: Randomly Swap):随机在句子中选择两个词,并进行交换例如:“cxk擅长唱、跳、rap”–>“cxk擅长唱、rap、跳”

(4)随机删除(RD: Randomly Delete):以一定的概率擅长句子中的词例如:“如何评价cxk的歌曲”–>“如何cxk的歌曲”实际效果如下图:

20200411150612268.png

上图是针对不同训练集大小的五个文本分类任务的EDA操作的平均性能增益。 α参数粗略地表示“每次扩充改变的句子中单词的百分比。”纵轴是模型增益。我们可以看到,当α = 0.1时,模型提升就能达到很好的效果。训练数据越少,提升效果效果越明显。过多的数据增强数据实际上对模型的提升有限,甚至在RD和SR两种方法上还会严重损害效果。

② 回译法

这种方法主要是把一段中文先翻译成另一种语言,然后再翻译回来,形成一段新的文本。

例如:“我喜欢学习,学习使我快乐,学习使我幸福”

–>“I like learning, learning makes me happy, learning makes me happy”

–>“我喜欢学习,学习使我快乐,学习使我快乐”

这种方法被广泛应用在各大比赛中,它有时候能够改变句法结构,主要还是依赖于翻译的质量。

2.深度学习方法

① 半监督方法半监督学习方法主要目的是应用到没有标签的数据中,较少对大规模数据集的依赖。提出了一种MixMatch算法,它的工作方式是通过 MixUp 猜测数据扩增方法产生的无标签样本的低熵标签,并把无标签数据和有标签数据混合起来。

② 无监督数据增强UDAEDA适用于小规模数据集的数据增强,对于大数据集来说就望而却步了。Unsupervised Data Augmentation(UDA)无监督数据扩增方法被提出,成为了大数据集的一个解决方案。MixMatch 算法除了使用普通的数据增广,还有一个秘诀是 Mixup 增广术。而 UDA 的成功,得益于对特定任务使用特定目标的数据增强算法。与常规噪声比如高斯噪声、dropout 噪声相比,针对不同任务使用不同数据增强方法能够产生更有效的数据。这种方法能够产生有效、真实的噪声,且噪音多样化。另外以目标和性能为导向的数据增强策略可以学习如何在原始标记集中找出丢失的或最想要的训练信号。(比如图像数据以颜色为目标进行数据增强)

20200411161535159.png

图中展示了UDA训练时的结构。为了使用标记和未标记的所有数据,对有标签的数据训练时加入了cross entropy loss 函数。对未标记数据,与Mixmatch使用l2 loss 不同,UDA对增广后未标记的数据预测结果使用KL散度。Targeted data augmentation 特定目标的数据增强 则包括了back translation回译、autoaugment(图像)、TFIDF word replacement。其中回译是从英文转法文再译回英文,IDF是从DBPedia语料中获取。

作者在文本的处理方式上选用了回译和关键词提取两种方式,回译的方式可以帮助丰富数据的句式和句型,而tfidf方法优化了EDA的随机处理词策略,根据DBPedia先验知识和实际预料的词频确定关键词,再根据确定好的关键词替换同义词,避免无用数据和错误数据的产生。

另外,UDA优秀的另一个重要的突破是采用了Training Signal Annealing(TSA)方法在训练时逐步释放训练信号。

当收集了少量的标注的数据和大量未标记的数据时,可能会面临标记数据和未标记数据相差很大的情况。比如标记的数据都和保险相关,但未标记的数据都是热点新闻。因为需要采用大量的未标记数据进行训练,所需的模型会偏大,而大模型又会轻松的在有限的有监督数据上过拟合,这时TSA就要逐步的释放有监督数据的训练信号了。作者对每个training step 都设了一个阈值ηt,且小于等于1,当一个标签例子的正确类别P的概率高于阈值ηt时,模型从损失函数中删除这个例子,只训练这个minibatch下其他标记的例子。

20200411162219162.png

上图展示了TSA的三种方式,分别适用于不同的数据。exp模式更适合于问题相对容易或标注量较少的情况。因为监督信号主要在训练结束时释放,且可以防止模型快速过拟合。

20200411164312140.png

同理,log模式适合大数据量的情况,训练过程中不太容易过拟合。实验结果表明,这种无监督方法创造的数据在多个任务上都有很好的表现。在半监督学习测试中,UDA击败了包括MixMatch的所有方法,错误率也降低了30%。

③ GAN生成对抗网络

待续。。 

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://www.flyai.com/article/410
讨论
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除