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

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

3天内不再提示

如何实现更绿色、经济的NLP预训练模型迁移

深度学习自然语言处理 来源:圆圆的算法笔记 作者:Fareise 2022-03-21 15:33 次阅读

NLP中,预训练大模型Finetune是一种非常常见的解决问题的范式。利用在海量文本上预训练得到的Bert、GPT等模型,在下游不同任务上分别进行finetune,得到下游任务的模型。然而,这种方式的代价也很大,经常要对所有任务都保存一个完整的task-specific模型,随着预训练模型体积越来越大,这种方式会占用很多存储空间,当下游任务很多的时候要存储大量的预训练模型。同时,为每个任务finetune一个如此庞大的模型,训练资源的消耗也比较大。

为了实现更绿色、经济的NLP预训练模型迁移,近两年来业内提出了很多优化finetune的方法,例如adapter finetune、mask finetune等。最近很火的prompt更是极大减轻了finetune开销,甚至不进行finetune就能应用于下游任务。本文重点介绍近两年几个NLP中finetune优化的经典工作,包括adapter-finetune、side-tuning、mask-finetune以及prefix-finetune等工作。

Adapter-tuning

迁移NLP预训练模型的方法主要分为finetune和feature-based。Finetune将原来的模型在下游任务上进行训练,而feature-based方法使用预训练模型产出的词、句子等embedding作为输入,接下游一个独立的模型进行预测。其中finetune的效果往往由于feature-based方法。然而finetune的计算开销要比feature-based大很多,能不能采用一种折中的方式呢?Parameter-Efficient Transfer Learning for NLP(ICML 2019)提出了一种更经济的迁移学习方法adapter-tuning,只需要finetune少量参数就能达到和finetune整个模型不相上下的效果。具体做法为,在原来的Bert模型的每层中间加入两个adapter,adapter首先通过全连接对原输入进行降维进一步缩小参数量,经过内部的NN后再将维度还原,形成一种bottleneck的结构。在finetune过程中,原预训练Bert模型的参数freeze住不更新,只更新adapter的参数,大大减少了finetune阶段需要更新和保存的参数量。

如何实现更绿色、经济的NLP预训练模型迁移

AdapterFusion: Non-Destructive Task Composition for Transfer Learning(2021)在Adapter Finetune的基础上,提出当下游存在多个任务的时候,使用两阶段的Finetune。第一阶段和Adapter Finetune的思路一样,在预训练大模型基础上加上每个任务的adapter进行finetune,大模型参数freeze。在第二阶段,继续freeze预训练模型,同时freeze住第一阶段训练的adapter模型参数,学习一个AdapterFusion模型,这个模块的作用是融合各个adapter的信息,实现下游多个任务之间的信息共享。AdapterFusion部分的思路是,利用当前样本在FF层的输出和各个任务的adapter输出做Attention,实现从多个Adapter产出信息中的选择和融合。这样模型实现了根据每个样本选择合适的adapter输出,综合了多任务的adapter信息。

如何实现更绿色、经济的NLP预训练模型迁移

Side-Tuning

Side-tuning: A baseline for network adaptation via additive side networks(ECCV 2019)提出了一种side-tuning的方法。如下图,side-tune是在原来的预训练模型基础上,增加一个小的side network,然后将预训练模型的输入和side-network的输出进行融合。融合的方法文中提出使用一个可学习的参数α进行加权融合就能取得比较的效果。在训练过程中,预训练模型不会进行更新,只更新side-network部分的参数。Side模型的尺寸和复杂度也可以根据任务的难易程度进行调整。Side-tuning和adapt-tuning有相似之处,都是利用一个附属的小模型对原预训练大模型的表示进行更精细化的针对下游任务的调整。

如何实现更绿色、经济的NLP预训练模型迁移

Mask-tuning

Masking as an efficient alternative to finetuning for pretrained language models(2020)提出一种简单的mask方法实现高效finetune。相比一般的finetune,该方法在finetune阶段不对参数进行调整,而是学习一个mask矩阵。对于每一个Transformer层,都会学习一个0-1的矩阵,然后用这个矩阵对该层所有全连接权重进行缩放。公式如下,m表示矩阵中某一个元素,根据一个阈值设置为1或0,再用这个矩阵和每层的全连接参数相乘进行对应元素的缩放。

