0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微调前给预训练模型参数增加噪音提高效果的方法

深度学习自然语言处理 来源:NLP工作站 作者:刘聪NLP 2022-06-07 09:57 次阅读

写在前面

昨天看完NoisyTune论文,做好实验就来了。一篇ACL2022通过微调前给预训练模型参数增加噪音提高预训练语言模型在下游任务的效果方法-NoisyTune,论文全称《NoisyTune: A Little Noise Can Help You Finetune Pretrained Language Models Better》。

paper地址:https://aclanthology.org/2022.acl-short.76.pdf

由于仅加两行代码就可以实现,就在自己的数据上进行了实验,发现确实有所提高,为此分享给大家;不过值得注意的是,「不同数据需要加入噪音的程度是不同」,需要自行调参。

模型

自2018年BERT模型横空出世,预训练语言模型基本上已经成为了自然语言处理领域的标配,「pretrain+finetune」成为了主流方法,下游任务的效果与模型预训练息息相关;然而由于预训练机制以及数据影响,导致预训练语言模型与下游任务存在一定的Gap,导致在finetune过程中,模型可能陷入局部最优。

为了减轻上述问题,提出了NoisyTune方法,即,在finetune前加入给预训练模型的参数增加少量噪音,给原始模型增加一些扰动,从而提高预训练语言模型在下游任务的效果,如下图所示,

43feda12-e589-11ec-ba43-dac502259ad0.png

通过矩阵级扰动(matrix-wise perturbing)方法来增加噪声,定义预训练语言模型参数矩阵为,其中,表示模型中参数矩阵的个数,扰动如下:

其中,表示从到范围内均匀分布的噪声;表示控制噪声强度的超参数;表示标准差。

代码实现如下:

forname,parainmodel.namedparameters():
model.statedict()[name][:]+=(torch.rand(para.size())−0.5)*noise_lambda*torch.std(para)

这种增加噪声的方法,可以应用到各种预训练语言模型中,可插拔且操作简单。

如下表所示,在BERT、XLNET、RoBERTa和ELECTRA上均取得不错的效果。

444e5060-e589-11ec-ba43-dac502259ad0.png

并且比较的四种不同增加噪声的方法,发现在矩阵级均匀噪声最优。

448791e0-e589-11ec-ba43-dac502259ad0.png

在不同数据量下,NoisyTune方法相对于finetune均有所提高。

44bb1fec-e589-11ec-ba43-dac502259ad0.png

在不同噪声强度下,效果提升不同,对于GLUE数据集,在0.1-0.15间为最佳。

44f1b2f0-e589-11ec-ba43-dac502259ad0.png

总结

蛮有意思的一篇论文,加入少量噪音,提高下游微调效果,并且可插拔方便易用,可以纳入到技术库中。

本人在自己的中文数据上做了一些实验,发现结果也是有一些提高的,一般在0.3%-0.9%之间,但是噪声强度在0.2时最佳,并且在噪声强度小于0.1或大于0.25后,会比原始效果差。个人实验结果,仅供参考。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 噪音
    +关注

    关注

    1

    文章

    169

    浏览量

    23874
  • 模型
    +关注

    关注

    1

    文章

    3158

    浏览量

    48702
  • 自然语言处理

    关注

    1

    文章

    611

    浏览量

    13504

