声明:本文转载自 李rumor 公众号
编者按:
本篇综述出自哈工大社会计算与信息检索研究中心(哈工大SCIR)车万翔老师的团队,一共总结了15种NLP可以用到的数据增强方法、优缺点以及一些使用技巧。原文作者就本篇综述进行总结及解读,如需使用请参考原文以及其他文献的应用细节。
数据增广(Data Augmentation,DA)方法通过产生用于模型训练的新数据,来缓解深度学习任务中可能存在的数据稀缺问题。DA方法较早被应用在CV领域,近年来,其在自然语言处理任务中也得到了越来越多的关注。当下,DA方法种类繁多,而自然语言处理的任务又多种多样、各具特点和挑战,这导致研究者常常难以选择合适的DA方法,或跟进相关进展。
为了解决上述问题,并帮助研究者更好地理解和使用DA方法,本文系统总结了自2015年起一百余篇相关工作,并分析了自然语言处理领域中现有的DA方法。DA的目的之一是提高训练数据的多样性,从而帮助模型更好地泛化到未见的测试数据。因此,本文根据各方法中增广数据的多样性将DA方法分为三类:复述(Paraphrasing)、噪声(Noising)和采样(Sampling)。欢迎各位读者关注本文工作及后续进展。
注:
1. 也有研究者将Data Augmentation翻译为“数据增强”,然而“数据增强”有将数据进行强化之意,而不仅是数量扩充。因此我们将其翻译为“数据增广”,单纯表示扩大数据规模。
2. 本综述目前为v1版本,后续将进一步优化和扩充参考文献,欢迎大家持续关注和跟进,并提出宝贵意见!
论文:Data Augmentation Approaches in Natural Language Processing: A Survey
地址:https://arxiv.org/abs/2110.01852
数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度,类似CV的裁剪方法可能会改变语义,既要保证数据质量又要保证多样性,使得大家在做数据增强时十分谨慎。
作者根据生成样本的多样性程度,将DA方法分为了以下三种:
这类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了6种方法:
作者还贴心地整理了上述方法的优缺点。其中「歧义」主要是指有些多义词在不同场景下意思不一样,比如「我每天吃一个苹果」,替换成「我每天吃一个iphone」就不合适了。
P.S. 作者写的Strong application我没有太懂,个人觉得可以理解为应用效果好,如果有不同解读可以留言哈。
人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性。
作者给出了以上5种增加噪声的方法:
总的来说,引入噪声的DA方法使用简单,但会对句子结构和语义造成影响,多样性有限,主要还是提升鲁棒性。
这里我私下多加几个没提到的,也是我们在做ConSERT时用到的方法:
Sampling是指从数据分布中采样出新的样本,不同于较通用的paraphrasing,采样更依赖任务,需要在保证数据可靠性的同时增加更多多样性,比前两个数据增强方法更难。作者整理了4种方法:
作者依旧贴心地给出了4中方法的优点和局限:
作者给出了这些方法在6个维度的对比,大家可以更好地体会他们的区别和适用场景。其中Level表示DA方法会增强的部分:t=text, e=embedding, l=label
,Granularity表示增强的粒度:w=word, p=phrase, s=sentence
。
实际应用时可以应用多种方法、或者一种方法的不同粒度。
作者推荐了两款工具:
Easy DA: https://github.com/jasonwei20/eda_nlp
Unsupervised DA:https://github.com/google-research/uda
同时我搜索了一下github又发现了两个宝藏:
英文:https://github.com/makcedward/nlpaug
中文:https://github.com/zhanlaoban/eda_nlp_for_Chinese
第一,在使用增强的数据时,如果数据质量不高,可以先让模型在增强后的数据上pre-train,之后再用有标注数据训练。如果要一起训练,在增强数据量过大的情况下,可以对原始训练数据过采样
第二,在进行数据增强时注意这些超参数的调整:
第三,其实增强很多简单数据的提升有限,可以注重困难样本的生成。比如有研究加入对抗训练、强化学习、在loss上下文章等。如果用生成方法做数据增强,也可以在生成模型上做功夫,提升数据多样性。
第四,如果生成错数据可能引入更多噪声,可以增加其他模型对准确性进行过滤。
最后,作者列举了其他研究的数据增强应用场景,大家在落地时可以借鉴:
数据增强算是很接地气的研究了,少样本、领域迁移是每个NLPer都会遇到的问题,而在数据上做文章可能比其他模型改动的方法更为有效。同时从这篇综述也可以看到,数据增强其实可以做得很fancy,还不影响线上速度,比如我之前就用T5和ELECTRA做过数据增强,都有一些效果,可谓低调而不失奢华,典雅而不失大气,深度拿捏得稳稳的。
本期责任编辑:冯骁骋
理解语言,认知社会
以中文技术,助民族复兴