论文复现-1论文重读:Black-Box Tuning for Language-Model-as-a-Service

news2024/11/27 12:52:53

 

论文核心:使用PLM的API进而完成prompt learning,微调完成任务。

具体来说,是采用连续prompts拼接在input_text之后,然后,通过derivative-free的框架,完成任务。

一、背景(Introduction)

大前提:

由于商业原因等,大模型的参数是不会公开的。其次,微调一个大模型是比较昂贵的。

但是一般大模型会开放API端口,供users使用。这种情形称为:“Language-Model-as-a-Service (LMaaS)”

users can solve the language tasks of interest using the black-box APIs by crafting task-specific text prompts or including training samples in the input texts

技术相关背景:

  1. 在不使用梯度更新参数的方式下,称为“derivative-free optimization”——(DFO更新)。受限于参数大小,DFO在大规模参数时,更新速度极慢。
  2. 大模型尽管参数众多,但只有一小部分内在维度,intrinsic dimensionality,对于模型微调有较大的帮助。

总思路:

  1. 大模型高维向量空间,采用线性映射方式,将向量维度压缩在一个低维度空间。
  2. 在低维度空间内,使用derivative-free的方式,解决optimization problem。

二、Background(文献回顾)

  1. intrinsic dimensionality of PTMs (Pretrained language model)
  2. derivative-free optimization: realize optimization only via the function values f(x) on the sampled solutions x (实现优化仅仅通过在采用的x数据上,通过f(x)函数实现)

三、Approach(方法)

1 问题定义

给出X和Y,经过一些engineering后,比如verbalizer engineering...,形成X^和Y^,然后通过API f,在连续prompt的条件下,实现Y^的预测,具体可以表示为:

Y^=f(p;X^)

Y^表示待预测的变量;p表示连续prompts;X^表示输入。p的维度是D。

可是,作者提到了“our goal is to find the optimal prompt P*=argmin L (Y^,Y~)”,最终目标是要找到最优的prompt吗?

2 问题求解

为了简化操作,将p映射到一个低维空间内,使用映射矩阵matrix A (A 采用的正态分布矩阵),A的维度是D*d,将上边的p=Az+p0,p0作为优化的变量。

 目标函数为:

z{^{*}}=argmin L(f(Az+p_{0};X^{_{~}}),Y^{_{~}})

z*的维度缩小到d维度内。

损失函数:

损失函数尝试了交叉熵、hinge loss,负正确率三种。

评测函数:

CMA-ES (Covariance Matrix Adaptation Evolution strategy)——多被用来测评non_convex black box optimization 在continuous domain

query是采用多元正态分布采用得到的?

 

3 模型图

 四、实验

实验数据集自然语言理解任务,包括情感分析、主题分类、自然语言推理和改述。 sentiment analysis,topic classification、natural language inference,paraphrase。

 

小样本设置:随机从每个class中选择k samples形成k-shot setting,数据集数量为:|D_{test}|>>|D_{train}|=|D_{dev}|

PLM backbone 模型:Roberta large model

baseline model: 基于梯度的方法和基于non-gradient 的方法。大致有

基于梯度的方法:

  1. prompt tuning:keep PLM paramters frozen, only fine tune contiunous prompt.
  2. P-tuning v2: inject contiunous prompt to the input layer ,optimize the prompts at every layer of PLM
  3. Model tuning: fine tune the entire PLM model

基于gradient-free的方法:

  1. 手工设计prompt
  2. incontext learning:从train中随机选择32个samples和input texts做concatenate.
  3. 基于feature 的方法:使用PLM的embedding,然后训练一个分类器,完成整个任务。

        实施方法上,采用feature-MLP,即训练一个两层的MLP 分类器在CLS上,完成分类任务。

采用feature-BiLSTM,在顶部训练一个Bi-LSTM +分类器的结构,完成任务。

五、实验结果

参数设置

 

Overall comparison

 论文中得到的结论有:

  1. gradient-based optimization tends to overfit the small training data
  2. tuning performs much better than prompt tuning and black box tuning when number of classes is large
  3. pre-trained prompt embedding (§ 3.4), prompt tuning and black-box tuning significantly outperform model tuning

We suspect ....(注意用词),We find ....

Detail comparision

reasonable training time, memory footprint, and network load.

 

Ablation study 

围绕loss 函数、维度、提示长度展开的研究

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

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

相关文章

门店数字化管理|门店督导工作监管难?SpaceSight 来帮忙

在门店管理中,这些问题是否一直困扰着你: 哪家店员工作更细致高效?难评估! 有哪些门店问题高频发生?难发现! 不同门店运营差距有多大?难界定! SpaceSight 系列第二篇,为…

看看阿里程序员是怎样讲限流的

限流算法很多,常见的有三类,分别是计数器算法、漏桶算法、令牌桶算法,下面逐一讲解。 计数器算法 简单粗暴,比如指定线程池大小,指定数据库连接池大小、nginx连接数等,这都属于计数器算法。 计数器算法是限流算法里最简单也是最容易实现的一种算法。举个例子,比如…

YOLO系列目标检测算法——PP-YOLOv2

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

