【论文速读】Prompt Tuning:The Power of Scale for Parameter-Effificient Prompt Tuning

news2024/10/21 5:47:32

arxiv:2104.08691v2

摘要

在这项工作中,我们探索了“prompt tuning(提示调优)”,这是一种简单而有效的机制,用于学习“soft prompts(软提示)”,以条件下冻结的语言模型来执行特定的下游任务。**与GPT-3使用的离散文本提示不同,软提示是通过反向传播来学习的,并且可以进行调优,以合并来自任意数量的标记示例的信号。**我们的端到端学习方法比GPT-3的少量镜头学习效果更好。更值得注意的是,通过使用T5对模型大小进行消融,我们证明了提示调优随着规模的增加而变得更有竞争力:随着模型超过数十亿参数,我们的方法“缩小差距”,并匹配模型调优的强大性能(其中所有模型权重都被调优)。这一发现特别相关,因为大型模型的共享和服务成本很高,而为多个下游任务重用一个冻结模型的能力可以减轻这种负担。我们的方法可以看作是对Li和Liang(2021)最近提出的“前缀调优”的简化,并与这种方法和其他类似的方法进行了比较。最后,我们展示了使用软提示条件处理冻结模型有利于域转移的鲁棒性,并能够实现高效的“提示集成”。

导言

  • ELMo(Peters et al.,2018)提出冻结预先训练好的模型,并学习其每层表示的任务特定权重。

  • GPT和BERT主导的适应技术是模型调整(或“微调”),在适应过程中所有模型参数都被调整

  • T5的标准模型调优实现了很强的性能,但需要为每个结束任务存储单独的单独副本。

最近,Brown等人(2020)表明,prompt design(提示设计)(或“priming”)通过文本提示调节冻结的GPT-3模型的行为是惊人的有效的。提示通常由一个任务描述和/或几个规范示例组成。这种对“冻结”预训练模型的回归是很有吸引力的,特别是随着模型规模的不断增加。一个单一的通用模型可以同时服务于许多不同的任务,而不是为每个下游任务需要一个单独的模型副本。

在这里插入图片描述

不幸的是,基于提示的适应有几个关键的缺点。任务描述容易出错,需要人类的参与,而提示的有效性受到模型输入中有多少条件反射文本的限制。因此,下游任务的质量仍然远远落后于调优后的模型。

在本文中,我们提出了prompt tuning(提示调优),作为自适应语言模型的进一步简化。我们冻结了整个预先训练过的模型,并且只允许每个下游任务在输入文本中添加额外的k个可调标记。这种“soft prompt(软提示)”是端到端训练的,可以压缩来自完整标记数据集的信号,使我们的方法优于few-shot prompts,并通过模型调优缩小质量差距。与此同时,由于单个预先训练过的模型可以被循环用于所有下游任务,因此我们保留了冻结模型的有效服务好处。

总之,我们的主要贡献是:

  1. 在大型语言模型体系中提出快速调优并显示其与模型调优的竞争力。

  2. 去除许多设计选择,并显示质量和鲁棒性随着规模的扩大而提高。

  3. 在域移位问题上,prompt tuning调优优于模型调优。

  4. 提出“prompt ensembling(提示集成)”,并显示其有效性。

Prompt Tuning

遵循T5的“text-to-text”方法,我们将所有任务转换为文本生成。我们不是将分类建模为给定一些输入的输出类的概率, P r ( y ∣ X ) Pr(y|X) PryX,其中X是一系列标记,y是一个单一的类标签,我们现在将其建模为条件生成,其中Y是一个表示类标签的token序列。T5模型分类为 P r θ ( Y ∣ X ) Pr _\theta(Y |X) PrθYX,由组成其编码器和解码器的变压器的权重θ参数化。

Prompting是在模型生成Y的过程中为模型添加额外信息的方法。

Prompt tuning消除了提示P被θ参数化的限制;相反,提示符有它自己的专用参数, θ P θ_P θP,可以更新。prompt tuning可以被认为是使用特殊的固定提示,其中只能对这些prompt tokens的embeddings进行更新,而prompt design涉及从冻结嵌入的固定词汇表中选择prompt tokens。我们的新的条件生成现在是 P r θ ; θ P ( Y ∣ [ P ; X ] ) Pr_{θ;θ_P}(Y|[P;X]) Prθ;θP(Y[P;X]),可以通过反向传播最大化Y的可能性来训练,而只对 θ P θ_P θP应用梯度更新。

