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

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

3天内不再提示

从统一视角看各类高效finetune方法实现最优tuning框架设计

深度学习自然语言处理 来源:圆圆的算法笔记 作者:圆圆的算法笔记 2022-11-29 11:13 次阅读

随着预训练模型参数量越来越大,迁移学习的成本越来越高,parameter-efficient tuning成为一个热点研究方向。在以前我们在下游任务使用预训练大模型,一般需要finetune模型的所有参数。随着parameter-efficient tuning技术的发展,一些注入adaptor、prefix tuning、LoRA等成本更低的finetune方法被提出。那么各种各样的parameter-efficient tuning方法之间是否存在某些潜在的关系呢?ICLR 2022就有一篇相关的研究,从统一的视角理解现有的各类parameter-efficient tuning方法,并提出了一套迁移框架,可以实现更接近全量参数finetune效果的部分参数finetune。

1各类tuning方法回顾

比较经典的高效finetune方法主要包括adaptor、prefix-tuning、LoRA这三类,这里进行一个简单的回顾。

Adaptor核心是在原Bert中增加参数量更小的子网络,finetune时固定其他参数不变,只更新这个子网络的参数。Adaptor是最早的一类高效finetune方法的代表,在Parameter-Efficient Transfer Learning for NLP(ICML 2019)这篇文章中被提出。在原来的Bert模型的每层中间加入两个adapter。Adapter通过全连接对原输入进行降维进一步缩小参数量,经过内部的NN后再将维度还原,形成一种bottleneck的结构。在finetune过程中,原预训练Bert模型的参数freeze住不更新,只更新adapter的参数,大大减少了finetune阶段需要更新和保存的参数量。

b60e7bc4-6f24-11ed-8abf-dac502259ad0.png

Prefix-tuning的核心是为每个下游任务增加一个prefix embedding,只finetune这些embedding,其他参数freeze。Prefix-tuning对应的论文是Prefix-Tuning: Optimizing Continuous Prompts for Generation(2021),这类方法的思想来源于prefix prompt,prefix embedding相当于一个上下文信息,对模型最终产出的结果造成影响,进而只finetune这个embedding实现下游任务的迁移。

b6af57e2-6f24-11ed-8abf-dac502259ad0.png

LoRA的核心是通过引入参数量远小于原模型的可分解的两小矩阵建立一个旁路,通过finetune这个旁路来影响预训练模型。LoRA于LoRA: Low-rank adaptation of large language models(2021)论文中被提出,利用低秩矩阵替代原来全量参数的训练,提升finetune效率。

b75a2758-6f24-11ed-8abf-dac502259ad0.png

2统一视角看高效finetune方法

ICLR 2022的这篇文章从统一的视角来看各类不同的parameter-efficient tuning方法。首先对于prefix tuning,Transformer的每个head的结果可以进行如下的公式推导变换:

b76eb9f2-6f24-11ed-8abf-dac502259ad0.png

其中,第一行的P就是prefix embedding,C对应着key和value的序列向量,x代表query。经过中间的变换后,可以发现prefix tuning的attention计算可以分为两个部分的加权求和,第一部分是原始的attention,第二部分是和key或value无关的一项,只用query和prefix embedding进行self-attention的计算。而权重则是根据prefix embedding的attention权重。通过上述公式,我们可以从另一个视角来看prefix-tuning:即在原始attention的输出结果上,对位相加一个由prefix embedding得到的attention值,实现对原始attention score的修正。

我们再来看Adaptor和LoRA两种tuning方式的数学表示。Adaptor和LoRA方法可以分别表示为如下公式:

b780c99e-6f24-11ed-8abf-dac502259ad0.png

我们把prefix embedding也可以转换成相同的表达形式:

b7a5b77c-6f24-11ed-8abf-dac502259ad0.png

可以发现这些finetune方法都具有相似的表达形式。并且,prefix-tuning中prefix embedding的数量其实和Adapter中降维的维度具有相似的功能。三种方法在这个视角下的对比如下图所示:

