EMNLP2023 | 让模型学会将提示插入到合适的中间层

深度学习自然语言处理 原创
作者:cola
现有的提示微调方法基本是人工选择提示层,而人工选择将提示插入到哪些层次并非一定合理,这导致了很大程度上限制提示微调发挥潜能。我们的模型(SPT)可以让模型自己学习应该在哪些中间层插入提示,从而最大化地发挥提示微调的作用。
论文:
Improving Prompt Tuning with Learned Prompting Layers地址:
https://arxiv.org/pdf/2310.20127
背景介绍
预训练语言模型(PLMs)在大多数NLP任务上实现了SOTA的性能,通常结合全参数微调发挥作用。但是全参数微调的方法需要针对每个下游任务更新全部模型参数,这使得GPU内存和存储成本很大,因此参数高效微调(PETuning)+PLMs的范式出现了。该类方法可以微调较小的参数量来降低训练成本。
提示调优便是一种PETuning的方法,它在输入序列前添加一系列软提示,并只针对新增提示进行调优,一定程度上提升了参数效率,但仍有性能较低和收敛速度较慢等劣势;有研究人员提出在所有隐藏层都添加软提示来提升微调的性能,但这种方法需要大量的训练步骤才能使模型具有竞争力;另有一些研究通过提示生成器生成实例感知的软提示,并将提示新增到模型的中间层来提升微调的性能。但是上述方法都是基于启发式的策略来确定插入提示的位置。
我们首先进行了一个试点实验,以证明提示符插入策略进行简单修改可以获得比可调参数的基线更好的性能。因此,我们提出了选择性提示调优(SPT)框架,它自动学习将提示插入预训练模型(PTMs)的最佳策略。
如图为各个模型的表现。横轴为训练参数量,纵轴为平均表现。
问题定义
对于PTM全参数微调,如果输入是单个句子,则输入样本通常被重新表述为,如果输入是句子对,则变为。在PTM对输入进行编码后,将使用的最终隐藏状态来预测分类标签。在提示微调中,下游任务被重新表述为掩码语言模型任务,以缩小预训练和微调之间的差距。具体来说,我们在词嵌入中插入随机初始化的软提示符,使用不同的人工设计模板修改原始输入,并使用进行任务适应。例如,在单句任务中,输入将被转换为模板:
然后,我们将源标签映射到的词汇表中的一些标签词,然后最终的隐藏状态输入到掩码语言模型(MLM)来预测标签词。下游任务中PTM和MLM是冻结的,只有软提示会改变。我们针对是在词嵌入还是在某些中间层插入实力感知的提示进行了研究。为方便起见,将词嵌入层称为PTM的第0层,将新插入提示的层称为提示层(PLs),在提示层,我们用提示生成器从第层给定输入隐藏状态来生成提示。
方法
提示生成器
提示生成器是一个具有瓶颈架构的简单前馈层。它首先通过线性层将PTM的隐藏状态从维映射到维。然后通过平均池化操作得到长度为的提示符。池化后的提示将通过激活函数,并通过另一个线性层向上投影回维度。
我们使用参数超复杂乘法(PHM)层来减少和的参数。PHM将线性层的权重矩阵替换为Kronecker积的和,因此参数复杂度为,使投影层的参数最多减少。
提示超网络
假设参数预算允许个提示层。由于并非所有提示层对性能的贡献都相同,因此应该只选择一小部分提示层作为提示层,以避免可调参数的冗余。因此,我们初始化了一个提示超网络,其中嵌入层和所有中间层都有一个由可学习概率门控制的提示生成层。引入零初始化的可学习参数,第层的可学习门为:
其中可看作第层激活提示生成器的概率。超网络的每一层,提示符由前一层传播的提示符和第层提示符生成器生成的提示符组成:
其中是一个超参数,决定在第层生成新提示时是否丢弃前一层的提示。
通过优化,概率门的值将向0或1移动,作为提示层的重要性分数。将接收到概率门值最高的前层设置为满足参数预算的提示层。
优化提示超网络
我们将可学习概率门的所有参数视为结构参数,记为,并通过双级优化对其进行优化。将超网络的提示生成器参数表示为ω。双级优化以提示生成器的优化参数ω*为条件。在每个epoch,训练集被分成 and 。内部和外部的优化是在这两个单独的分割上进行的,以避免过度拟合。因此优化目标为:
其中是给定下游任务的目标函数。用交替优化策略逼近上述双层优化问题。用来自的批量样本计算提示生成器的梯度,在上计算的梯度。
虽然DART被广泛应用,但已知会产生不稳定的梯度和次优性能。因此,我们提出了两种改进结构参数优化的新技术。
重参数化概率门
DART的优化没有明确地考虑不同层之间的权衡,因此我们给引入一个重参数化步骤:
其中将参数从计算图中分离出来,并且参数永远不会有梯度。上面的等式不会改变的值,因为的值是1,则:
现在的梯度由下式给出:
架构一致性学习
由于我们想要的最终优化模型是稀疏的,大多数层的提示生成器都被修剪了。为了缩小超网络与最终模型之间的差距,我们为每个可学习的概率门分配一个均值的伯努利分布随机掩码。因此有:
现在,我们要求相同的输入经过两次前向传递,一次是应用了架构掩码,一次是关闭了架构掩码,导致输入样本的隐藏表示和不同。除了任务的目标函数之外,我们现在还引入了一个一致性正则化目标:
其中MSE是均方误差损失函数。
我们运用一致性学习的思想来增强可学习概率门的优化过程。直观地说,当不同的提示生成器集合被修剪时,这个正则化项鼓励超级网络输出一致的隐藏状态。它确保了每个提示生成器都经过良好的训练,并在超网络和最终离散SPT模型之间架起了桥梁。因此,的优化可以更好地反映每个提示生成器的贡献,从而最终学习到的模型将获得更好的性能。
实验
小样本场景


