15种NLP数据增强方法总结与对比

数据增强的方法

数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度,类似CV的裁剪方法可能会改变语义,既要保证数据质量又要保证多样性,使得大家在做数据增强时十分谨慎。

作者根据生成样本的多样性程度,将数据增强分为以下三种方法:

  • Paraphrasing:对句子中的词、短语、句子结构做一些更改,保留原始的语义
  • Noising:在保证label不变的同时,增加一些离散或连续的噪声,对语义的影响不大
  • Sampling: 旨在根据目前的数据分布选取新的样本,会生成更多的数据。
    在这里插入图片描述

Paraphrasing

在这里插入图片描述
该类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了6种方法

  • Thesaurus
    利用词典,知识图谱等外部数据,随机将非停用词替换成同义词或上位词,如果增加多样性的话还可以替换成相同词性的其他词。
  • Semantic Embeddings
    利用语义向量,将词或短语替换成相近的(不一定是同义词)由于每个词都有语义表示,可替换范围更大,而上一种方法只能替换图谱里的。
  • MLMs
    利用BERT等模型,随机mask掉一些成分后生成新的
  • Rules
    利用一些规则,例如缩写、动词变位、否定等,对句子的一些成分进行改写,比如把 is not 变成 isn’t
  • Machine Translation
  • :分为两种,Back-translation指把句子翻译成其他语言再翻译回来,Unidirectional Translation指在跨语言任务中**,把句子翻译成其他语言**
  • Model Generation
  • 利用Seq2seq模型生成语义一致句子。
    在这里插入图片描述
    歧义」主要是指有些多义词在不同场景下意思不一样

Noising

人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性

在这里插入图片描述

  • Swapping
    除了交换词以外,在分类任务中也可以交换instance或者sentence
  • Deletion
    在分类任务中也可以交换instance或者sentence
  • Insertion
    可以把同义词随机插入句子中
  • Substitution
    把一些词随机替换成其他词(非同义),模拟misspelling的场景。为了避免改变label,可以使用label-independent的词,或者利用训练数据中的其他句子
  • Mixup
    这个方法最近两年比较火,把句子表示和标签分别以一定权重融合,引入连续噪声,可以生成不同label之间的数据**,但可解释性较差**

总的来说,引入噪声的数据增强方法使用简单,但对句子结构和语义造成影响,多样性有限,主要还是提升模型的鲁棒性。

对抗样本
Dropout:也是SimCSE用到的,还有R-drop,都是通过dropout来加入连续噪声
Feature Cut-off:比如BERT的向量都是768维,可以随机把一些维度置为0,这个效果也不错

Sampling

在这里插入图片描述
从数据的分布中采取新样本,不同于较通用的paraphrasing,采样更依赖任务,需要在保证数据可靠性的同时增加更多多样性。比如 前两个数据增强方法更难,作者整理四种方法。
在这里插入图片描述
在这里插入图片描述

Method Stacking

实际应用时可以应用多种方法、或者一种方法的不同粒度。

总结

数据增强算是相当接地气的研究了,少样本、领域迁移、是每个NLPer都会遇到的问题,而在数据上做文章可能比其他模型改动的方法更为有效。同时从这篇综述也可以看到**,数据增强其实可以做得很fancy**,还不影响线上速度,比如我之前就用T5和ELECTRA做过数据增强,都有一些效果,可谓低调而不失奢华,典雅而不失大气,深度拿捏得稳稳的

猜你喜欢

转载自blog.csdn.net/kuxingseng123/article/details/129114960
今日推荐