LORA的基本原理

news2024/11/22 15:55:26

本文将介绍如下内容:

  • 什么是Lora
  • 高效微调的基本原理
  • LORA的实现方式
  • LORA为何有效?

一、什么是LoRA

LoRA 通常是指低秩分解(Low-Rank Decomposition)算法,是一种低资源微调大模型方法,论文如下: LoRA: Low-Rank Adaptation of Large Language Models。
使用LORA,训练参数仅为整体参数的万分之一、GPU显存使用量减少2/3且不会引入额外的推理耗时。

二、高效微调的基本原理

以语言模型为例,在微调过程中模型加载预训练参数 Φ 0 \Phi_0 Φ0进行初始化,并通过最大化条件语言模型概率进行参数更新 Φ 0 \Phi_0 Φ0+ Δ Φ \Delta\Phi ΔΦ,即:
在这里插入图片描述

这种微调方式主要的缺点是我们学习到的参数增量 Δ Φ \Delta\Phi ΔΦ的维度和预训练参数 Φ 0 \Phi_0 Φ0是一致的,这种微调方式所需的资源很多,一般被称为full fine-tuing
研究者认为能用更少的参数表示上述要学习的参数增量 Δ Φ \Delta\Phi ΔΦ= Δ Φ ( Θ ) \Delta\Phi(\Theta ) ΔΦ(Θ),其中 ∣ Θ ∣ |\Theta| ∣Θ∣<< ∣ Φ 0 ∣ |\Phi_0| Φ0,原先寻找 Δ Φ \Delta\Phi ΔΦ的优化目标变为寻找 Θ \Theta Θ
在这里插入图片描述
这种仅微调一部分参数的方法称为高效微调。针对高效微调,研究者有很多的实现方式(如Adapter、prefixtuing等)。本文作者旨在使用一个低秩矩阵来编码 Δ Φ \Delta\Phi ΔΦ相比于其他方法,LORA不会增加推理耗时且更便于优化。

三、LORA的实现方式

1、Instrisic Dimension

我们先思考两个问题:为何用数千的样本就能将一个数十亿参数的模型微调得比较好?为何大模型表现出很好的few-shot能力?
Aghajanyan的研究表明:预训练模型拥有极小的内在维度(instrisic dimension),即存在一个极低维度的参数,微调它和在全参数空间中微调能起到相同的效果。
同时Aghajanyan发现在预训练后,越大的模型有越小的内在维度,这也解释了为何大模型都拥有很好的few-shot能力。

2、LORA

在这里插入图片描述
受instrisic dimension工作的启发,作者认为参数更新过程中也存在一个‘内在秩’。对于预训练权重矩阵 W 0 W_0 W0 ∈ \in R d ∗ k \mathbf{R^{d*k}} Rdk,我们可以用一个低秩分解来表示参数更新
Δ W \Delta W ΔW,即:
在这里插入图片描述
训练过程中冻结参数 W 0 W_0 W0,仅训练A和B中的参数。如上图所示,对于 h = W 0 x h=W_0 x h=W0x,前向传播过程变为:

在这里插入图片描述

四、LORA为何有效?

通过大量的对比实验,作者证明了LORA的有效性,但是作者希望进一步解释这种从下游任务中学到的低秩适应(low-rank adaptation)的特性。为此,作者提出了三个问题:

1、LORA应该作用于Transformer的哪个参数矩阵?

在这里插入图片描述
从上图我们可以看到:

  • 将所有微调参数都放到attention的某一个参数矩阵的效果并不好,将可微调参数平均分配到 W q W_q Wq W k W_k Wk的效果最好。
  • 即使是秩仅取4也能在 Δ W \Delta W ΔW中获得足够的信息。

因此在实际操作中,应当将可微调参数分配到多种类型权重矩阵中,而不应该用更大的秩单独微调某种类型的权重矩阵。

2、LORA最优的秩r是多少?

在这里插入图片描述
从上述实验结论我可以看到,在秩小到1或者2的时候,LORA的仍有不错的效果。因此作者假设:更新参数矩阵 Δ W \Delta W ΔW可能拥有极小的‘内在秩’。为求证此假设,作者需要计算不同秩对应的子空间之间的重叠程度,如下:
对于 r = 8 r=8 r=8 r = 64 r=64 r=64 两个秩,首先进行奇异值分解得到两个右奇异矩阵 U A r = 8 U_{Ar=8} UAr=8 U A r = 64 U_{Ar=64} UAr=64。作者希望得到: U A r = 8 U_{Ar=8} UAr=8 的top-i奇异向量有多少被包含在 U A r = 64 U_{Ar=64} UAr=64的top-j个向量中。可用格拉斯曼距离来表示这种子空间之间的相似关系:
在这里插入图片描述
在这里插入图片描述
从上图可以看出 r = 8 r=8 r=8 r = 64 r=64 r=64中的top奇异向量重叠得最多(颜色越小表示相似程度越高),也就是说top奇异向量的作用最大,其他的奇异可能会引入更多的噪声。这证明了更新参数矩阵
Δ W \Delta W ΔW存在极小的‘内在秩’。

