冻结Prompt微调LM: PET(b) LM-BFF

PET-TC(B)

  • paper b: 2020.9 It’s not just size that matters: Small language models are also few-shot learners.

  • Prompt: 多字完形填空式人工Prompt

  • Task:Text Classification

  • Model: Albert-xxlarge-v2

  • Take Away: 支持多字的完形填空Prompt,效果超越GPT3

这篇paper和上面的PET-TC是同一作者,算是上文的续作,主要优化了Answer词单token设定,支持多个token作为标签词,不过限制性依旧较强是预先设定任务最大的token数,然后使用最大token数作为MASK数量,而非动态的任意数量的MASK填充。

论文对推理和训练中的多MASK填充做了不同的处理。在推理中需要向前传导K次,如下图所示

  1. 使用标签最大的label词长度K,生成k个MASK位置

  2. 对K个位置同时预估得到K个预估词,选取概率最高的1个词进行填充

  3. 针对填充后的新文本,对剩余K-1个位置再进行预估

  4. 直到所有位置都被填充,分类概率由所有填充标签词的概率累乘得到

在训练过程中为了提升效率,论文使用了一次向前传导对多个位置同时完成预估,这时MASK长度是所有标签的最大长度。例如情感分类问题terr##ble长度为2,great长度为1,这时MASK填充长度为2,great只取第一个MASK词的概率,后面的忽略,概率计算如下

p(Y=−1|x)=P1M(ble|x)∗P2M(terri|~x)p(Y=1|x)=P1M(great|x)

其他部分和PET基本一样这里不再重复。效果上这篇论文换成了Albert-xxlarge-v2模型和GPT-3 few-shot在superGLUE上进行效果对比。不过以下参数对比并不太合理,虽然Albert是层共享参数,但是推理速度并无提升,12层的xxlarge模型参与计算的参数量级应该是223M*12~2B,所以并不是严格意义上的小模型。调整参数后,32个小样本上PET的效果也是超过同等量级甚至更大的GPT3在few-shot上的效果的

img

LM-BFF

  • paper: 2020.12 Making Pre-trained Language Models Better Few-shot Learners

  • Prompt: 完形填空自动搜索prompt

  • Task: Text Classification

  • Model: Bert or Roberta

  • Take Away: 把人工构建prompt模板和标签词优化为自动搜索

LM-BFF是陈丹琦团队在20年底提出的针对few-shot场景,自动搜索模板和触发词的Prompt方案,prompt模板延续了PET的完型填空形式,把人工构建prompt和标签词的构建优化成了自动搜索。论文先是验证了相同模板不同标签词,和相同标签词不同模板对模型效果都有显著影响,如下

img

以下介绍自动搜索的部分

标签词搜索

考虑在全vocab上搜索标签词搜索空间太大,在少量样本上直接微调选择最优的标签词会存在过拟合的问题。作者先通过zero-shot缩小候选词范围,再通过微调选择最优标签词。

如下,固定prompt模板(L),作者用训练集中每个分类(c)的数据,在预训练模型上分别计算该分类下MASK词的概率分布,选择概率之和在Top-k的单词作为候选词。再结合所有分类Top-K的候选词,得到n个标签词组合。这里的n和k都是超参,在100~1000不等。

img

然后在n个候选标签词组合中,针对微调后在验证集的准确率,选择效果最好的标签词组合。

prompt模板搜索

固定标签词,作者使用T5来进行模板生成,让T5负责在标签词前、后生成符合上下文语义的prompt指令,再在所有训练样本中选择整体表现最优的prompt模板。

如下, 固定二分类的标签词是great和terrible,T5的模型输入为Input+MASK+标签对应标签词+MASK,让模型来完成对MASK部分的填充。现在预训练模型中通过Beam-Search得到多个模板,再在下游任务中微调得到表现最好的一个或多个prompt模板

img

