【论文笔记】The Power of Scale for Parameter-Effificient Prompt Tuning

题目: The Power of Scale for Parameter-Effificient Prompt Tuning
来源: EMNLP 2021
模型名称: Soft-Prompt
论文链接: https://aclanthology.org/2021.emnlp-main.243/
项目链接: https://github.com/google-research/prompt-tuning

核心:针对不同的任务设计不同的soft
pormpt仅添加到embedding层中,仅训练这些参数。其余的参数都保持冻结,类似Prefix-tuning的想法,但是无论是token的长度以及所添加的位置都有一些差别

0.摘要

与 GPT-3 使用的离散文本提示不同,软提示是通过反向传播学习的,并且可以调整以合并来自任意数量的标记示例的信号。该方法是在T5上面进行实验的,随着模型大小的增加,该方法与全量微调的差距越来越小。作者的方法可以看作是 Li 和 Liang (2021) 最近提出的“prefix-tuning”的简化,我们提供了与这种方法和其他类似方法的比较。最后,我们表明,使用软提示调节冻结模型可为域转移带来稳健性优势,并实现高效的“提示集成”。

1.引言

prompt design是在GPT-3上实现的,在模型规模不断增加的前提下,通过使用这种“冻结”预训练模型是非常有效的。

  1. Prompt的缺点:需要人工设计,并且prompt的有效性受到诸多限制。GPT-3尽管比T5-XXL大了16倍,但是在SuperGLUE的分数上仍落后17.5.
  2. 自动Prompt:尽管自动设计Prompt的方法比人工设计的要好,但是仍落后于模型的微调。
  3. Prefix-tuning:冻结模型参数并在调整期间将错误反向传播到编码器堆栈中每个层(包括输入层)之前的前缀激活

作者冻结了整个预训练模型,只允许将每个下游任务的额外 k 个可调标记添加到输入文本中。这种“软提示”经过端到端训练,可以压缩来自完整标记数据集的信号,使我们的方法能够胜过少样本提示,并通过模型调整缩小质量差距。

在这里插入图片描述

在这里插入图片描述

尽管本文是基于Prefix-tuning的,但是他们是第一个单独使用prompt的,并没有在中间层或者不同任务的输出层条件额外的prefix。并且明确地将特定于任务的参数与一般语言理解所需的“通才”参数分开具有一系列额外的好处。

本文主要贡献:

  1. 提出prompt-tuning并且展示它的优势
  2. 做了许多消融实验,随着模型规模的提升,prompt tuning的质量和鲁棒性都提高
  3. 提出 🧐prompt ensembling并且展示他的有效性

2.方法

将T5中,将文本分类任务当作: P r ( y ∣ X ) Pr(y|X) Pr(yX) P r θ ( Y ∣ X ) Pr_θ(Y |X) Prθ(YX) y y y代表类别, Y Y Y代表class label的Token。把所有的任务都看成文本生成。

P r θ ( Y ∣ [ P ; X ] ) Pr_θ(Y |[P ; X]) Prθ(Y[P;X]),P是prompt token,看成条件概率生成Y, θ θ θ是原始模型,需要对其进行固定的

在GPT3中,P = {p1, p2, . . . , pn}, 是模型嵌入表的一部分,由冻结的 θ 参数化

Prompt tuning去掉了提示P被θ参数化的限制,而是有自己的专用参数 θ P θ_P θP ,可以进行更新。

P r ( y ∣ X ) Pr(y|X) Pr(yX) P r θ ( Y ∣ X ) Pr_θ(Y |X) Prθ(YX) P r θ ( Y ∣ [ P ; X ] ) Pr_θ(Y |[P ; X]) Prθ(Y[P;X]) P r θ ; θ P ( Y ∣ [ P ; X ] ) P_{rθ;θ_P} (Y |[P ; X]) Prθ;θP(Y[P;X])

[ P e ; X e ] ∈ R ( p + n ) × e [Pe; Xe] ∈ R^{(p+n)×e} [Pe;Xe]R(p+n)×e

训练目标就是对Y进行极大似然,只训练 P e P_e Pe

2.1 初始化

从概念上讲,我们的软提示以与输入之前的文本相同的方式调制冻结网络的行为,因此类似词的表示可能会作为一个很好的初始化点。对于分类任务,将Prompt初始化为它对应的类别。提示越短,必须调整的新参数就越少,因此我们的目标是找到仍然表现良好的最小长度

2.2 T5

原始文本:Thank you for inviting me to your party last week

预训练模型的输入:Thank you 〈X〉 me to your party 〈Y〉 week

目标输出:〈X〉 for inviting 〈Y〉 last 〈Z〉

