准确地微调预训练语言模型对于它们在下游任务中的成功至关重要。但是,预训练语言模型可能存在过度拟合预训练任务和数据的风险,从而与目标下游任务存在鸿沟。
我们提出了一种矩阵级扰动方法,根据不同参数矩阵的标准差,将不同强度的均匀噪声添加到不同参数矩阵中,从而考虑模型中不同类型参数的差异化特征。
在GLUE和XTREME等基准数据集上的实验表明,NoisyTune 可以简单有效地为语言模型在下游任务中带来提升。
本期AI TIME PhD直播间,我们邀请到清华大学电子工程系博士研究生——武楚涵,为我们带来 告分享《小噪声对预训练语言模型微调的帮助》。
武楚涵:清华大学电子工程系博士研究生,主要研究方向为自然语言处理、推荐系统和用户建模,曾在多个人工智能领域知名学术会议和期刊上发表论文多篇。
我们在研究之前加入了一点噪声,发现这样的改变就会对预训练模型微调带来小幅的提升。我们认为这样一个小的改动可以对语言模型的fine-tuning起到一个有效的作用。
01
Motivation
预训练语言模型是近年来NLP的核心技术之一,支撑了许多如机器翻译、阅读理解和情感分析等许多下游任务。预训练语言模型的微调对于它们在下游任务中的成功与否非常关键。
目前已有的预训练模型微调的范式大多由下图(a)所示。我们利用下游任务的标注数据,直接微调预训练语言模型,得到任务专用的语言模型。
实际上,语言模型通常非常巨大,有数以亿计的参数。在预训练的过程中,它有可能会记住并过拟合预训练的任务和数据特性。
但是,预训练的任务与下游的任务通常存在鸿沟。如果预训练语言模型过拟合了预训练任务,那么通过微调迁移到下游任务就可能存在一定困难。当下游任务的标注数据较为有限时,直接微调的性能往往不是最优的。
因此,如上图(b)所示,我们通过在微调前加入噪声这一简单有效的手段,减轻预训练语言模型过拟合预训练任务的问题,使其更好的在下游任务中进行微调。
02
NoisyTune
我们的方法受强化学习领域的dueling bandits机制启发。如下图所示,一个当前的Q 络通过加入一些噪声得到一个新的探索Q 络。由于探索Q 络受到了一定扰动,便可以探索一些新的特征空间。
因此,如果对预训练语言模型加入一些噪声,预训练语言模型便可以探索一些新的特征空间,减轻对预训练任务的数据过拟合的问题。
但是,如果简单对预训练语言模型加入一个统一分布的噪声,模型的性能是很容易下降的。
究其原因是预训练语言模型中的各个参数矩阵特点差异巨大。
因此,对于不同的参数矩阵,我们计算其标准差,在其基础上乘以一个均匀分布的噪声,如下图所示。
其中,λ是噪声分布的强度。对于不同的矩阵添加不同的噪声,能够较好地考虑预训练语言模型中不同参数的差异化特点。
我们直接提供了如上图的PyTorch风格代码。模型加载后,对模型的参数进行扰动,后续进行模型编译和微调,即插即用,能够服务各类下游任务。
03
Experiments
● Performance on GLUE and XTREME
我们的实验在英语的GLUE benchmark和XTREME多语言benchmark之上开展。
我们发现如BERT等各类方法在加入噪声之后都存在小幅度的性能提升。
同时我们发现,在一些更小的数据集上提升会更加明显。
从结果看出,我们的方法既不受制于模型类型,也不受制于语言类型,具有较好的通用性。
04
Influence of Noise Type
接下来,我们探究怎样加噪对NoisyTune更好。我们选取了不同类型的噪声,比如全局的高斯噪声,matrix-wise高斯噪声等。
我们发现,加入全局噪声的效果不佳,因为会导致一些不该扰动的参数发生比较大的扰动。而且我们发现,加入高斯噪声不如加入均匀分布的噪声,我们认为这可能是由于高斯噪声没有上下限幅,异常值对模型训练存在较大干扰。
05
Combining with Finetuning Methods
NoisyTune方法和已有微调方法最主要的区别就是前者解决的是语言模型对预训练任务的过拟合问题,而后者解决的是下游任务的过拟合问题。
因此,NoisyTune还可以和解决下游任务的微调方法结合。如上图对比,多种微调方法在添加小幅噪声后还是可以得到小幅的性能提升,说明结合两种方法可以更好的对抗过拟合问题。
06
Influence of Training Data Amount
我们也检验了一下NoisyTune针对下游不同数据量的情况,如上图所示。
可以看到当训练数据越来越少的时候,NoisyTune的提升更加明显。
07
Parameter Norm Change
我们进一步分析了NoisyTune的内在机制。我们发现它可以使得微调过程变得更加容易。
如上图可以看出,各个参数矩阵的范数变化随着训练过程的进行在不断拉大。
但是对于加入噪声的模型,范数的变化比不加噪声的模型更小。这说明NoisyTune使得参数的变化更加稳定。
这在一定程度上解释了NoisyTune可以使得语言模型较快地迁移到下游任务之中,跨越预训练任务和下游任务之间的鸿沟。
08
Noise Intensity
最后,我们探索了噪声大小强度λ对模型的影响。如上图所示,我们发现在实验对比的数据集上0.1—0.15的大小是不错的λ选取范围,过大或过小都可能对模型性能带来负面影响。
提
醒
论文链接:
https://arxiv.org/pdf/2202.12024
论文题目:
NoisyTune: A Little Noise Can Help You Finetune Pretrained Language Models Better
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!