本文主要是介绍【Data augmentation in NLP】——2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本内容承接上一篇,将阐述DA中的一些其中的技巧、应用以及相关的话题:
1. 影响因素:
对于不同的数据增强方法,其效果也是不同的,本节将概述影响方法效力的因素以及适用场景。
1.1 方法的组合使用
显然,这些方法可以被组合在一起使用。同类方法可以交互使用。例如paraphrasing的方法中,可以将word embedding和language model一起使用,将word embedding和Rules或者word embedding和词典库一起组合使用。而noise-based方法由于操作简单,往往也是组合使用的。不同类的方法也可以交互使用。
其次,对于样本语句在不同粒度的层面上,也是可以混合使用的。比如对词语级别、短语级别、句子级别都是可以混合使用的。
1.2 学习性模型的优化
学习模型的学习优化过程和目标,对于模型、增强数据的质量是很不同的,本小节将从四个方面,如“增强数据”的使用、超参数、训练策略、训练目标。
1.2.1 使用方法
- 从数据的质量上考虑:增强的数据的质量很可能比较差,因此很有可能被用来做模型的预训练。否则它也能被用来直接训练模型。
- 从数据的数量上看:如果增强的数据比原数据多的多,那么增强的数据也并不全直接用在模型训练上,否则会引入过多的噪声。一些常见的方法包括:1)在训练前,对原数据进行过采样;2)用增强的数据进行预训练,再用原数据进行fine-tuning。
1.2.2 模型中的超参数
这里没有说如何调整合适的超参数,但是说的是模型中蕴含了什么的超参数:
1.2.3 训练策略
将一些模型训练策略和数据增强手段结合,例如将“back translation”和GAN结合起来;将pretrain的思想和蒙特卡洛树搜索结合起来,和强化学习方法结合起来;使用GAN去生成具有挑战性的增强数据。
1.2.4 训练目标
对于可训练的模型,模型的训练目标和loss选择是至关重要的。例如:
- 提出一系列的softmax温度设置方法(退火?),使得生成数据具备多样性,同时能够保持语义。
- 也有人使用了duplication-aware的注意力和diverse-oriented regularization的正则化方法,来生成更多样的句子。
- 使用curriculum learning来鼓励模型关注更难训练的样本。
1.3 过滤
由于在数据增强的过程中很可能加入很多的“噪声数据”,甚至是错误的数据,因此需要采取“过滤的方法”来避免这些问题。有的工作:
1.直接过滤掉不适合增强的数据来避免错误的增强;例如过滤掉过于短的句子,或者避免句子中不相关的数字;
2.也有对增强后的数据进行过滤的,这往往也是通过其它的模型完成的:This is usually achieved through a model. For example, Zhang et al. [13] employ a discriminator to filter the back-translation results. Tavor et al. [30] and Peng et al. [21] both apply a classifier to filter the augmented sentences generated by pre-trained models to ensure the data quality.
这一步还是值得好好看看的
2.在NLP任务上的应用:
直接评价数据增强方法的优劣其实不是很合适:因为它们往往提出于不同的任务、采用不同的评价指标、基于不同的数据集、采用不同的模型结构以及实验设定来完成的,因此这使得直接根据论文结果评价显得不是特别有意义。
因此本节主要根据任务,包括最基础的“文本分类任务”(Text classification)、“文本生成任务”(Text generation)、“结构化预测任务”(structured prediction problem)。
分类任务较为基础、简单的任务,因为实际上很多任务都可以被归结为分类任务,包括 Natural Language Inference等等。生成任务顾名思义就是生成一段文本的任务,包括机器翻译。(结构化预测主要有什么任务呢?不是很懂哦)
数据增强(DA)在分类任务上应用的更为广泛一些。因为基本各种DA方法都可以被用在数据增强上。这主要是因为分类任务形式上比较简单,给定输入的文本,直接可以通过对label的准确性评估来评价模型对语义的保持度。
因此,数据增强往往只需要凸显那些能够影响语义分类的词语或者句子结构就行。
在文本生成方面,它更倾向于基于抽样(Sample-based)的方法,以带来更多的信息多样性(diversity)。而结构化预测更倾向于采用基于paraphrasing的方法,因为它对数据格式敏感。因此对数据的有效性(validity)有更高的要求。
比较各种方法使用的广泛程度看,简单有效的无监督方法包括翻译(这也算无监督?)、基于词典的句子改写(thesaurus-based paraphrasing)、随机替换(random substitution)等等比较流行。此外可学习的方法,包括Seq2Seq paraphrasing models, pre-trained models, and self-training, 也因为它们的有效性和生成数据的广泛性而较为常用。
当然,最早DA也是被广泛用于文本分类的任务中。Paraphrasing-based的方法是一类流行的方法,并且在近几年,基于采样(sampling-based)的方法也被证明在分类和生成任务上有效。但是人们喜欢在使用 structured prediction的任务上采用paraphrasing和noising-based 方法。
3.相关话题:
3.1 预训练语言模型(PLM)
PLM的训练往往是基于自监督学习(self-supervised).自监督学习往往是使用附属任务(auxiliary tasks)从大量无监督的数据中挖掘得到监督信息,and trains the network through this constructed supervised information,(?这是什么)。因此可以对下游任务来说,学到有用的表示,实际上是通过PLM模型,隐式的引入了高质量的额外知识。
从另外一方面说,PLM学到的知识是普适性的,对于具体任务可能是out-of-domain的,而一些任务相关的数据增强方法主要是关注在具体的任务上。
3.2 对比学习(Contrastive Learning)
对比学习的主要目标是学到一个embedding space,其中使得“相似”(某种意义上相似)的数据是接近的,不相似的数据是较远的。主要目标就是学到相似样本的共同特征,以及区别不同样本的不同点。
对比学习的第一步往往是将使用数据增强(DA),构造具有相同标签的相似样本,第二步是随机选取一些(标签不同的)样本作为负样本。
可以说,对比学习是DA的一种应用。
3.3 其它数据操纵(manipulation)方法
数据增强的方法主要是从增加模型的泛化能力、鲁棒性考虑的。其他方法包括:
- Oversampling
- Data cleaning
- Data weighting
- Data synthesis(?不太熟悉)
重复采样主要是用于“数据的平衡”,包括简单的对original sample中的少量数据进行重复采样,而不是生成同标签的类似数据。
数据清洗主要是用于提升数据的质量(improve data quality),减少数据的噪声(reduce data noise)。包括数据的归一化(如全部小写lowercasing)、词干化( stemming)、词形还原(lemmatization)等等,这个可以说是NLP的基础操作了。
数据加权包括对不同的数据加以不同的权重,使得它们的重要性不同,而不需要产生新的数据。例如Adaboost.
数据合成 provides entire labeled artificial examples instead of augmented data generated by models or rules.(这个有点想不到例子了?)
3.4 GAN
生成对抗网络可以说是Adversarial learning的一种,也和Reinforcement learning有密切的联系。GAN是一种半监督学习方法(semi-supervised method),GAN包括一个“生成式模型”(generator),也主要用于挑战 “判别器”(discriminator),但是在很多DA方法中,GAN的生成部分也被用来增强训练数据(augment training data)。Moreover, the generative model of GANS is applied as a DA method in some scenes like [61, 119, 96, 68, 109, 116], and have demonstrated to be effective for data augmentation purposes.这一些引文可以看看
3.5 对抗攻击(Adversarial Attacks)
对抗攻击的目标是生成一些样本,这些样本能使得模型犯错误。有一些工作,使用了code-switch substitution的DA方法,来生成对抗样本 as consistency regularization。
值得注意的是,应对这些对抗样本的能力提高,被称为对抗鲁棒性
,但是模型对抗鲁棒性
的提高,往往会导致对一般样本的泛化性
的降低!
4. 挑战(Challenges)与发展(Opportunities)
数据增强方法在过去几年中取得了长足的进步,也对“大型模型”的训练以及“下游任务”的发展起到了很大帮助。在本节中提出一些挑战与帮助。
4.1Theoretical Narrative.
对于DA的有效性,往往是启发性的,理论上显然不够充足,缺少系统的probing work与理论分析。The discrete nature of natural language makes theoretical narrative essential since narrative helps us understand the nature of DA, without being limited to determining effectiveness through experiments.(?还不是很理解啊)
4.2 在PLM上的探索
预训练模型通过在大型的无监督数据上进行自监督训练,往往就包含了很丰富的知识。现在已经有一些使用预训练模型,针对于DA的研究,但是一般仅限于[MASK] completion, direct generation after fine-tuning, or self-training.数据增强方法在当今预训练模型横行的时代是否还有用?或者是否能够利用PLM来产生更diverse 和高质量high-quality的数据?
4.3 更通用的方法:
自然语言和图片、声音讯号不同的地方在于其离散型表示,同时,NLP中包括其它模态中没有的“结构化预测任务”。 因此,和CV中的图片剪裁、语音学中的语速变化的任务无关的通用性增强方法相比,似乎没有特别通用的增强方法,不同任务下的数据增强还是颇有不同(?具体了解不多)。
但是预训练模型的发展,如GPT、prompting learning似乎也证明the formalization of tasks无关于traditional categories,统一的任务定义也可能产生更为普适性的模型。
4.4 长文本和低资源问题
已有的数据增强方法在short texts and common languages上已经有了很好的发展。但是也局限于模型的能力,在长文本上,DA方法也仅仅是最简单的paraphrasing and noising方法(因为长文本生成比较难,长距离依赖很难捕捉)。此外,尽管低资源的数据更加有必要增强,但低资源的数据增强很少(?是嘛,不太懂哦,按理说确实低资源才需要更加增强)
5. 其它知识
5.1 stemming & lemmatization
词形还原(lemmatization),是把一个任何形式的语言词汇还原为一般形式(能表达完整语义),而词干提取(stemming)是抽取词的词干或词根形式(不一定能够表达完整语义)。词形还原和词干提取是词形规范化的两类
重要方式,都能够达到有效归并词形的目的,二者既有联系也有区别。
一致性:
- 目标一致。词干提取和词形还原的目标均为将词的屈折形态或派生形态简化或归并为词干(stem)或原形的基础形式,都是一种对词的不同形态的统一归并的过程。
- 结果可能一致。词干提取和词形还原不是互斥关系,其结果是有部分交叉的。一部分词利用这两类方法都能达到相同的词形转换效果。如“dogs”的词干为“dog”,其原形也为“dog”。
- 主流实现方法类似。目前实现词干提取和词形还原的主流实现方法均是利用语言中存在的规则或利用词典映射提取词干或获得词的原形。
- 应用领域相似。主要应用于信息检索和文本、自然语言处理等方面,二者均是这些应用的基本步骤。
区别
- 在原理上,词干提取主要是采用“缩减”的方法,将词转换为词干,如将“cats”处理为“cat”,将“effective”处理为“effect”。而词形还原主要采用“转变”的方法,将词转变为其原形,如将“drove”处理为“drive”,将“driving”处理为“drive”。
- 在复杂性上,词干提取方法相对简单,词形还原则需要返回词的原形,需要对词形进行分析,不仅要进行词缀的转化,还要进行词性识别,区分相同词形但原形不同的词的差别。词性标注的准确率也直接影响词形还原的准确率,因此,词形还原更为复杂。
- 在实现方法上,虽然词干提取和词形还原实现的主流方法类似,但二者在具体实现上各有侧重。词干提取的实现方法主要利用规则变化进行词缀的去除和缩减,从而达到词的简化效果。词形还原则相对较复杂,有复杂的形态变化,单纯依据规则无法很好地完成。其更依赖于词典,进行词形变化和原形的映射,生成词典中的有效词。
- 在结果上,词干提取和词形还原也有部分区别。词干提取的结果可能并不是完整的、具有意义的词,而只是词的一部分,如“revival”词干提取的结果为“reviv”,“ailiner”词干提取的结果为“airlin”。而经词形还原处理后获得的结果是具有一定意义的、完整的词,一般为词典中的有效词。
- 在应用领域上,同样各有侧重。虽然二者均被应用于信息检索和文本处理中,但侧重不同。词干提取更多被应用于信息检索领域,如Solr、Lucene等,用于扩展检索,粒度较粗。词形还原更主要被应用于文本挖掘、自然语言处理,用于更细粒度、更为准确的文本分析和表达
这篇关于【Data augmentation in NLP】——2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!