【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

一.介绍

1.1 前置知识

1.1.1 in-context learning

At the limit, GPT-3 (Brown et al, 2020) can be deployed using in-context learning, which is a form of prompting, without modifying any LM parameters.

"部署" 指的是将 GPT-3 模型用于实际应用或特定任务的过程。

"In-context learning" 是一种通过提供上下文或附加信息来指导模型生成的方法。在这种情况下,用户可以向 GPT-3 提供一些上下文或提示(prompt),以引导模型生成相关的回复或执行特定任务,而不必重新训练或微调模型。模型根据提示生成响应,并且可以根据提示的不同来执行不同的任务。这种方式可以让 GPT-3 在不修改模型参数的情况下,适应多种任务。

1.2 简介

微调(顶部)更新所有LM参数(红色Transformer框),并且需要为每个任务存储完整的模型副本。我们提出prefixtuning(底部),它冻结LM参数并只优化前缀(红色前缀块)。因此,我们只需要为每个任务存储前缀,使前缀调优模块化且节省空间。

前缀调优(prefix-tuning)将一系列,被称之为前缀(prefix),连续的特定于任务的向量添加到输入中。为了生成每个令牌,LM可以像处理“虚拟令牌”序列一样处理前缀,但与提示不同的是,前缀完全由不对应于真实令牌的自由参数组成。

1.3 理解

基于前缀的架构使我们能够在单个批处理中处理来自多个用户/任务的示例,这是其他轻量级微调方法(如adaptertuning)无法实现的。

二 .

2.1 问题建模

一个条件生成任务,其中输入x是一个上下文,输出y是一个令牌序列。有两种模式:第一种是像GPT2的自回归模型,第二种是类似于BART的encoder-decoder架构来建模上述问题

i\in X_{idx}

2.1.1 自回归建模

h_i = [h_i^{(1)};\cdot \cdot \cdot ;h_i^{(i)}]表示在时间步骤i的到第j层的激活向量。

一个自回归神经LM计算h_i作为z_i的函数和过去在其左侧上下文中的激活,如下所示:

最后一层使用Softmax计算下一个token的分布

2.1.2 编码器解码器架构

由双向编码器编码,解码器自回归预测y(以编码的x及其左侧上下文为条件)

通过双向编码器获得当i\in X_{idx}时的h_i,通过自回归解码器获得当i\in Y_{idx}时的h_i

2.2 Prefix-Tuning

上下文可以通过指导从x中提取什么来影响任务输入x的编码,并且可以通过指导下一个令牌分布来影响任务输出y的生成。比较直观的想法就是直接使用词嵌入来替代在使用过程中提供上下文信息和额外信息

  • 自回归 : 增加一个前缀,得到z = [prefix;x;y]
  • encoder-decoder架构:为编码器和解码器都添加前缀,得到z = [PREFIX;x;PREFIX{}';y]

直接更新Pθ参数会导致优化不稳定,直接重参数化为一个小的矩阵P_\theta '和一个大前馈神经网络MLP,即P_\theta [i,:]=MLP_\theta (P'_\theta [i,:]) 。一旦训练完成,这些重参数化参数可以被丢弃,只需要保存前缀P_\theta

