当前位置: 首页 > news >正文

LORA的基本原理

本文将介绍如下内容:

  • 什么是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和它的基本原理

相关文章:

LORA的基本原理

本文将介绍如下内容&#xff1a; 什么是Lora高效微调的基本原理LORA的实现方式LORA为何有效&#xff1f; 一、什么是LoRA LoRA 通常是指低秩分解&#xff08;Low-Rank Decomposition&#xff09;算法&#xff0c;是一种低资源微调大模型方法&#xff0c;论文如下: LoRA: Low…...

Vue2x的自定义指令和render函数使用自定义指令

在某些情况下&#xff0c;我们需要对底层DOM进行操作&#xff0c;而内置的指令不能满足需求&#xff0c;就需要自定义指令。一个自定义指令由一个包含类似组件的生命周期的钩子的对象来定义&#xff0c;钩子函数会接收到指令所绑定的元素作为参数。 定义指令 常用两种方式进行…...

Linux学习(2):文件目录指令

Linux学习&#xff08;2&#xff09;&#xff1a;文件目录指令 1 文件目录指令1.1 pwd 用来显示当前目录的绝对路径的1.2 ls 显示当前目录的信息1.3 cd 切换到指定目录1.4 mkdir 创建目录1.5 rmdir 删除空目录1.6 touch 创建空文件1.7 cp 拷贝文件到指定目录1.8 rm 移除文件或目…...

Dockerfile的ENV

文章目录 环境总结测试测试1测试2测试3测试4测试5测试6 参考 环境 RHEL 9.3Docker Community 24.0.7 总结 如果懒得看测试的详细信息&#xff0c;可以直接看结果&#xff1a; 一条 ENV 指令可以定义多个环境变量。Dockerfile里可以包含多条 ENV 指令。环境变量的值不需要用…...

【普中开发板】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易密码锁设计 1.主要功能&#xff1a;资料下载链接&#xff1a; 实物图&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 【普中】基于51单片机的简易密码锁设计 ( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.16(有低版本) 程…...

c语言之输出函数用法 putchar

putchar函数 putchar函数是c语言输出函数&#xff0c;但它只能输出单个字符&#xff0c;如果要输出字符串就不合适了。 应用举例 #include<stdio.h> int main() {putchar(a);putchar(4);putchar(\n);return 0: } 从上面代码可以看出&#xff0c;单字符必须用单引号’…...

高精度原边控制电路D3820,CC/CV精度±5%以内,可作为10W以下小功率、低待机功耗的电源替代,可兼容OB2520

高精度原边控制离线式PWM功率开关 特点 1、全电压范围CC/CV精度保持在5%以内 2、用原边控制&#xff0c;无需TL431和光耦 3、欠压锁定&#xff08;UVLO&#xff09;及自动重启 4、驱动BJT 5、内置前沿消隐&#xff08;LEB&#xff09; 6、逐周期限流模式 7、输出线压降…...

Python库学习(十四):ORM框架-SQLAlchemy

1.介绍 SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射&#xff08;ORM&#xff09;库。它允许开发者通过 Python 代码而不是 SQL查询语言来操作数据库。SQLAlchemy 提供了一种灵活且强大的方式来与关系型数据库交互&#xff0c;支持多种数据库后端&#xff0c;如 P…...

信息学奥赛一本通1014:与圆相关的计算

1014&#xff1a;与圆相关的计算 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 167892 通过数: 85008 【题目描述】 给出圆的半径&#xff0c;求圆的直径、周长和面积。输入圆的半径实数r&#xff0c;输出圆的直径、周长、面积&#xff0c;每个数保留小数点后4…...

Vscode——通过SSH连接服务器

1、打开vscode —— 点击左下角 2、选择SSH 3、点击后会自动安装三个插件 4、点击左下角——连接服务器 5、再次点击左下角——连接服务器 6、登录成功后打开终端即可操作 快捷键&#xff1a;ctrl ~ 7、查看编辑服务器文件目录 点击文件——打开文件夹 8、确定后再次输入登录密…...

