






















LoRA 微调到底怎么理解?本文将从“为什么是 LoRA”到“LoRA 怎么做”,系统拆解其核心机制、适用场景与工程优势,并结合实际案例,帮助你建立对 LoRA 的清晰认知框架。

接触 AI 的朋友,大多数人可能都听过目前最热门的参数高效微调方法——LoRA。但它到底是怎么回事,你了解吗?这篇文章就来给大家扫扫盲,从原理、流程到适用场景,帮你构建一个扎实、清晰的基础认知。
LoRA,全称是 Low-Rank Adaptation,是一种高效的模型微调技术。它的主要目标是:在不影响模型性能的前提下,减少训练参数的数量、降低计算和存储成本。
传统的微调方法是:直接修改模型的全部参数或大部分参数,这样做虽然能适应新任务,但带来高昂的计算成本和显存占用。
而 LoRA 的做法是:不去直接修改原始模型的大型权重矩阵,LoRA 会为每一个被微调的矩阵引入一对低秩矩阵的补丁(A 和 B),并训练它们,而不修改原始权重。
用更简单的话来说:
把原始大模型比作发动机,LoRA 就是在选定的关键零部件(那些会影响模型行为的矩阵)分别加装一对“小补丁”,这些补丁分别“修正”这些部件的行为,使整体适配任务需求,但不重造整台发动机。
实际秩(r)表示矩阵中线性无关的行或列的最大数量,即矩阵中有多少独立信息。
原始模型矩阵M(a×b)矩阵,其最大可能的秩 L=min(a,b)。
低秩矩阵:当实际秩 r < L 时,说明该矩阵的信息存在冗余,可由少量独立行/列线性组合而来。
示例说明
考虑一个 10×10 的矩阵:
疑问:
你现在是否会好奇 r 怎么设置?继续往下看为你解答👇
1、选定模型中需要插入 LoRA 的对应的层的矩阵;
2、把这些矩阵分别“补充”一对新的小矩阵(补丁),叫做A和B(维度是[r, d]和[d, r],r 是秩,d 是原始矩阵的层数);
3、保持原始模型不变(即冻结参数);
4、只微调这两个小矩阵 A 和 B;
5、微调后模型 与 原模型合并。
一、怎么选:哪些层、哪些矩阵该插 LoRA?
LoRA 并不是在所有模型层里都加,它是有策略地选择目标层和矩阵来插入的。实际使用中有以下规律:
1、优先选择 Q 和 V
2、有时插在前馈网络(FeedForward,MLP)部分的线性层
3、不要插在 LayerNorm 或 Embedding 上
一句话总结:该插的插,不该动的别动。二、选择好之后干嘛:补丁长啥样?秩怎么选?
假设你在 Transformer 中选择了 Q 和 V 层进行 LoRA 微调,下面以 Q 矩阵为例说明:1、在 Q 矩阵旁添加可训练补丁假设原始 Q 矩阵有维度 512 x 512 ,LoRA 会插入一对补丁矩阵:
这对补丁相乘后生成的 Q补= QAQB具有与原始 Q 矩阵相同的维度 [512, 512]。
QA:维度为 [r, 512]
QB:维度为 [512, r]
2、冻结原始权重,仅训练补丁在训练过程中,原始 Q 矩阵完全被冻结,只有 QA和 QB(也就是补丁矩阵)参与更新。这样做的目的是将微调集中于“调整特定方向”的任务,避免修改整个大矩阵。
3、秩 r 的选择推荐秩 r 是你指定的小维度,对补丁的表达能力与参数数量起决定作用。经验推荐:

4、训练与测试流程
注:r 往往是事先设定的超参数,而非训练时优化的变量。
三、最后怎么合并:补丁叠加到模型的哪里?
LoRA 微调结束后,一般会把补丁和原始模型合并为一个新模型,方便部署。这里的规则是:
只合并你插入过 LoRA 的位置;
举例:
从前面的整个流程来看,我自己的理解是:
LoRA 微调的核心,是对模型中某些层的某些矩阵做了补丁式的更新,这样可以让模型在保持原有“核心知识”不变的前提下,更好地适配具体任务。
换句话说,LoRA 不是重造模型,而是对部分结构做了轻量调整,让它更“听话”。
所以到这里,我对 LoRA 的理解是:不改知识,只改表达方式。
基于这个特点,我觉得 LoRA 比较适合以下几类场景:
但它也有明显的边界,不太适合做这些事:
总的来说,LoRA 更像是在已有知识之上做“表达方式的微调”,它不会让模型更聪明,但可以让模型说话更稳、更像你想要的样子。
本文由 @AI思·享@蓉77 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自 Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。