LM-BFF——语言模型微调新范式

gpt3(GPT3——少样本示例推动下的通用语言模型雏形)结合提示词和少样本示例后,展示出了强大性能。但大语言模型的训练门槛太高,普通研究人员无力,LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gpt3启发后,将gpt3的少样本学习思路与常规语言模型(如BERT、RoBERTa)相结合,最终提出了一种新颖的微调方法,大大降低了微调所需样本量,也为我们理解提示词的重要性带来了新的启发。

本文主要分享这种新颖微调方法的好处,不对细节做过多展开。

方法

传统的微调方法是,给定训练好的预训练模型后,再利用该预训练模型在各类监督数据集上结合标签进行监督训练。输入和输出由不同的数据集决定。

LM-BFF作者的思路是,在监督训练时,通过引入提示模板 (prompt template)任务示例 (task demonstrations/examples),将原始输入和输出(标签)转换成一种更接近语言模型预训练任务的格式(即完形填空或文本生成)进行训练。

例如,对于一个传统的文本分类任务:

  • 传统微调输入(以RoBERTa为例)[CLS] No reason to watch. [SEP] ,预测输出通常是数据集的标签(如positive,negative)
  • LM-BFF微调输入示例[CLS] No reason to watch. [SEP] It was [MASK]. [SEP] A fun ride. It was great. [SEP] The drama discloses nothing. It was terrible. [SEP],预测输出是标签词映射得到的词(如great,terrible)

在这个LM-BFF的例子中:

  1. No reason to watch. 是原始输入文本。
  2. It was [MASK]. 是应用于原始输入文本的提示模板,模型需要预测 [MASK] 位置最合适的词。
  3. A fun ride. It was great.The drama discloses nothing. It was terrible. 是任务示例(demonstrations)。其中 greatterrible 是原始标签(如“正面”、“负面”)通过标签词映射 (label word mapping) 转换成的具体词语。这些示例为模型提供了当前任务的上下文信息。

下图是更详细的过程:

在这里插入图片描述

LM-BFF的四个关键部分

  1. 三个输入部分:原始输入 + 提示模板 + 任务示例
  2. 输出标签词映射。

其中提示模板和输出词映射可以手动指定也可以自动得出,作者提出了自动推断提示模板和输出词映射的方法。任务示例从训练样本中抽样。

自动推断输出标签映射词的方法:

  • 使用预训练语言模型(如 RoBERTa)来预测与标签语义最相关的词。
  • 对于每个标签,构造一个模板(如“It was [MASK].”),然后通过模型预测 [MASK] 位置的词,选择概率最高的词作为标签映射词。
  • 例如,对于“positive”标签,模型可能预测“great”作为映射词;对于“negative”标签,预测“terrible”。
  • 这种方法减少了手动指定标签词的负担,提高了方法的通用性。

自动推断提示模板的方法:

  • 利用 T5 模型的填空能力,将模板字符作为掩码序列输入T5,使其通过预测掩码序列生成候选提示模板。
  • 例如,对于文本分类任务,T5 可能生成“It was [MASK].”或“The sentiment is [MASK].”作为提示模板。
  • 然后通过少量验证数据评估每个模板的性能,选择效果最好的模板。
  • 这种方法通过自动化生成提示模板,减少了人工设计的成本。

实验

作者在GLUE数据集和SNLI数据集上做了实验。

在不同的数据集上,作者手工指定了提示模板和标签词映射。当然后面有手工,也有自动推断的实验结果。

在这里插入图片描述

实验效果

作者对比了若干方法:

第一部分:

  1. Majority(选取数据最多的类做标签)
  2. 使用作者手工指定的提示词进行零样本学习,不微调训练
  3. 使用作者手工指定的提示词 + 任务示例,不微调训练
  4. 使用少量样本进行传统微调训练

第二部分(LM-BFF)

  1. 手工指定提示词(原始输入 + 提示模板),微调训练
  2. 手工指定提示词+任务示例(原始输入 + 提示模板+ 任务示例 ),微调训练
  3. 自动指定提示词(原始输入 + 提示模板),微调训练
  4. 自动指定提示词+任务示例(原始输入 + 提示模板+ 任务示例 ),微调训练

