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

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

3天内不再提示

基于多任务预训练模块化提示

深度学习自然语言处理 来源:深度学习自然语言处理 2023-06-20 11:04 次阅读

Prompt Tuning 可以让预训练的语言模型快速适应下游任务。虽然有研究证明:当训练数据足够多的时候,Prompt Tuning 的微调结果可以媲美整个模型的训练调优,但当面对 Few-shot 场景时,PT 的调优方法还是存在一定的局限性。针对这个问题,复旦提出了多任务预训练模块化 Prompt(简称为:),来提高模型在 Few-shot 场景下的 PT 效果,使模型能够快速适应下游任务。

背景介绍

基于 Prompt Learning 的预训练模型在 Few-shot 场景下取得了显著的进展,它缩小了模型训练和下游任务微调之间的差距,并且通过将下游任务转换成统一的语言建模任务,可以重复使用预训练模型头,而不是训练一个随机初始化的分类头来解决有限数据的任务。然而,基于 Prompt Learning 通常需要针对每个下游任务进行全参数微调,这就需要大量的计算资源,尤其当面对上百亿的大模型的时候。

随着时间推移,近期有很多工作致力于有效的 prompt learning 方法的研究,该方法只需学习少量的 soft prompt 参数,并且能够保持 PTM 主体参数不变。与模型的整体调优相比,prompt 调优优势明显,它对计算资源要求较低并且针对特定的下游任务能够实现快速调优匹配。但是尽管已经证明,当训练数据足够时,提示调整可以与完整模型调整的性能相匹配,但由于随机初始化的 soft prompt 在预训练和微调之间引入了新的差距,因此在 Few-shot 中无法从零开始训练 soft prompt。

「为了弥补 Prompt Tuning 的预训练和微调之间的差距,本文提出了多任务预训练模块化提示 (),它是一组在 38 个中文任务上预训练的可组合提示」,在下游任务中,预训练的 prompt 可以有选择地进行激活和组合,提高对未知任务的泛化能力。为了弥合预训练和微调之间的差距,将上下游任务制定为统一到了一个机器阅读理解任务中。 通过在梯度下降、黑盒调优两种学习范式的实验,证明了 在 Few-shot 学习场景中,相比比 Prompt tuning、完整模型调优和其它的 Prompt 预训练方法都具有显著的优势,最后作者还证明了仅通过学习 8 个参数来组合预训练的模块化提示,就可以实现对下游任务的快速适应。

方法介绍

方法主要通过以下三个步骤实现对下游任务的快速适应:(1) 在大规模无标签数据上进行自监督预训练;(2) 使用多任务学习进行预训练模块指令和相应的 route;(3) 激活并调整子集指令以进行对下游任务的适应。具体流程图如下所示: 5dc0d54a-0e82-11ee-962d-dac502259ad0.png  方法的主要内容包括:「统一为 MRC 任务、深度模块化 Prompt、多任务预训练、下游 FT」等四个方面。 「统一 MRC 任务」:基于 Prompt 的学习方法不能涵盖较广范围的任务,并且任务之间的标签词可能不同,从而导致预训练模型在不同任务上的效果不佳。基于 MCC 方法,可以将上下游任务转化成 MCC 任务使得不同任务可以共享相同的标签词,但该方法当面对大于 16 个标签的分类任务时仍存在局限性。为此 方法将上下游任务统一成机器阅读理解 (MRC) 格式,通过构建一个查询来进行分类任务,进而可以处理不同标签数的任务,从而实现更广泛的任务支持。 「深度模块化 Prompt」:为了增加 soft prompt 的能力,使其匹配训练数据的复杂性,作者从深度和宽度两个维度扩展了 soft prompt,具体如下图所示:

5dce2894-0e82-11ee-962d-dac502259ad0.png

其中:首先在深度方面,作者增加了 LSTM 层或 Transformer Decoder 来实现深度扩展。这些层使得模型可以更好地学习输入序列的表示,并且能够考虑更多的上下文信息;其次在宽度方面,作者在 soft prompt 里面添加了更多的词汇和语义信息。通过深度和宽度的拓展,soft prompt 可以更好地匹配训练数据的复杂性,从而提高模型的性能和准确率。

「多任务预训练」:多任务学习已被证明可以提高各种任务的 prompt learning 的表现。作者对由 38 个不同类型、领域、大小的中文 NLP 任务组成的混合任务进行了深度模块化提示的预训练。为了处理不平衡的数据大小,对于每次向前计算,首先随机从 1 到 38 中选择一个任务 ID,然后获取对应于所选择任务的一个批次的训练数据,从而每个任务的学习步骤数量应该是相同的。

「下游 FT」:为了能够快速适应下游任务,本文通过两个阶段进行微调,如下图所示:

5dd55d30-0e82-11ee-962d-dac502259ad0.png

其中:在第一阶段,为每个层分配一个随机路由,并训练 route 选择性地重用预训练的模块提示来解决目标任务,同时保持所有其他参数冻结。在第二阶段,冻结 route 并只微调选择的提示。整个微调过程中,PTM 参数保持不变。同时作者探索了基于梯度下降和黑盒调优两种学习范式下的微调。对于梯度下降,使用 Adam 优化器进行两个阶段的微调。对于黑盒 FT,采用贝叶斯优化在第一阶段优化 route,并采用 CMAES 优化选择的内在 prompt ,同时冻结映射矩阵 A。

