【Data augmentation in NLP】——2

2023-11-22 05:40
文章标签 data nlp augmentation

本文主要是介绍【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选择是至关重要的。例如:

  1. 提出一系列的softmax温度设置方法(退火?),使得生成数据具备多样性,同时能够保持语义。
  2. 也有人使用了duplication-aware的注意力和diverse-oriented regularization的正则化方法,来生成更多样的句子。
  3. 使用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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/407913

相关文章

BD错误集锦3——ERROR: Can't get master address from ZooKeeper; znode data == null

hbase集群没启动,傻子!   启动集群 [s233 s234 s235]启动zk集群 $>zkServer.sh start $>zkServer.sh status   [s233] 启动dfs系统 $>start-dfs.sh 如果s237 namenode启动失败,则 [s237] $>hadoop-daemon.sh start namenode [s233]启动yarn集群

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解 码客 卢益贵 ygluu 关键词:游戏策划 可配置化 模块化配置 数据引擎 条件系统 红点系统 一、前言 在插件式模块化软件开发当中,既要模块高度独立(解耦)又要共享模块数据,最好的方法是有个中间平台(中间件)提供标准的接口来进行数据的交换,这在很多行业软件开发中已经广泛应用。但是,由于中间件的抽象和封

nlp基础-文本预处理及循环神经网络

1 认识文本预处理 1 文本预处理及其作用 定义:文本送给模型之前,提前要做的工作 作用:指导模型超参数的选择 、提升模型的评估指标 举个例子: 思路常识,打造成 X Y关于Y:10分类标签是否均衡关于X:数据有没有脏数据 数据长度(512)样本不够! 文本预处理 工作 结束 的标志:准备出来X和Y 能送给模型 2 文本预处理的主要环节 1 文本处理的基本方法 分词:按照一定规

2025秋招NLP算法面试真题(二)-史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer

简单介绍 之前的20个问题的文章在这里: https://zhuanlan.zhihu.com/p/148656446 其实这20个问题不是让大家背答案,而是为了帮助大家梳理 transformer的相关知识点,所以你注意看会发现我的问题也是有某种顺序的。 本文涉及到的代码可以在这里找到: https://github.com/DA-southampton/NLP_ability 问题

NLP中文本的嵌入层

在自然语言处理(NLP)任务中,模型学习的不是原始的文本字符串,而是这些字符串通过分词和索引化过程转换成的单词索引。实际学习的内容是这些单词索引对应的嵌入向量及其在模型中的权重。 原始文本到模型输入的过程 原始文本: 例如:“hello world” 分词(Tokenization): 将文本字符串分割成单词、子词或字符。例如:["hello", "world"] 构建词汇表(Voc

Core Data 网络应用实例

转自:http://www.cocoachina.com/applenews/devnews/2014/0430/8275.html 转自 answer_huang的博客 几乎每一个应用开发者都需要经历的就是将从 web service 获取到的数据转变到 Core Data 中。这篇文章阐述了如何去做。我们在这里讨论的每一个问题在之前的文章中都已经描述过了,并且 Apple 在

spring-data-redis 连接池应用

具体配置看我的项目。用的是redisTemplate ,和jdbctemplate  是不是很相似。 真的不想吐槽csdn,钻钱眼里了,我想上传我的代码,免费都不行吗 想要测试代码可以私信,也可以模仿https://www.cnblogs.com/tankaixiong/p/3660075.html  这个链接下的。

Windows 内核驱动无法使用 __DATA__、__TIME__、__TIMESTAMP__ 解决方法

项目 -> 属性 -> Driver Settings -> Driver Model -> Allow Date, Time and Timestamp -> Yes。 感谢单总的解答和这篇文章:https://developercommunity.visualstudio.com/content/problem/186922/-timestamp-macro-not-defined-in-r

python请求multipart/form-data数据

今天遇见发送post请求时,post data是类似下面的数据: 解决办法,参考:python拼接multipart/form-data类型post请求格式

使用Python和NLTK进行NLP分析的高级指南

在本文中,将利用数据集来比较和分析自然语言。 本文涵盖的基本构建块是: WordNet和同义词集相似度比较树和树岸命名实体识别 WordNet和同义词集 WordNet是NLTK中的大型词汇数据库语料库。WordNet维护与名词,动词,形容词,副词,同义词,反义词等相关的单词的认知同义词(通常称为同义词集)。 WordNet是一个非常有用的文本分析工具。根据许多许可(从开源到商业),它可