自然语言处理:第三十四章Lora VS FineTuning

news2024/9/21 12:44:06

文章链接: [2405.09673] LoRA Learns Less and Forgets Less (arxiv.org)



这是一篇来自哥伦比亚大学和databricks对Lora 和FineTuning 更深一步的研究。有关于Lora可以参考我之前的文章: 自然语言处理: 第十二章LoRA解读_lora自然英语处理-CSDN博客 有关于fine_tuning 可以参考自然语言处理: 第七章GPT的搭建_gpt decoder only-CSDN博客 。 在本文中,Low-Rank Adaptation (LoRA)的参数高效微调方法,该方法特别适用于大型语言模型(LLMs)。LoRA通过仅训练选定权重矩阵的低秩扰动来节省内存,从而在编程和数学等目标领域上进行了LoRA和全面微调的性能比较。我们发现,尽管在大多数设置中,LoRA的性能略低于全面微调,但LoRA展现出了一种理想的正则化形式:它在目标领域之外的任务上更好地维持了基础模型的性能。此外,LoRA提供了比常见的正则化技术(如权重衰减和丢弃法)更强的正则化效果,并有助于维持更多样化的生成。最后,我们提出了使用LoRA进行微调的最佳实践。




背景

随着深度学习技术的飞速发展,大型语言模型(LLMs)已成为自然语言处理(NLP)领域的重要工具。然而,这些模型通常包含数十亿甚至数万亿的参数,使得它们的训练和微调变得非常昂贵和耗时。全面微调整个模型不仅需要大量的计算资源,还可能导致模型在原始任务上的性能下降,即所谓的“灾难性遗忘”。

为了解决这个问题,研究人员提出了一系列参数高效的微调方法,这些方法旨在通过训练模型的一小部分参数来减少计算成本,同时保持或提升模型的性能。其中,Low-Rank Adaptation(LoRA)是一种备受关注的方法,它通过训练选定权重矩阵的低秩扰动来实现高效的微调。


在这里插入图片描述

但是全量微调和Lora这张PEFT技术到底对模型性能有何影响呢? 如上图,横轴是LLM之前的能力,纵轴是衡量微调之后的能力,紫色的是Lora,黑色的是全量微调。作者分别在llama2-7b和llama2-13b上做了对比实验,可以发现紫色的始终性能达不到黑色的范围,但是对于原始的能力保持方面,Lora却维持的更好。





LoRA算法

LoRA的核心思想是在微调过程中,仅对预训练模型中的一部分参数进行训练,而不是整个模型。具体来说,LoRA通过分解选定权重矩阵的增量(即微调前后的权重差异)为一个低秩矩阵和一个原始矩阵的乘积来实现这一点。通过这种方式,LoRA可以在保持原始模型大部分参数不变的同时,仅训练低秩矩阵的参数,从而显著减少所需的内存和计算资源。

在LoRA中,我们通常选择模型中的某些关键层(如Transformer模型的注意力层和前馈神经网络层)进行微调。对于每个选定的层,我们将其权重矩阵的增量分解为一个低秩矩阵A和一个原始矩阵B的乘积,即ΔW = AB。在微调过程中,我们仅训练低秩矩阵A的参数,而保持原始矩阵B的参数不变。通过这种方式,我们可以将微调过程中的参数数量从数十亿减少到数千或数万,从而显著减少所需的计算资源。



结果

在这里插入图片描述

为了评估LoRA的性能,我们在编程和数学两个目标领域上进行了LoRA和全面微调的对比实验。我们考虑了两种数据设置:指令微调(约10万条prompt-query)和继续预训练(约100亿个tokens)。实验结果表明,在大多数设置中,虽然LoRA的性能略低于全面微调,但LoRA在目标领域之外的任务上更好地维持了基础模型的性能。这表明LoRA具有一种理想的正则化效果,可以在保持模型泛化能力的同时,提高在特定任务上的性能。(并且从上面也可以看到预训练的tokens数量对性能的影响)

在这里插入图片描述