Mask-tuning的出发点为,在预训练模型finetune的过程中,其实不需要finetune那么多参数,只要finetune一些关键参数就能达到较好的效果,减少finetune阶段计算的冗余性。在How fine can fine-tuning be? Learning efficient language models(2020)一文中也提出了类似的思路。

如何实现更绿色、经济的NLP预训练模型迁移

Mask-tuning的出发点为,在预训练模型finetune的过程中,其实不需要finetune那么多参数,只要finetune一些关键参数就能达到较好的效果,减少finetune阶段计算的冗余性。在How fine can fine-tuning be? Learning efficient language models(2020)一文中也提出了类似的思路。

Prefix-tuning

REFORMER: THE EFFICIENT TRANSFORMER(ICLR 2020)提出了采用局部敏感哈希的方法提升Transformer效率。当序列较长时,QK^T的维度[batch_size, L, L]的计算量和存储开销会非常大,但是由于我们关注的是softmax后的结果,并不关注QK^T本身是什么,而softmax只关注值最大的几个元素,因此我们可以只选择k<

Prefix-Tuning: Optimizing Continuous Prompts for Generation(2021)提出的方法只finetune 0.1%的参数就取得和finetune相当的效果,并且在少样本任务上效果优于finetune。本文提出针对自然语言生成任务(如摘要生成、table-to-text等任务)的迁移预训练大模型的方法。基于Language models are few-shot learners(2020,GPT3)等文章中提出的Prompt思路,只要能给模型一个合适的上下文信息context,预训练的语言模型不需要修改参数就能很好的解决下游问题。例如当我们想生成Obama这个词,只要上下文信息给Barack,模型就可有可能生成Obama,因为模型在预训练阶段已经学到了这些信息。

该方法的具体实现为,将预训练的Transformer模型参数整体Freeze住,当正常输入文本序列的时候,在最前端添加几个prefix id,每一个prefix id都对应一个随机初始化的embedding,不同的任务有不同的prefix id。这样在模型中,prefix之后每个时刻的表示都会受到prefix的影响,prefix代表某个对应具体任务的上下文信息。在Finetune过程中,模型的其他参数都Freeze,只finetune prefix的embedding,以及prefix后面接的一些全连接层,Finetune参数量只占整体模型的0.1%,远小于其他的Finetune方法。该方法核心思想利用了prefix embedding去学习对于某个任务来说,需要从预训练语言模型中提取什么样的信息。

如何实现更绿色、经济的NLP预训练模型迁移

总结

NLP领域预训练大模型的发展,催生出很多针对如何提升迁移效率的研究工作。从目前的研究趋势来看,基于prompt思想的finetune是未来的一个重要研究趋势,充分利用预训练模型的信息,让下游任务更贴近预训练模型,而不是让预训练模型贴近下游任务。后续我们也会对prompt进行更为详细的介绍。

原文标题:NLP中的绿色Finetune方法

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

审核编辑:汤梓红

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

    关注

    12

    文章

    3859

    浏览量

    84670
  • 参数
    +关注

    关注

    11

    文章

    1398

    浏览量

    31472
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47696

原文标题:NLP中的绿色Finetune方法

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