实验思路 在 38 个中文 NLP 任务上预训练,然后在 14 个下游任务上进行评估。在 Few-Shot 下的实验表明,具体如下图所示,可以发现「其性能明显优于 PT、全模型微调和之前的 prompt 训练方法」。仅通过调整 route(仅有 8 个参数)冻结 PTM 和所有 prompt,就可以实现对下游任务的快速适应。 5deb949c-0e82-11ee-962d-dac502259ad0.png
责任编辑:彭菁

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

    关注

    7

    文章

    2666

    浏览量

    47331
  • 数据
    +关注

    关注

    8

    文章

    6867

    浏览量

    88800
  • 语言模型
    +关注

    关注

    0

    文章

    502

    浏览量

    10244

原文标题:ACL 2023 | 复旦邱锡鹏组提出模块化Prompt多任务预训练,可快速适应下游任务

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

收藏 人收藏

    评论

    相关推荐

    基于CVR建模的多任务联合学习训练方法——ESMM

    本文作者提出 ESMM 算法,通过定义新型多任务联合训练的方式,以全新的视角对 CVR 进行建模。
    的头像 发表于 08-27 16:41 5439次阅读
    基于CVR建模的<b class='flag-5'>多任务</b>联合学习<b class='flag-5'>训练</b>方法——ESMM

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

    进行损失计算,得到下一个目标的预测。也会设计一些其他辅助训练任务,与主任务共同训练。选择合适的训练数据是确保模型性能和泛
    发表于 05-07 17:10

    setjmp构建简单协作式多任务系统

    系统的调度只在用户指定的时机发生,这会大大简化内核和用户系统的设计,尤其本文实现的系统通过条件查询来放弃CPU,既符合传统单片机程序设计的思维,又带来了多任务模块化、可重入的编程便利。Setjmp
    发表于 12-07 15:55

    功放失真模块化测试解决方案

    功放失真模块化测试解决方案
    发表于 05-16 16:16

    模块化编程

    在练习模块化编程的时候,知道尽量不用全局变量!!可是,不得不使用很多的全局变量的时候,怎么办?提示multiple public……
    发表于 08-26 16:17

    多任务编程多任务处理是指什么

    嵌入式Linux应用编程-多任务编程多任务处理是指用户可在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。Linux就是一个支持多任务的操作系统,比起单
    发表于 12-22 08:30

    ZMC运动控制器多任务编程一

    、用户多任务程序。运动控制器支持多任务编程,各任务可以独立执行,任务间不受影响。通过划分任务,程序模块化
    发表于 11-07 09:52

    嵌入式多任务GUI的通用解决方案

    针对嵌入式多任务 GUI 系统需要非常强的灵活性、可移植性和可伸缩性的特点.提出一种通用解决方案;采用层次模块化和面向对象的设计思想,给出了 GUI 的体系结构,并对多任务 GUI
    发表于 01-04 18:30 24次下载

    实时多任务嵌入式软件的架构方式的设计应用

    分享到:标签:软总线 嵌入式软件 实时多任务 1.引言 随着大型嵌入式系统向着集成化和多元方向的发展,嵌入式软件系统的复杂度也日益增大。在集成多个硬件工作模块组成的复杂系统中,要求软件系统能同时
    发表于 10-25 14:46 1次下载
    实时<b class='flag-5'>多任务</b>嵌入式软件的架构方式的设计应用

    新的训练方法——MASS!MASS训练几大优势!

    专门针对序列到序列的自然语言生成任务,微软亚洲研究院提出了新的训练方法:屏蔽序列到序列训练(MASS: Masked Sequence
    的头像 发表于 05-11 09:34 7060次阅读
    新的<b class='flag-5'>预</b><b class='flag-5'>训练</b>方法——MASS!MASS<b class='flag-5'>预</b><b class='flag-5'>训练</b>几大优势!

    一种基于多任务联合训练的阅读理解模型

    和理解能力。为此,提岀一种基于多任务联合训练的阅读理解模型,该模型是由一组功能各异的神经络构成的联合学习模型,其仿效人们推理和回答冋题的基本方式分别执行文档选择和答案抽取两个关键步骤。档选择过程融入了基于注意
    发表于 03-16 11:41 10次下载
    一种基于<b class='flag-5'>多任务</b>联合<b class='flag-5'>训练</b>的阅读理解模型

    基于训练模型和长短期记忆网络的深度学习模型

    语义槽填充是对话系统中一项非常重要的任务,旨在为输入句子的毎个单词标注正确的标签,其性能的妤坏极大地影响着后续的对话管理模块。目前,使用深度学习方法解决该任务时,一般利用随机词向量或者
    发表于 04-20 14:29 19次下载
    基于<b class='flag-5'>预</b><b class='flag-5'>训练</b>模型和长短期记忆网络的深度学习模型

    利用视觉语言模型对检测器进行训练

    训练通常被用于自然语言处理以及计算机视觉领域,以增强主干网络的特征提取能力,达到加速训练和提高模型泛化性能的目的。该方法亦可以用于场景文本检测当中,如最早的使用ImageNet
    的头像 发表于 08-08 15:33 1351次阅读

    什么是训练 AI 模型?

    训练 AI 模型是为了完成特定任务而在大型数据集上训练的深度学习模型。这些模型既可以直接使用,也可以根据不同行业的应用需求进行自定义。 如果要教一个刚学会走路的孩子什么是独角兽,那么
    的头像 发表于 04-04 01:45 1411次阅读

    什么是训练AI模型?

    训练 AI 模型是为了完成特定任务而在大型数据集上训练的深度学习模型。这些模型既可以直接使用,也可以根据不同行业的应用需求进行自定义。
    的头像 发表于 05-25 17:10 987次阅读