贵司不断优化网站建设,西安网页搭建,邯郸做小程序公司,武器系统软件开发文档数据增强的方法
数据增强#xff08;Data Augmentation#xff0c;简称DA#xff09;#xff0c;是指根据现有数据#xff0c;合成新数据的一类方法。毕竟数据才是真正的效果天花板#xff0c;有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP…数据增强的方法
数据增强Data Augmentation简称DA是指根据现有数据合成新数据的一类方法。毕竟数据才是真正的效果天花板有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度类似CV的裁剪方法可能会改变语义既要保证数据质量又要保证多样性使得大家在做数据增强时十分谨慎。
作者根据生成样本的多样性程度将数据增强分为以下三种方法
Paraphrasing对句子中的词、短语、句子结构做一些更改保留原始的语义Noising在保证label不变的同时增加一些离散或连续的噪声对语义的影响不大Sampling 旨在根据目前的数据分布选取新的样本会生成更多的数据。
Paraphrasing 该类方法根据替换的成分不同又可以分为词、短语、句子级别。作者共总结了6种方法
Thesaurus 利用词典知识图谱等外部数据随机将非停用词替换成同义词或上位词如果增加多样性的话还可以替换成相同词性的其他词。Semantic Embeddings 利用语义向量将词或短语替换成相近的不一定是同义词由于每个词都有语义表示可替换范围更大而上一种方法只能替换图谱里的。MLMs 利用BERT等模型随机mask掉一些成分后生成新的Rules 利用一些规则例如缩写、动词变位、否定等对句子的一些成分进行改写比如把 is not 变成 isn’tMachine Translation分为两种Back-translation指把句子翻译成其他语言再翻译回来Unidirectional Translation指在跨语言任务中**把句子翻译成其他语言**Model Generation利用Seq2seq模型生成语义一致句子。 歧义」主要是指有些多义词在不同场景下意思不一样
Noising
人在读文本时对噪声是免疫的比如单词乱序、错别字等。基于这个思想可以给数据增加些噪声来提升模型鲁棒性。 Swapping 除了交换词以外在分类任务中也可以交换instance或者sentenceDeletion 在分类任务中也可以交换instance或者sentenceInsertion 可以把同义词随机插入句子中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做过数据增强都有一些效果可谓低调而不失奢华典雅而不失大气深度拿捏得稳稳的。