给定一系列的n个标记, { x 1 , x 2 , … , x n } \{x1,x2,…,xn\} {x1,x2,,xn},T5所做的第一件事就是嵌入令牌,形成一个矩阵 X e ∈ R n × e X_e ∈ R^{n×e} XeRn×e,其中,e为embedding空间的维数。我们的soft-prompts被表示为一个参数$P_e ∈ R^{p×e} ,其中, p 是 p r o m p t 的长度。然后将我们的提示符连接到 e m b e d d e d 的输入中,形成一个单一的矩阵 ,其中,p是prompt的长度。然后将我们的提示符连接到embedded的输入中,形成一个单一的矩阵 ,其中,pprompt的长度。然后将我们的提示符连接到embedded的输入中,形成一个单一的矩阵[P_e; X_e] ∈ R^{(p+n)×e} ,然后正常地通过编解码器。我们的模型被训练以使 Y 的概率最大化,但只有提示参数 ,然后正常地通过编解码器。我们的模型被训练以使Y的概率最大化,但只有提示参数 ,然后正常地通过编解码器。我们的模型被训练以使Y的概率最大化,但只有提示参数P_e$被更新。

在这里插入图片描述

Model tuning(模型调优)需要为每个下游任务的整个预训练模型制作一个特定于任务的副本,并且推理必须在单独的批次中执行。

Prompt tuning(提示调优)只需要为每个任务存储一个特定于任务的小提示,并使用原始的预训练模型启用混合任务推理。对于T5“XXL”模型,每个调优模型的副本需要110亿个参数。相比之下,我们调整后的提示每个任务只需要20,480个参数——减少了超过5个数量级——假设提示长度为5个令牌。

Design Decisions

有许多可能的方法来初始化提示符表示法。最简单的方法是使用随机初始化从头开始训练。一个更复杂的选择是将每个提示标记初始化为从模型的词汇表中提取的嵌入。从概念上讲,我们的软提示以与输入前的文本相同的方式调节冻结网络的行为,因此,一个类似单词的表示可以作为一个很好的初始化点。对于分类任务,第三个选项是使用枚举输出类的嵌入来初始化提示符,类似于Schick和Schutze(2021)的“语言表达器”。由于我们希望模型在输出中生成这些标记,因此使用有效目标标记的嵌入来初始化提示符应该会启动模型,从而将其输出限制为合法的输出类。

另一个设计上考虑的因素是提示符的长度。该方法的参数代价为EP,其中E为标记嵌入维数,P为提示符长度。提示符越短,必须调整的新参数就越少,因此我们的目标是找到一个仍然表现良好的最小长度。

Prompt Tuning和T5区别

  • Prompt Tuning使用预训练模型微调;T5是训练预训练模型。

  • Prompt Tuning输入:提示词+原输入进入 【提示词embedding(训练)+原输入embedding(冻结)】;

  • T5输入:提示词+原输入进入embedding;

num_virtual_tokens:8为要使用的虚拟令牌的数量。

在这里插入图片描述

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

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

相关文章

Golang | Leetcode Golang题解之第485题最大连续1的个数

