今日arXiv最热大模型论文:LoRA又有新用途,学得少忘得也少,成持续学习关键!

自大模型(LLM)诞生以来,苦于其高成本高消耗的训练模式,学界和业界也在努力探索更为高效的参数微调方法。其中Low-Rank Adaptation(LoRA)自其诞生以来,就因其较低的资源消耗而受到广泛关注和使用。

LoRA通过学习低秩扰动(low-rank perturbations),从而在使用大模型适配下游任务时,只需要训练少量的参数即可达到一个很好的效果。尽管LoRA在资源效率上有明显优势,但其在处理复杂领域任务时的性能表现如何,尚未有定论。本文旨在填补这一空缺,以编程和数学两个具有挑战性的领域任务为例,探讨LoRA与全参数微调的性能。

论文标题:
LoRA Learns Less and Forgets Less

论文链接:
https://arxiv.org/pdf/2405.09673

3.5研究测试:
hujiaoai.cn
4研究测试:
askmanyai.cn
Claude-3研究测试:
hiclaude3.com
 

LoRA方法概述

LoRA的思想非常简单,对于神经网络中的某些线性层(比如 Transformer 架构中的多头自注意力的权重矩阵 Q,K,V 或者前馈神经网络层的 W),不是直接对这些大参数矩阵的所有元素进行更新,而是引入较小的矩阵 A 和 B,并使得这些较小的矩阵 A 和 B 的乘积可以近似描述原始矩阵 W 的变化。

由于r远远小于d,k,仅的参数需要运算,这远远小于更新原参数矩阵所需的运算量。而当训练好新的参数后,利用重参数(reparametrization)的方式,将新参数和原模型参数合并,这样既能在新任务上到达微调整个模型的效果,又不会在推断的时候增加推理的耗时。

实验设置

本文选定了编程和数学两类任务,并分别采用了Starcoder数据的Python部分(20B tokens)和OpenWebMath数据的子集(8.59B tokens)用于编程和数学任务的持续预训练(Continue Pretraining, CPT); Magicoder-Evol-Instruct-110k数据(72.97M tokens)和MetaMathQA数据(103M tokens)用于编程和数学任务的指令微调(Instruction Finetuning)。对应地,本文选用了HumanEval(164个问题)和GSM8K数据集的测试部分(1319个样本)作为编程和数学任务的测评数据集。

此外,本文还采用了HellaSwag、WinoGrande和ARC-Challenge数据集,分别用于评估经过不同训练方式后,模型对于推理、常识推断和科学概念的遗忘程度。

实验结果

1. 在编程和数学任务中的表现

在编程和数学任务中,LoRA相比全参数微调表现出明显的劣势。尽管如此,LoRA在数学任务中表现稍好,能够在一定程度上缩小与全参数微调之间的差距。例如,在编程的持续预训练设定下,使用16B tokens的LoRA在HumanEval基准测试中的最高得分为0.175,而全参数微调在使用1B tokens时的得分就已经达到了0.172,更是在16B tokens达到0.25以上。在数学的指令微调设定下,LoRA在4个训练周期后的GSM8K得分为0.622,与全参数微调的效果峰值仅相差了2个百分点(0.642)。

2. 在遗忘问题上的表现

总的来说,LoRA在遗忘问题上表现出比全参数微调更好的性能。此外,实验还发现:(1)相比于持续预训练,指令微调带来了更严重的遗忘问题;(2)在编程任务上训练以后,带来的遗忘相比在数学任务上训练要更为严重;(3)随着训练数据量的增大,遗忘问题趋于严重。

下图中的点表示不同训练阶段的个体模型在下游任务(编程/数学)和遗忘方面的表现,相比全参数微调,LoRA学会的东西较少(y轴上的值较低),但遗忘也相对更少(x轴上的值更高)。

3. LoRA的正则化特性

LoRA提供了比经典正则化技术,如权重衰减和dropout,更强的正则化效果。尽管在下游任务上LoRA的表现低于大多数正则化方法(左图),但在遗忘上又优于所有正则化方法(右图)。

此外,在对编程任务的指令微调设定下,LoRA在生成多样性上表现更好,维持了与基础模型更相似的多样化解决方案。这表明LoRA在输出层面提供了正则化,有助于保持更多样化的生成结果。

4. 对编程和数学的全参数微调不会学习低阶扰动

本文探讨了全参数微调在编程和数学任务中,是否倾向于学习低秩扰动。这是对LoRA方法的一个核心假设的检验,即微调大模型时,权重矩阵的扰动通常是低秩的。