尽管这种结构比传统结构更加有效,但作者认为不是仅仅通过使用prompt tuning就能控制冻结的模型的。T5使用的Span Corruption策略使得模型在训练和输出过程中始终存在哨兵标记,模型从来没有输出过真实完整的文本,这种模式可以通过Fine-tune很容易纠正过来,但是仅通过prompt可能难以消除哨兵的影响。

  • Span Corruption:使用现成的预训练 T5 作为我们的冻结模型,并测试其为下游任务输出预期文本的能力
  • Span Corruption + Sentinel【哨兵】:我们使用相同的模型,但在所有下游目标前加上一个哨兵,以便更接近预训练中看到的目标
  • LM Adaptation:对于按原始方法训练好的T5模型,额外使用LM(语言模型)优化目标进行少量步骤的Finetune,使模型从输出带哨兵的文本转换为输出真实文本,期望T5和 GPT一样生成真实的文本输出。(这是本实验的默认设置)。至多100K step

【其实可以看到,无论对哪个变量就行消融,只要模型的规模上去了,效果都差不多】

2.3 消融实验

在这里插入图片描述

Prompt 长度:模型越大,实现目标行为所需的调节信号就越少。在所有模型中,增加超过 20 个token只会产生边际收益。【超过100个token会使得模型性能下降】

Prompt初始化

  • random initialization:随机初始化, [ − 0.5 , 0.5 ] [−0.5, 0.5] [0.5,0.5]
  • initializing from sampled vocabulary:从T5的SentencePiece vocabulary中抽出最常见的500个词汇
  • class label初始化:讲类别对应的embedding座位prompt初始化。如果一个类有多个词,取词嵌入的平均表示作为一个prompt。假如标签数目不足,则从Sampled Vocab方案中继续采样补足。

作者发现基于类的初始化表现最好。在较小的模型尺寸下,不同初始化之间存在较大差距,但一旦将模型缩放到 XXL 尺寸,这些差异就会消失。

**预训练目标:**T5 的默认“span corruption”目标不太适合训练冻结模型,以便稍后通过提示进行调节。经过预训练以读写哨兵标记的模型很难直接应用于没有哨兵的读写文本任务

这表明从 span corruption 到语言建模目标的“过渡”不是一个微不足道的变化,并且进行有效的转换需要训练资源的投资(原始 T5 预训练步骤的 10%)

在非最佳“跨度损坏”设置中,我们观察到模型大小的不稳定性,小型模型优于较大的基础模型、大型模型和 XL 模型。在检查中,我们发现对于许多任务,这些中型模型从未学会输出合法的类标签,因此得分为 0%。这些结果表明,使用以“跨度损坏”目标预训练的模型可能不可靠,5 个模型中只有 2 个运行良好,而 LM 适应版本在所有模型大小上都能可靠地运行。

3. 结果

使用100个token的长度作为soft prompt,与prefix的10 token相比,prompt只是在输入层使用,在别的层不添加,因而参数量更少。

在这里插入图片描述

prompt tuning只需要在encoder加入prompt,而prefix tuning需要在encoder和decoder都添加

只在输入层加入可以防止模型的过拟合,因此prompt tuning可以迁移到别的领域上面

连续空间的prompt比离散空间的prompt难以解释。

4. 结论

在SupreGLUE上,Prompt tuning的任务性能可与传统模型调整相媲美,随着模型尺寸的增加,差距会逐渐消失。在Zeor-shot领域迁移,有效提升泛化性。在few-shot上面可以看作,冻结模型的参数,限制为轻量级的参数有效避免过拟合。

核心:将下游任务的参数和预训练任务的参数分开

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】打卡01 | 初学入门

初学入门:01-02 01 基本介绍02 快速入门库处理数据集网络构建模型训练保存模型加载模型打卡-时间 01 基本介绍 MindSpore Data(数据处理层) ModelZoo(模型库) MindSpore Science(科学计算),包含…

视频融合共享平台LntonCVS视频监控安防系统运用多视频协议建设智慧园区方案

智慧园区,作为现代化城市发展的重要组成部分,不仅推动了产业的升级转型,也成为了智慧城市建设的核心力量。随着产业园区之间的竞争日益激烈,如何打造一个功能完善、智能化程度高的智慧园区,已经成为了业界广泛关注的焦…

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接

文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector

在 Visual C 2022 中使用 Visual Leak Detector 1 问题描述1.1 内存泄漏的困扰和解决之道1.2 内存泄漏检测工具的选择1.3 VLD的现状 2 安装和设置VLD的环境变量2.1 安装VLD文件2.2 VLD安装后的目录和文件说明2.2.1 include子目录说明2.2.2 lib子目录说明2.2.2.1 目录整理 2.2.3…

感恩的力量!美洲杯魔幻提前预告 阿根廷 ——早读(逆天打工人爬取热门微信文章解读)

梅西还能不能提? 引言Python 代码第一篇 洞见 感恩的力量(深度好文)第二篇 视频新闻结尾 引言 早上早起 昨天晚上1点多才睡 这几天都是 明明很早就准备上床睡觉 但是就是忍不住 吃根雪糕 喝个小饮料 看看最近的欧洲杯比赛 卒 真的是拖延症十…

【总结】ui自动化selenium知识点总结

