刘知远LLM——大模型微调:prompt-learningdelta tuning

文章目录

  • 背景&概览
  • Prompt-learning
  • delta tuning
    • 增量式
    • 指定式
    • 重参数化式
  • OpenPrompt工具包

对应视频P41-P57

如何高效使用大模型?涉及到NLP的前沿技术,如prompt-learning&delta tuning。

prompt-learning对学习大模型范式的改变,delta tuning是从参数高效的层面上微调大模型

背景&概览

如此繁多的大模型,如何去使用它呢?

在这里插入图片描述
NLP的下游任务:
在这里插入图片描述
在预训练语言模型的时代,似乎我们有一个具有泛化知识的基准模型,但是我们似乎还是需要针对不同任务设计出不同的训练策略。

以BERT举例,对token分类可以送token进入分类层,对句子分类送 [CLS] 进去。再训练分类器
在这里插入图片描述
而关系抽取可以用以下几种做法:对CLS分类;对所有Token聚合到一快再分类;对上下文字符标为0,实体标为1,2…;对实体上包裹特殊字符;…

这样的工作依赖于经验性,并且需要训练分类器,在早期还可以,现在就越来越不适用了
在这里插入图片描述
GPT的例子:对最后一个token的representation送进去分类层,与BERT的方式大同小异。
在这里插入图片描述

改变:从T5开始,出现了110亿参数的大模型,并且是encoder-decoder的范式。

策略发生了改变。

不再训练分类器了,将任务映射为seq2seq的结构,直接训练模型。如情感分类问题,不再输出0,1的label,而是输出positive、negative这样的词。可以将所有任务统一为seq2seq的框架。decoder输出我们需要的token在这里插入图片描述
例子:GPT-3,千亿级别的参数,并且模型架构和GPT-1和GPT-2的架构没有区别,仍然是Transformer-Decoder方式来训练。

但是,这样一个大模型如何微调和使用呢?

微调这样的大模型,是不现实的。

于是在下游任务的使用中,加上prompt,如对任务的描述,给出示例。在这个过程中,模型的参数没有被微调过,这种方式被称作为incontext-learning。

为什么work?至今没有说法可以完全解释
在这里插入图片描述
趋势:

模型越来越大,因为模型越大效果越好

在这里插入图片描述
模型越来越难以微调,此时,论文中使用十亿以上大模型的很少
在这里插入图片描述

高效微调:

从task和data的角度:
prompt-learning:给模型的输入加上一些额外的上下文,但在提出时都没有对prompt的性质以及生成的token进行更深入的研究

从优化的角度:
只需要优化其中的千分之一甚至万分之一的参数就可以达到微调的效果
在这里插入图片描述

Prompt-learning

预训练和fine-tuning似乎存在一定的Gap,在BERT的预训练时是完型填空,fine-tuning对应下游任务如情感分类
在这里插入图片描述
因此,在fine-tuning阶段加入额外的上下文(template,也就是模板),将MASK作为标签。从而更加自然地处理NLP任务,不同任务只需要设置不同的prompt就可以了
在这里插入图片描述
完成情感分类的pipeline
在这里插入图片描述
需要考虑的因素:

  • 选取的预训练模型:自回归模型有更好的生成能力,MLM具有更好的理解能力,…,以及针对特定领域的预训练模型
  • 模板的设计:人工设计、自动生成
    在这里插入图片描述
    针对自回归的模型,prompt一般把MASK词放到最后。这样会导致不一定适用于特别长的文本,但当前的大模型都是这种结构

在这里插入图片描述
对理解的任务更好还是使用BERT,并且可以不用拘泥于MASK的位置,在句子最前、中间、最后,都可以
在这里插入图片描述
T5这类模型比较通用,对生成和理解的任务都比较通用
在这里插入图片描述
Template人为构造的效果都比较好,考虑任务的特性构造不同的Template,这就需要人类的先验知识。

自动生成Template,甚至可以不是文本形式的,只是用字符来训练,玄学但work。

更进一步可以使用结构化模板,完成多种任务
在这里插入图片描述
融合多个prompt,聚合多个弱的变成强的,减少特征工程的工作量
在这里插入图片描述
自动生成:
自动生成的template可能没有具体的语义,但是work。实际选择的还是选取语法通顺的
在这里插入图片描述
prompt使用没有含义的字符
在这里插入图片描述

Verbalizer:将标签映射为标签词的过程
在这里插入图片描述
人为构造:
同义词扩充
在这里插入图片描述
外部知识库扩充
在这里插入图片描述
虚拟的词代替标签
在这里插入图片描述