原文标题:ACL2022 | NoisyTune:微调前加入少量噪音可能会有意想不到的效果

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PyTorch GPU 加速训练模型方法

    在深度学习领域,GPU加速训练模型已经成为提高训练效率和缩短训练时间的重要手段。PyTorch作为一个流行的深度学习框架,提供了丰富的工具和
    的头像 发表于 11-05 17:43 440次阅读

    训练和迁移学习的区别和联系

    训练和迁移学习是深度学习和机器学习领域中的两个重要概念,它们在提高模型性能、减少训练时间和降低对数据量的需求方面发挥着关键作用。本文将从定
    的头像 发表于 07-11 10:12 823次阅读

    大语言模型训练

    能力,逐渐成为NLP领域的研究热点。大语言模型训练是这一技术发展的关键步骤,它通过在海量无标签数据上进行训练,使模型学习到语言的通用知识
    的头像 发表于 07-11 10:11 380次阅读

    模型为什么要微调?大模型微调的原理

    在人工智能(AI)领域,特别是自然语言处理(NLP)领域,大模型(如BERT、GPT系列等)的出现为许多复杂任务提供了强大的解决方案。然而,这些训练的大模型虽然具有广泛的适用性,但在
    的头像 发表于 07-10 10:43 3487次阅读

    人脸识别模型训练失败原因有哪些

    : 1.1 数据量不足 人脸识别模型需要大量的数据进行训练,以提高模型的泛化能力。如果数据量不足,模型可能无法学习到足够的特征,导致
    的头像 发表于 07-04 09:17 532次阅读

    训练模型的基本原理和应用

    训练好的模型,这些模型通常在某些通用任务上表现出色,并且可以作为后续特定任务的起点,通过迁移学习或微调(Fine-tuning)等方式进行适应和优化。以下是对
    的头像 发表于 07-03 18:20 2304次阅读

    【大语言模型:原理与工程实践】大语言模型的应用

    。 关于大语言模型是否具备与人类“系统2”相似的能力,存在广泛的争议。然而,随着模型参数量的增加和大规模
    发表于 05-07 17:21

    【大语言模型:原理与工程实践】大语言模型训练

    如此卓越的性能,就是通过其核心能力对海量数据进行训练,再进行微调或对其什么型更好的根据人类的指令和偏好,发挥这些性能。随着语言模型参数的不
    发表于 05-07 17:10

    【大语言模型:原理与工程实践】大语言模型的基础技术

    特定任务对模型进行微调。这种方法的成功不仅是自然语言处理发展的一个转折点,还为许多现实世界的应用场带来了前所未有的性能提升。从广为人知的GPT到BERT,
    发表于 05-05 12:17

    【大语言模型:原理与工程实践】核心技术综述

    训练微调,直到模型的部署和性能评估。以下是对这些技术的综述: 模型架构: LLMs通常采用深层的神经网络架构,最常见的是Transf
    发表于 05-05 10:56

    【大语言模型:原理与工程实践】揭开大语言模型的面纱

    更好地拟合训练数据,并在推理和泛化时表现出色。此外,特征复用通过共享参数提高效率和性能,使得大语言模型能够更有效地利用学到的特征。最后,优化效果
    发表于 05-04 23:55

    基于双级优化(BLO)的消除过拟合的微调方法

    这篇论文试图解决的问题是大型训练模型在下游任务中进行微调时出现的过拟合问题。尽管低秩适应(LoRA)及其变体通过学习低秩增量矩阵有效地减少了与完全
    的头像 发表于 04-02 16:46 636次阅读
    基于双级优化(BLO)的消除过拟合的<b class='flag-5'>微调</b><b class='flag-5'>方法</b>

    名单公布!【书籍评测活动NO.30】大规模语言模型:从理论到实践

    一阶段训练的奖励模型,对有监督微调模型对用户提示词补全结果的质量进行评估,与语言模型建模目标综合得到更好的
    发表于 03-11 15:16

    混合专家模型 (MoE)核心组件和训练方法介绍

    ): 与稠密模型相比,训练速度更快 与具有相同参数数量的模型相比,具有更快的推理速度 需要大量显存,因为所有专家系统都需要加载到内存中 在
    的头像 发表于 01-13 09:37 1164次阅读
    混合专家<b class='flag-5'>模型</b> (MoE)核心组件和<b class='flag-5'>训练方法</b>介绍

    四种微调模型方法介绍

    微调(Full Fine-tuning):全微调是指对整个训练模型进行微调,包括所有的
    发表于 01-03 10:57 2.3w次阅读
    四种<b class='flag-5'>微调</b>大<b class='flag-5'>模型</b>的<b class='flag-5'>方法</b>介绍