通过对基础模型的权重矩阵、全参数微调后的权重矩阵,以及两者之间的差异(扰动)进行奇异值分解(Singular Value Decomposition,SVD)分析,发现即使是在早期的训练阶段(例如0.25B tokens时),全参数微调产生的权重矩阵扰动的秩也比典型LoRA高10到100倍。而随着训练数据的增加,扰动的秩也随之增加。此外,多层感知机(MLP)模块的扰动秩通常比注意力(Attention)模块的秩要高。模型的第一层和最后一层相比中间层倾向于有更低的秩。

在编程和数学任务中,全参数微调通常不会学习到低秩的权重扰动,这与LoRA方法的假设相悖。这部分的研究结果对LoRA方法在面对类似编程或数学等复杂任务时的有效性提出了质疑。它表明,为了在这些领域达到与全参数微调相当的性能,可能需要考虑更高秩的扰动,这可能会影响LoRA方法的内存效率和适用性。

一方面,本文发现全参数微调找到的权重扰动远非低秩,这表明LoRA的低秩扰动假设可能不适用于所有情况。另一方面,本文也讨论了所用谱分析方法的局限性,指出全参数微调倾向于找到高秩解并不意味着低秩解是不可能的,而是说它们通常不是微调过程中的首选。

结论与实践建议

LoRA的最佳实践

LoRA作为一种参数高效的微调方法,尽管在某些情况下未能达到全参数微调的性能,但它在正则化和保持源性能方面表现出色。根据研究,LoRA在学习率选择上表现出较高的敏感性。与全参数微调相比,LoRA需要更高的学习率才能实现最佳性能,但学习率过高又可能会导致训练发散。此外,选择要学习扰动的“目标模块”比选择秩大小(rank)更为重要。选择“所有”(Attention、MLP和它们的联合)模块的微调效果优于仅针对“MLP”或“Attention”模块的微调。

如果要使用LoRA,本文推荐在指令微调阶段使用,而不是在持续预训练阶段,并建议至少训练四个周期(epochs),以充分利用LoRA的潜力。尽管秩的影响较为微妙,但较高的秩(例如256)通常优于较低的秩(例如16),在性能和内存使用之间寻找平衡点,如果内存资源有限,可以选择较低的秩。

由于LoRA在保持输出多样性方面也显示出优势,在生成任务中,与全参数微调相比,LoRA能够维持更高的解决方案多样性,这对于避免过拟合和增强模型泛化能力是非常有益的。

LoRA的未来研究方向及应用场景

尽管LoRA在某些领域的性能不如全微调,但其在正则化和减少遗忘方面的潜力表明,它仍然是一个值得进一步研究的工具。未来的研究可以探索如何优化LoRA的配置,例如通过自动化搜索最优的学习率和目标模块配置。

另一个重要的研究方向是探索LoRA在不同模型大小和复杂性条件下的表现。初步研究表明,模型规模可能会影响LoRA与全参数微调之间的性能差距,未来可以在更大或更小的模型上验证这一点。

总之,LoRA作为一种节省资源的微调方法,在保持模型多样性和减少遗忘方面具有独特优势,值得在未来研究和应用中得到进一步的探索和优化。

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

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

相关文章

瑞芯微RV1126——交叉编译与移植

一、搭建这个nfs服务挂载 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu创建一个nfs共享目录: (3) sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务 (4) 修改配置文件: sudo vim /etc/exports 在这个配置文件里面添加:/hom…

C语言/数据结构——每日一题(设计循环队列)

一.前言 上一次我们分享了关于队列的基本实现——https://blog.csdn.net/yiqingaa/article/details/139033067?spm1001.2014.3001.5502 现在我们将使用队列知识来解决问题——设计循环队列:https://leetcode.cn/problems/design-circular-queue/submissions/533299…

50.WEB渗透测试-信息收集-CDN识别绕过(3)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:49.WEB渗透测试-信息收集-CDN识别绕过(2) 关于cdn的识别方法内容…

智慧监狱人员行为识别监测系统

智慧监狱人员行为识别监测系统是基于神经网络AI视觉智能分析算法开发的技术。智慧监狱人员行为识别监测系统利用现场监控摄像头,通过对人体活动骨架的结构化分析,根据人体运动轨迹定义了多种异常行为,从而实现对监舍内的静坐不动、离床、攀高…

Mixiy(米思齐)安装

Mixiy(米思齐)安装 官网地址:爱上米思齐 打开官网,选择下图的软件进行下载 复制提取码,点击链接跳转到网盘进行下载,选择(RC4完整版) 下载完成后,解压到合适的位置,进入文件夹,双击Mixly.exe即…

