大模型中的LM-BFF

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

Google: Flan

  • paper: 2021.9 Finetuned Langauge Models are zero-shot learners

  • github:GitHub - google-research/FLAN

  • 模型:137B LaMDA-PT

  • 一言以蔽之:抢占先机,Google第一个提出指令微调可以解锁大模型指令理解能力

谷歌的Flan是第一个提出指令微调范式的,目的和标题相同使用指令微调来提升模型的zero-shot能力。论文使用的是137B的LAMDA-PT一个在web,代码,对话, wiki上预训练的单向语言模型。

指令集

在构建数据集上,谷歌比较传统。直接把Tensorflow Dataset上12个大类,总共62个NLP任务的数据集,通过模板转换成了指令数据集

img

为了提高指令数据集的多样性,每个任务,会设计10个模板,所以总共是620个指令,并且会有最多3个任务改造模板。所谓的任务改造就是把例如影评的情感分类任务,转化成一个影评生成任务,更充分的发挥已有标注数据构建更丰富的指令数据集。哈哈感觉这里充满了人工的力量。

为了保证数据集的多样性和均衡性,每个数据集的训练样本限制在3万,并且考虑模型对一个任务的适应速度取决于任务数据集大小,因此按使用数据集样本大小占比按比例采样混合训练。

效果

效果上137B的指令微调模型大幅超越GPT3 few-shot, 尤其是在NLI任务上,考虑NLI的句子对基本不会在预训练文本中自然作为连续上下句出现。而指令微调中设计了更自然地模板带来了大幅的效果提升。

img

除了以上存在明显效果提升的任务,在一些任务本身就和指令相似的任务,例如常识推理和指代消歧任务,指令微调并不能带来显著的效果提升。

作者做了更多的消融实验,验证指令微调中以下几个变量

  1. 模型规模: 作者进一步论证了指令微调带来的效果提升存在明显的大模型效应,只有当模型规模在百亿左右,指令微调才会在样本外任务上带来提升。作者怀疑当模型规模较小时,在较多任务上微调可能会占用模型本就不多的参数空间,造成预训练时的通用知识遗忘,降低在新任务上的效果。

img

  1. 多任务影响: 考虑指令微调是在多任务上进行,作者希望剔除指令微调中多任务微调带来的影响。因此尝试进行多任务非指令微调(使用数据集名称代替指令),效果上指令微调显著更优,说明指令模板的设计确实存在提升模型指令理解力的效果。

  2. few-shot: 除了zero-shot,Flan同时验证了few-shot的效果。整体上few-shot的效果优于zero-shot。说明指令微调对few-shot也有效果提升。

  3. 结合prompt-tunning 既然指令微调提升模型对指令的理解能力,作者认为应该对进一步使用soft-prompt也应该有提升。因此进一步使用了prompt-tunning对下游任务进行微调,不出意外Flan比预训练LaMDA的效果有显著的提升。

BigScience: T0

  • paper: 2021.10 Multitask prompted training enables zero-shot task generation

  • T0: GitHub - bigscience-workshop/t-zero: Reproduce results and replicate training fo T0 (Multitask Prompted Training Enables Zero-Shot Task Generalization)

  • Model: 11B T5-LM

  • 一言以蔽之: Flan你想到的我也想到了! 不过我的指令数据集更丰富多样

T0是紧随Flan发布的论文,和FLan对比有以下以下几个核心差异:

  • 预训练模型差异:Flan是Decoder-only, T0是Encoder-Decoder的T5,并且考虑T5的预训练没有LM目标,因此使用了prompt-tunning中以LM任务继续预训练的T5-LM

  • 指令多样性:T0使用的是PromptSource的数据集,指令要比Flan更丰富

  • 模型规模:Flan在消融实验中发现8B以下指令微调效果都不好,而3B的T0通过指令微调也有效果提升。可能影响是En-Dn的预训练目标差异,以及T0的指令集更多样更有创意

  • 样本外泛化任务: Flan为了验证指令微调泛化性是每次预留一类任务在剩余任务训练,训练多个模型。T0是固定了4类任务在其余任务上微调

下面我们细说下T0的指令数据和消融实验

指令集

T0构建了一个开源Prompt数据集P3(Public Pool of Prompts),包括173个数据集和2073个prompt。从丰富程度上比Flan提升了一整个数量级,不过只包含英文文本,更多数据集的构建细节可以看PromptSource的论文。

作者在指令集的多样性上做了2个消融实验

  1. 指令集包括的数据集数: 在T0原始指令集的基础上,作者分别加入GPT-3的验证集,以及SuperGLUE,训练了T0+和T0++模型。在5个hold-out任务上,更多的数据集并不一定带来效果的提升,并且在部分推理任务上,更多的数据集还会带来spread的上升(模型在不同prompt模板上表现的稳定性下降)

img

  1. 每个数据集的prompt数(p):通过每个数据集采样不同数量的prompt进行训练,作者发现随prompt数提升,模型表现的中位数会有显著提升,spread存在不同程度的下降,不过看起来存在边际递减的效应。

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问

Paging3 组件是谷歌公司推出的分页加载库。个人认为Paging3库是非常强大,但是学习难点比较大的一个库。Paging3组件可用于加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让移动应用更高效地利用网络带宽和系统资源。在具体实现上,Pa…

YBM41567/4A 20V1.0A线性锂电池充电管理芯片

