全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:4009-999-999

和记最新官方网址:FreeLB—适用于自然语言理解的对抗学习

本文摘要:简介大家好,今天讲解的是暑期我在微软公司进修期间主要做到的工作,关于自然语言模型对付训练的问题,也就是用于更佳的对付训练的方式强化transformer-based的模型在自然语言解读领域的效果。

简介大家好,今天讲解的是暑期我在微软公司进修期间主要做到的工作,关于自然语言模型对付训练的问题,也就是用于更佳的对付训练的方式强化transformer-based的模型在自然语言解读领域的效果。这项工作由我和我的几位mentor,导师以及manager一起已完成的。这次共享共计还包括一下几个部分:对付训练的讲解关于transformer-based模型的对付训练结论▌对付训练的讲解1、图片分类器的对付训练对输出的样本做到微小的改动很更容易让机器学习模型经常出现失误,这种操作者称作对抗性反击,这对实际应用于模型带给了很大的风险。

一般情况下我们通过在输出中重新加入对付样本,使得样本需要认清这种微小的改动,从而减少模型的鲁棒性。对付训练最初用作图像识别领域,然后演进到自然语言处置的对付训练,我们也是基于前人的理论上对自然语言中的对付训练展开了改良。

最初的对付样本概念是基于图像领域,就是我们对一张大自然的图片特一个人眼不可见(微小)的扰动,这种扰动不转变图像本身的类别,但是神经网络模型却把他辨识为一个几乎有所不同的类别。比如图片中本来是一个“pig”,通过重新加入一个微小的扰动,模型却辨识为"airliner"。这种对付样本对于普通的神经网络来说完全是普遍存在的,或者说对给定的图片我们都能寻找对付样本使得神经网络模型预测经常出现错误,利用这种操作者我们完全能使模型在训练集上的准确率再降0;在自然语言中也不存在对付样本,但是结构对付样本比图像领域要简单一些,根据Ribeiro在文章中明确提出的,根据一些词转换的规则(SemanticallyEquivalentAdversarialRules)来分解对付样本,比如把"Whatis"改为简写形式"What's",或者在语句完结时多特一个问号"?",就能使得基于神经网络的自然语言模型在某些情况下得出一个错误的分类。

为了提高使图像分类器对付反击的鲁棒性,可以用于对付样本训练模型。明确的作法是在训练的过程中,动态分解对付样本,同时优化模型使得在对付样本上的损失函数尽量小。这个优化问题是一个min-max问题,max部分要寻找一个图像上的扰动使其尽量减小损失函数,尽量让模型拢分类,同时拒绝它的模(||||F)尽量的小,就是尽量的肉眼不可见,不转变原图像实际的类别。

优化问题可以通过同构梯度上升(ProjectedGradientDescent)的方式来解法。首先对δ展开梯度下降,并确保||δ||F大于一定的值,通过K步操作者后,然后再行展开一次梯度上升。这种重新加入对付样本的训练方式可以提升分类器的鲁棒性,但同时分类器在原数据集的整洁测试集上分类的准确率也不会上升,这个是副作用。

提高鲁棒性的原因在于分类器在用于包括对付样本训练后一般化性能显著提高。这种一般化性回避了数据集的bias,所以在测试集上的准确率有所上升,但模型捕猎的特征也更加相似于人的理解。

如果把训练过程中梯度上升过程的可视化图片中,可以显现出,对普通模型的预测影响仅次于的图像特征基本上是随机的,和输出的图片中物体的实际轮廓关系不大,但是经过对付训练的模型不会捕捉到图片中鸟或者飞机的边缘,使得分类器和人的感官十分相似,这也就说明了对付训练的模型是鲁篮的。但是,近期来自JHU和Google的一篇文章中明确提出一种对付训练方法,需要提高模型在整洁样本测试集上的准确率。

和前文所述Madry等人的训练方法有所不同,其损失函数同时包括了整洁样本和对付样本,并且对整洁样本和对付样本分别用于两组有所不同的BatchNormalization。作者们通过对比整洁样本和对付样本的BatchNormalization的参数,找到二者概率分布有所不同,所以在训练过程中对整洁样本和对付样本分别使用了有所不同的BatchNormalization。预测时,只用于整洁样本对应的BatchNormalization参数,最后在ImageNet数据集上将EfficientNet的TOP1的准确率最低提高了0.7个百分点,并且在数据越大的情况下提高就越显著。

