Prefix-Tuning论文解读

news2024/11/17 21:25:37

论文名称:Prefix-Tuning: Optimizing Continuous Prompts for Generation

论文地址:https://arxiv.org/pdf/2101.00190.pdf

论文代码:https://github.com/XiangLi1999/PrefixTuning

想搞prompt,看了好多篇,挑着记录一下。好快,明年就要毕业啦!

1. 简介

       微调是利用大型预训练语言模型来执行下游任务时所使用的方法。但是,它会修改所有语言模型参数,因此需要为每个任务存储完整的模型。本文提出prefix-tuning,一种用于自然语言处理任务的可以替代fine-tune的轻量级方法,它冻结语言模型的参数而代之以优化一系列连续的任务特定(task-specific)向量,称之为prefix。前缀微调从提示学习中获得启发,引导后续的token关注这个prefix,就好像它是虚拟的单词一样。实验结果表明,仅需修改0.1%的参数,即可以在量和小量数据上达到不错的效果,在低数据集条件下优于微调,并且能更好地外推到训练过程中没有发现的主题的例子。

       微调是利用大型预训练语言模型(LM)来执行下游任务时所使用的方法,但它需要更新和存储LM的所有参数。因此,要构建和部署依赖于预训练语言模型的NLP系统,目前需要单独为每个任务对LM参数修改后的模型进行存储。考虑到LM的大尺寸,这可能会很话费很大的存储空间。
  这种问题的一个自然解决方法是轻量级微调,它冻结了大部分预训练模型的参数,并使用一个小训练模块来增强预训练模型。
  极端情况下,GPT-3甚至不需要任何特定任务的finetune,就可以被使用。或者,用户仅需添加某个自然语言任务指令(例如,摘要任务中的TL;DR)以及少量的输入样例,然后就能从LM生成输出。这种方法被称为in-context learning或prompting。
  在本文中,我们提出了Prefix-Tuning,一种轻量级替代方法,可以用于自然语言生成(NLG)任务。考虑生成一个数据表格的文字描述的任务,如图1所示,任务输入是表格的线性表示(例如,“name: Starbucks | type: coffee shop”),输出是文字描述(例如,“Starbucks serves coffee.”)。Prefix-tuning将一系列continuous task-specific的向量序列添加到输入中,我们称之为prefix,如图1下方所示的红色块。Prefix作为子序列字符,Transformer可以把它作为一系列“virtual tokens”进行计算,但与prompting不同,prefix完全由不对应于真实字符的参数组成。与图1上方中的微调相比,Prefix-tuning仅优化prefix参数。因此,我们只需要存储一个大型transformer模型和多个学习的任务特定的prefix参数,这对每个任务仅产生了非常小的开销。
  与微调方法相比,Prefix-Tuning是模块化的:我们训练一个上游prefix,来指导下游未被修改的LM。因此,单个LM可以立即支持许多任务。在对应于不同用户的个性化任务中,我们可以仅在该用户的数据上训练出用户单独的prefix,从而避免数据交叉污染。此外,基于prefix的架构使我们甚至可以在单个batch中处理多用户或多任务数据,而这对其他轻量级fine-tuning方法是不可能的。

2. 核心要点

template的构建:不采用离散的template token,而使用连续可调的矩阵来调整template;
将prompt-tuning用于语言模型的生成任务上;

2.1 Motivation

  • 传统的fine-tuning是在大规模预训练语言模型上完成的,而大规模模型非常贵。
  • 一种解决这个问题的方法是采用轻量级的微调(ligthweight fine-tuning),即先固定预训练语言模型的参数,然后只对一小部分的可训练参数进行微调。
  • GPT-3提出了in-context learning,不需要引入任何参数的fine-tuning方法,然而,因为Transformers 只能基于有界长度的上下文(例如,GPT3最大长度为2048个token),因此在线学习仅限于非常小的训练集。
  • 受到prompt的启发,提出一种prefix-tuning方法用于生成任务上,只优化前缀。因此,我们只需要存储LM的一个副本和一个学习到的任务特定前缀,这为每个额外的任务带来非常小的开销,Prefix-tuning属于广义上的轻量级微调,即冻结大部分预训练参数,仅一小部分参数。
  • 在特定的任务上,只需要保存prefix部分的参数即可。

2.2 问题描述

