论文阅读之Parameter-Efficient Transfer Learning for NLP(2019)

news2024/11/20 11:39:27

文章目录

  • Abstract
  • Introduction
  • Adapter tuning for NLP
  • Experiments
  • 总结
  • 参考

论文名称翻译过来就是“NLP的参数有效迁移学习”,其实就是是目前火热prompt learning(提示学习)出现的铺垫之一了。

NLP第三范式就是预训练模型微调下游任务,所有每当完成一个任务,都需要微调预训练模型。

文章总体的思路就是设计了一个adapter(类似适配器)将预训练模型微调的参数从原先的整个大模型,到只需要训练几个小的适配器,就能够达到和原先做法在下游任务差不多的效果,大大减少了模型训练的参数,提高了效率。

接下来一起稍微读一下文章。

Abstract

在这里插入图片描述
微调大型预训练模型是NLP中一种有效的传递机制。然而,在存在许多下游任务的情况下,微调是参数效率低下的:每个任务都需要一个全新的模型。作为替代方案,我们建议使用适配器模块进行传输。适配器模块产生了一个紧凑且可扩展的模型;它们只为每个任务添加几个可训练的参数,并且可以添加新任务,而无需重新访问以前的任务。原始网络的参数保持固定,从而产生高度的参数共享。为了证明适配器的有效性,我们将最近提出的BERT Transformer模型转移到26个不同的文本分类任务中,包括GLUE基准。适配器可以获得接近最先进的性能,同时每个任务只添加几个参数。在GLUE上,我们实现了0.4%以内的完全微调性能,每个任务只添加3.6%的参数。相比之下,每次任务的微调都会训练100%的参数。

Introduction

在这里插入图片描述
图1。在经过训练的特定任务参数的准确性和数量之间进行权衡,以进行适配器调整和微调。y轴通过完全微调的性能进行归一化,详见第3节。曲线显示了GLUE基准测试中九项任务的第20、第50和第80个性能百分位数。基于自适应的调谐获得了与完全微调类似的性能,训练参数减少了两个数量级。

别的先不谈,看这个图确实是,用了adapter训练的参数在10的6次方就可以有比较好的效果了,需要训练的参数确实少了很多。

接下来作者主要说了NLP中最常见的两种迁移学习技术是基于特征的迁移和微调。
在这里插入图片描述

NLP中最常见的两种迁移学习技术是基于特征的迁移和微调。相反,我们提出了一种基于适配器模块的替代传输方法(Rebuffi等人,2017)。基于特征的转移涉及预训练实值嵌入向量。这些嵌入可以是单词(Mikolov等人,2013)、句子(Cer等人,2019)或段落级别(Le&Mikolov,2014)。然后将嵌入提供给自定义的下游模型。微调包括从预先训练的网络中复制权重,并在下游任务中对其进行微调。最近的工作表明,微调通常比基于特征的转移具有更好的性能(Howard&Ruder,2018)。

然后说文章提出的adapter法相比之下效率更高。
在这里插入图片描述
基于特征的转移和微调都需要为每个任务设置一组新的权重。如果在任务之间共享网络的较低层,则微调的参数效率更高。然而,我们提出的适配器调整方法的参数效率甚至更高。图1展示了这种权衡。x轴显示了每个任务训练的参数数量;这对应于解决每个附加任务所需的模型大小的边际增加。基于适配器的调整需要训练两个数量级的参数来进行微调,同时获得类似的性能。

接下来讲adapters思路
在这里插入图片描述
大概就是说adapter需要训练的参数v是远小于w,而w是固定或者是共享的,从而提升能够训练的效率也能很好的适配下游任务。

Adapter tuning for NLP

这里最关键的估计就是这个了,即这个adapter是怎么设计的,是放在哪的。
在这里插入图片描述

图2:适配器模块的体系结构及其与Transformer的集成。

左图:我们将适配器模块添加到每个Transformer层两次:在投影之后的多头注意力和两个前馈层之后。

右图:适配器由一个瓶颈组成,该瓶颈几乎不包含与原始模型中的注意力和前馈层相关的参数。

适配器还包含一个跳过连接。在适配器调优期间,在下游数据上训练绿色层,这包括适配器、层规范化参数和最终分类层(图中未显示)。

关于适配器的设计,简单来说就是全连接投影+激活函数+残差连接
在这里插入图片描述
图2显示了我们的适配器体系结构,以及它在Transformer中的应用。Transformer的每一层都包含两个主要的子层:一个注意力层和一个前馈层。两个层后面都紧接着一个投影,该投影将特征大小映射回层输入的大小。

跳过连接应用于每个子层。

每个子层的输出被馈送到层归一化中。

我们在每个子层之后插入两个串行适配器。

适配器总是直接应用于子层的输出,在投影回输入大小之后,但在添加跳过连接之前。然后,适配器的输出被直接传递到下面的层规范化中。

代码好像没放出来,差不多了。
可以看看实验结果

Experiments

在这里插入图片描述
在这里插入图片描述
确实,adapter的确和原来微调差不多。

总结

没想到一个adapter接在预训练模型里面,便可以达到“四两拨千斤”的效果。所以说预训练模型并不需要动他,只需要对其每层的输出稍稍调整一下,就可以用到下游任务了。

参考

http://proceedings.mlr.press/v97/houlsby19a/houlsby19a.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

颠覆式变革来了?谷歌将改变搜索引擎展示方式,加入AI对话与短视频