以上自动搜索prompt和标签词得到的部分结果如下,该说不说这种方案得到的标签词,至少直观看上去比AutoPrompt合(人)理(类)不(能)少(懂):

img

固定prompt微调LM

img

经过以上搜素得到最优标签词组合和prompt模板后,作者的微调过程模仿了GPT3的few-shot构建方式。如上图,先把输入填充进prompt模板,再从各个分类中各采样1个样本作为指令样本拼接进输入,为待预测文本补充更丰富的上下文,一起输入模型。在训练和推理时,补充的指令样本都是从训练集中采样。

同时为了避免加入的指令样本和待预测样本之间差异较大,导致模型可能直接无视接在prompt后面的指令样本,作者使用Sentence-Bert来筛选语义相似的样本作为指令样本。

效果上,作者给出了每类采样16个样本的小样本场景下, Roberta-Large的效果,可以得到以下insights

  • 部分场景下自动模板是要优于手工模板的,整体上可以打平,自动搜索是人工成本的平价替代

  • 加入指令样本对效果有显著提升

  • 在16个样本的few-shot场景下,prompt微调效果是显著优于常规微调和GPT3 few-shot效果的

img

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

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

相关文章

基于DQN和TensorFlow的LunarLander实现(全代码)

使用深度Q网络(Deep Q-Network, DQN)来训练一个在openai-gym的LunarLander-v2环境中的强化学习agent,让小火箭成功着陆。 下面代码直接扔到jupyter notebook或CoLab上就能跑起来。 目录 安装和导入所需的库和环境Q网络搭建经验回放实现DQNAge…

【算法Hot100系列】字母异位词分组

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

环境变量配置文件

1.配置文件简介 source命令 source命令通常用于保留、更改当前shell中的环境变量。 格式: source 配置文件 . 配置文件 环境变量配置文件简介 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSI…

(二十)Flask之上下文管理第一篇(粗糙缕一遍源码)

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

cmake 自定义宏

cmake 自定义宏 宏定义 add_definitions(-D宏名称 -D宏名称 ...)通过宏定义的方式,对程序中的代码进行控制

Linux 常用命令分享与示例

Linux 是一种强大的操作系统,广泛用于服务器、桌面和移动设备。它的命令行界面(CLI)提供了许多有用的命令,可以方便地进行系统管理和文件操作。 一、文件操作命令 1、 ls:列出目录中的文件和子目录 ls -l /home这将显…

Vue在组件上使用ref代码及总结

//可以通过 this.$refs将数据用子组件函数传递&#xff0c;在子组件函数接收数据&#xff0c;达到修改数据的目的 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" conten…

Ikuai中如何添加/更换虚拟机(图文)

