Prefix-Tuning: Optimizing Continuous Prompts for Generation

news2024/12/24 20:56:11

《Prefix-Tuning: Optimizing Continuous Prompts for Generation》阅读笔记

论文题目:Prefix-Tuning: Optimizing Continuous Prompts for Generation
论文链接:https://arxiv.org/pdf/2101.00190
论文来源:Arxiv (2021)
源码链接:https://github.com/XiangLi1999/PrefixTuning
转载请声明:爱学习NLP的皮皮虾


INTRODUCTION

微调(Fine-tunning)是使用大型预训练语言模型执行诸如摘要的下游任务的普遍方法,但它需要替换和存储LM的所有参数,因此,构建和部署依赖于大型预训练语言模型的NLP系统,需要为每个任务存储一个修改过的语言模型参数副本,由于预训练模型都有很大的参数量,这一操作可能是非常昂贵的。

解决这个问题的一种自然方法是轻量微调(lightweight fine-tunning),它冻结了大部分预训练参数,并用小的可训练模块来增强模型,比如在预先训练的语言模型层之间插入额外的特定任务层。适配器微调(Adapter-tunning)在自然语言理解和生成基准测试上具有很好的性能,通过微调,仅添加约2-4%的任务特定参数,就可以获得类似的性能。

GPT-3可以在不进行任何特定于任务的微调的情况下部署,即用户在任务输入前添加一个自然语言任务指令和一些示例,然后从LM生成输出。这种方法被称为情境学习(in-context learning)或提示(prompting)

本文提出了前缀微调(prefix-tunning),用于生成任务的轻量微调。前缀微调将一个连续的特定于任务向量序列添加到输入,称之为前缀,如下图中的红色块所示。与提示(prompt)不同的是,前缀完全由自由参数组成,与真正的token不对应。相比于传统的微调,前缀微调只优化了前缀。因此,我们只需要存储一个大型Transformer已知任务特定前缀的副本,对每个额外任务产生非常小的开销。

METHOD

1. 问题陈述

本文考虑两个生成任务:table-to-text 摘要任务

其中Pidx表示第idx个位置是前缀,|Pidx|表示前缀长度

对于table-to-text任务,本文使用自回归语言模型GPT-2,输入为source( x )和target( y)的拼接,模型自回归地生成 

 

对于摘要任务,本文使用BART模型,编码器输入source文本 x ,解码器输入target黄金摘要( y ),模型预测摘要文本 

 

在传统微调方法中,模型使用预训练参数进行初始化,然后用对数似然函数进行参数更新。

2. 前缀微调

关于前缀/提示的设计,我们可以给模型若干的字词作为提示,比如我们想让模型生成“Obama”,那我们可以在其常见的搭配前加上上下文(例如,Barack),那么LM就会把更高的可能性分配给想要的单词。但是对于很多生成任务来说,找到合适的离散的前缀进行优化是非常困难的,尽管它的效果是不错的。

因此本文将指令优化为连续的单词嵌入,而不是通过离散的token进行优化,其效果将向上传播到所有Transformer激活层,并向右传播到后续的token。严格来说,这比离散提示更具表达性,后者需要匹配嵌入的真实单词

对于自回归模型,加入前缀后的模型输入表示:

对于编解码器结构的模型,加入前缀后的模型输入表示:

本文构造一个矩阵 存储前缀参数,该前缀是自由参数

 

目标函数依旧是公式(2),但是语言模型的参数是固定的,只更新前缀参数。

除此之外,作者发现直接更新前缀参数会出现不稳定的情况,甚至模型表现还有轻微的下降,因此作者对前缀参数矩阵进行重参数化:

其中 在第二维的维数要比小,然后经过一个扩大维数的MLP,一旦训练完成,这些重参数化的参数就可以丢弃,只保留

 

 

 

EXPERIMENTS

1. 数据集和指标

table-to-text任务:

数据集:E2E,WebNLG,DART
指标:BLEU, METEOR, TER, Mover-Score, BERTScore, BLEURT

摘要任务:

数据集:XSum
指标: ROUGE-1, ROUGE-2, ROUGE-L

2. 实验结果

table-to-text

摘要:

低资源分析:

前缀长度分析:

CONCLUSION

本文提出一种更好的微调方法,通过加入前缀实现统一模型在不同任务上的微调,实现小样本学习,极大地减少了参数量。目前对于前缀的构造,大致可以分为本文的连续前缀和离散前缀(自动生成或手动设计),对于在摘要任务上加入离散前缀,有点类似于从对话中提取特征或结构,但这种方法的优势就在于它不需要大量的样本,而传统的融入结构的方法仍然需要很多样本。感觉这种方法可能是摘要任务之后的趋势之一。

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

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

相关文章

CentOS 7安装 Postgre

零、前置条件 系统CentOS 7,并已联网,已安装gcc或者g编译器,GNU make版本3.80或以上,系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…

【nginx】网页上传文件报错413 Request Entity Too Lange

前言 413 Request Entity Too Lange,由于您的请求实体太长,服务器无法处理。请尝试缩短请求体的内容或者采取其他方式进行操作。如果问题仍然存在,请检查您的请求是否符合服务器的限制和要求,并尝试联系服务器管理员寻求帮助 可以…

轻松掌握 Postman Newman API 测试技巧