这给我们获取了一个用于对付训练来提高模型准确率的一种方式。2.常用的自然语言对付训练自然语言中分解对付的句子是有一定可玩性的,一般最常用的方法,是把句子中的一些词替换成他的近义词。对扰动也使用一种梯度下降的方式,具体做法是通过更换后的embedding向量和原句子的embedding向量求出劣向量后,再求与梯度向量欲夹角,夹角就越小解释对损失函数的减少就越多。

一般情况下都是通过这种方式融合近义词更换的约束来结构一些对付样本,但是这种近义词更换与上下文关系密切,所以有时候也不存在一些不合理的情况。比如图片中“Hehasanaturalgiftforwritingscripts.”中的gift,在此句中是”天赋”的意思,第二句中的“talent”也有天赋的意思,但是第三句中的“present”虽然和“gift”也是近义词,都有“礼物”的意思,但是在上下文中显然不合理的。使用这种词更换的方式时还必须融合其他约束方式来过滤器掉那些不合理的对付样本,比如用于back-translationscores,但是这种方式必须用于额外的机器翻译模型,在每次分解对付样本时检测一次,这种方式的效率非常低;另一种方式就是去找一些标准化的语言规则,比如简写(whatis替换成what's),名词替换成命令代词(noun>this/that/it)等语义等价对付规则(semanticallyequivalentadversarialrules,全称SEARs)方式来分解对付样本。

这种语义等价对付规则产生的对付样本基本上保有了原义,但不是一种十分有效地的攻击方式,从实验中我们可以看见SEARs在数据集VisualQA和SentimentAnalysis上产生对付样本的准确率低于只降至10.9%,这点跟之前提及的图像对付反击有所不同,在图像上对没经过对付训练的模型准确率需要降底到0。实验证明SEARs对付训练在数据集上的准确率展现出也一般,而且也不能受限减少抵抗对付样本的敏感性。Back-translationscores无法确保一定能分解有效地的对付样本,但显然提高模型的辨识性能。在ACLpaper【5】中在机器翻译的过程中分解了一些对付样本,模型通过Back-translationScore过滤器丢弃了一些不合理的对付样本,提高了模型的准确率。

由于在每一步梯度下降的过程中,必须对每种有可能的词更换计算出来Back-translationScore,这种模型的消耗极大,运行时间宽,所以也不是拟合的方式。另一种比较简单蛮横的方式就是必要在词的embedding上重新加入对付扰动,虽然有时重新加入扰动不一定需要确实对应到词的embedding,但是以提高对付训练模型的性能为目的,而不关心分解的对付样本的质量,那这种方式也是可以采行的。

图中r是分解的对付扰动,v是原本输出词的embedding向量,模型使用LSTM,把r重新加入到这个图模型中,重新加入的扰动不影响整个模型的训练,依然可以用梯度上升算出embedding中改版参数的梯度,这种方式早在2017年被Goodfellow【6】用来强化语言模型的性能,当时通过对付训练把错误率从7.33%减少到6.21%。后来又明确提出了一种半监督的训练方式,在原本数据集中于减少了一些没标签的数据,通过最小化无标签数据的KL散度,最小化邻域内仅次于的KL散度。

通过减少无标签的数据之后,错误率由6.21%减少到5.91%。在embedding中重新加入对付扰动是目前一种较为有效地的方式,我们的工作中也是使用了这种方式引进的对付扰动。▌关于transformer-based模型的对付训练前面讲解的都是现有的一些对付训练的方法,接下来讲解一下我们的方法,以及一些涉及的方法。

首先讲解一下我们设计模型的思路:我们只是在fine-tuning的阶段做到了对付训练任务,没在Bert等类似于的预训练阶段重新加入对付训练,主要是实训练本身就必须较小的计算出来量,而对付训练不会额外减少一些计算出来量,所以在大量的数据集上我们没在实训练的阶段做到对付训练;我们也是在词的embedding上重新加入了一些扰动;我们维持了Bert和RoBERTA实训练模型的超强参数,只转变我们重新加入了对付训练部分的超强参数。普通训练模型RoBERTA为baseline,对付训练的baseline实验是在重新加入了扰动后的embedding数据后使用K-PGD展开对付训练,与RoBERTA模型比起,K-PGD会减少RoBERTA的性能,并且在大部分数据集中于有所提高。1.标准的对付训练:同构式梯度上升(ProjectedGradientDescent)KPGD的一般流程如下,如果输出词向量大小是n×d,那么我们重新加入的扰动delta也是n×d,并且||δ||F大于epsilon,在K-步的梯度计算出来过程中首先要初始化δ0,然后计算出来K步减少的梯度,通过gadv/||gadv||F模,除以单步的自学亲率,再加前一步的δ值,最后获得的δ都会同构到约束范围内(如果多达ε则所取ε值),这种normalization的操作者是减缓模型发散的速度,因为模型训练无穷大拟合值附近时梯度较为小,通过这种标准化操作者可以减少有效地的步长,发散更加慢。K-PGD优点和缺点:非常简单并且有效地的方法。

较为陈旧,因为必须做到K倍的后向传播过程。梯度改版时对输出的embedding欲的梯度,在这个过程中也可以获得所有神经网络参数的梯度,并不需要额外的计算出来量。

在FreeAT和YOPO两篇也是利用用梯度下降过程提供参数的梯度,来增加总的前向-后向传播的次数。2.PGD的变种:FreeAT和YOPO利用之前对输出欲梯度展开梯度下降的过程中可以取得参数θ的梯度,所以FreeAT中对输出每做到一次梯度上升时,同时对参数θ做到一次梯度上升操作者。在K-PGD中比如K=2,那么必须经过3步(梯度下降之后)才改版一次参数,但FreeAT每一步递归分解对付样本时,参数θ也同时改版,总的对付训练步骤和普通模型训练时完全一致,消耗时间也近似于,但是比KPGD延长了很多。但FreeAT也有副作用,就是不会在同一个样本附近改版多次参数,PGD的随机性有助模型的一般化能力。

参数在一个batch的样本上梯度上升m次获得结果称作batchreplay,参数改版次数就越多,模型准确率随之上升的越少。柱状图是模型普通训练方式(naturaltrained)的准确率和训练次数的关系,根据这个关系在FreeAT中设置replay=8,训练时间比普通模型多5min,准确率维持与PGD差不多,但是鲁棒性有所提高。但是freeAT中也不存在一些问题,我们看见δt改版的公式中,δt是θt-1的函数,就是每次改版时依然用于了上一步骤中的参数,参数不存在滞后性,所以产生的对付效果过于强劲。

YOPO模型中每展开一次前向-后向传播后,相同损失函数关于第一层输入的梯度,然后用梯度除以第一层对付样本参数的雅克比矩阵来改版梯度,这一操作者被称作inntersteps,这个过程反复n步,这种方式也能减少对付样本的额强度,增加了整个前向-后向传播次数。比如之前用于K-PGD获得了一些对付样本,而用于YOPO仅有用K/2步就可以获得完全相同强度的对付样本。

YOPO外层循环改版参数的梯度时会变换上innerstep中分解对付样本时每一步的梯度(gθ(1),gθ(2)),一般是这些梯度的平均值。这种作法有点类似于通过减小batchsize的方式来减缓模型的发散。YOPO训练速度比其他对付训练方式要慢很多,准确率比起FreeAT也有提高,同时也提高了模型的鲁棒性(防卫攻击能力)。

最后文章未认为标准化的规则来回应明确增加的循环次数,只是找到用了较少的循环次数,获得了更佳的结果。我们也同时不存在疑惑:文章中的innerstep是必需不存在的吗?文中所说的第一层是卷积操作者,而卷积的操作者是一个线性操作者,所以第一层的梯度是一个常数,这样innerstep中传送的梯度与对付样本牵涉到,虽然考虑到了projection的梯度下降过程,比如循环了2次,那么只是相等于是用了两倍的步长改版参数,innerstep没起着显著的起到。但是文章明确提出的对付训练思想还是很有糅合意义的。

3.我们的模型FreeLB在我们的实验中,就糅合了YOPO的对付训练方式,但我们抛弃了YOPO倡导的innerstep步骤。这样,我们的模型只在K步梯度下降的过程中累积梯度,并在之后用累积的梯度展开参数改版。这与分段优化十分类似于,如左图右图,分段优化不会将3个图片分别放到了3个GPU上展开训练,同时各自计算出来梯度,然后计算出来三个图片的平均值梯度,这样batchsize相等于原本的的3倍,模型训练时的learning_rate也可以减少到原本的3倍,但总递归次数可以增加到原本的1/3,并且往往能超过某种程度的效果。

自然语言解读任务,特别是在是GLUE上所必须的递归次数一般较较少,所以与之有所不同的是,我们没将总递归次数(模型参数改版次数)增加到原本的1/K,但这种方式比起于K-PGD依然提升了梯度的利用率,并需要更进一步提高模型性能。4.实验结果我们将我们的方法与YOPO展开对比。在构建YOPO时,我们把第一层替换成了非线性的,这样在innerstep中传送的梯度就不是一个常数。我们尝试了有所不同innerstep的数量,YOPO-3-2就是包括了2个innerstep,YOPO-3-3就是包括了3个innerstep。

同时,为确保等效步长完全一致,在左图中,我们还将每个innerstep的长度替换成FreeLB-3的梯度下降步长除以innerstep数。而在右图中每个innerstep的步长和FreeLB完全一致,这样YOPO等效步长更长。根据实验结果,我们找到innerstep过程没展现出出有希望的结果,有时减少innerstep还不会使结果变差。

步长大一些的时候(右图)YOPO与FreeLB的差距不会增大,但依然没显得更佳。之前提及我们把分解的对付样本重新加入到了模型的输出中,相等于减少了数据的batchsize,目标函数可以看作最大化对付样本的损失函数在某个邻域内的值,当有K个对付样本时,相等于优化了在原本输出样本附近的K个有所不同区域的仅次于loss值。最后对目标函数欲最小值来优化解法模型的参数,展开预测。我们的方法显然有一定的提高,但是背后的原因目前还没去更进一步证明,有文章认为【8】,如果一个模型对T中有所不同的转换,比如对输出展开了T种转换但预测结果都是准确,那么这模型的一般化错误率还比原本没转换的模型降至根号T倍(下限)。

实验中的算法不会累积中间对付样本的梯度,在K步之后改版参数,累积获得的对付样本的梯度都是用于当前步骤下的参数,防止了FreeAT中参数过期的问题,所以实验结果性能高于其他对付训练的模型。并在GLUE很多数据集上都获得了好的结果。Dropout的影响在图片的抗训练领域里没获得普遍注目,因为目前在图像领域在大多情况下早已仍然用于Dropout了,但是在基于Transformer的语言模型里还是必须用于Dropout,即使是在finetuning过程,我们仍用于了Dropout。为了减少对付的强度,我们必须在每步梯度上升时相同DropoutMask,这与FreeAT过期问题相近,因为网络每一层的结构都不完全相同,获得的输出梯度有很多的噪声。

从目标函数的角度来看,我们想要优化对于有所不同dropoutmask下损失函数的希望,损失函数在K-step里是所有样本损失之和,所以必须在每一步里的dropout维持完全相同。将我们的模型用作GLUE的其他数据集上也有一些获得了有所不同程度的提高,另外将freeLB用在BERT-base模型上,整体的score提高了1.1%,用在RoBERTa模型上能提高0.3%,另外有时候FreeLB单个模型,性能相比之下多达了一些构建的模型。▌结论对付训练可以提高自然语言模型预测的性能,虽然我们只是把对付训练过程用在fine-tuning阶段内,也某种程度提高了模型的准确率。

从大量实验中可以显现出对付训练在提高模型的一般化能力上潜力极大。未来期望需要寻找一种使得对付训练,需要运用在语言模型实训练阶段的高效对付训练方法,实训练阶段必须相当大的计算出来量,目前指出最简单的解决问题方式也是用于large-batch的训练方式。

最后感激我的导师和mentor们,也感激一起进修工作的同事,与他们的日常交流也使我受益匪浅。


本文关键词:和记娱乐官网,和记平台,和记最新官方网址

本文来源:和记娱乐官网-www.tjjx68.com

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。