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

news2025/1/10 20:41:36

自大模型(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.coloradmin.cn/o/1686833.html

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

相关文章

Qt输入输出类使用总结

Qt输入输出类简介 QTextStream 类(文本流)和 QDataStream 类(数据流)Qt 输入输出的两个核心类,其作用分别如下: QTextStream 类:用于对数据进行文本格式的读/写操作,可在 QString、QIODevice或 QByteArray 上运行,比如把数据输出到 QString、QIODevice 或 QByteArray 对象…

Mysql命令行客户端常用命令

Mysql命令行客户端常用命令 注意点 下面展示的 database_name、table_name、column1、column2、value1、value2 和 datatype在自己用的时候需要替换为实际的值 在敲命令的时候要注意,一定要在末尾加上分号 操作 安装好Mysql之后,搜索找到以下应用 打…

QQ沐个人引导页html源码

好看的QQ沐个人引导页html源码,鼠标移动滑出美丽的线条收缩特效,界面美观大气,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 …

PDF24 Creator v11.12.1软件安装教程(附软件下载地址)

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! PDF24 Creator v11.12.1是一款免费、简便实用的多功能 PDF 工具。用户可通过直观拖放界面轻松组合、编辑和处理PDF文件。功能包括合并、分割、添加、…

Python筑基之旅-MySQL数据库(二)

目录 一、第三方库 1、mysql-connector-python 1-1、由来 1-2、优缺点 1-2-1、优点 1-2-1-1、官方支持 1-2-1-2、纯Python实现 1-2-1-3、全面支持 1-2-1-4、兼容性 1-2-1-5、易于使用 1-2-2、缺点 1-2-2-1、性能 1-2-2-2、安装 1-2-2-3、社区支持 1-2-2-4、扩…

Windows神级工具汇总

Windows神级工具汇总 文章目录 Windows神级工具汇总ConEmu(Cmder)TortoiseGitListary & everythingBeyond CompareDittof.luxTranclucentTBSyncToyMaximaTyporaKeePass 2VeraCryptTexLive & TeXstudio & MathpixmybaseSeafile8gadgetpack电脑…

基于RK3588的AI边缘计算网关设计

随着物联网和人工智能技术的飞速发展,边缘计算逐渐成为数据处理和分析的重要趋势。RK3588作为一款高性能的处理器,具备强大的计算能力和丰富的接口,为构建AI边缘计算网关提供了有力的支持。本文将介绍基于RK3588的AI边缘计算网关设计&#xf…

数据结构与算法-树-二分搜索树(二)

二叉树节点删除的几种情况 今天我们研究一下二叉搜索树(BST)的删除操作。删除操作对树来讲有些复杂,包含以下场景: 删除点是叶节点删除点非叶节点,只有左子树删除点非叶节点,只有右子树删除点非叶节点,既有左子树又有右…

面试-软件工程与设计模式相关,Spring简介

面试-软件工程与设计模式相关,Spring简介 1.编程思想1.1 面向过程编程1.2 面向对象编程1.2.1 面向对象编程三大特征 1.3 面向切面编程1.3.1 原理1.3.2 大白话?1.3.3 名词解释1.3.4 实现 2. 耦合与内聚2.1 耦合性2.2 内聚性 3. 设计模式3.1 设计模型七大原…

【排序算法】堆排序(Heapsort)

✨✨✨专栏:排序算法 🧑‍🎓个人主页:SWsunlight 目录 ​编辑 前言: 一、堆排序: 时间复杂度: 空间复杂度: 算法稳定性: 二、升序的实现:通过建大堆实…

《Effective Objective-C 2.0》读书笔记——接口与API设计

目录 第三章:接口与API设计第15条:用前缀避免命名空间冲突第16条:提供“全能初始化方法”第17条:实现description方法第18条:尽量使用不可变对象第19条:使用清晰而协调的命名方式第20条:为私有方…

中国真人认证的相亲交友恋爱平台有哪些?测评5款高质量婚恋脱单软件

不少朋友都表示自己的社交圈子过于狭窄,朋友也没几个,那今天就来聊聊我是通过何种平台找到对象的。我与男朋友是在网络上相识的,许多朋友同样也是通过网络来相亲。不过我们的成功,真的真的不能表明网络上全都是好人,各…

你不知道的C语言知识(第2期)

本期介绍🍖 主要介绍:C语言中一些大家熟知知识点中的盲区,这是第二期。 文章目录 1. 一维数组在内存中的存储方式2. sizeof计算数组元素的个数3. 二维数组3.1 概念3.2 二维数组在内存中的存储3.3 初始化省略行,但不能省略列 4. 变…

【Python】 去除字符串中的所有空白字符

基本原理 在Python中,字符串(String)是不可变的数据类型,这意味着一旦创建了一个字符串,就不能修改它的内容。然而,我们可以创建一个新的字符串,它包含原始字符串中的字符,但不包含…

入门四认识HTML

一、HTML介绍 1、Web前端三大核心技术 HTML&#xff1a;负责网页的架构 CSS&#xff1a;负责网页的样式、美化 JS&#xff1a;负责网页的行动 2、什么是HTML HTML是用来描述网页的一种语言。 3、Html标签 单标签<html> 双标签<h>内容</h> 4、标…

Visual Studio 下的Qt工程无法打开 “xxx.ui“ 文件和LNK1104 无法打开文件“Qt5Cored.lib”错误

一、问题&#xff1a; VS下Qt环境准备好后&#xff0c;创建了Qt工程然后点击 Form Files 下的 “xxx.ui” 文件&#xff0c;在弹出 Qt 设计师 界面后闪退并显示如下错误&#xff1a; 二、解决 1、工具栏处依次点击&#xff1a;扩展 一> Qt VS Tools 一> options 弹出选…

在windows下dat文件转mat

环境配置 需要安装hdf5库&#xff0c;参考https://blog.csdn.net/qq_36314864/article/details/139168631 代码下载 https://download.csdn.net/download/qq_36314864/89349060 为了支持大文件的.dat文件转换&#xff0c;我们需要考虑如何处理大量数据以避免内存不足的问题…

利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像

目录 环境准备 master&#xff08;2C/4G&#xff09; 192.168.88.3 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08;2C/2G&#xff09; 192.168.88.4 docker、kubeadm、kubelet、kubectl、flannel node02&#xff08;…

docker 安装 yapi

文章目录 docker 安装 yapi一、拉取镜像二、创建目录三、添加配置文件四、初始化数据库表五、启动 yapi六、测试以及修改默认密码 没有 MongDB 的可以先看这个教程&#xff1a;MongDB安装教程 docker 安装 yapi 版本&#xff1a; 1.9.5 一、拉取镜像 docker pull yapipro/y…

ClickHouse课件

列式存储数据库&#xff1a;hbase clickhouse 简介 ClickHouse入门 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用…