目录 前言: Postman Newman 是什么? Postman Newman 的作用 如何使用 Postman Newman? 第一步:安装 Node.js 第二步:全局安装 Newman 第三步:导出集合或环境变量为 JSON 格式 第四步:使…

Python-Selenium-定位详解

目录 前言: 一、id定位 二、name定位 三、class_name定位 四、xpath定位 五、css_selector定位 六、tag_name定位 七、link_text 定位 八、Xpath&Css定位方法速查表 九、By定位 十、elements复数定位 十一、JS的定位 前言: Python是一种…

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope 深入了解Compose副作用API LaunchedEffect和rememberCoroutineScope。 探索使用LaunchedEffect和rememberCoroutineScope的区别和使用场景。 什么是副作用? 副作用是指在可组合函数范围之外发生的任何…

2024考研408-计算机组成原理第三章-存储系统

文章目录 前言一、存储器概述1.1、层次结构1.2、存储器分类1.2.1、层次分类1.2.2、存储介质分类1.2.3、存取方式1.2.4、按照信息的可更改性(读写、只读区别) 1.3、存储器性能指标知识回顾 二、主存储器2.1、主存储器的基本组成(介绍DRAM&…

Axios和Spring MVC[前端和后端的请求和响应处理]

在前后端交互中,Axios和Spring MVC扮演着不同的角色,分别负责前端和后端的请求和响应处理。它们之间的作用如下: Axios(前端): 发送HTTP请求:前端使用Axios库发送HTTP请求到后端。可以使用Axi…

HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!

原文:HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!,点击链接查看原文进入报名通道。 2023年6月15日, HarmonyOS极客马拉松2023开赛!期待各位开发者极客朋友一起,探索移动应…

IT自动化运维工具优势与劣势分析-行云管家

随着自动化技术的进步,目前市面上出现了不少IT自动化运维工具。但很多人对于IT自动化运维工具优劣势不是很清楚,这里我们就来一起简单分析分析。 IT自动化运维工具优势 1、提高IT运维工作人员工作效率,提升整体项目效率; 2、提…

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点 效果图步骤json格式nametypeDrawDraw.DrawTypeDraw.DrawData[] HQChart代码地址 效果图 步骤 步骤和第3方指标替换一样, 通过网络协议回调,知道需要执行的指标, 替换自己的数据。这…

chatgpt赋能python:Python中的整数筛选与小数筛选

Python中的整数筛选与小数筛选 Python是一种高级编程语言,常见于各种领域的编程工作中。在Python中,我们可以很方便地筛选整数和小数,用于数据分析、算法计算、图像处理等多个方向。本文将从Python中的整数筛选和小数筛选两个方面进行介绍和…

90%电子工程师都没学透的3W规则,这篇文章一次性告诉你

在PCB设计中,了解和应用3W规则是非常重要的,能帮助工程师在设计阶段时考虑到电路板的功率分布、热管理和可靠性,但很多电子工程师对3W规则只处于皮毛学习阶段,没有做到真正掌握,导致电子设计技术没长进,所以…

​一些常见网络安全术语​

1、黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁,赎回,修改或窃取数据,或使网络无法用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别&…

Mac中开发常用的软件

Mac中开发常用的软件 https://pan.baidu.com/ 开发软件 IDEA2021IntelliJ IDEA 2022 for Mac(最好用的Java开发工具)永久激活版SnailSVNRedisDesktopManagerTermius终端SourceTree(Git)Microsoft Remote Desktop(远程桌面) 数据…

flutter系列之:做一个图像滤镜

文章目录 简介我们的目标带滤镜的图片打造filter按钮打造可滑动按钮最后要解决的问题 简介 很多时候,我们需要一些特效功能,比如给图片做个滤镜什么的,如果是h5页面,那么我们可以很容易的通过css滤镜来实现这个功能。 那么如果在…

复合垂直纳米线中硅锗的选择性湿法蚀刻

引言 目前,对高效能和高性能微电子组件的持续需求是晶体管小型化和芯片密度增加的关键驱动因素。这些纳米级晶体管的性能取决于其架构和材料特性。由于更好的静电性能,全栅场效应晶体管(GAAFET)有望取代当前的FinFET架构。 垂直GAAFET很难集成到当前的…

vue 树形结构,后端返回平级数据 一个页面向另一个页面传递数据

代码 Index.vue页面 methods: {/** 查询会议列表 */getList() {// this.loading true;listMeeting(this.queryParams).then(response > {this.meetingList response.rowsthis.total response.totalthis.loading false})//后端请求树形数据listNoPage().then(response &…

Vue- mixin(混入)

mixin(混入) mixin:翻译过来叫混入,也有人叫混合,官方叫混入 作用:两个组件共享一个配置(配置必须是一样的),本质就是复用配置 通过案例理解学习如何使用以及作用 1 编写案例 提出需求,新增一个组件&a…

css平面转换

目录 平面转换transform(2D转换) CSS3 过渡(重点) 平面转换-平移 平移实现居中效果 平移转换-旋转 平面多重转换 旋转-改变转换原点 平移转换-缩放 平移转换-倾斜 平面转换transform(2D转换) 作用:给元素添加动态效果,一…

阿里云ECS弹性公网IP临时升级带宽

背景 618到来,公司服务器近一周内会出现IO暴增,需要临时升级带宽以满足需求。但由于使用的是EIP,无法直接在实例控制台进行升配。 方案 在弹性公网IP进行扩容 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台