来源 |华尔街见闻 作者 |周晓雯 谷歌搜索结果的展示页面,可能很快就会出现巨大变化。 据报道,谷歌正在改变其呈现搜索结果的方式,将人工智能对话以及更多的短视频和社交媒体帖子纳入其中,这与数十年来促使其成为搜索引擎“霸主”的…

UP主发车啦!撩人仙侠文系列,谁来管管这个反派啊!

本人书龄4年,平时很爱看小说,阅遍无数经典修仙文,熬夜党的最爱啊!!!!我心中的仙侠top,都是我的心头爱。 一般我都会跟朋友说这六本五星级仙侠好文,如果她们不看&#xf…

利用Appuploader上架IPA步骤

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code1vtq5fxoqxjpg Appuploader可以辅助在Windows、linux或mac系统直接申请iOS证书p12,及上传ipa到App Store。方便在没有苹…

Shell脚本练习

求100以内正奇数和 注意点: $[]和$(()):是进行数学运算的。支持 - * / %:分别为 “加、减、乘、除、取模”。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。{a..b}:表示范围。大于等于a&am…

python3+requests接口自动化测试实例详细操作

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…

什么是ERP?电商ERP和传统ERP到底有什么不同?

随着电子商务行业的不断发展,传统的ERP系统已经不再适应电商的业务需求,因为这些系统主要是设计用于传统制造和物流公司。 电商企业面临的业务需求与传统制造和物流公司截然不同,因此需要更加灵活和适应性强的解决方案来支持其日常运营。 对…

PointNetGPD代码复现

0、安装分析 Ubuntu版本pcl版本vtk版本18.041.918.2.0 1、pcl1.9安装 1.1 安装依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-de…

托福高频真词List04 // 9:40~10:30 |阅读真题 // 11:00~11:50

目录 ​​​​​​​生词 熟词 阅读真题​​​​​​​ inclement adj.天气恶劣的;气候严酷的;狂风暴雨的;潮湿的;寒冷的 ​​​​​​​生词 propertycharacteristicfeaturen 特征substantiallysignificantlylargely…

一文读懂Web Component

前言 由于最近作者在学习微前端,web component也是其中一大特性,部分微前端框架使用到,也是深入学习了一下相关的知识,分享出来。 Web Component是什么? Web Component 实际上一系列技术的组合,主要包含…

【Java】Enum 枚举

java 中的枚举类型本质是默认继承于 java.lang.Enum 的类 常用方法 方法签名描述values()以数组形式返回枚举类型的所有成员ordinal()获取枚举成员的索引位置(编号、序号)valueOf()将普通字符串转换为枚举实例compareTo()比较两个枚举成员在定义是的顺…

名称空间(namespaces)与作用域

引入 在python解释器中运行一行代码import this就可以看到“传说”中的python之禅,它体现了使用python进行开发的规范,而最后一句 - Namespaces are one honking great idea -- lets do more of those!就是本文的主角。 名称空间(Namespaces) 名称空间…

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet:利用深度学习对点云进行3D分类和语义分割 参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为:https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作…

部署博客系统(部署博客系统到云服务器)

目录 1、建库建表 2、微调本地代码 3、打包(使用Maven打成war包) 4、拷贝到Tomcat的webapps 5、启动Tomcat服务器(只有启动成功了才能进行访问) 6、访问博客系统 1、建库建表 云服务器访问的是云服务器上的数据库,不是…

FFmpeg YUV 编码 H264

1. x264 库 由于 FFmpeg 不支持 h264 编码,所以需要集成 x264 库,现在使用的是当前最新版本 1.1 官方下载地址: videolanhttps://www.videolan.org/developers/x264.html 1.2 编译脚本地址: x264-ioshttps://github.com/kewlbear/x264-

【信息系统项目管理师】概要和框架-2023年5月7日总结

还有20天考试,记录下这二十天的学习内容。 今天之前4月4日到4月13日五天修炼看了一半,看到了项目风险管理,云里雾里看了个大概。 听野人老师的课从第一章跟着到了第十章,听一会儿就走神,听一会儿就走神。 改变思路&…

1.4 初探Spring - 采用Java配置类管理Bean

一、采用Java配置类管理Bean 1、打开项目 Maven项目 - SpringDemo 2、创建子包 在net.hf.spring包里创建day04子包 3、创建杀龙任务类 在day04子包里创建杀龙任务类 - SlayDragonQuest package net.hf.spring.day04;/*** 功能:杀龙任务类* 作者&#xff1…

Ubuntu搭建VPN服务

PPTD协议 此协议据说安全级别不高,苹果系统已经不支持,但windows依然支持 1.安装,root账号登录服务器 apt-get update apt-get install pptpd 2.配置主机ip及连接主机的设备所分配ip池,客户端分配的内网ip段。 vim /etc/pptpd.conf 将以下两行注释去…

同云跨可用区备份容灾解决方案详解

云可用区 云可用区(Availability Zone,AZ)是一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,可用区内逻辑上再将计算、网络、存储等资源划分成多个集群。一个地域中的多个可用区间通过高速光纤相连,以满足…

Ubuntu安装Mininet和Ryu出现的问题

问题1-Ryu: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host‘pypi.org’, port443): 解决: pip install XXX -i http://pypi.douban.com/simple --trusted-host pypi.douban.com或 pip install XXX -i http://mirrors.aliyun.c…

国内首个BIM全生命周期装配式建筑项目,建设仅用25周

hi大家好,这里是建模助手。 文章开头我想先问问各位,在你眼中,25周能干点什么!小编和你说,在建筑行业里的25周,可以完成一整个保障房项目的建设。 我没开玩笑... 4月16日下午,随着最后一个混凝土…