UE5 通过接口实现角色描边效果

接口不能够被实例化&#xff0c;不能够在内部书写函数的逻辑和设置属性&#xff0c;只能够被继承使用。它能够让不同的类实现有相同的函数&#xff0c;继承接口的类必须实现接口的函数。 并且&#xff0c;我们可以在不同的类里面的函数实现也不同&#xff0c;比如A类描边是红色…...

电脑提示dll丢失怎么办,教你一招将dll修复

使用电脑时&#xff0c;你的电脑是否出现关于dll文件丢失或找不到的问题&#xff0c;出现这种问题又该如何解决呢&#xff0c;dll文件问题会导致软件无法打开&#xff0c;或者会导致系统崩溃。今天就来教大家如何快速解决dll文件修复。 一.如何修复dll修复 方法一&#xff1a;…...

MATLAB mat 文件

1.mat文件格式 MATLAB&#xff08;Matrix Laboratory&#xff09;使用 .mat 文件格式来存储和加载数据。MAT 文件是一种二进制文件格式&#xff0c;能够保存 MATLAB 中的各种数据类型&#xff0c;包括矩阵、向量、结构体、元胞数组等。 特定和用途&#xff1a; 二进制格式&a…...

Linux du和df命令

目录 一. df二. du 一. df ⏹用于显示系统级别&#xff0c;磁盘分区上的可用和已用空间的信息 -h&#xff1a;以人类可读的格式显示文件系统大小 ⏹每秒钟监视当前磁盘的使用情况 watch 用于周期性的执行特定的命令-n 1 表示每一秒刷新一次命令执行的结果df -h ./ 表示周期性…...

Adobe Photoshop 快捷键

PS快捷键 图层 选择图层 Ctrl T&#xff1a;可以对图层的大小和位置进行调整 填充图层 MAC: AltBackspace (前景) or CtrlBackspace (背景) WINDOWS: AltDelete (前景) or CtrlDelete (背景) 快速将图层填充为前景色或背景色 平面化图层&#xff08;盖印图层&#xff09…...

缓存代理服务器

1 缓存代理 1.1 缓存代理的概述 web代理的作用 缓存网页对象&#xff0c;减少重复请求 存储一些之前被访问的或且可能将要备再次访问的静态网页资源对象&#xff0c;使用户可以直接从缓存代理服务器获取资源&#xff0c;从而减少上游原始服务器的负载压力&#xff0c;加快整…...

四道面试题

一.网络的七层模型 网络的七层模型&#xff0c;也被称为OSI七层协议模型&#xff0c;是一种用于理解和描述网络通信过程的概念模型。这个模型将网络通信过程划分为七个层次&#xff0c;从低到高分别是&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层和应用层…...

BRC20 技术分析

文章目录 什么是 BRC20 ?brc20 白皮书。重点基于链上数据解析获取交易详情返回值如何将 16 进制转换为 字符串没有节点,如何获取数据?见证隔离如何解析出 BRC20 数据?最后如何快速搭建节点BRC20 Indexer...

【Unity】Timer计时器属性及使用

可以代替协程完成延时操作 可以不用Update进行计时 GitHub开源计时插件 网址&#xff1a;https://github.com/akbiggs/UnityTimer/tree/master 导入&#xff1a;URL&#xff1a;https://github.com/akbiggs/UnityTimer.git 基本功能&#xff1a; 创建计时器&#xff1a; Time…...

Salesforce lightning优势介绍

今天我要给大家说说&#xff0c;Salesforce的两个版本&#xff1a;第一代Classic UI&#xff0c;和13年以来为迎接移动化趋势而推出的新Lightning UI。Classic马上就要和我们说88了&#xff0c;那Lightning究竟有哪些大杀器让我们无法抗拒呢&#xff1f;让我们一探究竟吧。 首先…...