此外,我们还发现,与常见的正则化技术(如权重衰减和丢弃法)相比,LoRA提供了更强的正则化效果。这可能是因为LoRA通过限制权重更新的秩来减少模型的复杂性,从而降低了过拟合的风险。此外,我们还观察到,使用LoRA进行微调可以产生更多样化的生成,这可能是因为LoRA允许模型在保持原始表示能力的同时,学习新的表示形式。

在这里插入图片描述

Lora 相比于全量微调对学习率更加敏感。

在这里插入图片描述

最后,我们分析了全面微调和LoRA在微调过程中学习的扰动矩阵的秩。我们发现,全面微调学习的扰动矩阵的秩通常是LoRA配置的10到100倍。这可能解释了为什么在某些情况下,全面微调的性能优于LoRA。然而,这也表明,通过优化LoRA的配置和训练方法,我们有可能进一步提高其性能。




总结

在本文中,我们介绍了Low-Rank Adaptation(LoRA)作为一种高效的大语言模型微调方法。通过仅训练选定权重矩阵的低秩扰动,LoRA可以显著减少所需的计算资源,同时保持或提升模型的性能。我们的实验结果表明,虽然LoRA在某些情况下的性能略低于全面微调,但它在目标领域之外的任务上更好地维持了基础模型的性能,并提供了更强的正则化效果。此外,我们还发现,全面微调学习的扰动矩阵的秩远高于LoRA配置,这为我们进一步优化LoRA的性能提供了方向。

基于这些发现,我们提出了以下建议:首先,在选择是否使用LoRA进行微调时,应根据具体任务和数据集的特点进行权衡。对于需要高度专业化的任务或数据集较小的场景,LoRA可能是一个更好的选择。其次,为了进一步提高LoRA的性能,可以尝试优化其配置和训练方法,例如调整低秩矩阵的秩、选择更合适的层进行微调等。最后,我们也希望未来的研究能够进一步探索LoRA的潜力,并将其应用于更多领域和场景中。

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

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

相关文章

Stream流的实际使用

一、中间操作 1、fileter的使用 filter起到过滤筛选的作用,一般在filter中衔接lambda表达式起到筛选作用 2、Map方法的使用 Map方法的适用场景,接上例,对当前的包含对象的流数据转换为仅包含人名的流,那么就适合使用map方法来进行…

Java核心: JarIndex的使用

在讲解Java类加载器的时候,我们发现URLClassLoader加载类或资源时通过访问ClassPath下的每一个路径,来确定类是否存在的,假设我们执行的命令是这样的 java -classpath D:\DiveInSpring\target\classes;C:\lib\spring-expression.jar;C:\lib\…

【Leetcode】881. 救生艇

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 点击打开题目链接🔗 给定数组 p e o p l e people people 。 p e o p l e [ i ] people[i] people[i]表示第 i i i 个人的体重 ,船的数量不限,每艘船可以承载的最大重…

JavaScript学习|JavaScript 引入方式、JavaScript 基础语法、JavaScript 对象、BOM、DOM、事件监听、事件绑定

JavaScript 能做什么 1.能够改变文本内容 2.能够改变图像的src属性值 3.能够进行表单验证等 JavaScript 引入方式 内部脚本 1.内部脚本:将 JS代码定义在HTML页面中&#xff0c;JavaScript代码必须位于<script>与</script>标签之间。在 HTML 文档中可以在任意地…

Linux iptables详解

前言&#xff1a;事情是这样的。最近部门在进行故障演练&#xff0c;攻方同学利用iptables制造了一个故障。演练最终肯定是取得了理想的效果&#xff0c;即业务同学在规定时间内定位了问题并恢复了业务(ps&#xff1a;你懂得)。 对我个人来讲一直知道iptables的存储&#xff0…

树莓派4B_OpenCv学习笔记5:读取窗口鼠标状态坐标_TrackBar滑动条控件的使用

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日学习:读取窗口鼠标状态坐标_TrackBar滑动条控件的使…

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句&#xff0c;根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果&#xff1a; 发现其输出并没有特定的顺序。其实&#xf…

速卖通店铺防关联该怎么做?