table-to-text任务:输入 X XX 表示一个线性的表格,输出 Y YY 表示一个短文本;

        对于自回归LM,在某一时刻 i,Transformer的每一层的隐状态向量拼接起来之后用于预测下一个词;直接在输入前面拼接prefix,自回归模型表示为 z = [ prefix ; x ; y ];对于编码器-解码器LM,encoder和decoder均前置一个前缀,即z = [ prefix ; x ; prefix ′ ; y ] 。本质上,其实是在每一层每一个token的K、V向量之前拼接上一个Prefix向量:

       可以将token优化为连续词嵌入,而不是优化离散标记,其效果将向上传播到所有 Transformer 激活层,然后向右传播到后续标记。 这比需要匹配真实单词嵌入的离散提示更具表现力。 同时,这不如干预所有激活层的表现力,这避免了长期依赖并包括更多可调参数。 因此,Prefix-Tuning优化了前缀部分对应的所有层参数。

3. Intuition

       受到prompting的启发,我们认为具有适当的上下文可以在不改变参数的情况下来引导LM。比如我们想生成一个词,我们可以找到一个合适的上下文添加到单词前,LM为我们生成期望最高的下一个词(也可以采用束搜索),这种方法有时候会成功,有时候会失败。

       直观的理解,加prompt实际上就是在改装输入x,期望可以指导它抽取我们想要的特征,然后影响encoder,最后影响结果y。但是作者认为prompt它是一个离散的值,它可能不是一个明显的instructions,于是作者的方法是用一个连续的字符来替换之前的离散的instruction,这可能更具有表现力。这方法类似于lora,在特定的任务上,我只需要选择不同训练好的prefix。

4. Method

       Prefix-tuning将自回归LM的prefix添加到序列前,以获取z = [ Prefix ; x ; y ],或者为编码器和编码器都添加prefix,以获取z = [ Prefix ; x ; Prefix ′ ; y ],我们使用P_{idx}表示前缀索引序列,∣P_{idx}∣表示前缀的长度。

 

语言模型参数ϕ \phiϕ是固定的,而前缀参数 θ 是唯一可训练参数。

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

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

相关文章

【微前端架构】微前端——功能团队中缺失的一块拼图

在任何合法的前端开发团队中,提高可扩展性和敏捷性很少会成为头等大事。在处理大型、复杂的产品时,如何确保快速、频繁地交付同时包含后端和前端的功能?像后端那样将前端单体分解成许多更小的部分似乎是答案。如果执行得当,微前端…

IO500榜单最新出炉,HPC性能天花板提升15倍

近日,存储圈又有炸裂新消息。 高性能计算(HPC)领域最具影响力的IO500最新一期榜单公布,以华为OceanStor Pacific分布式存储为核心底座的Cheeloo-1系统表现一骑绝尘,在最重要的10节点榜单中以创纪录的13万总得分位列第…

基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统

基于jspmysqlmybatisSpring boot简单学生成绩信息管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

容器(第五篇)docker-compose