2.3 实验结论

  • 当训练样本数量较少时,前缀调优具有相对优势
  • 前缀长度:更长的前缀意味着更多可训练的参数。当前缀长度增加到一个阈值(时,性能会增加,然后出现轻微的性能下降。

  • 增强表现力的链:离散提示< embedding-only < prefix-tuning

embedding-only就是“虚拟令牌”的连续嵌入的实例化实现

  • 前缀调优由优于中缀调优

作者认为这是因为前缀调优可以影响x和y的激活,而中缀调优只能影响y的激活。

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

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

相关文章

遗传算法求解旅行商问题(含python源代码)

目录 前言 编码初始化种群 计算适应度 选择 交叉 变异 完整代码 总结 前言 这次的算法有一点不能确定是否正确&#xff0c;希望有大佬能够批评指正。 遗传算法的一般步骤 编码初始化种群 种群&#xff08;population&#xff09;指同一时间生活在一定自然区域内&…

C++ 继承

前言 本文将会为你带来关于继承的相关知识&#xff08;概念、定义、基类的成员变量访问形式、隐藏、父子类之间的赋值、派生类的默认成员函数、菱形继承与虚继承&#xff09; 继承的概念以及定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&…

ANR系列之八:疑难ANR问题处理记录

前言&#xff1a; 本文仅是记录作者自身处理过的ANR问题&#xff0c;以及帮助他人解决过的ANR问题。本文中所介绍的ANR处理记录仅供参考&#xff0c;并不适用所有场景。并且最终结论和分析并不一定就是绝对正确的。 案例1.页面切换时前台应用焦点未获得 案例编号&#xff1a;…

无代码的未来

随着无代码技术越来越成熟&#xff0c;很多web应用已经可以基于无代码平台进行开发。本文分析了4个最流行的无代码平台&#xff0c;并梳理了无代码行业今后可能的发展方向。原文: The future of NoCode 所有无代码编辑器都需要回答的问题 当需要选择无代码解决方案时&#xff0…

Vue基础语法核心指令过滤器计算属性监听属性

目录 1. 模板语法 1.1 插值 1.1.1 文本 1.1.2 html 1.1.3 属性 1.1.4 表达式 1.2 指令 1.2.1 核心指令 1.2.1.1 v-if |v-else-if|v-else 1.2.1.2 v-show 1.2.1.3 v-for 1.2.1.4 v-on|v-model|v-for 1.2.1.5 参数 v-bind:href,v-on:click 1.2.1.6 简写 2. 过滤器…

[AUTOSAR][网络管理] 什么是BusOff? 如何实现它?

文章目录 一、BusOff检测机制(1)简介(2)目录介绍(3)软件实现逻辑代码运行流程如下:二、测试方法(1)物理测试三、示例代码(1) busoff_recovery.c(2) busoff_recovery.h一、BusOff检测机制 (1)简介 CAN控制器可以判断出错误的类型是总线上暂时的数据错误(如外部干扰等…

Python中的内存管理:深入分析垃圾回收机制

python中有一个名为refchian的环状双向链表&#xff0c;python运行时创建的所有对象都会添加到refchain中。在refchain中的对象PyObject里都有一个ob_refcnt用来保存当前对象的引用计数器&#xff0c;就是该对象被引用的次数&#xff0c;当对象有新引用时ob_refcnt就会增加&…

西门子博途软件加密保护方法

一、程序块的专有技术保护 程序块的专有技术保护主要是对项目中的程序块&#xff08;OB、FB、FC、DB&#xff09;进行访问保护&#xff0c;如果没有专有技术保护密码则无法看到程序块中的具体内容&#xff0c;对于专有技术保护的 DB 块&#xff0c;如果没有密码只能读不能写。…

eNSP-OSPF协议其他区域不与骨干区域相连解决方法3

virtual-link技术 AR1 [ar1]int g0/0/0 [ar1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [ar1-GigabitEthernet0/0/0]quit [ar1]ospf [ar1-ospf-1]area 0 [ar1-ospf-1-area-0.0.0.0]net 192.168.1.0 0.0.0.255 [ar1-ospf-1-area-0.0.0.0]quit AR2 [ar2]int g0/0/0 [ar2-Gig…

skiaSharp linux 生成验码字体显示不出来

一、拷贝windows下的字体如&#xff1a;C:\Windows\Fonts 设置字体的地方&#xff1a; var fontPath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TAHOMA.TTF");最终效果&#xff1a;

d3dx9_43.dll丢失怎么解决,四个解决方法帮你解决d3dx9_43.dll丢失

随着科技的不断发展&#xff0c;我们越来越依赖各种软件和硬件设备来提高生活和工作效率。然而&#xff0c;有时候我们可能会遇到一些技术问题&#xff0c;如“d3dx9_43.dll丢失”的问题。这个问题可能导致某些程序无法正常运行&#xff0c;给我们的生活带来诸多不便。因此&…

C++初阶--类与对象(1)

文章目录 类的引入类的定义访问限定符类成员的注意事项变量名的冲突 类的实例化类成员的声明与定义类的大小this指针特性 总结 类的引入 在c语言中&#xff0c;我们会这样写一个栈&#xff1a; struct Stack {int* a;int top;int capacity; };void StackInit(struct Stack* p…

线性代数2:梯队矩阵形式

图片来自 Europeana on Unsplash 一、前言 欢迎阅读的系列文章的第二篇文章&#xff0c;内容是线性代数的基础知识&#xff0c;线性代数是机器学习背后的基础数学。在我之前的文章中&#xff0c;我介绍了线性方程和系统、矩阵符号和行缩减运算。本文将介绍梯队矩阵形式&#xf…

Android 如何在Service中使用ViewModel

需求&#xff1a;最近有反馈说&#xff0c;需要在service中使用网络请求&#xff0c;而我网络请求就是封装的ViewModel。然后我就发现&#xff0c;原来service不支持&#xff0c;懵了呀&#xff01;哈哈 还是去看看ViewModel的源码了解下吧。下面有几个介绍的。就不多做赘述了。…

微信小程序开发之后台数据交互及wxs应用

目录 一、后端准备 1. 应用配置 2. 数据源配置 二、数据库 1. 创建 2. 数据表 3. 数据测试 三、前端 1. 请求方法整合 2. 数据请求 3. WXS的使用 4. 样式美化 5. 页面 一、后端准备 通过SpringMVC及mybatis的技术学习&#xff0c;还有前后端分离的技术应用&…

Mycat2 分布式数据库中间件

一.安装部署 Mycat2目前还不支持直接获取Docker镜像&#xff0c;需要自己通过Dockerfile打包镜像&#xff0c;其实这也是为了开发者考虑&#xff0c;比如一些个性化功能&#xff0c;如自定义分片等 Dockerfile FROM docker.io/adoptopenjdk/openjdk8:latestENV AUTO_RUN_DIR…

RemObjects Elements 12.0 Crack

Elements 是一个现代多功能软件开发工具链。 它支持六种流行的编程语言&#xff1a;Oxygene (Object Pascal)、C#、Java、Mercury (Visual Basic.NET™)、Go 和 Swift&#xff0c;适用于所有现代平台。 使用 Elements&#xff0c;您可以为您喜欢的任何平台进行编程- 无论是单…

想要精通算法和SQL的成长之路 - 找到最终的安全状态

想要精通算法和SQL的成长之路 - 找到最终的安全状态 前言一. 找到最终的安全状态1.1 初始化邻接图1.2 构建反向邻接图1.3 BFS遍历1.4 完整代码 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 找到最终的安全状态 原题链接 我们从题目中可以看出来&#xff1a; 出度为0的…

面试官:如何理解CDN?说说实现原理?

一、是什么 CDN (全称 Content Delivery Network)&#xff0c;即内容分发网络 构建在现有网络基础之上的智能虚拟网络&#xff0c;依靠部署在各地的边缘服务器&#xff0c;通过中心平台的负载均衡、内容分发、调度等功能模块&#xff0c;使用户就近获取所需内容&#xff0c;降…

大模型技术实践(五)|支持千亿参数模型训练的分布式并行框架

在上一期的大模型技术实践中&#xff0c;我们介绍了增加式方法、选择式方法和重新参数化式方法三种主流的参数高效微调技术&#xff08;PEFT&#xff09;。微调模型可以让模型更适合于我们当前的下游任务&#xff0c;但当模型过大或数据集规模很大时&#xff0c;单个加速器&…