大家都知道&#xff0c;想要进行多账号操作必须一再小心&#xff0c;否则会有很大的关联风险&#xff0c;而账号关联所带来的后果是卖家绝对不能轻视的&#xff0c;严重的话会导致封号&#xff0c;这样一来自己前期的辛苦运营就全都打水漂了&#xff0c;因此防关联很重要&#…

卷积神经网络 convolution neural network

1.数学卷积&#xff1a;滑动窗口 2.图像具有局部相关性和平移不变性&#xff0c;有许多冗余的特征点&#xff0c;如果用全连接的神经网络会很浪费时间。 3.卷积nn&#xff1a;减少参数&#xff0c;滑动提取特征&#xff0c;特征作为下层卷积的输入&#xff0c;然后放到全连接…

PythonX.X、pipX的关系

PythonX.X、pipX的关系 Python2.x 与 3.x Python 的 3.0 版本&#xff0c;相对于 Python 的早期版本&#xff0c;是一个大的升级。许多针对早期 Python2.x 版本设计的程序都无法在 Python 3.x 上正常执行。为了照顾大量的历史遗留项目&#xff0c;Python 2.6 作为一个过渡版本…

常用的通信协议

最近在做项目&#xff0c;用到了一些通信协议&#xff0c;这里详细整理一下相关的通信协议&#xff0c;方便以后查阅。 常用的通信协议 单工 半双工 全双工单工通信&#xff08;Simplex Communication&#xff09;半双工(Half-duplex Communication)全双工&#xff08;Full-dup…

网络网络层之(6)ICMPv6协议

网络网络层之(6)ICMPv6协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…

免费!GPT-4o发布,实时语音视频丝滑交互

We’re announcing GPT-4o, our new flagship model that can reason across audio, vision, and text in real time. 5月14日凌晨&#xff0c;OpenAI召开了春季发布会&#xff0c;发布会上公布了新一代旗舰型生成式人工智能大模型【GPT-4o】&#xff0c;并表示该模型对所有免费…

JDBC简介以及快速入门

这些都是JDBC提供的API 简介 每一个数据库的底层细节都不一样 不可能用一套代码操作所有数据库 我们通过JDBC可以操作所有的数据库 JDBC是一套接口 我们自己定义了实现类 定义实现类 然后就能用Java操作自己的数据库了 MySQL对于JDBC的实现类 就是驱动 快速入门 创建新的项…

芒果YOLOv10改进31:特征融合Neck篇:改进特征融合网络 BiFPN 结构,融合更多有效特征

💡只订阅这一个专栏即可阅读:芒果YOLOv10所有改进内容 芒果改进YOLOv10系列:改进特征融合网络 BiFPN 结构,融合更多有效特征 在这篇文章中,将 BiFPN 思想加入到 YOLOv10 结构中 该版本为高效简洁版,涨点多、还速度快(实际效果反馈) 文章目录 一、BiFPN 论文理论二、…

angular2开发知识点

目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定&#xff1a;[class.special]"isSpecial"2. 多个类的绑定&#xff1a;[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…

理解我的积木编程思想

1 学习教程&#xff0c;至少7139手册2 编程实践&#xff0c;遇到实际问题后&#xff0c;在技术资料中查找关键词3 选择适合的条目找到代 码。修正&#xff0c;组合。

C语言详解(文件操作)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

手写mybatis-预编译前的sql语句

sql表 mybatis数据库中的gxa_user表 /*Navicat Premium Data TransferSource Server : rootSource Server Type : MySQLSource Server Version : 80028Source Host : localhost:3306Source Schema : mybatisTarget Server Type : MySQLTarget…

论文略读:Onthe Expressivity Role of LayerNorm in Transformers’ Attention

ACL 2023 研究了LayerNorm在 Transformers 中对注意力的作用LayerNorm为Transformer的Attention提供了两个重要的功能&#xff1a; 投影&#xff0c;projection LayerNorm 帮助 Attention 设计一个注意力查询&#xff0c;这样所有的Key都可以平等地访问通过将Key向量投影到同一…