YBM41567/4A 20V1.0A线性锂电池充电管理芯片 概述: YB4156/7/4A是一款狸电池充电管理芯片,集成涓流、恒流、恒压三段式线性充电管理,符合锂电池安全充电规范。充电输入耐压高达24V,充电电流高至1.0A,可通过片外电阻配置。YB4156/7/4A集成防…

{MySQL} 数据库约束 表的关系 新增删除 修改 查询

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数据库约束1.1约束类型:1.2 NULL约束1.3unique 唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN K…

C++ 类和对象 (上)

类的引入: 由于C语言是面向过程的编程语言,我们在完成一件事的时候通常习惯将一件事拆分成一个一个小过程来实现,而到了C就习惯将一件事分成不同的模块,交给不同的对象来处理,每一个对象中承载着数据类型和函数。 &am…

PO 发布SAP SProxy->外围系统 WebService

通信概览图 外围系统与PO、SAP的请求响应通信过程大致可以用下图描述 (个人整理所得,可能有误,欢迎指正) 1. 前期准备 1.1 外围系统提供WebService接口 以A系统的RFC发布WebService接口 RFC发布WebService接口 获取到WSDL地…

【操作系统】不同操作系统内核架构分析

一、内核架构与操作系统性能之间的关系的分析 1. 适用性和专业化: 不同的内核架构往往会有不同的设计目标和优化点。例如,实时操作系统(RTOS)和通用操作系统(像Linux或Windows)在设计时就有不同的重点&am…

ESP32:整合存储配网信息和MQTT笔记

文章目录 1.给LED和KEY的所用IO增加配置项1.1 增加配置文件1.2 修改相应的c源码 2. 把mqtt\tcp的工程整合到一起2.1 在何处调用 mqtt_app_start() 3. 测试MQTT4. 完整的工程源码 有一段时间没有玩ESP32,很多知识点都忘记了。今天测试一下MQTT,做个笔记。…

循环冗余效验码的计算方法

循环冗余效验码的计算方法 G(x): 在了解计算方法之前我们首先要明白G(x)表明的意思,这一步非常重要! 例如,G(x) x^3 x^2 1 ,该式子表明的编…

【每天一个早下班技巧】NPM发包流程

发包流程 step1:设置包发布地址 参考资料 // 1.在package.json中设置发布地址 "publishConfig":{"registry":"http://registry.npm.xxx.com" }//2.设置别名 alias ynpm"npm --registryhttp://registry.npm.xxx.com" ynp…

手把手教你配置Jenkins自动化邮件通知

完成基于Jenkins的持续集成部署后,自动化测试执行后,测试结果需要通知到相关人员,除了钉钉通知外我们还可以通过Email通知到对应负责人,这里记录一下测试结果通过Jenkins邮件通知的配置与部署 01、安装插件 方法1: 进…

【neo4j】neo4j的安装与使用

【neo4j】neo4j的安装与使用 安装java https://www.oracle.com/java/technologies/downloads/ 按照步骤安装即可 配置环境变量 在系统变量中添加 path变量中添加 安装neo4j https://neo4j.com/deployment-center/ 下载后,在指定位置解压缩 与java相同&#…

马斯克谈六西格玛:管理质量与火箭科学如何相辅相成

如果你问我,作为一个有志于送人类上火星的家伙,六西格玛管理有没有用?我会说,如果把火箭控制的精度与六西格玛得到的生产质量相比,你会发现两者都追求同一件事:接近零缺陷的完美。 六西格玛不只是一组工具…

如何在 NAS 上安装 ONLYOFFICE 文档?

文章作者:ajun 导览 ONLYOFFICE 文档 是一款开源办公套件,其是包含文本文档、电子表格、演示文稿、表单、PDF 查看器和转换工具的协作性编辑工具。它高度兼容微软 Office 格式,包括 .docx、.xlsx 、.pptx 、pdf等文件格式,并支持…

wireshark access/trunk/hybrid报文分析

1,access接口 发送带vlan的报文 wireshark交换机配置 [Huawei-GigabitEthernet0/0/1] [Huawei-GigabitEthernet0/0/1]port link-type access [Huawei-GigabitEthernet0/0/1]port default vlan 100 [Huawei-GigabitEthernet0/0/2]port link-type access [Huawei-Gig…

华为---USG6000V防火墙web基本配置示例

目录 1. 实验要求 2. 配置思路 3. 网络拓扑图 4. USG6000V防火墙端口和各终端相关配置 5. 在USG6000V防火墙web管理界面创建区域和添加相应端口 6. 给USG6000V防火墙端口配置IP地址 7. 配置通行策略 8. 测试验证 8.1 逐个删除策略,再看各区域终端通信情况 …

SpringMVC之视图和RESTful

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Java注解之@Autowired,一文掌握@Autowired注解知识(3)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

k8s搭建(四、k8s集群创建)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

05-C++ 类和对象-继承

类与对象-03 继承与派生 1. 继承的概念 c最重要的特征是代码重用,通过继承机制可以利用已有的数据类型,来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。 一个 B 类继承于 A 类,或称从类 A 派生…

QCheckBoxQRadioBoxQComboBoxQSlider

QCheckBox QCheckBox 是 Qt 框架中一个常用的控件,用于创建一个可以勾选或取消勾选的复选框。它通常用于表示选项的开/关状态 autoExclusive 是一个与单选按钮(QRadioButton)相关的属性。这个属性决定了同一个父窗口下的单选按钮是否自动形成…