收藏 人收藏

    评论

    相关推荐

    基于不同量级预训练数据的RoBERTa模型分析

    NLP领域的研究目前由像RoBERTa等经过数十亿个字符的语料经过预训练模型汇主导。那么对于一个预训练模型,对于不同量级下的预
    发表于 03-03 11:21 1415次阅读

    Pytorch模型训练实用PDF教程【中文】

    本教程以实际应用、工程开发为目的,着重介绍模型训练过程中遇到的实际问题和方法。在机器学习模型开发中,主要涉及三大部分,分别是数据、模型和损失函数及优化器。本文也按顺序的依次介绍数据、
    发表于 12-21 09:18

    迁移学习

    神经网络训练方法卷积神经网络介绍经典网络结构介绍章节目标:深入了解神经网络的组成、训练实现,掌握深度空间特征分布等关键概念,为深度迁移学习奠定知识基础 三、
    发表于 04-21 15:15

    【KV260视觉入门套件试用体验】Vitis AI 通过迁移学习训练自定义模型

    【Vitis AI】 Vitis AI 通过迁移学习训练自定义模型 测评计划: 一、开箱报告,KV260通过网线共享PC网络 二、Zynq超强辅助-PYNQ配置,并使用XVC(Xilinx
    发表于 10-16 15:03

    基于QoS的数据迁移模型的设计

    结合对象存储的特点,提出基于QoS 的存储系统模型。该模型迁移任务划分为细粒度的迁移请求,使对象存储设备在实现数据
    发表于 10-07 11:56 9次下载

    面向NLP任务的迁移学习新模型ULMFit

    除了能够更快地进行训练之外,迁移学习也是特别有趣的,仅在最后一层进行训练,让我们可以仅仅使用较少的标记数据,而对整个模型进行端对端训练则需要
    的头像 发表于 08-22 08:11 5446次阅读

    迁移学习与模型训练:何去何从

    把我们当前要处理的NLP任务叫做T(T称为目标任务),迁移学习技术做的事是利用另一个任务S(S称为源任务)来提升任务T的效果,也即把S的信息迁移到T中。至于怎么迁移信息就有很多方法了,
    的头像 发表于 07-18 11:29 7502次阅读
    <b class='flag-5'>迁移</b>学习与<b class='flag-5'>模型</b>预<b class='flag-5'>训练</b>:何去何从

    NLP迁移学习面临的问题和解决

    自然语言处理(NLP)最近取得了巨大的进步,每隔几天就会发布最新的结果。排行榜疯狂是指最常见的NLP基准,如GLUE和SUPERGLUE,它们的得分越来越接近人类的水平。这些结果大多是通过超大(数十亿个参数)模型从大规模数据集中
    的头像 发表于 05-04 12:03 2873次阅读
    <b class='flag-5'>NLP</b><b class='flag-5'>迁移</b>学习面临的问题和解决

    小米在预训练模型的探索与优化

    导读:预训练模型NLP大放异彩,并开启了预训练-微调的NLP范式时代。由于工业领域相关业务的复杂性,以及工业应用对推理性能的要求,大规模预
    的头像 发表于 12-31 10:17 2266次阅读
    小米在预<b class='flag-5'>训练</b><b class='flag-5'>模型</b>的探索与优化

    2021 OPPO开发者大会:NLP训练模型

    2021 OPPO开发者大会:NLP训练模型 2021 OPPO开发者大会上介绍了融合知识的NLP训练
    的头像 发表于 10-27 14:18 1527次阅读
    2021 OPPO开发者大会:<b class='flag-5'>NLP</b>预<b class='flag-5'>训练</b>大<b class='flag-5'>模型</b>

    2021年OPPO开发者大会 融合知识的NLP训练模型

    2021年OPPO开发者大会刘海锋:融合知识的NLP训练模型,知识融合学习运用在小布助手里面。
    的头像 发表于 10-27 14:48 2277次阅读
    2021年OPPO开发者大会 融合知识的<b class='flag-5'>NLP</b>预<b class='flag-5'>训练</b>大<b class='flag-5'>模型</b>

    迁移学习Finetune的四种类型招式

    迁移学习方法。例如NLP中的预训练Bert模型,通过在下游任务上Finetune即可取得比直接使用下游数据任务从零训练的效果要好得多。
    的头像 发表于 04-02 17:35 2593次阅读

    用NVIDIA迁移学习工具箱如何训练二维姿态估计模型

      本系列的第一篇文章介绍了在 NVIDIA 迁移学习工具箱中使用开源 COCO 数据集和 BodyPoseNet 应用程序的 如何训练二维姿态估计模型
    的头像 发表于 04-10 09:41 1489次阅读
    用NVIDIA<b class='flag-5'>迁移</b>学习工具箱如何<b class='flag-5'>训练</b>二维姿态估计<b class='flag-5'>模型</b>

    NLP中的迁移学习:利用预训练模型进行文本分类

    迁移学习彻底改变了自然语言处理(NLP)领域,允许从业者利用预先训练模型来完成自己的任务,从而大大减少了训练时间和计算资源。在本文中,我们
    发表于 06-14 09:30 311次阅读

    视觉深度学习迁移学习训练框架Torchvision介绍

    Torchvision是基于Pytorch的视觉深度学习迁移学习训练框架,当前支持的图像分类、对象检测、实例分割、语义分割、姿态评估模型迁移学习
    的头像 发表于 09-22 09:49 453次阅读
    视觉深度学习<b class='flag-5'>迁移</b>学习<b class='flag-5'>训练</b>框架Torchvision介绍