笔记:LoRA,一种针对大语言模型的参数高效微调方法

论文地址:2106.09685 LoRA: Low-Rank Adaptation of Large Language Models

本笔记的目的不是完全对论文进行解释,而是重在理解LoRA的思想。

目录

1.核心思想

2.关键优势

3.主体架构

1.核心思想

核心假设: 大模型适配时的权重更新矩阵具有低内在秩,无需全秩更新。

实现方式: 冻结预训练权重,注入低秩矩阵,权重更新为,前向传播为

初始化: 随机高斯初始化,初始化为,训练初;用缩放输出,稳定超参。

推理优势: 可将合并,无额外推理延迟

2.关键优势

参数极省 :GPT-3 175B 场景下,可训练参数减少1 万倍 ,显存占用降3 倍

训练高效:无需计算冻结参数梯度,训练吞吐量提升约 25%,硬件门槛降低。

部署灵活:共享预训练模型,仅切换小尺寸 LoRA 权重即可快速切任务。

效果等价:在 RoBERTa、DeBERTa、GPT-2、GPT-3 上,效果持平 / 优于全量微调。

兼容性强:可与 Prefix Tuning 等方法结合。

3.主体架构

以上是LoRA结构的示意图,左侧为冻结参数,右侧为可训练的LoRA参数。

从结构上看,LoRA 并不是在原有大模型之外重新搭建一个完整的小模型,而是在原有线性层旁路引入一个低秩更新分支。对于原始线性变换 ,LoRA 将其改写为

其中为冻结的预训练权重,A和B为新增的可训练低秩矩阵,且秩。训练开始时通常令服从随机高斯初始化,因此初始阶段,模型的前向结果与原始预训练模型保持一致,随后再通过反向传播逐步学习这一低秩增量。同时,LoRA 使用对更新分支进行缩放,以减小不同 rank 设置下的超参数敏感性。部署时,还可以将直接并入原权重中,因此不会额外增加推理延迟。

如果从深度学习网络的一般训练原理来看,LoRA 与普通网络训练在流程上并没有本质区别:同样是输入样本、前向传播计算输出、根据损失进行反向传播,再通过梯度更新参数。

不同之处在于,传统全量微调会更新模型中的大部分甚至全部参数,而 LoRA 只允许误差梯度流向新增的低秩矩阵A与B,预训练权重仅参与前向计算,不再被更新。

对于大模型,LoRA一般作用于多头自注意力机制(transformer)的K,Q,V矩阵上。上图更清楚的展示了LoRA是怎么插进一个Transformer layer的,尤其是attention里的投影位置

LoRA 之所以常被加在K,Q,V等投影矩阵上,是因为这些位置正好决定了注意力机制"看哪里、看什么、带回什么信息"。输入特征经过线性映射后形成查询、键和值,随后再完成相似度计算与加权汇聚。因此,一旦在这些投影矩阵上加入低秩增量,模型对上下文的关注方式、信息提取方式以及输出表征都会随之变化。也就是说,LoRA 虽然参数量很小,但它作用的位置并不边缘,而是直接切入了Transformer表征流动的关键环节。

因此,LoRA 可以理解为:在不破坏大模型主体结构的前提下,通过在注意力等关键线性层中加入低秩增量,用极少的训练参数完成对原有表示空间的任务定向修正。

4.思考

为什么插入K,V的效果最好?

Q(Query) 决定"当前 token 想找什么"。

V(Value) 决定"被注意到之后,实际传回来什么内容"。

因为 Q/V 直接控制"怎么找信息"和"把什么信息写回主干",在固定参数预算下,它们属于最能撬动注意力行为的位置;而论文实证上也确实发现比只改​ 更划算。

为什么不直接更新矩阵而是将其低秩分解为

因为 如果直接更新W ,本质上就回到了全量微调,或者至少接近"直接学一个大更新矩阵------这会把 LoRA 最核心的优势全丢掉。

论文的出发点是这样的:

  • 全量微调时,每个下游任务都要学一整套大参数增量,代价太高。
  • 因此他们把任务增量重新编码成一个更小的参数集合,并提出用低秩表示 来编码
  • 具体到单个矩阵,就是不直接学完整 ΔW\Delta WΔW,而是假设适配阶段的更新具有低内在秩 ,于是写成

其中。训练时冻结,只学

这样做有四个直接好处。

第一,参数量和显存会骤降。

第二,它押注"有效更新本来就是低秩的"。

第三,低秩分解不是削弱表达能力到不可恢复。

第四,可以合并回去,不增加推理延迟。

是不是本质上就是从特征交互上下功夫,让模型/网络像目标下游任务优化?

本质上不只是"从特征交互上下功夫",而是:

  • 冻结原模型的大部分通用表征能力
  • 只在少数高杠杆线性层上加入低秩更新
  • 让模型沿着对下游任务更有用的方向发生偏移

LoRA 的核心抓手不是泛泛的特征交互,而是对参数更新空间做低秩约束,并把这类更新放在 attention 投影这类最能影响信息流的位置上。

可以总结为:LoRA 通过在关键线性层上施加低秩增量,不重写原模型主体,而是重定向原有特征的组织与交互方式,使其更贴合下游任务。

LoRA的思想理论上也可以用于其他深度网络?

理论上能。但不等于都同样划算。

LoRA 的原则首先适用于执行矩阵乘法的 dense layers, 虽然论文重点研究的是 Transformer 语言模型,但其提出的原则一般适用于任何带有 dense layers 的神经网络

所以理论上它当然不只限于 Transformer,也可以用于:

  • CNN 里的全连接层,甚至某些可重参数化卷积位置
  • 多模态网络里的投影层
  • 图网络里的线性变换层
  • 其他带大量线性映射的深度模型

可总结为:LoRA 的核心并非重新训练整个模型,而是在保留预训练通用能力的基础上,通过对关键线性层施加低秩更新,调节特征表征与信息交互方式,使网络向目标下游任务定向适配。这一思想理论上可推广到其他含dense layers的深度网络。

相关推荐
tntxia2 小时前
正则化在机器学习中的作用
人工智能
陌路205 小时前
初步认识-大模型-基础认知
语言模型
fuquxiaoguang7 小时前
中间件的“价值重估”:传统同质化竞争终结,AI智能编排时代开启
人工智能·中间件
触底反弹8 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
腾渊信息科技公司8 小时前
工业数据运维痛点根治方案:基于AI Agent的产线自动化台账系统落地
运维·人工智能·自动化·个人开发·ai编程
西安老张(AIGC&ComfyUI)8 小时前
第030章:ComfyUI视频制作LTX-2.3模型文生视频工作流详解(三)
人工智能·aigc·comfyui
苦猿的大模型日记8 小时前
Day25 | 模型量化横评 GPTQ vs AWQ vs GGUF vs INT8——同一个 Qwen3-8B 压四遍,谁还活着
人工智能
benchmark_cc8 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
深海鱼肝油ya8 小时前
小说自动生成系统(二)
人工智能·大模型·agent·智能体·自动化编程·小说生成系统
通问AI9 小时前
Apple Intelligence 国行备案深度技术解析:阿里千问如何被集成到苹果端侧AI架构
人工智能·架构