docker-compose用来单机上编排容器(定义和运行多个容器,使容器能互通),Eg:前端和后端部署在一台机器上,现在直接通过编写docker-compose文件对多个服务(可定义依赖,按顺序启动服务&a…

Burpsuite+Proxifier抓取exe数据包

本文转载与: https://mp.weixin.qq.com/s?__bizMzg4NTUwMzM1Ng&mid2247504341&idx1&sndb06bdc7434a34dd69930e3a7e3d8114&chksmcfa575c6f8d2fcd0830a7bb5d5c11b6e8a1465688d8f59cb2fd7b04685210ac2beae3bec18c2&mpshare1&scene23&srci…

vscode Delete `␍⏎·····`

在公司电脑首次拉取代码的时候,好多代码报错,在网上查了博客,确定是换行导致,但是参考网上的解决办法,没有解决,不管是设置 auto 还是命令行执行什么什么的,都不管用 下面介绍我的办法 首先&a…

葡萄目标检测相关论文和数据集

文章目录 2018Computer Vision and Machine Learning for Viticulture Technology 2020Grape detection, segmentation, and tracking using deep neural networks and three-dimensional association(Computers and Electronics in Agriculture) 2021Gr…

Vue中如何进行图片裁剪与上传?

Vue中如何进行图片裁剪与上传? 在Web开发中,经常需要使用图片,有时候需要对图片进行裁剪和上传,Vue作为一种流行的前端框架,提供了很多方便的工具和插件来帮助开发者实现这些功能。 图片裁剪 Vue中提供了很多图片裁剪…

采用SSM框架实现登录拦截,分页,批量删除的功能

本案列采用的技术有后端spring/springmvc/mybatis/jquery等技术&#xff0c;前端采用bootstrapjsp 项目结构如下图 依赖pom.xml文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version>…

怎样的低代码平台才算是一个好用的低代码平台?

随着数字化转型的加速&#xff0c;低代码平台已经成为了企业数字化转型的一个重要工具。低代码近几年是一个很热门的概念&#xff0c;市场对低代码的需求也不断增加&#xff0c;但到底什么样的低代码平台才算是一个好用的低代码平台&#xff1f; 一个好用的低代码平台应具备以…

Python源码:火柴棒摆数字有6根火柴棒,列出所有能摆出的自然数

题&#xff1a;用自定义函数&#xff0c;火柴棒摆数字有6根火柴棒&#xff0c;列出所有能摆出的自然数&#xff0c; 要求火柴棒正好摆完 解析&#xff1a; 1、0-9这十个数字&#xff0c;每个数字分别需要的火柴根数如下 2、用6根火柴摆出的最小数字是&#xff1a;0 用6根火柴…

深入理解CSS字符转义行为

深入理解CSS字符转义行为 深入理解CSS字符转义行为 前言为什么要转义&#xff1f;CSS 转义什么是合法css的表达式 左半部分右半部分 练习参考链接 前言 在日常的开发中&#xff0c;我们经常写css。比如常见的按钮: <button class"btn"></button>&am…

YOLO输出大中小目标的AP值

在进行实验的过程中&#xff0c;博主一直使用的是COCO数据集&#xff0c;其评价指标如下所示&#xff0c;包含大中小目标的AP值与AR值。博主选用了yolov5与yolov7进行实验&#xff0c;其中yolov5成功&#xff0c;yolov7却出现了问题。 随后博主在进行对比实验时使用了YOLO模型&…

烟草仓库监控有多重要?给你支一招

随着全球烟草行业的发展&#xff0c;烟草仓库监控变得越来越重要。烟草作为一种易燃、易损和有害物质&#xff0c;需要特殊的保管和监控措施&#xff0c;以确保烟草的质量、安全和合规性。 烟草仓库监控的目的是实时监测和管理烟草仓库内的环境参数&#xff0c;如温度、湿度、气…

一些有趣的兼容性测试事实和技巧

兼容性测试是一种重要的测试方法&#xff0c;可以确定软件或应用程序是否能够在不同的操作系统、浏览器、设备上正常运行。以下是一些有趣的兼容性测试事实和技巧。 事实1&#xff1a;同样的代码在不同的浏览器中会产生不同的结果。 由于不同的浏览器对相同代码的解释不同&…

【微信公众平台对接】有关【创建发票卡券模板】调用示例

1、微信开放平台接口说明&#xff1a; 2、代码示例 /*** 创建发票卡券模板** param token* return*/PostMapping("createCard")public String createCard(String token) {return wechatOpenService.createCard(token);}String resp null;try {String url String.fo…

电路板电镀中4种特殊的电镀方法

本文主要介绍的是电路板焊接中的4中特殊电镀方法。 第一种&#xff0c;指排式电镀 常常需要将稀有金属镀在板边连接器、板边突出接点或金手指上以提供较低的接触电阻和较高的耐磨性&#xff0c;该技术称为指排式电镀或突出部分电镀。常将金镀在内层镀层为镍的板边连接器突出触…

武职301班-day01

实现永和小票页面 效果图 问题分析 把一个大的开发任务&#xff0c;先进行任务分析&#xff0c;把完成这个任务需要的技术点和开发步骤写出来。 开发分析 特点&#xff1a; htmlcss实现 1&#xff09;小票有宽度限制 2&#xff09;字体大小不一样&#xff0c;大部分字体大小…

FTSE-250 CMC Markets投资StrikeX Technologies,巩固战略伙伴关系,革新数字资产行业

StrikeX非常高兴地宣布与屡获殊荣的FTSE 250金融服务提供商CMC Markets成功完成投资和战略合作伙伴关系。CMC Markets已经收购了StrikeX Technologies 33%的股份&#xff0c;并将其两位高级执行官纳入StrikeX董事会&#xff0c;为公司带来了丰富的专业知识和经验。这对于两家公…

Linux第一章之环境搭建

目录 一、什么是Linux 1.1前端VS后端 1.2企业为何选择使用Linux作为后台服务器 1.3国内企业后台和用户使用Linux现状 1.4就个人找工作/能力提升来说&#xff0c;该如何看待Linux 1.5求职相关 ​1.6Linux好玩的指令 1.7Linux基本代码编写 1.8内存/CPU/硬盘/外设等硬件&…