第三部分:

全量样本传统微调训练

实验结果确实显著的表明,在少样本设定下,LM-BFF具有显著的优势,比传统微调性能大幅提高(大多在百分之10以上)

在这里插入图片描述

结合提示词微调的优势

另一篇论文(How Many Data Points is a Prompt Worth?)通过实验清楚的表明了结合提示微调的好处:

作者用SuperGLUE数据集对比了结合提示微调和传统微调在不同数据量情况下的表现,横坐标代表样本量,黄色代表提示词微调在使用不同样本量数据时的性能,紫色为传统微调的性能。大部分数据集上提示词微调的效果都要好于传统微调。
在这里插入图片描述

结果表明结合提示微调对训练样本的需求大大少于传统微调,几十个样本可以达到较好效果,不同数据量下的效果也大多好于传统微调。这也充分证明了语言模型的提示词的重要性。

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

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

相关文章

遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之二训练模型

遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之一推理模型 背景 上一篇文章了解了这个项目的环境安装和模型推理,这篇文章介绍下如何训练这个模型,添加类别 下载数据集 在之前的一篇文章中,也有用到这个数据集 QGIS之三十六Deepness插件实现AI遥感训练模型 数…

【NLP 71、常见大模型的模型结构对比】

三到五年的深耕,足够让你成为一个你想成为的人 —— 25.5.8 模型名称位置编码Transformer结构多头机制Feed Forward层设计归一化层设计线性层偏置项激活函数训练数据规模及来源参数量应用场景侧重GPT-5 (OpenAI)RoPE动态相对编码混合专家架构(MoE&#…

[250521] DBeaver 25.0.5 发布:SQL 编辑器、导航器全面升级,新增 Kingbase 支持!

目录 DBeaver 25.0.5 发布:SQL 编辑器、导航器全面升级,新增 Kingbase 支持! DBeaver 25.0.5 发布:SQL 编辑器、导航器全面升级,新增 Kingbase 支持! 近日,DBeaver 发布了 25.0.5 版本&#xf…

服务器硬盘虚拟卷的处理

目前的情况是需要删除逻辑卷,然后再重新来弄一遍。 数据已经备份好了,所以不用担心数据会丢失。 查看服务器的具体情况 使用 vgdisplay 操作查看服务器的卷组情况: --- Volume group ---VG Name vg01System IDFormat …

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中 在 Flutter 中,build 方法被设计在 StatefulWidget 的 State 类中而非 StatefulWidget 类本身,这种设计基于几个重要的架构原则和实际考量: 1. 核心设计原因 1.1 生命周期管理…

传统医疗系统文档集中标准化存储和AI智能化更新路径分析

引言 随着医疗数智化建设的深入推进,传统医疗系统如医院信息系统(HIS)、临床信息系统(CIS)、护理信息系统(NIS)、影像归档与通信系统(PACS)和实验室信息系统(LIS)已经成为了现代医疗机构不可或缺的技术基础设施。这些系统各自承担着不同的功能,共同支撑…

探索常识性概念图谱:构建智能生活的知识桥梁

目录 一、知识图谱背景介绍 (一)基本背景 (二)与NLP的关系 (三)常识性概念图谱的引入对比 二、常识性概念图谱介绍 (一)常识性概念图谱关系图示例 (二&#xff09…

Linux/aarch64架构下安装Python的Orekit开发环境

1.背景 国产化趋势越来越强,从软件到硬件,从操作系统到CPU,甚至显卡,就产生了在国产ARM CPU和Kylin系统下部署Orekit的需求,且之前的开发是基于Python的,需要做适配。 2.X86架构下安装Python/Orekit开发环…

Ctrl+鼠标滚动阻止页面放大/缩小

项目场景: 提示:这里简述项目相关背景: 一般在我们做大屏的时候,不希望Ctrl鼠标上下滚动的时候页面会放大/缩小,那么在有时候,又不希望影响到别的页面,比如说这个大屏是在另一个管理后台中&am…

MySQL——复合查询表的内外连

目录 复合查询 回顾基本查询 多表查询 自连接 子查询 where 字句中使用子查询 单行子查询 多行子查询 多列子查询 from 字句中使用子查询 合并查询 实战OJ 查找所有员工入职时候的薪水情况 获取所有非manager的员工emp_no 获取所有员工当前的manager 表的内外…

聊一下CSS中的标准流,浮动流,文本流,文档流

在网络上关于CSS的文章中,有时候能听到“标准流”,“浮动流”,“定位流”等等词语,还有像“文档流”,“文本流”等词,这些流是什么意思?它们是CSS中的一些布局方案和特性。今天我们就来聊一下CS…

python训练营第33天

MLP神经网络的训练 知识点回顾: PyTorch和cuda的安装查看显卡信息的命令行命令(cmd中使用)cuda的检查简单神经网络的流程 数据预处理(归一化、转换成张量)模型的定义 继承nn.Module类定义每一个层定义前向传播流程 定义…

JDK21深度解密 Day 1:JDK21全景图:关键特性与升级价值

【JDK21深度解密 Day 1】JDK21全景图:关键特性与升级价值 引言 欢迎来到《JDK21深度解密:从新特性到生产实践的全栈指南》系列的第一天。今天我们将探讨JDK21的关键特性和升级价值。作为近5年最重要的LTS版本,JDK21不仅带来了性能上的巨大突…

[docker]更新容器中镜像版本

从peccore-dev仓库拉取镜像 docker pull 10.12.135.238:8060/peccore-dev/configserver:v1.13.45如果报错,请参考docker拉取镜像失败,添加仓库地址 修改/etc/CET/Common/peccore-docker-compose.yml文件中容器的版本,为刚刚拉取的版本 # 配置中心confi…

LVS原理详解及LVS负载均衡工作模式

什么是虚拟服务器(LVS) 虚拟服务器是高度可扩展且高度可用的服务器 构建在真实服务器集群上。服务器集群的架构 对最终用户完全透明,并且用户与 cluster 系统,就好像它只是一个高性能的虚拟 服务器。请考虑下图。 真实服务器和负…

上位机知识篇---keil IDE操作

文章目录 前言文件操作按键新建打开保存保存所有编辑操作按键撤销恢复复制粘贴剪切全选查找书签操作按键添加书签跳转到上一个书签跳转到下一个书签清空所有书签编译操作按键编译当前文件构建目标文件重新构建调试操作按键进入调试模式复位全速运行停止运行单步调试逐行调试跳出…

前端大文件上传性能优化实战:分片上传分析与实战

前端文件分片是大文件上传场景中的重要优化手段,其必要性和优势主要体现在以下几个方面: 一、必要性分析 1. 突破浏览器/服务器限制 浏览器限制:部分浏览器对单次上传文件大小有限制(如早期IE限制4GB) 服务器限制&a…

解决react-router-dom没有支持name命名使用的问题

1. 前言 react-router-dom 并不能像 vue 的route 那样给每个路由命名 name ,导致代码不能解耦路由路径与导航逻辑。 2. react-router 为什么没有支持? 很早之前官方 issue 中就有过很多讨论: 翻译过来,就是由于以下几个重要原…

Spring AI 之结构化输出转换器

截至 2024 年 2 月 5 日,旧的 OutputParser、BeanOutputParser、ListOutputParser 和 MapOutputParser 类已被弃用,取而代之的是新的 StructuredOutputConverter、BeanOutputConverter、ListOutputConverter 和 MapOutputConverter 实现类。后者可直接替换前者,并提供相同的…

MCP与AI模型的多语言支持:让人工智能更懂世界

MCP与AI模型的多语言支持:让人工智能更懂世界 在人工智能(AI)的时代,我们追求的不仅是强大的计算能力,更是让AI能够理解并使用不同语言,真正服务全球用户。而这背后,一个至关重要的技术就是 MCP(Multi-Context Processing,多上下文处理) ——一种旨在优化 AI 模型理…