题目: 题解: func findMaxConsecutiveOnes(nums []int) (maxCnt int) {cnt : 0for _, v : range nums {if v 1 {cnt} else {maxCnt max(maxCnt, cnt)cnt 0}}maxCnt max(maxCnt, cnt)return }func max(a, b int) int {if a > b {return a}return …

矩阵matrix

点积 在 NumPy 中,dot 是矩阵或向量的点积(dot product)操作。 假设有两个向量a和 b,它们的点积定义为对应元素相乘,然后求和。公式如下: 例子: 点积的计算步骤是: 因此&#xf…

【动态规划】【路径问题】下降路经最小和、最小路径和、地下城游戏

4. 下降路径最小和 931. 下降路径最小和 算法原理 确定状态表示 dp[i][j] 表示:到达 [i, j] 位置,最小的下降路径 状态转移方程 dp[i][j] 从 [i-1, j-1] 到达 [i, j] > dp[i-1][j-1] m[i][j]从 [i-1, j] 到达 [i, j] > dp[i-1][j] m[i][j]从 …

leetcode_887_鸡蛋掉落___循序渐进的分析

分析:对于一组[n,k] 在一次尝试中选择了在dep层测试 其可以分为 如果在dep层炸了: 则变成了[dep-1,k-1]读作在dep-1层用k-1个鸡蛋来找鸡蛋的极限所需次数如果在dep层没炸: 则变成了[n-dep,k]读作在n-dep层用k个鸡蛋来找鸡蛋的极限所需次数可以发现这都是子问题的…

【Javaee】网络编程-TCP Socket

前言 前文中我们介绍了UDP Socket相关的构造方法和方法,并实现了UDP的回显服务器和客户端。 本篇将介绍TCP Socket,并使用TCP Socket api实现服务器和客户端的通信 一.TCP Socket的常见方法 1.ServerSocket ServerSocket是创建TCP服务端Socket的API …

线程池:高效管理并发任务的利器

线程池:高效管理并发任务的利器 什么是线程池? 线程池(Thread Pool)是Java并发编程中的一种设计模式,旨在通过重复利用线程资源,来提高程序执行效率。线程池的主要思想是提前创建一组可供使用的线程&#…

归一化输入

当输入的不同的特征取值范围差异过大,取得对应参数差别也会很大,在对参数进行优化的过程中,参数小的维度步长较小,参数大的维度步长较大,优化过程中路径曲折,将输入归一化,使特征取值范围差别小…

相控阵雷达电特性matlab模拟与仿真,带GUI界面,对比有限扫描阵,稀疏阵,多波束阵,共形阵等

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 相控阵雷达作为一种先进的雷达技术,具有高分辨率、多功能、快速扫描等优点,在军事和民用领域都有着广泛的应用。相控阵雷达的天线系统是其核心组成部分…

C#线性变换——缩放

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在C#开发中经常需要对平面中的坐标进行一些变换,比如缩放、旋转等&…

数据结构:二叉树、堆

目录 一.树的概念 二、二叉树 1.二叉树的概念 2.特殊类型的二叉树 3.二叉树的性质 4.二叉树存储的结构 三、堆 1.堆的概念 2.堆的实现 Heap.h Heap.c 一.树的概念 注意,树的同一层中不能有关联,否侧就不是树了,就变成图了&#xff…

PCL 点云配准 Trimed-ICP算法(精配准

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 perform_standard_icp 函数 2.1.2 perform_trimmed_icp 函数 2.1.3 visualize_registration 函数 2.2完整代码 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算…

国庆旅游高峰期,如何利用可视化报表来展现景区、游客及消费数据

国庆黄金周,作为国内旅游市场的年度盛宴,总是吸引着无数游客的目光。今年,随着旅游市场的强劲复苏,各大景区又再次迎来游客流量的高峰。全国国内出游7.65亿人次,同比增长5.9%,国内游客出游总花费7008.17亿元…

大型企业软件开发是什么样子的? - Web Dev Cody

引用自大型企业软件开发是什么样子的? - Web Dev Cody_哔哩哔哩_bilibili 一般来说 学技术的时候 我们会关注 开发语言特性 ,各种高级语法糖,底层技术 但是很少有关注到企业里面的开发流程,本着以终为始(以就业为导向…

界面控件Telerik UI for WPF 2024 Q3亮点 - 支持禁用数据过滤等

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

[Linux网络编程]03-TCP协议

一.TCP协议数据通信的过程 TCP数据报如下,数据报中的标志位双端通信的关键。 三次握手: 1.客户端向服务端发送SYN标志位,请求建立连接,同时发送空包 2.服务端向客户端回发ACK标志位(即确认标志位,任何一端发送数据后都需要另一端…

asyn驱动示例-int32driver

驱动程序源代码int32Driver.c&#xff1a; #include <stddef.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <ctype.h>#include <cantProceed.h> #include <epicsStdio.h> #i…

官龙村捐赠图书整理有感

今天&#xff08;2024年10月20日&#xff09;&#xff0c;我有幸参加了在深圳南山区西丽官龙村举行的义工活动&#xff0c;主要任务是整理捐赠的图书&#xff0c;并根据小学和中学的需求进行分类打包。这次活动不仅让我体会到了劳动的辛苦&#xff0c;更让我感受到了助人为乐的…

【AIGC】第一性原理下的ChatGPT提示词Prompt设计:系统信息与用户信息的深度融合

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;第一性原理与ChatGPT提示词Prompt设计应用第一性原理于ChatGPT提示词Prompt设计系统信息和用户信息的融合实际应用结论 &#x1f4af;系统信息与用户信息的定义和重要性系…

鸿蒙中富文本编辑与展示

富文本在鸿蒙系统如何展示和编辑的&#xff1f;在文章开头我们提出这个疑问&#xff0c;带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容&#xff0c;在日常App 中非常常见&#xff0c;比如微博的发布与展示&#xff0c;朋友圈的发布与展示&#xff0c;都在使用富文…

C++高阶:红黑树实现

目录 一.红黑树的概念 1.1红黑树的规则 1.2红黑树的效率 二.红黑树的实现 2.1红黑树的结构 2.2红黑树的插入 2.2.1插入的大致过程 2.2.2情况一&#xff1a;变色 ​编辑 2.2.3情况二&#xff1a;单旋变色 2.2.4情况三&#xff1a;双旋变色 2.3插入代码实现 2.4红黑树的…