prompt-learning对训练范式的改变:

对传统神经网络是随机初始化的,在BERT之后出现了预训练-微调的范式,在T5时出现text2text的范式,在GPT之后模型太大很难调节参数了于是出现promp-learning的方式
在这里插入图片描述
soft prompt:小参数驱动大模型
在这里插入图片描述
soft prompt插入到预训练中:可以拥有更好的初始化
在这里插入图片描述
Instruction Learning
在这里插入图片描述
在80亿之后顿悟
在这里插入图片描述
应用:
难以学习到隐式表达;如何用于计算机视觉?
在这里插入图片描述
将图片不同位置框选,再输入
在这里插入图片描述

delta tuning

模型大部分参数不变,只调整很小一部分参数。

大模型抽象化的能力,加上一些参数用来解决具象化的任务

在这里插入图片描述
之所以work,是因为在下游微调中只是激发了大模型的能力
在这里插入图片描述
增量式:
额外增加一些参数

指定式:
指定哪些参数可训练,哪些参数固定

重参数化式:
用低秩矩阵来完成任务

增量式

只训练adapter,只需要训练很少参数就可以达到全参数微调的效果
在这里插入图片描述
将adapter放到了模型的外面:节省反向传播的计算,节省显存
在这里插入图片描述

指定式

BitFit:不动weights,只调整bias
在这里插入图片描述

重参数化式

假设优化的任务可以在低维的空间完成

在这里插入图片描述
LoRA:
假设优化任务的矩阵本质是低秩的(不是低维),就可以强行进行低秩分解
在这里插入图片描述
理论解释
在低维空间的优化过程
在这里插入图片描述
甚至随便选一些参数微调也可以达到很好的效果
在这里插入图片描述

OpenPrompt工具包

定义一个统一的prompt-tuning范式,模块化呈现

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

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

相关文章

Spring Boot编程训练系统:性能优化实践

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足,创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分&…

电子应用产品设计方案-4:基于物联网和人工智能的温度控制器设计方案

一、概述 本温度控制器旨在提供高精度、智能化、远程可控的温度调节解决方案,适用于各种工业和民用场景。 二、系统组成 1. 传感器模块 - 采用高精度的数字式温度传感器,如 TMP117,能够提供精确到 0.01C 的温度测量。 - 配置多个传感器分布在…

如何在 Ubuntu 24.04 上安装和配置 Fail2ban ?

确保你的 Ubuntu 24.04 服务器的安全是至关重要的,特别是如果它暴露在互联网上。一个常见的威胁是未经授权的访问尝试,特别是通过 SSH。Fail2ban 是一个强大的工具,可以通过自动阻止可疑活动来帮助保护您的服务器。 在本指南中,我…

同三维T610UDP-4K60 4K60 DP或HDMI或手机信号采集卡

1路DP/HDMI/TYPE-C(手机/平板等)视频信号输入1路MIC1路LINE OUT,带1路HDMI环出,USB免驱,分辨率4K60,可采集3路信号中其中1路,按钮切换,可采集带TYPE-C接口的各品牌手机/平板/笔记本电脑等 同三维…

Kafka--关于broker的夺命连环问

目录 1、zk在kafka集群中有何作用 2、简述kafka集群中的Leader选举机制 3、kafka是如何处理数据乱序问题的。 4、kafka中节点如何服役和退役 4.1 服役新节点 1)新节点准备 2)执行负载均衡操作 4.2 退役旧节点 5、Kafka中Leader挂了,…

Web项目版本更新及时通知

背景 单页应用,项目更新时,部分用户会出更新不及时,导致异常的问题。 技术方案 给出版本号,项目每次更新时通知用户,版本已经更新需要刷新页面。 版本号更新方案版本号变更后通知用户哪些用户需要通知?…

Android音视频直播低延迟探究之:WLAN低延迟模式

Android WLAN低延迟模式 Android WLAN低延迟模式是 Android 10 引入的一种功能,允许对延迟敏感的应用将 Wi-Fi 配置为低延迟模式,以减少网络延迟,启动条件如下: Wi-Fi 已启用且设备可以访问互联网。应用已创建并获得 Wi-Fi 锁&a…

Appium配置2024.11.12

百度得知:谷歌从安卓9之后不再提供真机layout inspector查看,仅用于支持ide编写的app调试用 所以最新版android studio的android sdk目录下已经没有了布局查看工具... windows x64操作系统 小米k30 pro手机 安卓手机 Android 12 第一步&#xff1a…