全数据场景

分析和消融学习
发现
图3表明:(a)所有任务都决定在嵌入层(第0层)和前四个transformer层之后插入提示符。(b)RoBERTa-large的第10~19层经常被选为提示层。(c)SPT丢弃最后四层。
提示层数的影响
提示长度的影响
消融实验 

大语言模型上实验结果


这篇文章工作量较大,有一些实验结果并未列出,如读者有兴趣请阅读原文。
总结
主要贡献如下:
提出了SPT框架,该框架自动学习在适当的预训练模型中间层插入实例感知提示。
提出了包含两种新技术的SPT-DARTS来改进提示超网络的优化过程。
在10个基准文本分类任务和3个不同预训练模型框架的全数据和小样本场景中验证了SPT框架的有效性。
备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

id:DLNLPer,记得备注呦

相关文章:
EMNLP2023 | 让模型学会将提示插入到合适的中间层
深度学习自然语言处理 原创作者:cola 现有的提示微调方法基本是人工选择提示层,而人工选择将提示插入到哪些层次并非一定合理,这导致了很大程度上限制提示微调发挥潜能。我们的模型(SPT)可以让模型自己学习应该在哪些中间层插入提示ÿ…...
【PG】PostgreSQL单机部署(简洁命令版)
目录 1 下载安装包 2 上传至需要安装的服务器 3 服务器安装所需依赖包 4 解压安装包 5 配置安装 6 创建用户 7 创建目录修改权限 8 设置环境变量 9 设置共享库 10 初始化 11 启动数据库 12 关闭数据库 13 查看数据库状态 14 连接数据库 1 下载安装包 通过下载…...
AI:69-基于深度学习的音乐推荐
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...
php 使用phpoffice/phpspreadsheet拓展实现导出图片
基础操作参考:https://blog.csdn.net/huaweichenai/article/details/95994006 文档地址:https://phpspreadsheet.readthedocs.io/ github地址:https://github.com/PHPOffice/PhpSpreadsheet 导出插入图片主要使用\PhpOffice\PhpSpreadshee…...
几种解决mfc140.dll文件缺失的方法,电脑提示mfc140.dll怎么办
电脑提示mfc140.dll缺失,如果你不去处理的话,那么你的程序游戏什么都是启动不了的,如果你想知道有什么方法可以解决那么可以参考这篇文章进行解决,今天给大家几种解决mfc140.dll文件缺失的方法。电脑提示mfc140.dll也不用担心解决…...
并发修改异常
并发修改异常(Concurrent Modification Exception)是指在多线程环境下,当一个方法检测到对象的并发修改,但不允许这种修改时,抛出的一种异常。换句话说,当两个或多个线程同时对一个对象进行修改时ÿ…...
split() 函数实现多条件转为数据为数组类型
使用 split() 函数并传递正则表达式 /[,;.-]/ 作为分隔符来将字符串按照逗号、分号和破折号进行拆分,并将结果赋值给 splitArray 数组。下面是一个示例代码: 在上面的示例中,我们使用 split() 函数将 inputString 字符串按照逗号、分号和破折…...
【Springboot】Vue3-Springboot引入JWT实现登录校验以及常见的错误解决方案
文章目录 前言一、JWT简单介绍二、token校验设计思路三、使用步骤Springboot部署JWT引入依赖:创建登录实体类后端:LoginController.java路由守卫函数 四、问题 前言 项目版本: 后端: Springboot 2.7、 Mybatis-plus、Maven 3.8.1…...
VueCli 自定义创建项目及配置
一、VueCli 自定义创建项目 1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动…...
2024年节假日sql脚本(区分休息日、节假日、工作日、调休工作)
建表 CREATE TABLE no_work_day (id int NOT NULL AUTO_INCREMENT,day varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb3 COMMENT节假日表;执行脚本插入数据 INSERT INTO no_work_day (day) VALUES (20240101); INSERT INTO no_work_day (…...
vue3介绍
介绍 3完全兼容2的语法 vue3:体积更小,性能会更高。底层做了很多优化 2倍左右 vue3vitets 渐进式框架 vue3和vue2 的区别 新语法,性能上提升很多 思想是一致的:动态绑定:状态data&计算属性,监听某些状态…...
Spark SQL自定义collect_list分组排序
想要在spark sql中对group by concat_ws()的字段进行排序,可以参考如下方法。 原始数据如下: ------------ |id |name |type| ------------ |1 |name1|p | |2 |name2|p | |3 |name3|p | |1 |x1 |q | |2 |x2 |q | |3 |x3 |q | …...
2023年云计算的发展趋势如何?
混合云的持续发展:混合云指的是将公有云和私有云进行结合,形成一种统一的云计算环境。随着企业对数据隐私和安全性的要求越来越高,以及在数据存储和处理方面的需求不断增长,混合云正在逐渐成为主流。预计未来混合云将会继续保持高…...
uniapp中picker 获取时间组件如何把年月日改成年月日默认时分秒为00:00:00
如图所示,uniapp中picker组件的日期格式为: 但后端要 2023-11-08 00:00:00格式 如何从2023-11-08转化为 2023-11-08 00:00:00:👇 const date new Date(e.detail.value);//"2023-11-17" date.setHours(0, 0, 0); // 2…...
k8s operator
Kubernetes Operator 是一种用于特定应用的控制器,可扩展 Kubernetes API 的功能,来代表 Kubernetes 用户创建、配置和管理复杂应用的实例。它基于基本 Kubernetes 资源和控制器概念构建,但又涵盖了特定领域或应用的知识,用于实现…...
使用io_uring
目录 升级内核以支持io_uring Io_uring 关注点 有序性 IOPOLL SQPOLL 环大小 wrk线程数量 升级内核以支持io_uring #!/bin/bash#内核源码压缩包 kernel_targz"linux-5.14.21.tar.xz"#内核源码解压后的目录 kernel_source"linux-5.14.21"echo "…...
LeetCode算法题解(回溯)|LeetCode93. 复原 IP 地址、LeetCode78. 子集、LeetCode90. 子集 II
一、LeetCode93. 复原 IP 地址 题目链接:93. 复原 IP 地址 题目描述: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.…...
vue、react数据绑定的区别?
Vue 和 React 是两个流行的前端框架,它们在数据绑定方面有一些区别。 Vue 的数据绑定: Vue 使用双向数据绑定(two-way data binding)的概念。这意味着当数据发生变化时,视图会自动更新;同时,当…...
前端Vue 页面滑动监听 拿到滑动的坐标值
前言 前端Vue 页面滑动监听 拿到滑动的坐标值 实现 Vue2写法 mounted() {// 监听页面滚动事件window.addEventListener("scroll", this.scrolling);}, methods: { scrolling() {// 滚动条距文档顶部的距离let scrollTop window.pageYOffset ||document.documentE…...
CSS实现鼠标移至图片上显示遮罩层及文字效果
效果图: 1、将遮罩层html代码与图片放在一个div 我是放在 .proBK里。 <div class"proBK"><img src"../../assets/image/taskPro.png" class"proImg"><div class"imgText"><h5>用户在线发布任务&l…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
【Pandas】pandas DataFrame dropna
Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一个有效观测值”)…...
八、【ESP32开发全栈指南:UDP客户端】
1. 环境准备 安装ESP-IDF v4.4 (官方指南)确保Python 3.7 和Git已安装 2. 创建项目 idf.py create-project udp_client cd udp_client3. 完整优化代码 (main/main.c) #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h&…...
