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

文章链接: [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.mzph.cn/news/851074.shtml

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

相关文章

图Transformer 推荐系统

文章目录 Graph Transformer for Recommendation摘要引言相关工作方法3.1 Graph Invariant Rationale Learning3.1.1 Graph Collaborative Rationale Discovery3.1.2 Global Topology Information Injection3.1.3 Rationale Discovery with Graph Transformer.3.1.4 Task-Adapt…

【python】OpenCV—Histogram Matching(9.2)

学习来自OpenCV基础(17)基于OpenCV、scikit-image和Python的直方图匹配 文章目录 直方图匹配介绍scikit-image 中的直方图匹配小试牛刀风格迁移 直方图匹配介绍 直方图匹配(Histogram Matching)是一种图像处理技术,旨…

STM32Cube系列教程11:STM32 AES加解密模块性能测试

文章目录 本次测试环境本次测试所使用的系统时钟为48MHz本次测试主要测试对大量数据进行加解密所需的时间,本次为不严谨测试,忽略了程序调用耗时,结果仅供参考。 AES算法与数据加解密加密与解密对称加解密AES算法AES-ECBAES-CBC 填充算法PKCS…

MySQL—多表查询—练习(1)

一、引言 上几篇关于多表查询的基本几个部分全部学习完了。 多表查询的基本类型的查询包括以下: 1、内连接(隐式内连接、显示内连接):... [INNER] JOIN ... ON 条件; ) 2、外连接(左外连接、右外连接&…

数据库管理-第200期 身边的数据库从业者(20240610)

数据库管理200期 2024-06-10 数据库管理-第200期 身边的数据库从业者(20240610)首席-薛晓刚院长-施嘉伟邦德-王丁丁强哥-徐小强会长-吴洋灿神-熊灿灿所长-严少安探长-张震总结活动预告 数据库管理-第200期 身边的数据库从业者(20240610&#…

HTML LocalStorage

一篇关于HTML本地存储的文章 Window.localStorage 只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。 localStorage 类似 sessionStorage,但其区别在于:存储…

redis03 补充 redis驱动模型:事件驱动

1.文件事件 1.1 1.2 注: epoll是linux系统的底层IO多路复用技术 kqueue是mac的底层IO多路复用技术 在 Epoll 中,Epoll 就是事件通知器,可以向 Epoll 注册我们感兴趣的事件。 1.3 1.4

群体优化算法----火山爆发算法介绍以及离散优化Pareto最优解示例

介绍 火山爆发算法(Volcano Eruption Algorithm,VEA)是一种新兴的群智能优化算法,其灵感来源于火山爆发的自然现象。火山爆发算法模拟了火山爆发过程中熔岩流动和喷发的行为,以寻找全局最优解。这种算法利用了火山爆发…

PR如何让音频淡入淡出

PR如何让音频淡入淡出 方法一:效果控件关键帧方法二:音频轨道关键帧 以淡入为例,介绍如何设置淡入的两种方法,推荐使用第二种。淡出效果类似。 方法一:效果控件关键帧 选中音频,点击效果控件 在淡入结束的…

react项目--博客管理

文章目录 技术栈登录存信息配置tokenhooks使用路由配置各页面技术总结首页发布文章文章详情页 个人主页分类页 本篇文章总结一个开发的react项目—博客系统 技术栈 React、react-redux、react-router 6,Ant Design,es6,sass,webp…

RPA-UiBot6.0数据整理机器人—杂乱数据秒变报表

前言 友友们是否常常因为杂乱的数据而烦恼?数据分类、排序、筛选这些繁琐的任务是否占据了友友们的大部分时间?这篇博客将为友友们带来一个新的解决方案,让我们共同学习如何运用RPA数据整理机器人,实现杂乱数据的快速整理,为你的工作减负增效! 在这里,友友们将了…

AI 边缘计算平台 - 回归开源 BeagleY-AI 简介

BeagleBoard.org 于 3 月 27 号发布了一款单板计算机 BeagleY-AI ,这款 SBC 凭借其完全开源的特性,旨在激发并推动开源社区的生态系统繁荣发展。 一、简介: BeagleY-AI 采用德州仪器新推出的 AM67A AI 视觉处理器。这款处理器集成了四个 64…

UE5基础1-下载安装

目录 一.下载 二.安装 三.安装引擎 四.其他 简介: UE5(Unreal Engine 5)是一款功能极其强大的游戏引擎。 它具有以下显著特点: 先进的图形技术:能够呈现出令人惊叹的逼真视觉效果,包括高逼真的光影、材…

Redis原理篇——哨兵机制

Redis原理篇——哨兵机制 1.Redis哨兵2.哨兵工作原理2.1.哨兵作用2.2.状态监控2.3.选举leader2.4.failover 1.Redis哨兵 主从结构中master节点的作用非常重要,一旦故障就会导致集群不可用。那么有什么办法能保证主从集群的高可用性呢? 2.哨兵工作原理 …

CDR2024软件破解Keygen激活工具2024最新版

CorelDRAW Graphics Suite2024最新版,这是一款让我爱不释手的图形设计神器!作为一个软件评测专家,我一直在寻找一款能够提升我的设计效率和创造力的工具。而这款软件,简直就是为我量身定制的!🎉 「CorelDR…

插卡式仪器模块:示波器模块(插卡式)

• 12 位分辨率 • 125 MSPS 采样率 • 支持单通道/双通道模块选择 • 可实现信号分析 • 上电时序测量 • 抓取并分析波形的周期、幅值、异常信号等指标 • 电源纹波与噪声分析 • 信号模板比对 • 无线充电(信号解调) 通道12输入阻抗Hi-Z, 1 MΩ…

matlab使用教程(95)—显示地理数据

下面的示例说明了多种表示地球地貌的方法。此示例中的数据取自美国商务部海洋及大气管理局 (NOAA) 国家地理数据中心,数据通告编号为 88-MGG-02。 1.关于地貌数据 数据文件 topo.mat 包含地貌数据。topo 是海拔数据,topomap1 是海拔的颜色图。 load t…

web前端:作业二

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 1.将ul的子l…

Java加密体系结构参考指南-Java Cryptography Architecture

本文是从英文的官网摘了翻译的&#xff0c;用作自己的整理和记录。水平有限&#xff0c;欢迎指正。版本是&#xff1a;22 原文地址&#xff1a;https://docs.oracle.com/en/java/javase/22/security/java-cryptography-architecture-jca-reference-guide.html#GUID-815542FE-CF…

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

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