微调(一)

微调有两种办法,

一是模型全部参数的微调,二是少量参数高效的微调。前者由于参数多,需要的GPU多,并且全参数微调可能把模型带偏,后者只需要微调少量参数,需要的GPU少,还可能达到不错的效果,成为大家研究的重点,取了个专有名词Parameter-Efficient Fine-Tuning,简称PEFT,即高效参数微调。

PEFT主要分为:

1、Additive类:在预训练模型的基础上增加额外的参数或网络层,微调时只训练这些新增的部分,这包括Adapter(在Transformer子层后加入小的全连接层,微调只学习新加的全连接层参数)

、Soft Prompts(在输入的embedding中加入向量作为soft prompts),并对这些向量的参数进行微调,避免构造Prompts模板。

2、Selective类:选择模型中的部分层,如最后几层或偏置项进行微调,而不是调整整个模型、

3、Reparametrization-based类:使用低秩表征来最小化可训练的参数,认为大量参数只有一部分起到关键作用,并在这关键子空间中寻找参数进行微调。

4、Hybrid类:混合了以上多种方法,结合了它们的优点

以下细讲

Additive类

Adapter Tuning

结构简洁明了,在Transformer的前馈层后加入上图中右边所示的Adapter层,Adapter是一个bottleneck结构,先把d维特征映射为m维,然后通过一个非线性层,最后映射回d维特征,m<<d,即m远小于d,Adapter包括偏置项的参数量为2md+m+d,由于m很小,起到了限制参数量的作用。模型微调的时候,学习的参数包含上图绿色部分,除了Adapter,还有Transformer本身的Layer Norm层。

Adapters微调训练的参数量、全模型微调参数量和准确率关系如下图。总体上,在BERT Large模型上用0.5-5%的参数微调,基本达到全参数微调性能,差距仅1%以内。在GLUE上,用3.6%的参数微调和全参数微调性能差距仅0.4%

Soft Prompts

Prefix-Tuning

Prefix-Tuning是一种针对自然语言生成任务的轻量级微调方法,它在传统的全参数微调(Fine-tuning)和不修改任何模型参数的上下文学习之间提供了一种平衡。这种方法的核心思想是冻结预训练模型(PLM)的参数,并只优化一小部分连续的任务特定向量,即所谓的"prefix"。Prefix-Tuning的灵感来源于针对语言模型的提示(prompting)技术,它允许模型的后续token将这个prefix视为一系列“虚拟token”,从而对特定任务进行调整。

