大模型学习基础(九)LoRA微调原理

LoRA的目的在于用更便捷的方式让经过预训练的大模型学会新的技能。

让预训练大模型学习新技能有两种方式:1.重新训练整个模型2.微调训练。重新训练大模型的成本是极其高昂的,因此LoRA是更常见的选择,它只改动大模型中的部分参数,且最终表现结果与重新训练近似。

举例,例如大模型具有参数矩阵,

矩阵共有20个参数

假设进行全量微调(每个参数都变更)后,参数矩阵变为

矩阵变化过程可以表述为:为增量矩阵,

,对矩阵可以进行低秩分解,将其表示为两个低秩矩阵的乘积:

有20个参数,而总共有18个参数。通过对增量矩阵进行低秩分解,使得需要更新的参数量减少了,这就是LoRA微调的原理。而在实际的LoRA的原理中,可以将待训练参数的数量降至0.01%~3%,大大减少了微调的时间复杂度,而性能却接近全微调。

LoRA微调有三方面的优势:

1.减少了待训练参数的数量,大幅度减小训练时间,而性能却接近全量微调。

2.速度快,显存占用低、训练快、部署快

3.模块化,LoRA模块像插件一样,不会影响原模型的使用

模块化设计有四大优势

1.避免灾难性遗忘。直接修改参数矩阵W可能导致模型忘记原始能力,LoRA通过修改增量矩阵,避免了对原参数矩阵的直接修改,避免了对原模型能力的破坏

2.存储高效,一个基础模型+多个LoRA模块,要比存储多个模型更节省内存

3.快速切换任务,可以通过加载不同的LoRA模块,几秒内切换任务

4.兼容性强,多个团队可以共享同一基础模型,各自开发专属的LoRA模块

LoRA微调的灵感来自于奇异值分解(SVD)。

任意一个矩阵M,可以通过SVD分解为三个矩阵的乘积,,其中为正交矩阵,为对角矩阵。

如对于矩阵进行SVD分解,则

对角阵中的值称之为奇异值,非零奇异值的个数等于矩阵的秩。前三个奇异值最大。保留U中的前三列、中的前三列三行、

V中的前三行,然后将其相乘得到新的

对比S和S',

我们发现二者是非常近似的。

这意味着对于大模型中的增量矩阵,我们同样可以将其表述为更低维度的矩阵的乘积从而减少参数量,而基本保留原有信息。

通过对参数矩阵W进行低秩分解可以大大减少更新参数的时间复杂度。

例如对于512*512的矩阵,如果这个矩阵的秩为8,那么对其进行奇异值分解,

中主对角线上将有8个非零元素,那么保留的前8列,的8行8列,的前8行,则维度为512*8,维度为8*8,维度为8*512。

最终可以将其近似为

维度为512*8,维度为8*512,总参数量为512*8*2=8288,而原参数矩阵M参数量为512*512=262144,经过SVD分解、低秩近似后参数量减少为3%,而根据SVD性质我们可以知道M和AB是非常近似的。

回到增量矩阵。对于增量,其维度为m*m,我们假设其是低秩的,其秩为n,而n<<m,那么可以将写为维度为m*n,维度为n*m。

LoRA微调并不需要进行SVD操作,而是通过借鉴SVD的思想,将增量参数矩阵表述为AB的形式,这样在反向传播时可以减少更新参数矩阵的时间复杂度。

在训练模型时,可以直接将写为的初始值人为设定,然后通过反向传播更新。在反向传播更新时,需要更新的参数量大大减少,即LoRA微调的效果。

相关推荐
li-xun2 分钟前
2026年6月14日博客精选
人工智能·ai
DogDaoDao13 分钟前
【GitHub】 Headroom 深度解析:AI Agent 上下文压缩层的完整技术拆解
人工智能·深度学习·程序员·github·ai agent·智能体·agent skill
挖坑的张师傅20 分钟前
方便 Mac 本机运行 e2b 的沙箱方案 e2b-local
人工智能·后端
生成论实验室25 分钟前
认知芯片:让判断力在物理定律上运行——AI芯片的第三条路
人工智能·语言模型·机器人·自动驾驶·安全架构
浦信仿真大讲堂25 分钟前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
文艺倾年32 分钟前
【强化学习】MDP、贝尔曼方程与CartPole 编程,20W字总结(二)
人工智能·软件工程·强化学习
卡梅德生物科技小能手36 分钟前
卡美德生物科普CD136(RON受体):从基础特性到实验应用
经验分享·深度学习·生活
ttt606_38 分钟前
门店业绩上报系统功能拆解:门店业绩上报如何提高数据精确度与时效性?
大数据·人工智能
phltxy39 分钟前
Spring AI 可观测性与 Zipkin 实战
java·人工智能·spring
ACP广源盛1392462567343 分钟前
GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
大数据·人工智能·嵌入式硬件·gpt·spark