b7c173ea-6f24-11ed-8abf-dac502259ad0.png

3统一的高效finetune框架

既然上述几类方法表达形式相似,并且主要学的都是如何修改原来attention的输出结果,那么我们可以建立一个统一的框架,涵盖上述各类finetune方法。这个框架的核心是如何生成修改原始attention score的向量。为了生成这个向量,需要考虑以下4个核心模块:

Functional Form:用什么样的函数生成,上述方法基本都是全连接降维+激活函数+全连接升维的形式,当然也可以设计更复杂的函数形式;

Modified Representation:对哪个位置的信息进行直接修改;

Insertion Form:向量引入的形式,Adapter采用的是串联的方式,根据上一层的隐状态生成向量;而prefix tuning和LoRA采用并联的方式,直接根据输入序列生成向量;

Composition Function:向量的使用方式,利用adapter中采用简单的对位相加的形式。

Adapter、Prefix-tuning、LoRA等方法按照 上面4个维度拆分,各自的实现形式如下表:

b7f18ad0-6f24-11ed-8abf-dac502259ad0.png

接下来,文中基于上述4个模块设计了一些新的方法:

Parallel Adapter:将Adapter的串联形式修改为并联形式;

Multi-head Parallel Adapter:在Parallel Adapter基础上修改了Modified Representation,使用旁路向量修改attention输出结果;

Scaled Parallel Adapter:将LoRA的scaling引入进来。

b80cc340-6f24-11ed-8abf-dac502259ad0.png

4实验结果

本文由于站在了更高的视角,看到了parameter-efficient tuning的统一形式,因此可以实现更加灵活的建模方式,基于这个框架寻找最节省参数量、最能达到更好效果的结构。从下图可以看出,本文提出的方法实现接接近全量参数finetune的效果,参数量也比Adapter、LoRA等方法有所减少。

b8268032-6f24-11ed-8abf-dac502259ad0.png

文中通过大量的实验对比各个模块采用什么样的形式能带来最好的效果-效率的这种,并最终提出最优的模型MAM-Adapter。核心的实验发现包括:并联的方式比串联的好;对FFN输出结果的修改比对Attention输出结果修改要好等。

b880989c-6f24-11ed-8abf-dac502259ad0.png

5总结

本文从统一视角看parameter-efficient tuning,实现了更高视角的最优tuning框架设计。这也启发我们寻找同类问题不同建模方式背后原理的统一性,能够跳出一种模型结构去看各类建模方式的相似性,实现更高视角下对问题的理解。

审核编辑:郭婷

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

    关注

    346

    文章

    1537

    浏览量

    230319

原文标题:从统一视角看各类高效finetune方法

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