前端使用Canvas实现网页电子签名(兼容移动端和PC端)

实现效果: 要使用Canvas实现移动端网页电子签名,可以按照以下步骤: 在HTML文件中创建一个Canvas元素,并设置其宽度和高度,以适配移动设备的屏幕大小。 // 创建一个canvas元素 let canvas document.createElement(&q…

使用 Python 实现高效网页爬虫——从获取链接到数据保存

前言 在这个时代,网络爬虫已成为数据分析与信息收集不可或缺的技术之一。本文将通过一个具体的Python项目来介绍如何构建一个简单的网络爬虫,它能够自动抓取指定网站的文章链接、标题、正文内容以及图片链接,并将这些信息保存为CSV文件。 目标网站 一、准备工作 在开始编…

跟着尚硅谷学vue2—进阶版4.0—Vuex1.0

5. Vuex 1. 理解 Vuex 1. 多组件共享数据-全局事件总线实现 红线是读&#xff0c;绿线是写 2. 多组件共享数据-vuex实现 vuex 不属于任何组件 3. 求和案例-纯vue版 核心代码 1.Count.vue <template><div><h1>当前求和为&#xff1a;{{ sum }}</h1&…

HTML之列表

练习题&#xff1a; 图所示为一个问卷调查网页&#xff0c;请制作出来。要求&#xff1a;大标题用h1标签&#xff1b;小题目用h3标签&#xff1b;前两个问题使用有序列表&#xff1b;最后一个问题使用无序列表。 代码&#xff1a; <!DOCTYPE html> <html> <he…

如何编写jenkins的流水线

如何编写jenkins的流水线 我们为什么需要编写流水线&#xff1f;新建一个jenkins pipeline的item初识pipeline界面pipeline代码关于取值声明和定义工具使用数据结构 我们为什么需要编写流水线&#xff1f; 这里假如你已经安装了好了jenkins&#xff0c;并且能够正常启动它。 通…

项目管理人员的自我评估与职业目标设定

在当今快速发展的商业环境中&#xff0c;项目管理人员的职业规划至关重要。它不仅涉及到个人职业发展的方向、目标和路径选择&#xff0c;还包括如何提升自身的专业技能、管理能力和行业知识。项目管理人员需要明确自己的职业目标、制定合理的职业发展计划、不断学习新知识和技…

状态空间方程离散化(Matlab符号函数)卡尔曼

// 卡尔曼滤波(4)&#xff1a;扩展卡尔曼滤波 - 知乎 // // matlab 连续系统状态空间表达式的离散化&状态转移矩阵求解_matlab状态方程离散化-CSDN博客 // // // %https://blog.csdn.net/weixin_44051006/article/details/107007916 clear all; clc; syms R1 R2 C1 C…

ubuntu24.04播放语音视频

直接打开ubuntu自带的video播放.mp4文件&#xff0c;弹窗报错如下&#xff1a; 播放此影片需要插件 MPEG-4 AAC 编码器安装方式&#xff1a; sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly sudo apt install ffmpeg验证AA…

音视频入门基础:MPEG2-TS专题(4)——使用工具分析MPEG2-TS传输流

一、引言 有很多工具可以分析MPEG2-TS文件/流&#xff0c;比如Elecard Stream Analyzer、PROMAX TS Analyser、easyice等。下面一一对它们进行简介&#xff08;个人感觉easyice功能更强大一点&#xff09;。 二、Elecard Stream Analyzer 使用Elecard Stream Analyzer工具可以…

C++基础 抽象类 类模板 STL库 QT环境

一、抽象类 1、纯虚函数 在多态中&#xff0c;通常父类中虚函数的实现是毫无意义的&#xff0c;主要都是调用子类重写的内容&#xff0c;因此可以将虚函数改为纯虚函数。 语法&#xff1a; virtual 返回值类型 函数名 (参数列表) 0; 2. 抽象类 1) 概念 有纯虚函数所在的类…

c语言选择排序

选择排序思想&#xff1a; 反复地从未排序部分选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到已排序部分的末尾&#xff1b; 首先用一个变量min来保存数组第一个元素的下标&#xff0c;然后用这个下标访问这个元素&#xff0c;将这个元素与它后面的元素相…

数字后端教程之Innovus report_property和get_property使用方法及应用案例

数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性&#xff0c;主要有cell&#xff0c;net&#xff0c;PG Net&#xff0c;Pin&#xff0c;时钟clock&#xff0c;时序库lib属性&#xff0c;Design属性&#xff0c;timing path&#xff0c;timin arc等…