3、参数增量 Δ W \Delta W ΔW W W W的关系?

为揭示微调过程的内在原理,作者进行了如下实验:
在这里插入图片描述
从上图的对比结果,作者发现三个现象:

  • 相比于随机矩阵, Δ W \Delta W ΔW W W W有强关联。 从表中的 0.32 > > 0.02 0.32>>0.02 0.32>>0.02可以看出。
  • Δ W \Delta W ΔW仅放大了 W W W中任务相关的特征, 并未放大头部特征。我们知道F范数的平方等于奇异值和的平方,因此从表中的 0.32 < < 21.67 0.32<<21.67 0.32<<21.67可以看出 Δ W \Delta W ΔW W W W的头部奇异向量并无关联。
  • r等于4时, Δ W \Delta W ΔW的放大系数已经很大了。 计算 6.91 / 0.32 ≈ 21.5 6.91/0.32 \approx21.5 6.91/0.3221.5可知 Δ W \Delta W ΔW能将 W W W 中相关的特征向量放大21.5倍。

因此我们可以得到结论:在训练过程中,低秩的适应矩阵 Δ W \Delta W ΔW仅仅放大了对下游任务有用的特征,而不是预训练模型中的主要特征。

参考:

  • LORA微调系列(一):LORA和它的基本原理

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

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

相关文章

【漏洞复现】优卡特脸爱云一脸通智慧管理平台文件上传漏洞

Nx01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大&#xff0c;运行稳定&#xff0c;操作简单方便&#xff0c;用户界面美观&#xff0c;轻松统计数据的一脸通系统。无需安装&#xff0c;只需在后台配置即可在浏览器登录。 功能包括&#xff1a;系统管理中心、人员信息管…

智慧校园实验室安全综合管理平台如何保障实验室安全?

一、建设思路 实验室安全综合管理平台是基于以实验室安全&#xff0c;用现代化管理思想与人工智能、大数据、互联网技术、物联网技术、云计算技术、人体感应技术、语音技术、生物识别技术、手机APP、自动化仪器分析技术有机结合&#xff0c;通过建立以实验室为中心的管理体系&…

局域网的好哥们——广域网

广域网&#xff08;Wide Area Network&#xff0c;WAN&#xff09;是一种覆盖范围广泛的网络&#xff0c;它连接了不同地理位置的计算机和网络设备&#xff0c;并允许它们进行数据通信和资源共享。本文将介绍广域网的基本概念&#xff0c;包括定义、特点、构成要素以及应用场景…

思维导图制作MindNode 2023中文

MindNode 2023是一款思维导图应用程序&#xff0c;专为创意和组织思维而设计。它通过直观的界面和强大的功能&#xff0c;帮助用户创建、编辑和分享思维导图。MindNode 2023支持多种主题和节点&#xff0c;允许用户自定义图标、颜色和形状&#xff0c;使思维导图更加清晰、有条…

策略模式-实践

俗话说&#xff1a;条条大路通罗马。在很多情况下&#xff0c;实现某个目标的途径不止一条&#xff0c;例如我们在外出 旅游时可以选择多种不同的出行方式&#xff0c;如骑自行车、坐汽车、坐火车或者坐飞机&#xff0c;可根据实 际情况&#xff08;目的地、旅游预算、旅游时间…

Linux第26步_在虚拟机中安装stm32wrapper4dbg工具

在Ubuntu下编译TF-A 或者 Uboot时&#xff0c;我们需要用到ST公司提供的stm32wrapper4dbg工具。stm32wrapper4dbg工具的源码下载地址为: GitHub - STMicroelectronics/stm32wrapper4dbg 记得我们在前面已经创建过的目录如下&#xff1a; 1&#xff09;、在根目录下&#xf…

螺纹钢负公差轧制中的测径仪应用

1、负公差轧制意义 为了满足生产使用要求&#xff0c;并根据轧制水平&#xff0c;在产品标准冲规定钢材尺寸的波动范围&#xff0c;允许钢材的实际尺寸与公称尺之间有一定的偏差&#xff0c;这个偏差一般称公差&#xff0c;公差分正、负公差&#xff0c;钢材按负公差轧制时&…

