关于数据增强——文本增强
一、概念
1、为什么需要数据增强
1)数据是机器学习的原材料,而大部分机器学习任务都是有监督任务,所以非常依赖训练数据,而训练数据就是一种有标注数据,比如做文本分类的任务,就需要一些标注好的文本数据,算法起到一个拟合有标注的数据的作用,从数据中找到一定规律,比如某个数据属于某一类是由于某种特征,通过这个过程,最终收获一个能预测一些规律的模型,从而使用这个模型去做一些预测。因此想要让人工智能模型有更好的效果,需要更大,质量更好的数据,当只有少类样本的时候,就需要数据增强来提高数据量。
2)单纯使用人工标注数据费时费力,而且当需要标注大量数据时,很多时候不可避免就会因为各种人为因素导致标注错误,从而使数据质量降低。
3)引入数据增强,希望使用机器,根据标注样本,生成更多的标注样本,从而减少人工标注的工作量,进而低成本的提升模型效果
2、数据增强分类
主要分为:文本增强,图像领域的数据增强,语音领域的数据增强
2.1 图像领域的数据增强的本质
通过对原始图片进行平移、旋转、裁剪、遮挡、反转、放缩、灰度等处理,保证原始图片类别不变的前提下,生成大量数据。(除了这些简单的方法,还有很多机器学习的方法,比如对抗网络GAN的方式生成很多像真的图片。)
《比如将一只猫的图片通过处理后,给机器识别,依然能够识别出来的话,机器的学习能力就上了一个台阶,相当于它对数据的认知更加清晰了,尽管图片被处理后,增加了很多噪音,依然能够识别出来,就达到了数据增强的意图,提升模型的效果。》
2.2 语音领域的数据增强的本质
通过对原始音频加入音速扰动、音量扰动、以及进行频率遮蔽、时间遮蔽,加入噪音等方式,在音频原始内容标签不变的前提下,实现数据增强。
2.3 文本增强的本质
文本增强就是在尽量保证标签语义不变的前提下,用少量有标注的数据生成大量的有标注的数据
3、数据增强难度比较
文本大于语音和图像,因为文本中微小的改动就可能带来语义的变化
二、文本增强相关
1、文本增强核心:
改变文本内容 & 保持标签不变
2、文本增强的难点:
在文本增强的同时,保证标签语义不变
3、文本增强的方法:
1)回译(back-translation)
(1)操作本质
通过将原文机翻模型翻译为另一种语种,再用机翻模型翻译回来,或者从a翻译为b再翻译为c等最后再翻译回来。
(2)评价
这是一种非常简单,效果也很不错的方法,但要想保证标签语义不变,比较依赖机翻模型的能力
2)EDA(Easy Data Augmentation 简单的数据增强)
(1)操作本质
通过使用准备的词库里的词对数据进行同义词替换(synonym replacement)、随机插入(random insertion)、随机交换(random swap)和随机删除(random deletion),从而实现文本增强
(2)整体逻辑
首先我们有一个基础训练集,然后用一个分类器去测试它的训练效果,分类器具体可以选用CNN或者RNN,也可以采用其它分类器,然后对这个训练集做文本增强,再使用同样的分类器去测试它的训练效果。
(3)EDA论文分析
摘要
EDA:简单的数据增强技术,可提高文本分类任务的性能。EDA 由四个简单但强大的操作组成:同义词替换、随机插入、随机交换和随机删除。在五个文本分类任务中,我们表明 EDA 提高了卷积和复发神经网络的性能。EDA 在较小的数据集方面表现出特别强劲的结果;平均而言,在五个数据集中,使用 EDA 进行训练,通过仅使用 50% 的可用培训集的,得到的可用数据的准确性与正常培训相同。同时还进行了广泛的消融研究,并提出了实际使用的参数。
1 介绍
文本分类是自然语言处理 (NLP) 的一项基本任务。机器学习和深度学习在情绪分析等任务上实现了高精度主题分类,但高性能往往取决于培训数据的大小和质量,这往往是乏味的收集。自动数据增强常用于计算机视觉和语音,可以帮助训练更健全的模型,尤其是在使用较小的数据集时。然而,由于很难制定出通用的语言转换规则,NLP 中的通用数据增强技术尚未得到彻底探索。
2 EDA
-
同义词替换 (SR): 随机从句子中选择 n个非停用词。然后用随机选择的某一个同义词的方式替换它们。
-
随机插入 (RI): 在句子中找到一个随机的非停用词的随机同义词。将同义词插入句子中的随机位置。这样做 n 次。
-
随机交换 (RS): 随机选择句子中的两个单词并交换其位置。这样做 n 次。
-
随机删除 (RD):以一个固定概率p去随机删除句子中的词。
《
看完方法介绍思考:
选择n个词,那n作为一个参数会不会影响它的效果?
为什么不对停用词进行操作?
》
由于长句的单词多于短句,它们可以吸收更多的噪音,同时保持其原始的类标签不变。(对于这个理论没有什么认证,不过基本符合认知。)为了补偿,我们根据句子长度通过下面公式来更改的单词数
$$
n=αl
$$
其中(n)为SR、RI 和 RS更改的次数,**α **表示句子中单词百分比更改的参数(我们使用 p=α表示RD)。此外,对于每个原始句子,我们生成 n个句子。
3 实验设置
我们选择五个基准文本分类任务和两种网络架构设计来评估 EDA。
3.1 基准数据集
(1) SST-2:斯坦福情绪树库
(2) CR: 客户评论
(3) SUBJ: 主观性/客观性数据集
(4) TREC: 问题类型数据集
(5) PC: 亲康数据集
此外,我们假设EDA对较小的数据集更有帮助,因此我们通过选择完整训练集的随机子集,使用Ntrain={500,2000,5000,所有可用数据}
3.2 文本分类模型
我们在文本分类中对两种流行的模型进行实验:
(1) 递归神经网络 (RNN) 适用于顺序数据。我们使用 LSTM-RNN
(2) 卷积神经网络(CNN)在文本分类方面也取得了高性能。
4 结果
在本节中,我们将在五个NLP任务上使用CNN和RNN测试EDA。在所有实验中,我们对五种不同的随机种子的结果取平均值。
4.1 EDA 获得收益
我们在所有5个数据集上运行CNN和RNN模型,使用EDA和不使用EDA来改变训练集的大小。值得注意的是,完整数据集的平均改进是0.8%,而Ntrain=500的平均改进是3.0%。
《
可以很明显看到,随着数据集的数量增多,EDA的效果就不是那么明显了,这也能理解,因为我们生成的样本是伪造的样本,随着真实的样本数据量上升,那么伪造样本能起到的作用自然也会下降。
》
4.2 培训集大小
在较小的数据集上训练时,过拟合往往更严重。通过使用有限的训练数据进行实验,我们表明EDA对于较小的训练集有更显著的改进。我们对以下训练集的分数(%)运行普通训练和EDA训练:{1,5,10,20,30,40,50,60,70,80,90,100}。图1(a)-(e)显示了每个数据集在使用EDA和不使用EDA时的性能,1(f)显示了所有数据集的平均性能。100%训练数据的平均准确率为88.3%。使用EDA训练的模型通过实现图1:对于用于训练的各种数据集大小,使用和不使用EDA的基准文本分类任务的性能超过了这个数字。虚线灰线表示Kim对SST-2、CR、SUBJ和TREC的最佳性能,Ganapathibhotla对PC的最佳性能。在仅使用50%可用训练数据的情况下,平均准确率为88.6%。
4.3 EDA 是否保全了正确的标签?
在数据增强中,在维持类标签正确的前提下更改输入数据。然而,如果句子发生了巨大的变化,那么原来的类标签可能不再有效。我们采用可视化的方法来检验EDA操作是否显著地改变了扩充句的含义。首先,我们训练一个RNN在pro-con分类任务(PC)上不增强。然后,我们将EDA应用到测试集中,每个原句生成9个增强句。这些语句与原始语句一起输入到RNN中,我们从最后一层稠密层提取输出。我们将t-SNE应用于这些向量,并绘制出它们的二维表示(图2)。我们发现,由此产生的增强句子的潜在空间表示紧密包围着原始句子的潜在空间表示,这表明,在大多数情况下,使用EDA的句子保留了原句的标签。
《该论文没有论证EDA是否在数据增强的同时保证了标签的语义不变,不过通过降维给出了下图这样的图形化视图,表示通过文本增强以后的数据正负样本都分别相对集中,说明对标签语义的伤害不大。》
(Pro-Con数据集中原始和增强句子的潜在空间可视化。增强的句子(小三角形和圆圈)紧紧围绕同一颜色的原始句子(大三角形和圆圈),这表明增强句子 主要围绕 其真正的类标签。)
4.4 消融研究:EDA 分解
探索EDA中每个操作的效果。同义词替换以前已使用,但其他三个EDA业务尚未探索。可以假设 EDA 的大部分性能增益来自同义词替换,因此我们隔离每个 EDA 操作,以确定其提升性能的个人能力。对于所有四种操作,我们使用单一操作运行模型,同时改变增强参数
α={0.05, 0.1, 0.2, 0.3, 0.4, 0.5}。
(EDA 操作在五个文本分类任务中的平均绩效增益,用于不同的培训集大小。 α 参数大致表示"每个增量更改句子中单词的百分比"。SR:同义词替换。RI:随机插入。RS:随机交换。RD:随机删除。在改变增强参数时,α={0。05,0.1,0.2,0.3,0.4,0.5} )
事实证明,所有四个EDA操作都有助于提高性能。
对于SR而言,改进有利于小α,但高α会损害性能,可能是因为替换句子中太多的单词会改变句子的语义。
对于RI,在不同的α值下性能增益都比较稳定,这可能是因为在这个操作中保持了句子中的原词及其相对顺序。
RS在α≤0.2时获得了较高的性能增益,但在α≥0.3时下降,因为执行过多的交换相当于打乱整个句子的顺序。
RD在低α条件下的增益最高,但在高α条件下的表现严重受损,因为如果去掉多达一半的单词,句子很可能无法理解。
对于在小数据集上做的以上操作,改进更显著,α=0.1似乎是一个“最佳点”。
5 与相关工作比较
技术(#数据集:用于评估的数据集数量) | 需要培训语言模型或深度学习 | 需要外部数据集。 |
---|---|---|
Trans. data aug. (1) 跨数据增强 | yes | yes |
Back-translation. (1) 回译 | yes | yes |
VAE + discrim.(2) | yes | yes |
Noising (1) | yes | no |
Back-translation(2) | yes | no |
LM + SR(2) | yes | no |
Contextual aug.(5) 语境文本增强 | yes | no |
SR - kNN(1) | no | no |
EDA (5) | no | no |
6 讨论与限制
值得注意的是,最近很多关于NLP的工作都集中在使神经模型更大或更复杂上。然而,我们的研究采取了相反的方法。我们介绍一些简单的操作,问一个基本问题的结果,我们如何在不改变它们的正确标签的情况下生成用于扩充的句子? 我们不期望EDA成为NLP的首选增强方法,无论是现在还是将来。相反,我们希望我们的思路能够激发通用或特定任务的数据增强的新方法。
现在,让我们注意一下EDA的许多局限性。最重要的是,当数据充足时,性能提高可能微乎其微;对于我们的五个分类任务,当使用全数据集训练时,平均性能增益小于1%。虽然小数据集的性能提高似乎很明显,但使用大型的预训练模型时EDA可能不会产生实质性的改进。一项研究发现,当使用ULMFit时,EDA的改进可以忽略不计,我们预计ELMo和BERT也会得到类似的结果。
最后,虽然我们对5个基准数据集进行了评估,但其他关于自然语言处理中数据增强的研究使用了不同的模型和数据集,因此与相关工作进行公平比较是非常有意义的。
《
EDA是一种适用于数据量小,没有额外资源开销的文本增强方案。它使用的四种操作可以通过几行简单的代码就能实现,在数据量小的时候提升比较明显。
注意一个细节:由于EDA中的进行同义词替换以及随机插入操作的时候,查找非停用词的同义词是通过固定词典的方式,可能会存在以下问题:
1、词典是有限的,可能出现句子里的词在词典里面的同义词的情况
2、某些语境下,有些同义词可能就不再是同义词,比如我买了一个小米,其中小米的同义词可能是大米,但是替换到这里语义就改变了,原意是指的小米手机,替换后就成了吃的米
所以就出现了通过使用语言模型代替固定词典的方式,来避免词典有限的弊端,并且能够提高在不同语境下同义词出现的正确率,从而到达提高数据质量,进一步提升文本增强的效果。
这个方法比较考验语言模型的优劣
拓展—关于语言模型
(1)语言模型的概念
通俗来讲语言模型的作用就是用来评价一句话是否“合理”或“是否是人话”
从数学上讲就是 P(今天天气不错) > P(今错不天天气)
语言模型用于计算文本的成句概率
(2)语言模型的训练方法
通过文本中前n个字预测下一个字,比如我们把"今天天气不错"句子中的"今天天气不"输入模型,希望预测出来的下一个字是"错"。通过将"今"输入模型得到是"天"的概率加上输入"今天"得到是"天"的概率...一直加到输入"今天天气不"得到是"错"的概率得到的概率值就是这个句子成句的概率,如果这个概率值对于合理的句子分值较高,那我们就认为这个语言模型是比较有效的。
》
3)语境文本增强(Contextual Augmentation )
(1)操作本质
使用语言模型去进行文本替换,比如通过语言模型预测来替换文本中的同义词,从而实现文本增强。就好像原句是"今天天气不错",通过输入"今天天气"到语言模型得到的可能并不是"不错",而是其它类似的词,比如"很好",那就可以选取语言模型预测出来的这个词来代替原本的词,从而完成文本增强
(2)语言模型机构
双向LSTM
(3)语境文本增强论文分析
摘要
我们提出了一种新的标注句子数据增强方法,称为语境文本增强(上下文增强)。我们假定一个不变性,即句子中的单词被其他具有组合关系的单词替换,句子仍是自然的。我们在句子某些位置,用双向语言模型预测的单词来随机替换一些词。根据上下文预测的词数量众多,很适合于用来增强原词。此外,我们改进了一个带有标签条件结构的语言模型,允许该模型在不破坏标签兼容性的情况下扩充句子。通过对六种不同文本分类任务的实验,我们证明了所提出的方法改进了基于卷积或循环神经网络的分类器。
1 介绍
基于神经网络的自然语言处理模型在各种任务中取得了最先进的成果,例如依赖分析、文本分类,机器翻译。但是,机器学习模型往往因失去泛化而使培训数据过于拟合。通用化能力在很大程度上取决于培训数据和正规化的规模和质量。准备一个带注释的大型数据集非常耗时。相反,自动数据增强很受欢迎,特别是在视觉领域和语音领域。数据扩充基本上是基于人类对不变性、规则或启发式的知识进行的,例如,“即使图片被翻转,对象的类别也应该保持不变”。
然而,数据增强在自然语言处理中的应用受到了限制。在自然语言中,很难获得可以保证生成数据质量并易于自动适用于各个领域的转换的通用规则。这种转换的常见方法是基于词汇网络 或 词相似度计算。因为具有完全或几乎相同含义的单词非常少,基于同义词的扩充只能适用于很小一部分词汇。其他的增强方法是已知的,但通常是针对特定领域开发的,使用手工制作的规则或流水线,失去了通用性。
在本文中,我们提出了一种新的数据增强方法,称为语境文本增强(上下文增强)。我们的方法使用双向语言模型(LM)根据上下文预测单词,从而提供更广泛的替代词,如图所示。这种语境预测建议了与原词有组合关系的各种词,这些词也可以很好地替代增强。此外,为了防止与原句子注释标签不兼容的单词替换,我们使用标签条件架构对 LM 进行了改造。通过实验,我们证明了所提出的标签条件架构式LM能够产生良好的词来进行增强,上下文增强改进了在各种分类任务中使用循环或卷积神经网络(RNN或CNN)的分类器的效果。
(用双向RNN语言模型进行上下文增强,当一个句子"the actors are fantastic"被增强时,只需用基于上下文预测的词语替换actors )
2 提出的方法
为了通过用其他单词替换文本中的单词来进行数据增强,之前的EDA用同义词代替原词。然而,同义词非常有限,基于同义词的扩充不能产生许多不同于原文的模式。我们提出了一种基于语境的词汇的增强方法。我们不使用同义词,而是使用LM在给定围绕原词的上下文时预测的词。
2.1 动机
首先,我们通过引用来自Stanford Sentiment Treebank (SST斯坦福大学情感树图资料库)的一个句子来解释我们提出的方法的动机,该数据库是一个情感标签电影评论的数据集。这句话,“the actors are fantastic.”,上面有一个正面的标签(positive积极的,正的)。当对单词(位置)“actors”执行扩增时,我们可以在多大程度上增强它?根据先前的研究,我们可以使用从WordNet (histrion演员,player扮演者,thespian 悲剧演员;演员和role player角色扮演者)中获得的词actor的同义的相关词。该同义词集包含的单词,平均含义与"actors"一词相似。但是,对于数据增强,actors这个词可以进一步用非同义词代替,如characters特性;人物角色, movies电影, stories故事, 以及songs歌曲或其他各种名词,同时保持积极的情感和语句的自然。考虑到模型一般使用最大模式进行训练可以提高模型的性能。我们建议使用大量与原词有类似关系的词。LM具有不错的属性,可以为这些词分配高概率,即使这些词本身与要替换的原词并不相似。
2.2 基于上下文语境的单词预测
对于我们提出的方法,我们需要一个LM来根据上下文计算单词在位置 i 的概率。在一个句子S中语境是围绕原词 wi 的一系列单词,即分裂句子S \ {wi}。计算概率p(·|S \ {wi})。具体来说,对于位置 i 的预测,我们使用双向LSTM-RNN LM。模型对周围的单词分别从右到左进行编码。相邻位置的输出用于计算目标位置 i 的概率。两个方向的输出被连在一起并输入下面的前馈神经网络,该神经网络产生具有概率分布的单词在词汇表上。
在语境扩展中,单词 wi 的新替代品可以从给定的概率分布 p(·|S{wi }) 中顺利采样,而以往的研究最终选择 top-K 单词。在本研究中,我们在模型训练过程中,每次更新时抽取单词进行增强。为了控制增强的强度,引入温度参数 τ,并利用退化分布 pτ (·|S\ {wi } ∝ p(·|S \ {wi}) 1/τ。如果温度变为无穷大(τ→∞),则单词从均匀分布中采样。如果它变成零(τ→0),则增强词总是预测概率最高的词。在句子中的每个单词位置,一次可以获得抽样单词。我们用同样的概率同时替换每个单词,并且词语相似度计算的效率也一样。
2.3 约束条件
最后,我们介绍了一种新的方法来解决上下文感知的增强不总是与带注释的标签兼容的问题。为了理解这个问题,再考虑一下这个带有一个正面标签的例子"the actors are fantastic."。如果像目前所描述的那样,语境增强只是简单地对“fantastic”这个词的位置进行,那么LM通常会将较高的概率分配给“bad”或“terrible”以及“good”或“entertaining令人愉快的”等词,尽管它们与“positive积极的”或“negative消极的”的注释标签是相互矛盾的。因此,这种简单的增强可能会产生与其原始标签不相称的句子,并且对模型培训有害。
为了解决这个问题,我们引入了一个条件约束来控制单词的替换,以防止生成的单词与句子标签相关的信息完全相反。我们将一个LM转换为一个标签条件的LM,即,对于带有标签y的句子S中的位置 i,我们的目标是计算pτ(·|y, S \ {wi }),而不是模型中默认的pτ(·|S \ {wi })。具体来说,我们将每个标签y向量化拼接到双向LM中的前馈网络的隐藏层中,这样输出就可以从标签和上下文的混合信息中计算出来。
3 实验
3.1 设置
通过六项文本分类任务,我们对两种神经模型的三种增强方法的组合进行了测试。相应的代码由Chainer实现并且可用(https://github.com/pfnet-research/ contextual_augmentation)
使用的基准数据集如下:
(1,2)SST是一个用于电影评论情感分类的数据集,用5个或2个标签进行标注(SST5, SST2)。
(3)对主观性数据集(Subj)进行句子的主观或客观标注。
(4) MPQA是一种基于短语而非句子的观点极性检测数据集。
(5) RT是另一个影评情感数据集。
(6) TREC是一个用于分类六种问题类型(例如,人,地点)的数据集。
对于没有开发数据的数据集,我们和文本分类一样使用训练集的10%作为验证集。
我们使用LSTM-RNN或CNN对分类器进行了测试,两者都表现出了良好的性能。我们使用了基于LSTM或CNN的典型分类器架构,并使用了在初步实验中发现的超参数。来字不同数据集训练的八个模型的预测的准确性被平均。
测试的增强方法是:
(1)基于同义词的增强
(2,3)有或没有标签条件结构的上下文增强。
在保留模型超参数的同时,利用验证集的网格搜索方法选择了增强的超参数(温度τ和单词替换概率)。对于情景增强,我们首先在WikiText-103语料库上从英文维基百科文章子集中预先训练了一个没有标签条件结构的双向LSTM LM。预训练后,在每个新引入标签条件结构的标记数据集上对模型进行进一步训练。
3.2 结果
下表列出了有或没有增加的模型的准确性。结果表明,与以往基于同义词的增强方法相比,我们的上下文增强方法对来自不同领域的不同数据集的模型性能提升更明显。此外,我们的标签条件体系结构提高了平均性能,并达到了最好的准确性。我们的方法甚至对具有两种以上标签(SST5和TREC)的数据集也是有效的
Models | STT5 | STT2 | Subj | MPQA | RT | TREC | Avg. |
---|---|---|---|---|---|---|---|
CNN | 41.3 | 79.5 | 92.4 | 86.1 | 75.9 | 90.0 | 77.53 |
w/ synonym | 40.7 | 80.0 | 92.4 | 86.3 | 76.0 | 89.6 | 77.50 |
w/ context | 41.9 | 80.9 | 92.7 | 86.7 | 75.9 | 90.0 | 78.02 |
+ label | 42.1 | 80.8 | 93.0 | 86.7 | 76.1 | 90.5 | 78.20 |
RNN | 40.2 | 80.3 | 92.4 | 86.0 | 76.7 | 89.0 | 77.43 |
w/ synonym | 40.5 | 80.2 | 92.8 | 86.4 | 76.6 | 87.9 | 77.40 |
w/ context | 40.9 | 79.3 | 92.8 | 86.4 | 77.0 | 89.3 | 77.62 |
+ label | 41.1 | 80.1 | 92.8 | 86.4 | 77.4 | 89.2 | 77.83 |
(种基准模型的准确性。从不同的数据集中训练出的8个模型的准确性被平均。)
为了研究我们的标签条件双向LM,我们在下图中显示了该模型对来自SST数据集的句子的前10个单词的预测情况。句子中的每个单词经常被替换为各种不总是同义词的单词。根据输入条件LM的标签,我们给出两种类型的预测。在积极的标签下,“fantastic”经常被funny, honest, good, 和 entertaining所取代,这也是积极的表达方式。相比之下,带有负面标签的““fantastic”这个词经常被tired、forgettable容易忘记、bad和dull沉闷所取代,这反映了一种消极的情绪。在另一种情况下,“the”可以被“no”(可能性第七高)代替,这样整句话就变成了“no actors are fantastic(没有演员太棒了)”。这从整体上看似乎是消极的。除了这种由标签引起的倒置,与标签无关的部分(如“actors”)在正面或负面的预测中并没有太大的不同。这些结果也证明了条件架构是有效的。
(用有条件的双向LM对"the actors are fantastic"这句话进行预测得到十个最高概率的单词。句子上方的方格列出了用积极标签预测的单词。下面的方格列出了用否定标签预测的单词)
4 总结
我们提出了一种利用双向LM提供的大量词汇进行数据增强的新方法,并进一步在LM中引入了标签条件结构。实验结果表明,我们的方法可以在标签单词所属位置,情景兼容地生成各种单词,比基于同义词的增强方法提升更多,并且还改进了神经分类器。我们的方法独立于任何特定的任务知识或规则,可以普遍和容易地用于不同领域的任务分类。
另一方面,我们方法的改进还是微不足道的。未来的工作将探索与其他综合方法的比较和结合,更深入地利用数据集和我们的方法。
4)使用Bert模型结构(Conditional Bert)
(1)操作本质
使用Bert给出替换词的列表,对文本中的词进行替换,通过标签嵌入(label embedding)使得替换后文本保持标签一致性
《
拓展——关于Bert
Bert是一种预训练语言模型,可以通过像完形填空一样的方式,根据一定概率,预测出文本中用[mask]掩盖的某个字或者词,还可以用来预测两个句子的承接关系,比如:[CLS] 师徒四人历经艰险[SEP] 取得真经[SEP] 预测关系就是true,[CLS] 师徒四人历经艰险[SEP] 火烧赤壁[SEP] 预测关系就是false
因为Bert这种预训练模型不需要人工做标注,可以随便找很多文本,把里面句子切一切做样本,因为我们知道哪些话是有承接关系的,用[mask]掩盖文本中的字或词也不需要人工做标注,因为我们知道原来的词是什么,当我们用非常大量的数据去做这两种任务的模型训练,得到的模型,就认为它一定程度上掌握了这个语言中很多词与词之间,句与句之间的关系。用这个模型去对文本做向量化的时候,他的效果我们就认为非常的好,然后对于很多下游任务,就拿这个训练好的模型去做进一步的调参调整,比从0开始去训练效果会好很多。简单说就是通过一些基础任务去训练一个对这个语言有一定了解的训练模型,然后再基于这个预训练模型去做其它的下游任务。
BERT-Embedding(嵌入,插入)
加入 [CLS] [SEP] 来标记文本起始位置
Segment embedding 判断来源语句
Position embedding 带入语序信息
加和后会做Layer Normalization
BERT-Encoder(编译器)
BERT的模型主体结构使用Google自己在17年提出的Transformer结构
Bert通过两个很棒的预训练任务,以及一个不错的模型结构,能达到一个很好的预训练效果,拿到的模型做下游任务的时候非常不错,因此它非常的火,也出现了很多变体,应用在非常多的任务上。
》
(2)论文分析
摘要
我们提出了一种新的标注句子数据增强方法,即Conditional BERT(附加条件的BERT)的语境增强法。数据增强方法常被用于防止深度神经网络模型的过拟合和改进泛化。最近提出了一种基于语言模型的情景增强方法,即随机替换语言模型预测的多种替换词来标记句子。BERT证明,深度双向语言模型比单向语言模型或前向和后向浅层连接模型更强大。通过引入一个新的条件屏蔽语言模型任务,将BERT改进为Conditional BERT。训练好的Conditional BERT可以用于增强情景增强。对6种不同文本分类任务的实验表明,我们的方法可以很容易地应用于卷积和循环神经网络分类器,并获得明显的改进。
1 介绍
基于深度神经网络的模型由于训练数据有限,容易过拟合,失去泛化能力。为了解决这一问题,通常采用数据增强方法生成更多的训练样本。近年来,数据增强在语音领域和计算机视觉领域的应用取得了巨大成功。这些区域的数据扩充可以通过调整大小、镜像、随机裁剪和颜色变换等转换来实现。然而,将这些通用转换应用到文本中很大程度上是随机的和不可控的,这使得不可能保证语义的不变性和标签的正确性。例如,给定一篇影评“The actors is good”,通过镜像我们得到“doog si srotca ehT”,或者通过随机裁剪我们得到“actors is”,这两者都是没有意义的。
现有的文本数据增强方法通常缺乏通用性,这些方法是用针对特定领域的手工规则或流水线开发的。文本数据增强的一般方法是基于替换的方法,即用相关词(如同义词)替换句子中的单词来生成新的句子。然而,像WordNet这样的手工词汇数据库中带有同义词的单词非常有限,基于替换的同义词增强只能从原始文本中产生有限的一些模式。为了解决基于替换的方法的局限性,Kobayashi提出了针对标注句子的情景增强,通过提供广泛的替换词,由标签-条件双向语言模型根据上下文对替换词进行预测。但是情景增强存在两个不足:双向语言模型只是前向和后向模型的浅连接;LSTM模型的使用将其预测能力限制在较短的范围内。
BERT是基于Transformers结构代替双向编码器的模型,通过联合条件作用于所有层的左右上下文,预先训练深度双向表示。BERT提出了一个“masked language model屏蔽语言模型”(MLM)目标,通过随机屏蔽部分输入标记,并根据上下文预测屏蔽词,解决了单向约束问题。这与上下文增强预测替换词的方式非常相似。但由于BERT通常被用于对文本进行预处理,因此MLM任务以无人监督的方式执行,没有考虑到标签差异。
本文重点研究了基于替换的数据增强方法,提出了一种新的情景数据增强方法,即Conditional BERT上下文增强方法。该方法采用Conditional BERT进行上下文增强,并对BERT进行微调。我们采用BERT作为预先训练的语言模型有两个原因。首先,BERT是基于Transformer的。Transformer为我们提供了一个更结构化的内存,用于处理文本中的长期依赖项。其次,BERT作为一种深度双向模型,严格来说比由左至右和由右至左的浅连接模型更强大。因此,我们通过提供更广泛的屏蔽语言模型任务预测的替代词的方法。将BERT应用于标记句的上下文增强。但由于掩码语言模型仅根据上下文对掩码词进行预测,因此预测的掩码词可能与原句标注的标签不兼容。为了解决这个问题,我们引入了一个新的优化目标:“”conditional masked language model附加条件的屏蔽语言模型”(C-MLM)。附加条件的屏蔽语言模型从输入中随机屏蔽一些标记,其目的是根据上下文和句子标签预测一个标签兼容的单词。与Kobayashi的工作不同的是,C-MLM的目标通过联合条件作用于所有层的左右上下文,允许深度的双向表示。
为了评估我们的增强方法如何改善深度神经网络模型的性能,继Kobayashi之后,我们在两种最常见的神经网络结构LSTM-RNN和CNN上对文本分类任务进行了实验。通过对6个不同文本分类任务的实验,我们证明了所提出的条件BERT模型对句子的增强效果优于基线,并且Conditional BERT上下文增强方法可以很容易地应用于卷积和循环神经网络的分类器。我们进一步探讨了我们的附加条件的MLM任务与风格迁移任务之间的联系,并证明了我们的附加条件的MLM任务也可以应用于风格迁移。
我们的贡献总结如下:
- 我们提出了一种Conditional BERT上下文增强方法。该方法允许BERT在不破坏标签兼容性的情况下扩充句子。我们的Conditional BERT可以进一步应用于风格迁移任务。
- 实验结果表明,该方法明显优于现有的文本数据增强方法。
据我们所知,这是将BERT更改为附加条件BERT或将BERT应用于文本生成任务的第一次尝试。
2 Conditional BERT
如图所示,我们的Conditional BERT与原始BERT具有相同的模型架构。不同之处在于输入表征和训练过程
BERT的输入嵌入是标记嵌入、分割嵌入和位置嵌入的和。在BERT分割嵌入中,将学习到的句子a嵌入到第一个句子的每个标记上,如果存在第二个句子,则在第二个句子的每个标记上添加一个句子B嵌入。然而,由于分词嵌入与句子的实际标注标注如意义、情感、主观性等没有联系,预测词与标注标注并不总是一致的。例如,给定一个正面的电影评论““this actor is good”,我们把“good”这个词屏蔽。通过BERT的屏蔽语言模型任务,预测处于屏蔽位置的单词有可能是“坏的”或“无聊的”等负面词汇。这种用屏蔽词替代产生的新句子相对于原来的标注是不可信的,如果将其添加到语料库中进行增强是有害的。为了解决这个问题,我们提出了一个新的任务:“conditional masked language model附加条件的屏蔽语言模型”。
(Conditional BERT模型体系结构。Conditional BERT中的标签嵌入与BERT中的分割嵌入相对应,但它们的功能不同。)
2.1 Conditional Masked Language Model
条件屏蔽语言模型从被标记句子中随机屏蔽部分标记,目的是基于上下文和标签预测被屏蔽词的原始词汇索引。给定一个屏蔽码 ti ,上下文S \ { ti }和标签 y 都被考虑,目的是计算p(·|y, S \ { ti }),而不是计算p(·|S \ { ti })。与原本MLM的预训练不同,Conditional MLM 目标让上下文信息和标签信息融合在一起,这让我们进一步训练标签-条件深度双向化。
为了完成Conditional MLM任务,我们对预训练的BERT进行了微调。我们改变分割嵌入改为标签嵌入,这些嵌入与标注数据集上的标注标签相对应。注意,BERT的分割嵌入被设计为嵌入A或嵌入B,所以当下游任务数据集有两个以上的标签时,我们必须调整嵌入的大小以使标签大小兼容。我们使用有标签的数据集将Conditional MLM 培训为 Conditional BERT。期望在该模型训练完成后,在考虑上下文和标签的情况下,能够预测处于屏蔽位置的单词。
3 Conditional BERT 情景增强
当Conditional BERT训练良好后,我们利用它来增强句子。我们从语料库中选取一个已标注的句子,对句子中的几个词进行随机屏蔽。通过Conditional BERT模型,对与句子标签类似的各种词进行预测。用预测词替换屏蔽词后,生成的新句子与原句子具有相似的上下文和相同的标签。然后在原语料库中添加新的句子。我们在下面详细阐述了整个过程。
运算法则 Conditional BERT上下文增强算法。对预训练的BERT进行微调,利用Conditional MLM任务对标记数据集进行改进,使BERT变为Conditional BERT。模型训练完成后,我们利用它通过在数据集中添加新句子来增强数据集。
4 实验
在本节中,我们提出了Conditional BERT参数设置,并在Kobayashi之后,通过6个文本分类任务,我们对两种类型的神经模型应用不同的增强方法。
我们在实验中使用的预训练BERT模型为BERTBASE,层数(Transformer blocks)L = 12,隐藏大小H = 768, 自注意力机制(self-attention)数A = 12,总参数= 110M。详细的训练前参数设置可以在原始论文中找到。对于每个任务,我们独立执行以下步骤。
首先,我们评估了原始BERT模型对MLM任务的增强能力。我们使用预训练的BERT来增强数据集,通过预测的屏蔽词只对每句话的上下文进行约束。
其次,我们将原始BERT模型微调为一个Conditional BERT。训练有素的Conditional BERT通过在上下文和标签的条件下预测屏蔽词,增强了数据集中的每个句子。
最后,我们将两种方法的性能与Kobayashi的情景增强结果进行比较。
注意,原始BERTs分割嵌入层与两种标签的数据集兼容。当特定任务的数据集有两个以上不同的标签时,我们应该重新训练一个标签大小兼容的标签嵌入层,而不是直接微调预训练的那个。
Model | SST5 | SST2 | Subj | MPQA | RT | TREC | Avg. |
---|---|---|---|---|---|---|---|
CNN* | 41.3 | 79.5 | 92.4 | 86.1 | 75.9 | 90.0 | 77.53 |
w/synonym* | 40.7 | 80.0 | 92.4 | 86.3 | 76.0 | 89.6 | 77.50 |
w/context* | 41.9 | 80.9 | 92.7 | 86.7 | 75.9 | 90.0 | 78.02 |
w/context+label* | 42.1 | 80.8 | 93.0 | 86.7 | 76.1 | 90.5 | 78.20 |
w/BERT | 41.5 | 81.9 | 92.9 | 87.7 | 78.2 | 91.8 | 79.00 |
w/C-BERT | 42.3 | 82.1 | 93.4 | 88.2 | 79.0 | 92.6 | 79.60 |
RNN* | 40.2 | 80.3 | 92.4 | 86.0 | 76.7 | 89.0 | 77.43 |
w/synonym* | 40.5 | 80.2 | 92.8 | 86.4 | 76.6 | 87.9 | 77.40 |
w/context* | 40.9 | 79.3 | 92.8 | 86.4 | 77.0 | 89.3 | 77.62 |
w/context+label* | 41.1 | 80.1 | 92.8 | 86.4 | 77.4 | 89.2 | 77.83 |
w/BERT | 41.3 | 81.4 | 93.5 | 87.3 | 78.3 | 89.8 | 78.60 |
w/C-BERT | 42.6 | 81.9 | 93.9 | 88.0 | 78.9 | 91.0 | 79.38 |
(两种分类器体系结构上不同基准的不同方法的准确性。CBERT表示Conditional BERT,在6个数据集的两种分类器结构上表现最好。“w/”代表“with”,标记“*”的行是Kobayashi的实验结果)
5)基于语言模型的数据增强 LAMBADA
(1)操作本质
用同一份训练集,一份用来训练分类器,一份让它在GPT2基础上微调出一个加入标签的语言模型,在利用这个模型根据标签生成文本,再通过第一份训练的分类器来过滤第二份训练的模型生成的文本,最后将增强的文本与原始训练集融合训练模型
《
GPT2 是Bert之后新的预训练模型,它坚持通过输入一段话来预测下个词的形式训练模型,不过采用了与Bert类似的深层Transformer的语言模型结构,进行了微小的修改,主要的提升在于它训练的数据量变大,整个模型层数加深了。在文本生成上表现出来强大的效果。
由于我们的文本增强其实一定程度上也可以看成一个文本生成任务,本质就是让这个模型帮我们写出一些新的样本来,解决数据量少的问题。
》
(2)论文分析
摘要
基于自然语言建模和文本生成能力方面的最新进展,我们提出了一种用于文本分类任务的数据增强方法。我们使用一个强大的预训练的神经网络模型来人工合成新的标签数据进行监督学习。我们主要关注那些标签数据稀缺的案例。我们的方法被称为基于语言模型的数据增强(LAMBADA),通过对现有(通常很小)标记数据的初始训练阶段,将最先进的语言生成器微调到特定任务。使用微调的模型和给定的类标签,生成新的类句子。然后,我们的过程通过使用在原始数据上训练的分类器来过滤这些新句子。在一系列的实验中,我们证明了LAMBADA提高了分类器在各种数据集上的性能。此外,LAMBADA显著改进了最新的数据增强技术,特别是那些适用于数据很少的文本分类任务的技术。
1 介绍
文本分类,如电子邮件分类为垃圾邮件和非垃圾邮件,是机器学习和自然语言处理的一个基础研究领域。它包括各种其他任务,如意图分类、情感分析、主题分类和关系分类。
根据所面临的问题,对分类器模型进行良好匹配可能需要大量标记数据。然而,在许多情况下,特别是在为特定应用开发人工智能系统时,标签数据稀缺且获取成本高昂。
文本分类的一个例子是不断增长的自动聊天机器人平台市场中的意图分类。新聊天机器人的意图分类器的开发人员可以从每个类包含两个、三个或五个样本的数据集开始,在某些情况下根本没有数据。
数据增强是处理数据匮乏情况的常见策略。它的工作原理是从现有的训练数据中合成新的数据,目的是改善下游模型的性能。该策略已成为各种神经网络模型性能改善的关键因素,主要是在计算机视觉和语音识别领域。具体地说,对于这些领域,已经有完善的方法来综合带标签的数据来改进分类任务。更简单的方法也在现有的训练示例上应用转换,如裁剪、填充、翻转和沿时间和空间维度的移动,因为这些转换通常是分类保存。
然而,在文本数据的情况下,这种转换通常会使文本无效和扭曲,使其在语法和语义上不正确。这使得在文本领域数据增强更具挑战性。事实上,文本增强甚至可能弊大于利,因为合成好的人工文本数据并不是一件容易的任务。因此,文本的数据增强方法通常包括用同义词替换单个单词、删除单词或改变词序。
文本生成模型的最新进展提出了一种创新的方法来处理稀缺数据的情况。尽管在这些情况下,通过深度学习方法改进文本分类似乎是一种矛盾的办法,但预处理模型正在开辟一个新的方法来解决这一问题。
本文提出了一种基于语言模型的数据增强方法(LAMBADA)来综合标注数据,从而提高文本分类任务的效率。LAMBADA在只有少量标记数据可用的情况下特别有用,它的结果超过了目前最先进的性能。经过LAMBADA训练的模型表现出了比下面模型更强的性能:
1)基线模型,只在现有数据上训练
2)在由文本数据增强技术生成的增强语料库上训练的模型。
LAMBADA的数据增强方法建立在一个强大的语言模型之上:生成式预训练(GPT)模型。这个神经网络模型预先训练了大量的文本。因此,它在很大程度上掌握了自然语言的结构,能产出非常连贯的句子和段落。我们通过对现有的小数据进行微调,使GPT适应我们的需求。然后,我们使用微调模型来合成新的标注句子。同时,我们在另外一个具有相同的原始小数据集上训练分类器,并使用它来过滤合成的数据语料库,只保留质量足够好的数据。然后,我们在现有数据和合成数据上重新训练任务分类器
我们将LAMBADA与其他数据增强方法进行了比较,发现它在一些数据集和分类算法上的统计性能更好。我们主要关注小数据集,例如每个类包含五个示例,并表明LAMBADA显著改善了这种场景中的基线。
总之,LAMBADA的贡献主要有三个方面:
- 统计上提高了分类器的准确性。
- 在缺乏数据的情况下优于最先进的数据增强方法。
- 当未标记数据不存在的情况下,提出了一个令人信服的替代半监督技术。
2 LAMBADA 方法
本文提出了一种提高文本分类性能的新方法。该方法因使用基于语言模型的数据增强而命名为LAMBADA,它将更多的合成的、弱标记的数据样本添加到给定的数据集。我们将在下面算法中定义该方法。LAMBADA有两个关键组成部分:
1)模型微调(步骤2),合成标记数据;
2)数据过滤(步骤4),只保留高质量的句子。
输入:训练数据集Dtrain
分类算法A
语言模型G
要分类的文本类别 N1,…,Nq
- 使用A从 Dtrain 中训练基础的分类器 h
- 使用 Dtrain 对 G 进行微调,获得Gtuned
- 使用Gtuned合成一组标注句子D∗
- 过滤器D∗使用分类器h获得Dsynthesized
- 返回Dsynthesized
步骤1:训练基准模型类器
我们使用现有数据 Dtrain 训练一个基础的分类器 h = a (Dtrain)。此分类器将用于步骤4中的过滤。
步骤2:微调语言模型
在步骤1之外,我们对语言模型G进行微调,以完成标记句子合成的任务,得到微调语言模型 Gtuned。这里,G 特别针对 Dtrain 的语言领域(即句子、词汇、风格等)以及Dtrain 中的特定类进行了微调。一般来说,我们希望使用 Gtuned 来生成任意大小的句子集,每个句子都用一个类标记。
在我们的例子中,G是GPT-2的预训练神经模型。我们用Dtrain= {(xi, yi)}n i=1中的数据训练GPT-2,对其进行微调。
我们将Dtrain中的句子连接起来,以下列方式构成U *
U∗ = y1 SEP x1 EOS y2 SEP x2 EOS y3 ··· yn SEP xn EOS
在这里,辅助令牌SEP将一个类标签与对应的句子分开,令牌EOS将一个句子终止,并将其与后面的标签分开。我们进一步训练GPT-2的可学习参数,以与GPT-2预训练完全相同的方式预测下一个令牌——使用方程1中的损失函数(具有相同的训练程序和超参数)。但是,我们使用U∗代替U,可学习参数已经初始化。生成的语言模型称为Gtuned。
在这里,辅助令牌SEP将一个类标签与对应的句子分开,令牌EOS将一个句子终止,并将其与后面的标签分开。我们进一步训练GPT-2的可学习参数,以与GPT-2预先训练完全相同的方式预测下一个令牌——使用方程1中的损失函数(具有相同的训练程序和超参数)。但是,我们使用U∗代替U,可学习参数已经初始化。生成的语言模型称为Gtuned。
步骤3:综合标记数据
给定Gtuned,可以合成新的标记句子。对于任何类的标签y∈{1,…,q},我们可以使用适应的语言模型来预测序列“y SEP”延续到终止生成的句子的EOS。这样,对于每个类,可以合成任意数量的句子。例如,这允许我们在类之间进行平衡,或者控制每个类生成的句子的比例。创建一个更加平衡的训练集可以提高分类性能,特别是在分类器对不平衡类敏感的情况下
在这一步中,我们综合一组有标记的句子,用D∗= {(xi', yi')}N i=1表示。我们使用一个简单且相当粗糙的启发式方法,为每个类y生成的句子比我们希望添加到类中的句子多10倍(即10Ny)。因此,生成的句子总数为。当然,也可以检验更复杂的启发法。
GPT-2生成的标注句子质量高,种类多,有助于我们的方法相对成功。这也是GPT-2的威力发挥作用的地方。
步骤4:对合成数据进行过滤
使用合成文本的一个障碍是它可能引入的噪声和错误。在最后一步中,我们过滤了D∗中的数据,这是由Gtuned在第三步中合成的,只留下最高质量的实例。我们使用在步骤1中训练的分类器h来实现这一点。
对于每一个类y,我们取D *中最上面的Ny句子,用y标记,如下所示:给定一个合成句子(x, y)∈D∗,我们首先确认h (x) = y,然后使用h信心得分(见下文)的排名(x, y)。也就是说,我们把排名最高的纽约的句子在合成数据集类y。这个结果Dsynthesized⊆D∗组成的标记的句子和Dtrain一样的结构。这是LAMBADA的结果。
h给一个数据实例的置信度可以看作是该实例相对于h的保守程度。反过来,h同时考虑了Dtrain和用于扩增数据集的算法a。这种方法借鉴了半监督学习,在半监督学习中,它以保守的方式对无标记数据进行分类和过滤。但是,请注意,Gtuned生成的句子是以类标签为条件的。在我们的例子中,这意味着我们有一种双重投票机制。
在Dtrain∪ Dsynthesed上进一步应用LAMBADA得到D'synthesed、D''synthesed等,一般都可以重复上述过程。
4、文本增强与预训练模型
根据历史发展,可以看到文本增强是和预训练模型的发展齐头并进的。
本文来自博客园,作者:爱吃大抄手的黄大超,转载请注明原文链接:https://www.cnblogs.com/dachaos/p/14994220.html