收藏 人收藏

    评论

    相关推荐

    架设

    架设计,这种构架设计是新的知识希望能够得到本,可以继续发展构架思维和构架设计灵感。
    发表于 12-18 11:09

    《SoC底层软件低功耗系统设计与实现》基于Linux专门讲解软件低功耗框架和设计的书籍

    本书内容 选材不错 在众多的Linux技术书籍中,专门讲低功耗这部分细分技术的书籍非常少,本书专注于该部分技术分析,内容看是本值得一看的书。物联网行业尤其对功耗敏感,所以本书的众
    发表于 09-08 23:38

    基于RT-Thread的RoboMaster电控框架设

    由于 RT-Thread 稳定高效的内核,丰富的文档教程,积极活跃的社区氛围,以及设备驱动框架、Kconfig、Scons、日志系统、海量的软件包……很难不选择 RT-Thread 进行项目开发。
    发表于 09-06 15:21 407次阅读

    面向万物智联的应用框架的思考与探索

    的整体规划、架构设计及实现;也曾主导华为浏览器内核、快应用引擎的零到构建。在加入华为之前,任职于英特尔公司,曾负责移动平台的 HTML5 引擎—— Crosswalk 开源项目、XML 高性能处理器
    发表于 08-08 17:04

    浅析RT-Thread设备驱动框架

    RT-Thread 设备框架属于组件和服务层,是基于 RT-Thread 内核之上的上层软件。设备框架是针对某一类外设,抽象出来的一套统一的操作方法及接入标准,可以屏蔽硬件差异,为应用
    的头像 发表于 08-07 15:39 1266次阅读

    基于通过非常稀疏的视角输入合成场景的方法

    作者引入了一种方法,可以仅使用单个宽基线立体图像对生成新视角。在这种具有挑战性的情况下,3D场景点只被正常观察一次,需要基于先验进行场景几何和外观的重建。作者发现从稀疏观测中生成新视角的现有
    的头像 发表于 06-13 09:29 409次阅读
    基于通过非常稀疏的<b class='flag-5'>视角</b>输入合成场景的<b class='flag-5'>方法</b>

    架设ADSS光缆的具体方法有哪些?-科兰

    对于很多人来说,应该要知道,非张力架设ADSS光缆,标准全介质自承式光缆的时候,应该是先布放绝缘牵引绳,同时还应该要与衬托线路杆塔间架设支撑件,之后人工拉动牵引绳,将光缆牵引布放。当然,在整个架设
    的头像 发表于 05-22 10:31 477次阅读

    视角下的边缘计算实现

    经验和未来规划的垂直行业, 在上述多个边缘计算架构的基础上梳理出来不同视角下边缘计算实现的架构。本文的目的不是提出一种新的边缘计算框架,而是博取所长,创 建一张边缘计算知识地图,后续笔者的自研开发项目和更深入的边缘计算技术的探
    发表于 05-18 17:18 0次下载
    多<b class='flag-5'>视角</b>下的边缘计算<b class='flag-5'>实现</b>

    Linux的PWM驱动框架实现方法

    本文主要讲述了Linux的PWM驱动框架实现方法、驱动添加方法和调试方法
    的头像 发表于 05-14 15:24 1009次阅读
    Linux的PWM驱动<b class='flag-5'>框架</b>及<b class='flag-5'>实现</b><b class='flag-5'>方法</b>

    基于FPGA提升框架的小波变换方法

    基于提升框架的小波变换方法,利用FPGA 可编程特性可实现多种小波变换。提升框架(LS :Lifting Scheme) 是由Sweldens 等人在近几年提出的一种小波变换
    的头像 发表于 05-11 15:33 489次阅读
    基于FPGA提升<b class='flag-5'>框架</b>的小波变换<b class='flag-5'>方法</b>

    不同设备如何统一语言编程平台高效开发?本文为你揭秘

    不同设备,开发者如何使用同套应用框架开发应用,让用户获得统一的应用交互体验呢? 基于此,方舟编译器(以下称“ArkCompiler”)应运而生。ArkCompiler支持ArkTS/TS应用预先编译优化
    发表于 05-09 10:01

    面向万物智联的应用框架的思考和探索(下)

    机制,这样可以更高效实现动态化内容接入。后续配合ArkUI跨OS平台项目,可实现基于统一的声明式开发范式来开发应用和动态化内容,以及相应的跨OS平台部署,进
    发表于 05-06 10:17

    面向万物智联的应用框架的思考和探索(中)

    做相应的演进,比如可部署到更轻量的设备,分布式基础设施构建等。 1.2 目前应用框架的局限: 纵观现有的各类方案,在新兴的场景和应用需求下,逐渐呈现出定的局限性。 1.2.1 原生应用框架
    发表于 05-05 14:41

    # 面向万物智联的应用框架的思考和探索(上)

    DOM(Document Object Model)等机制引入前端开发框架设计中。开发者只需声明好相应的数据和UI的绑定,之后由框架来跟踪数据的变化,并通过虚拟DOM树的对比找出变化点,从而实现界面
    发表于 05-04 10:48

    可以将Vector VN1630和我们的PC应用程序与这个统一的引导加载程序框架起使用吗?

    应用程序。我可以将 Vector VN1630 和我们的 PC 应用程序与这个统一的引导加载程序框架起使用吗? 如果需要任何更改,那么更改是什么。
    发表于 04-28 08:36