在具体实现上,Prefix-Tuning通过在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后再训练时只更新这部分参数,而保持PLM中的其他参数不变,对于自回归模型架构,如GPT-2,Perfix-Tuning在句子钱买你添加前缀,形成[PREFIX; x; y]的结构;而对于编码器-解码器架构模型,如BART,则在编码器和解码器的输入前都添加前缀,形成[PREFIX; x; PREFIX'; y]的结构

为什么?

因为自回归模型的特点是它们在生成序列时依赖于之前生成的token(即前文)。这种模型一次生成一个token,依赖于之前所有的token的历史信息。

在Prefix-Tuning中,通过在输入序列的开始添加一个连续的任务特定向量(即PREFIX),可以位模型提供一个任务相关的上下文。这个PREFIX相当于给模型一个初始的提示,帮助它理解接下来需要执行的任务。

形成【PREFIX;x;y】的结构,其中x是实际的输入(如线性化的数据表),y是期望的输出序列(如文本描述)。这样,PREFIX作为起始点,x提供详细信息,y是生成任务的输出。

编码器-解码器模型(如BART):

编码器-解码器模型由两部分组成:编码器(Encoder)负责读取和理解输入数据,解码器(Decoder)负责生成输出序列。这种模型通常用于需要同时理解输入并生成相关输出的任务,如机器翻译或文本摘要。

在Prefix-Tuning中,由于编码器和解码器都需要对任务有共同的理解,所以在编码器的输入前添加一个PREFIX来引导输入的编码,同时编码器和解码器都需要对任务有共同的理解,所以在编码器的输入前添加另一个PREFIX(通常与编码器前的PREFIX不同,表示为PREFIX')来引导输出序列的生成。

形成[PREFIX; x; PREFIX'; y]的结构,其中第一个PREFIX帮助编码器理解任务上下文,x是输入数据,第二个PREFIX'帮助解码器生成与任务相关的输出,y是解码器生成的序列。

 

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

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

相关文章

秒懂Linux之自动化构建工具-make/Makefile

目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 静态库指令 gcc -o 文件&#xff08;重命名&#xff09; 源文件 -static 二.make/Makefile 怎么形…

MATLAB(14)预处理

一、前言 在MATLAB中进行插值拟合、主成分分析&#xff08;PCA&#xff09;和小波分析之前&#xff0c;通常需要对数据进行一些预处理。这些预处理步骤可能包括数据清洗、缺失值处理、标准化或归一化等。下面我将分别为这三种分析方法提供预处理模型的示例代码。 二、实现 1.…

校园点餐系统

1 项目介绍 1.1 摘要 在这个被海量信息淹没的数字化时代&#xff0c;互联网技术以惊人的速度迭代&#xff0c;信息的触角无处不在&#xff0c;社会的脉动随之加速。每一天&#xff0c;我们都被汹涌而至的数据浪潮包裹&#xff0c;生活在一个全方位的数字信息矩阵中。互联网的…

大模型微调实战项目总结(非常详细)零基础入门到精通,收藏这一篇就够了

写在前面 不知不觉之间&#xff0c;距开源ChatGLM-Finetuning项目已经过去了8个月。大模型也在飞速的发展&#xff0c;开源社区也是越来越活跃&#xff0c;开源模型越来越多。 中间更新过一次&#xff0c;将代码重构让大家更容易理解&#xff0c;本次更新主要增加ChatGLM3模型…

JavaScript (十)——JavaScript 比较 和 逻辑运算符

目录 JavaScript 比较 和 逻辑运算符 比较运算符 如何使用 逻辑运算符 条件运算符 语法 JavaScript 比较 和 逻辑运算符 比较和逻辑运算符用于测试 true 或者 false 比较运算符 比较运算符在逻辑语句中使用&#xff0c;以测定变量或值是否相等。 如何使用 可以在条件语…

【C++】模拟实现list

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目及其功能 &#x1f4cc;了解list官方标准 了解模拟实现list &#x1f4cc;了解更底层的list实现 二.list迭代器和vector迭代器的异同 &#x1f4cc;迭代…

tomcat配置(java环境配置)

继昨天上线商城系统 [rootstaticserver eleme_web]# cd /usr/local/nginx/conf [rootstaticserver conf]# ls fastcgi.conf koi-utf nginx.conf scgi_params.default fastcgi.conf.default koi-win nginx.conf.bak uwsgi…

采用GDAL批量波段运算计算植被指数0基础教程

采用GDAL批量波段运算计算植被指数0基础教程 1. 引言 在传统的遥感数据处理方法中&#xff0c;通常使用ArcGis或ENVI软件进行波段运算。然而&#xff0c;这些软件在处理大量数据时往往效率低下。有没有一种方法可以批量进行波段运算&#xff0c;一下子计算几十个植被指数&…

计算word文件打印页数 VBA实现

目录 场景复现环境说明实现原理计算当前文件夹下所有word文件页数总和利用递归计算当前文件夹所有work文件页面数量几个BUG计算结果软件报价后话 场景复现 最近需要帮我弟打印高考资料&#xff0c;搜集完资料去网上打印&#xff0c;商家发出了这个计算页数的界面。我就好奇怎么…

如何把视频语音转文字?交给这4款工具就完事

这两天巴黎奥运会的盛大开幕&#xff0c;世界各地的记者们纷纷涌入这个体育盛事的现场&#xff0c;带着他们的镜头和麦克风&#xff0c;捕捉每一个激动人心的瞬间。 然而&#xff0c;随着采访的深入&#xff0c;如何快速准确地将这些珍贵的视频内容转化为文字记录&#xff0c;…

C语言 | Leetcode C语言题解之第309题买卖股票的最佳时机含冷冻期

题目&#xff1a; 题解&#xff1a; int maxProfit(int* prices, int pricesSize) {if (pricesSize 0) {return 0;}int f0 -prices[0];int f1 0;int f2 0;for (int i 1; i < pricesSize; i) {int newf0 fmax(f0, f2 - prices[i]);int newf1 f0 prices[i];int newf2…

Linux 和 Unix 的关系

Linux 和 Unix 的关系 2.2.1unix 是怎么来的 2.2.2Linux 是怎么来的 GNU计划的另一个目的是构建自由的软件文化&#xff0c;以支持以无条件自由软件和开放源码程序这种文化理念为核心的一整套系统&#xff0c;来推动软件在世界范围内的普及及发展。其中包括支持点&#xff08;推…

海思Hi35XX系列(一)环境搭建与挂载

小白一个&#xff0c;新的开发板刚到手有点懵&#xff0c;之前没弄过没有经验&#xff0c;简单记录一下吧 一般买开发板都会给带一个已经配置好的虚拟机文件&#xff0c;直接使用就可以 一、下载安装虚拟机与镜像文件 VMware-workstation16.1.0 我的镜像文件是官方文档资料…

路径规划——广度优先搜索与深度优先搜索

路径规划——广度优先搜索与深度优先搜索 https://www.hello-algo.com/chapter_graph/graph_traversal/ 1.广度优先搜索 Breath-First-Search 在图论中也称为广度优先遍历&#xff0c;类似于树的层序遍历。 算法原理 从起始节点出发&#xff0c;首先访问它的邻近节点&…

Typora2024最新版破解方法(亲测可用)

此方法非常简单&#xff0c;无需安装dll补丁&#xff0c;无需修改注册表&#xff0c;无需使用老版本。仅需修改部分文件内容即可 方法步骤 步骤一 下载并安装Typora 安装Typora 打开官网 下载并安装最新版即可 点击访问Typora官网 https://typoraio.cn/ 步骤二 修改文件 …

C#编写多导联扫描式的波形图Demo

本代码调用ZedGraph绘图框架&#xff0c;自己先安装好ZedGraph环境&#xff0c;然后拖一个zedGraphControl控件就行了&#xff0c;直接黏贴下面代码 基本代码显示 using System; using System.Windows.Forms; using ZedGraph; using System.Timers;namespace ECGPlot {public…

Bugku-ctf-web

Simple_SSTI_1 1.启动场景&#xff0c;http://114.67.175.224:12592 2.页面提示传入参数flag&#xff0c;F12查看源码得到第二个提示 3.SECRET_KEY(秘钥)是Flask中重要的一个配置值&#xff0c;在这题&#xff0c;构造语句查看它&#xff0c;得到flag&#xff0c;也可以构造?…

python+selenium+unittest自动化测试框架

前言 关于自动化测试的介绍&#xff0c;网上已有很多资料&#xff0c;这里不再赘述&#xff0c;UI自动化测试是自动化测试的一种&#xff0c;也是测试金字塔最上面的一层&#xff0c;selenium是应用于web的自动化测试工具&#xff0c;支持多平台、多浏览器、多语言来实现自动化…

AGV系统设计解析:布局-车体-对接-数量计算-路径规划

AGV AGV是实现柔性制造、装配及自动化物流的关键设备之一&#xff0c;近几年来&#xff0c;随着各国智能制造政策的不断实施&#xff0c;促进了AGV产业的快速发展。 目前&#xff0c;AGV系统广泛应用于各个行业之中&#xff0c;比如物流行业、新能源行业、汽车行业、制药行业等…

Python爬虫入门02:Fiddler下载使用教程

文章目录 手机抓包全攻略&#xff1a;Fiddler 工具深度解析引言Fiddler 工具简介为什么选择 Fiddler&#xff1f; 安装与配置 Fiddler步骤一&#xff1a;下载与安装步骤二&#xff1a;配置浏览器代理步骤三&#xff1a;安装 HTTPS 证书 配置手机以使用 Fiddler步骤一&#xff1…