Docker 部署Jenkins

1、运行镜像 docker run --namejenkins \--restartalways \--privilegedtrue \-u root \-p 8080:8080 \-p 50000:50000 \-v /home/docker/jenkins/jenkins_home:/var/jenkins_home \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \-e TZ…

【Crypto】MD5

文章目录 MD5解题感悟 MD5 提示的很明显MD5 小小flag,拿下! 解题感悟 没啥感悟…

Java输入与输出详解

Java输入和输出 前言一、Java打印Hello World二、输出到控制台基本语法代码示例格式化字符串 三、从键盘输入读入一个字符正确写法 使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 N 个数字 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这…

MySQL-性能分析

1、数据库服务器的优化步骤 2、查看系统性能参数 可以使用show status语句查询一些MySQL数据库服务器的性能参数 执行频率语法格式:show [ global | session ] status like 参数 ;常用性能参数如下所示 参数名说明connection连接MySQL服务器的次数upti…

Autodesk 3ds Max下载,3ds MAX 2024三维建模渲染软件安装包下载安装

3ds MAX中文版,其强大的功能和灵活的操作为广大用户提供了无限的创意空间,使得高质量动画、最新游戏、设计效果等领域的制作需求得以完美满足。 ​ 作为一款三维建模软件,3ds MAX中文版具备极高的建模精度和渲染质量。它支持多种建模方式&am…

【Fiddler抓包工具】第四节.断点设置和弱网测试

文章目录 前言一、断点设置 1.1 全局断点 1.2 局部断点 1.3 打断点的几种常用命令 1.4 篡改响应报文二、弱网测试 2.1 网络限速 2.2 精准限速总结 前言 一、断点设置 1.1 全局断点 特点: 中断Fiddler捕获的所有请求,包括…

在链游中,智能合约如何被用于实现游戏内的各种功能

随着区块链技术的快速发展,链游(Blockchain Games)作为区块链技术的重要应用领域之一,正逐渐展现出其独特的魅力和优势。其中,智能合约作为链游的核心技术之一,对于实现游戏内的各种功能起到了至关重要的作…

【C++初阶】—— 类和对象 (下)

📝个人主页🌹:EterNity_TiMe_ ⏩收录专栏⏪:C “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 类和对象 1. 运算符重载运算符重载赋值运算符重载前置和后置重载 2. 成员函数的补充3. 初始化列…

CentOS上升级glibc2.17至glibc2.31

glibc是Linux系统中的重要组件之一。在CentOS中,glibc通常是作为系统的默认C标准库使用的,因为它是许多软件的基础库。在CentOS中,glibc的版本通常与CentOS版本一起发布。因为CentOS通常会优先选择稳定性而不是最新性,所以CentOS使…

Vue项目如何进行XSS防护

前言 在目前主推网络安全的情况下,很多开发项目都需要在上线前进行渗透测试,当符合渗透测试标准及没有安全漏洞即可正常上线,当前还会有代码审计的,这个另当别论。 如何对XSS进行防护 在很多的富文本编辑器项目中,x…

leecode热题100---994:腐烂的橘子

题目: 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回…

【MySQL精通之路】InnoDB(5)-内存结构

总目录: 【MySQL精通之路】InnoDB存储引擎-CSDN博客 上一篇: 【MySQL精通之路】InnoDB(4)-架构图-CSDN博客 目录 ​编辑 1 缓存池(Buffer Pool) 1.1 缓存池LRU算法 1.2 缓存区配置 1.3 使用InnoDB标准监视器监视缓存池 …

SSRF服务端请求伪造漏洞原理与修复及靶场实践

SSRF服务端请求伪造漏洞原理与修复及靶场实践 SSRF漏洞原理与检测 SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞是一种因为服务端提供了远程访问服务,而并未对请求目标进行限制或限制不严格而引起的安全漏洞&#x…

Java Apache Jexl规则引擎初体验

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、模板引擎的选择?二、什么是JEXL规则引擎?优点缺点 三、其他规则引擎四、示例1.引入依赖2.方法示例3、代码解释4、效果![import java…

C++数据结构——哈希表

前言:本篇文章将继续进行C数据结构的讲解——哈希表。 目录 一.哈希表概念 二.哈希函数 1.除留取余法 三.哈希冲突 1.闭散列 线性探测 (1)插入 (2)删除 2. 开散列 开散列概念 四.闭散列哈希表 1.基本框架 …