>python可视化神器altair

python可视化神器一.些简单图形的绘制(一).柱状图1. 然后我们还可以设置高亮柱状图的某一根柱子,其他柱子设置为一样的颜色:2. 翻转图片,同时添加图片标注,在图上加上数据3.在图形上添加线条4. 组合图,柱状图折线图(二…

[R语言]手把手教你如何绘图(万字)

目录 概况 常用高级图形 条形图 csv文件导入 csv文件导出 R语言sep函数 seq函数 with函数 直方图和密度估计图 盒型图 boxplot() 正态QQ图 散点图 pairs()散点矩阵图 曲线图 curve() 三维图 动态三维图 低级图形函数 abline() lines() legand()增加图例 …

String类——字符序列类(1)

目录 前言 String类 1.该类的由来 2.String类对象的创建 (1)头文件 (2)类对象的创建 其他用法: (3)String类对象遍历 1:数组方式遍历 2.范围for遍历: …

【Python】【期末复习题】【2022秋】

文章目录一、单选题(20分)二、判断题(10分)三、填空题(10分)四、问答题(共30分,6题,每题5分)五、程序题(3题,每题10分,共3…

React.js 简介以及一些基本概念

React 是什么 React 跟angular.js 和Vue.js 一样是构建用户界面的js库 2011 年 由Facebook 工程师Jordan Walke创建 在 2013 开源 React 的优势 原生js的痛点 原生的Javascript 操作DOM繁琐,效率低(DOM-API 操作UI)使用Javascript 直接操作DOM&#xf…

scala语法(三)(有java基础速学)

面向对象编程(中) scala的包 Scala中包名和源码所在的系统文件目录结构要可以不一致,但是编译后的字节码文件路径和包名会保持一致 scala 自动引入的包 Scala中,以下三个包的内容会隐式引用到每个程序上。 import java.lang._…

[附源码]Python计算机毕业设计二手交易平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

如何管理客商主数据,附要点和QA

客商主数据(客户、供应商、既是客户也是供应商)是企业最常用的主数据类型之一。要实现上下游的打通,方便企业内部相关业务的运转以及信息流通,做好客商主数据的管理至关重要。 什么是客商主数据 客商主数据是一类复杂的主数据&a…

一文搞懂Vue Diff算法

为什么需要diff算法? 对于一个容器(比如我们常用的#app)而言,它的内容一般有三种情况: 1.字符串类型,即是文本。 2.子节点数组,即含有一个或者多个子节点 3.null,即没有子节点 在…

【软件开发】前后端分离架构下JWT实现用户鉴权

前后端分离架构下JWT实现用户鉴权在【计算机网络】JWT(JSON Web Token)初识 中,我们讲解了 JWT 的基础知识。Token 验证的方式一般是用在前后端分离的软件开发项目中,所以本篇文章将会从前端和后端的角度去考虑 JWT 的实现。前端 …

H5和小程序的区别

近年来,由于社交电商的火爆程度,相较于传统的电商淘宝、京东、天猫这种第三方平台,其余平台的发展也势不可挡。并且第三方平台的竞争过大,成本过高,抢流量越来越难之后,越来越多的商家企业开始转战H5微商城…

基于知识图谱的多模内容创作技术

导读:由于大数据时代的发展,知识呈指数级增长,而知识图谱技术又在近年来逐步火热,因此诞生了利用知识图谱技术进行智能创作的新想法。本文将分享基于知识图谱的多模内容创作技术及应用。主要包括以下四大部分: 百度知识…

Network Configuration Manager固件漏洞管理

固件漏洞可能会使您的企业和客户的敏感数据面临风险,导致黑客容易进入、销售额下降、声誉损失和处罚。为了避免这些事故,识别这些固件漏洞并定期采取纠正措施非常重要。 使用 Network Configuration Manager,你现在可以识别网络设备中的潜在…

【数据结构-JAVA】包装类 泛型

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 一道面试题 2. 泛型 2.1 什么是泛型 3. 泛型是如何编译的 3.1 擦除机制 4. 泛型的上界 5. 泛型方法 1. 包装类 在 Java 中,由于基本类型不是继承自 Object,为了在泛型代码中可以…

为什么 FIQ 比 IRQ 的响应速度更快?

目录 1、FIQ在异常向量表位于最末 2、FIQ模式有5个私有寄存器 3、FIQ的优先级高于IRQ 1、FIQ在异常向量表位于最末 一般来说,处理器跳转到异常向量表以后,会根据当前的异常源类型,执行下一次的跳转指令,但是FIQ在异常向量表的…

尚医通:项目搭建-提交到Git(六)

(1)前后端概念介绍 (2)搭建项目后端环境 (3)提交到Git仓库 (1)前后端概念介绍 (2)搭建项目后端环境 项目模块构建 hospital-manage:医院接口模拟…

微服务框架 SpringCloud微服务架构 分布式缓存 44 Redis 分片集群 44.5 RedisTemplate访问分片集群

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式缓存 文章目录微服务框架分布式缓存44 Redis 分片集群44.5 RedisTemplate访问分片集群44.5.1 RedisTemplate访问分片集群44 Redis 分片…