1. 大致原理 首页安装第三方库selenium库, 其次要下载好浏览器驱动文件,比如谷歌的 chromedriver.exe,配置上环境变量。 使用selenium的webdriver类去创建一个浏览器驱动对象赋值叫driver,一个浏览器驱动对象就可以 实现 对浏…

python爬虫之selenium自动化操作

python爬虫之selenium自动化操作 需求:操作淘宝去掉弹窗广告搜索物品后进入百度回退又前进 selenium模块的基本使用 问题:selenium模块和爬虫之间具有怎样的关联? 1、便捷的获取网站中动态加载的数据 2、便捷实现模拟登录 什么是selenium模块&#x…

【python】PyQt5初体验,窗口等组件开发技巧,面向对象方式开发流程实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

文件扫描工具哪个好?便捷的文件扫描工具推荐

对于初入职场的大学毕业生,申请就业补贴是一项不可忽视的福利。 它不仅能够为新生活带来经济上的缓解,也有助于职业生涯的顺利起步。面对申请过程中需提交的文件,如纸质劳动合同,不必烦恼。市面上众多文件扫描软件能助你一臂之力…

轮式机器人Swiss-Mile城市机动性大提升:强化学习引领未来城市物流

喜好儿小斥候消息,苏黎世联邦理工学院的研究团队成功开发了一款革命性的机器人控制系统,该系统采用强化学习技术,使轮式四足机器人在城市环境中的机动性和速度得到了显著提升。 喜好儿网 这款专为轮腿四足动物设计的控制系统,能…

一种基于图卷积创新的电场强度监测模型,原创未发表!!!

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类算法的家人,可关注我的VX公众号:python算法小当家,不定期会有很多免费代码分享~ 一种基于图卷积创新的电场强度监测模型,原创未发表…

环境配置02:CUDA安装

1. CUDA安装 Nvidia官网下载对应版本CUDA Toolkit CUDA Toolkit 12.1 Downloads | NVIDIA Developer CUDA Toolkit 12.5 Downloads | NVIDIA Developer 安装配置步骤参考:配置显卡cuda与配置pytorch - 知乎 (zhihu.com) 2. 根据CUDA版本,安装cudnn …

内容安全复习 2 - 网络信息内容的获取与表示

文章目录 信息内容的获取网络信息内容的类型网络媒体信息获取方法 信息内容的表示视觉信息视觉特征表达文本特征表达音频特征表达 信息内容的获取 网络信息内容的类型 网络媒体信息 传统意义上的互联网网站公开发布信息,网络用户通常可以基于网络浏览器获得。网络…

mysql8.0找不到my.ini

报错问题解释: MySQL 8.0 在Windows系统中通常不需要 my.ini 文件,因为安装程序会在 %PROGRAMDATA%\MySQL\MySQL Server 8.0\ (通常是 C:\ProgramData\MySQL\MySQL Server 8.0\)创建默认的配置文件。如果你的系统中找不到 my.ini…

ArcGIS查找相同图斑、删除重复图斑

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 这次是上次 今天分享一下,很重要却被大家忽略的两个工具 这两个工具不仅可以找出属性…

解决电脑关机难题:电脑关不了机的原因以及方法

在使用电脑的日常生活中,有时会遇到一些烦人的问题,其中之一就是电脑关不了机。当您尝试关闭电脑时,它可能会停留在某个界面,或者根本不响应关机指令。这种情况不仅令人困惑,还可能导致数据丢失或系统损坏。 在本文中…

编译xlnt开源库源码, 使用c++读写excel文件

编译xlnt开源库源码,在linux平台使用c读写excel文件 下载xnlt源码 官方网站https://tfussell.gitbooks.io/xlnt/content/ 下载地址https://github.com/tfussell/xlnt 下载libstudxml开源库源码 下载地址https://github.com/kamxgal/libstudxml 下载xnlt源码 官方网站https://…

Walrus:去中心化存储和DA协议,可以基于Sui构建L2和大型存储

Walrus是为区块链应用和自主代理提供的创新去中心化存储网络。Walrus存储系统今天以开发者预览版的形式发布,面向Sui开发者征求反馈意见,并预计很快会向其他Web3社区广泛推广。 通过采用纠删编码创新技术,Walrus能够快速且稳健地将非结构化数…

C++的动态内存分配

使用new/delete操作符在堆中分配/释放内存 //使用new操作符在堆中分配内存int* p1 new int;*p1 2234;qDebug() << "数字是&#xff1a;" << *p1;//使用delete操作符在堆中释放内存delete p1;在分配内存的同时初始化 //在分配内存的时初始化int* p2 n…

海外云手机自动化管理,高效省力解决方案

不论是企业还是个人&#xff0c;对于海外社媒的营销都是需要自动化管理的&#xff0c;因为自动化管理不仅省时省力&#xff0c;而且还节约成本&#xff1b; 海外云手机的自动化管理意味着什么&#xff1f;那就是企业无需再投入大量的人力和时间去逐一操作和监控每一台设备。 通…