LoRA低秩适配的工作原理

全量微调一个大规模模型,意味着要更新全部权重,并为之维护梯度与优化器状态,显存与算力开销成倍放大。LoRA(Low-Rank Adaptation)的核心思想是反其道而行:预训练权重 W₀ 完全冻结,任务适配所需的增量 ΔW 不直接学习,而是被约束为一种低秩结构,通过一个极小的旁路完成训练。

旁路式的低秩分解

具体来说,对于维度为 d×d 的目标权重矩阵,LoRA 将增量分解为两个狭长矩阵的乘积:ΔW = BA,其中 B 为 d×r、A 为 r×d,秩 r 远小于 d。前向计算随之变为 h = W₀x + (α/r)·BAx,α 为缩放系数,通常与 r 搭配调整。可训练参数量从 d² 压缩到 2dr,压缩比为 2r/d——当 r 取 4 或 8 这类小值时,增量参数相对原矩阵缩减了数个量级。初始化上,A 采用随机初始化、B 置零,保证训练起点处 ΔW = 0,模型行为与基座完全一致,训练从零扰动开始平滑偏离。

注入位置的选择遵循一个原则:哪里发生特征变换,就在哪里加旁路。实践中通常挂在注意力层的 query/key/value 投影矩阵上,或 MLP 的关键矩阵上,这些是表征被重新混合的节点,低秩增量在此能最有效率地改变模型行为。

低秩假设为何成立

LoRA 有效性的理论依据在于:大模型本身是过参数化的,而适配特定任务所需的权重更新集中在一个低维子空间中,即 ΔW 具有很低的内在秩。用低秩旁路去逼近它,表达能力损失有限,却换来两个直接的工程收益。其一是优化器状态随参数量同步缩减,训练成本大幅下降;其二是参数少意味着拟合快、过拟合也来得快,因此学习率应比全量微调更低,并在验证指标停滞时果断早停,而不是拉长训练。

部署阶段同样受益于这一结构。推理时可将 BA 合并回主干,得到 W = W₀ + BA,不引入任何额外计算延迟;也可以保持旁路形式按需挂载,多个 LoRA 文件对应多个任务即插即用,主模型始终完好,卸载后即回到原始状态。

需要明确的是,低秩结构同时定义了 LoRA 的适用边界:它默认任务差异可以被一个低秩增量覆盖。对风格迁移、对话能力调整、生成细节改进这类任务,这一假设通常成立;但若目标能力要求深层结构改动,旁路的表达上限就会显现。以 r 从 4 或 8 起步、配合较小学习率做一轮快速验证,本身就是判断任务是否落入 LoRA 适用区间的低成本探针。

参与讨论

0 条评论

延伸阅读