Ikuai配置 分区/格式化硬盘(如果已经格式化&#xff0c;无需再次格式化&#xff0c;直接传送到上传镜像) 上传镜像 ⚠️&#xff1a;如果是压缩格式&#xff0c;需要解压缩后上传&#xff0c;如这里的IMG格式。 创建虚拟机 配置虚拟机&#xff08;等待虚拟机起来后执行&#…

Vulnhub-w1r3s-editable

一、信息收集 端口扫描&#xff0c;ftp允许匿名登录&#xff0c;但是没有得到什么有用的线索 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.1.6 | …

FeatInsight: 基于 OpenMLDB 的特征平台助力高效的特征管理和编排

OpenMLDB 社区新开源了特征平台产品 - FeatInsight&#xff08;https://github.com/4paradigm/FeatInsight&#xff09;&#xff0c;是一个先进的特征存储(Feature Store)服务&#xff0c;基于 OpenMLDB 数据库实现高效的特征管理和编排功能。FeatInsight 特征平台提供简便易用…

JeecgBoot集成东方通TongRDS

TongRDS介绍 TongRDS&#xff08;简称 RDS&#xff09;是分布式内存数据缓存中间件&#xff0c;用于高性能内存数据共享与应用支持。RDS为各类应用提供高效、稳定、安全的内存数据处理能力&#xff1b;同时它支持共享内存的搭建弹性伸缩管理&#xff1b;使业务应用无需考虑各种…

Active Directory监控工具

Active Directory 是 Microsoft 为 Windows 环境实现的 LDAP 目录服务&#xff0c;它允许管理员对用户访问资源和服务实施公司范围的策略。Active Directory 通常安装在 Windows 2003 或 2000 服务器中&#xff0c;它们统称为域控制器。如果 Active Directory 出现故障&#xf…

go的协程和管道运用案例

一.同时向管道读写数据 package mainimport "fmt"func main() {writeChan : make(chan int, 20) // 写入通道&#xff0c;缓冲大小为20exitChan : make(chan bool) // 退出通道go readData(writeChan, exitChan) // 启动readData协程go writeData(writeChan) …

跑通 yolov5-7.0 项目之训练自己的数据集

yolov5 一、yolov5 源码下载二、配置环境&#xff0c;跑通项目三、训练自己的数据集1、获取验证码数据2、标注图片&#xff0c;准备数据集3、开始训练自己的数据集1、train.py 训练数据集2、val.py 验证测试你的模型3、detect.py 正式用你的模型 四、遇到的报错、踩坑1、import…

电脑内存满了怎么清理内存?试试这6个方法~

内存越大&#xff0c;运行越快&#xff0c;程序之间的切换和响应也会更加流畅。但是随着时间的增加&#xff0c;还是堆积了越来越多的各种文件&#xff0c;导致内存不够用&#xff0c;下面就像大家介绍三种好用的清理内存的方法。 方法一&#xff1a;通过电脑系统自带的性能清理…

vim 编辑器如何同时注释多行以及将多行进行空格

当然可以&#xff0c;以下是我对您的文字进行润色后的版本&#xff1a; 一、场景 YAML文件对空格的要求非常严格&#xff0c;因此在修改YAML时&#xff0c;我们可能需要批量添加空格。 二、操作步骤 请注意&#xff1a;您的所有操作都将以第一行为基准。也就是说&#xff0…

QT+OSG/osgEarth编译之七十八:hdr+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_hdr)

目录 1、osgdb_hdr介绍 2、文件分析 3、pro文件 4、编译实践 1、osgdb_hdr介绍 通过osgdb_hdr,osg能方便地读取高动态范围图像文件,从而为三维场景渲染提供高动态范围图像的数据支撑。 HDR文件是以高动态范围 (HDR) 图像格式保存的位图图像或数码照片。这种格…

OpenCV-Python(39):Meanshift和Camshift算法

目标 学习了解Meanshift 和Camshift 算法在视频中找到并跟踪目标 Meanshift 原理 Meanshift算法是一种基于密度的聚类算法&#xff0c;用于将数据点划分为不同的类别。它的原理是通过数据点的密度分布来确定聚类中心&#xff0c;然后将数据点移动到离其最近的聚类中心&#…

【代码随想录07】344.反转字符串 541. 反转字符串II 05.替换空格 151.翻转字符串里的单词 55. 右旋转字符串

目录 344. 反转字符串题目描述做题思路参考代码 541. 反转字符串 II题目描述参考代码 05. 替换数字题目描述参考代码 151. 反转字符串中的单词题目描述参考代码 55. 右旋转字符串题目描述参考代码 344. 反转字符串 题目描述 编写一个函数&#xff0c;其作用是将输入的字符串反…

OOM分析与解决

一、分类 OOM:java.lang.OutOfMemoryError 1.1 堆内存溢出 堆内存&#xff08;Heap Space&#xff09;没有足够空间存放新创建的对象 java.lang.OutOfMemoryError:Javaheap space原因&#xff1a; 请求创建一个超大对象&#xff0c;通常是一个大数组。 超出预期的访问量/数…