FiveM 新手服主必看:开源与托管(闭源)到底是什么

大家好&#xff0c;我是难言&#xff0c;你们的老朋友了。在 FiveM 生态深耕多年&#xff0c;我发现许多新手服主对开源与托管&#xff08;闭源&#xff09;插件的概念认知模糊&#xff0c;甚至无法区分二者的核心差异。更不合理的是&#xff0c;圈内逐渐形成鄙视链&#xff0c…...

Windows Cleaner:拯救C盘爆红的终极免费解决方案

Windows Cleaner&#xff1a;拯救C盘爆红的终极免费解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的电脑屏幕突然弹出"C盘空间不足"的红…...

智能体编排框架实战:构建可控可观测的多AI协同工作流

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是想把多个大语言模型&#xff08;LLM&#xff09;和工具&#xff08;Tools&#xff09;组合起来&#xff0c;搞点自动化流程。市面上现成的框架不少&#xff0c;但要么太重&#xff0c;要么太“黑盒”&#xff0c;想…...

云原生环境中的混沌工程实践指南

云原生环境中的混沌工程实践指南 引言 混沌工程是一种主动验证系统可靠性的方法&#xff0c;通过在生产环境中注入故障来发现潜在的系统弱点。本文将深入探讨如何在云原生环境中实施混沌工程。 一、混沌工程概述 1.1 核心概念 ┌───────────────────────…...

告别安装报错!Windows 10/11 保姆级 MySQL 5.7.44 配置指南(含my.ini文件详解)

Windows 10/11 下 MySQL 5.7.44 终极安装指南&#xff1a;从避坑到精通配置 每次在Windows系统上安装MySQL&#xff0c;总会有那么几个"经典"错误让人抓狂——服务启动失败、初始化报错、环境变量配置无效... 作为一个经历过无数次安装折磨的老手&#xff0c;我决定…...

从ChatGPT插件到自主Agent工作流:2026年AI工具栈跃迁的4个关键断点及突破路径

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;2026年AI工具栈搭建完整指南 构建面向生产环境的AI工具栈&#xff0c;需兼顾前沿性、稳定性与可扩展性。2026年主流实践已从单点模型调用转向模块化、可观测、可编排的智能工作流基础设施。以下为推荐技术选型…...

智能视觉组的比赛方案建议

简 介&#xff1a; 【智能视觉组比赛评分改进建议】针对不同比赛地图导致成绩评判不公的问题&#xff0c;建议赛前准备多张固定地图并测算标准时间&#xff1a;1&#xff09;由官方测试每张地图的理论最优时间和实际小车运行时间&#xff1b;2&#xff09;比赛成绩以选手用时与…...

3分钟学会Charticulator:零代码制作专业数据图表的终极指南

3分钟学会Charticulator&#xff1a;零代码制作专业数据图表的终极指南 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 还在为制作专业图表而头疼吗&#xff1f;…...

收藏!小白程序员必看:读懂AI岗位JD,精准投递不陪跑

本文针对AI岗位认知模糊、JD理解困难等问题&#xff0c;为读者提供六步解析法&#xff0c;包括明确岗位性质、了解公司类型、评估薪资水平、硬性条件筛选、分析岗位职责和技能匹配。通过这些步骤&#xff0c;帮助读者精准定位适合自己的AI岗位&#xff0c;避免盲目投递。同时&a…...

RIS辅助无人机通信的能效优化与深度强化学习应用

1. 项目概述&#xff1a;RIS辅助无人机通信的能效革命在应急救灾、偏远地区覆盖等场景中&#xff0c;无人机(UAV)通信系统常面临两大核心挑战&#xff1a;一是复杂地形导致的信号遮挡问题&#xff0c;二是无人机有限的续航能力制约了长期作业。传统解决方案如增加中继节点会引入…...