TS 36.331 V12.0.0-过程(4)-测量

​本文的内容主要涉及TS 36.331&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

【检索稳定】第三届新能源、储能与电力工程国际学术会议(NESP 2024)

第三届新能源、储能与电力工程国际学术会议&#xff08;NESP 2024&#xff09; 2024 3rd International Conference on New Energy, Energy Storage and Power Engineering (NESP 2024) 近几十年来&#xff0c;全球能源消耗迅速增加&#xff0c;因此寻找和开发性能优良的环保…

试试这个开源神器 55K star! 开箱即用

还记得以前工作上遇到困难&#xff0c;会申请开发大神远程帮忙&#xff0c;那时候用的都是TeamViewer&#xff0c;但是随着TeamViewer的收费&#xff0c;这些都已成为过往。 今天我们推荐的开源项目就是让你可以轻松平替TeamViewer&#xff0c;一款远程桌面神器&#xff0c;本…

Kotlin程序设计(一)基础语法

Kotlin程序设计初级篇 **注意&#xff1a;**在开始学习之前&#xff0c;推荐各位小伙伴有一定的编程语言基础&#xff0c;前置课程&#xff1a;《JavaSE 教程》或《C 语言程序设计》如果没有其他语言的基础&#xff0c;在学习Kotlin时会非常吃力&#xff0c;这门语言语法糖多到…

基于C++的ORM框架sqlpp11入门介绍(附MySQL运行实例)

基本介绍 sqlpp11 是 C 的类型安全的 SQL 模版库。 Sqlpp11的官方下载地址是&#xff0c; GitHub - rbock/sqlpp11: A type safe SQL template library for C 在这里&#xff0c;可以找到官方的详细介绍文档&#xff0c; https://github.com/rbock/sqlpp11/tree/main/docs…

解锁Python库中操作系统级别模块psutil

目录 一、psutil库简介 二、安装psutil库 三、获取系统信息 1、获取CPU信息&#xff1a; 2、获取内存信息&#xff1a; 3、获取磁盘信息&#xff1a; 4、获取网络信息&#xff1a; 四、进程管理 五、系统信息和监控 六、总结 随着Python的普及&#xff0c;越来越多的…

nuxt pm2使用、启动、问题解决方案

pm2简介 pm2是一个进程管理工具,可以用它来管理node进程&#xff0c;并查看node进程的状态&#xff0c;当然也支持性能监控&#xff0c;进程守护&#xff0c;负载均衡等功能&#xff0c;在前端和nodejs的世界中用的很多 pm2安装 安装pm2: $ npm install -g pm2查看pm2的安装…

iPad Pro如何使用SSH远程连接服务器云端编程开发【内网穿透】

文章目录 1. 在iPad下载Code APP2.安装cpolar内网穿透2.1 cpolar 安装2.2 创建TCP隧道 3. iPad远程vscode4. 配置固定TCP端口地址4.1 保留固定TCP地址4.2 配置固定的TCP端口地址4.3 使用固定TCP地址远程vscode 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 …

JavaScript 增加数组中指定元素(5种方法)

、 文章目录 目录 文章目录 前言 一、数组是什么&#xff1f; 二、数组增步骤 总结 前言 在现代的Web开发中&#xff0c;JavaScript是一种不可或缺的编程语言。它具有强大的功能和灵活的语法&#xff0c;使得开发人员能够轻松地处理各种任务。其中&#xff0c;处理数组是JavaS…

基于JavaWeb+BS架构+SpringBoot+Vue基于web的多媒体素材管理系统的设计和实现

基于JavaWebBS架构SpringBootVue基于web的多媒体素材管理系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 1 1.1选题背景与意义 1 1.1 研究背景 1 1.2 研究意义…

Python办公自动化 – 数据预处理和数据校验

Python办公自动化 – 数据预处理和数据校验 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – 对Ex…

网络基础学习(3):交换机

1.交换机结构 &#xff08;1&#xff09;网线接口和后面的电路部分加在一起称为一个端口&#xff0c;也就是说交换机的一个端口就相当于计算机上的一块网卡。 如果在计算机上安装多个网卡&#xff0c;并让网卡接收所有网络包&#xff0c;再安装具备交换机功能的软件&#xff0…

QT开发 2024最新版本优雅的使用vscode开发QT

▬▬▬▬▬▶VS开发QT◀▬▬▬▬▬ &#x1f384;先看效果 &#x1f384;编辑环境变量 如图添加环境变量&#xff01;&#xff01;&#xff01; 东西全在QT的安装目录&#xff01;&#xff01;&#xff01; 找到的按照我的教程再装一次&#xff01;&#xff01;&#xff01; 点…