NLP中数据增强
Data Augmentation Approaches in Natural Language Processing: A Survey
数据增强方法
数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度,类似CV的裁剪方法可能会改变语义,既要保证数据质量又要保证多样性。
作者根据生成样本的多样性程度,将DA方法分为了以下三种:
Paraphrasing:对句子中的词、短语、句子结构做一些更改,保留原始的语义
Noising:在保证label不变的同时,增加一些离散或连续的噪声,对语义的影响不大
Paraphrasing
这类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了6种方法:
- Thesaurus:利用词典、知识图谱等外部数据,随机将非停用词替换成同义词或上位词,如果增加多样性的话还可以替换成相同词性的其他词
- Semantic Embeddings:利用语义向量,将词或短语替换成相近的(不一定是同义词)。由于每个词都有语义表示,可替换的范围更大。而上一种方法只能替换图谱里的
- MLMs:利用BERT等模型,随机mask掉一些成分后生成新的
- Rules:利用一些规则,例如缩写、动词变位、否定等,对句子一些成分进行改写,比如把 is not 变成 isn't
- Machine Translation:分为两种,Back-translation指把句子翻译成其他语言再翻译回来,Unidirectional Translation指在跨语言任务中,把句子翻译成其他语言
- Model Generation:利用Seq2Seq模型生成语义一致的句子
- Dropout:SimCSE中使用的,用dropout机制生成语义相近的表示(自己加的)
优缺点
Noising
人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性。
作者给出了5种增加噪声的方法:
- Swapping:除了交换词之外,在分类任务中也可以交换instance或者sentence
- Deletion:可以根据tf-idf等词的重要程度进行删除
- Insertion:可以把同义词随机插入句子中
- Substitution:把一些词随机替换成其他词(非同义),模拟misspelling的场景。为了避免改变label,可以使用label-independent的词,或者利用训练数据中的其他句子
- Mixup:这个方法最近两年比较火,把句子表示和标签分别以一定权重融合,引入连续噪声,可以生成不同label之间的数据,但可解释性较差
总的来说,引入噪声的DA方法使用简单,但会对句子结构和语义造成影响,多样性有限,主要还是提升鲁棒性。