LoRA 的低秩矩阵如何初始化?

考查重点:零初始增量与梯度传播。常见 LoRA 让 A 随机、B 为0,使 BA 初始为0不扰动基座;两矩阵不能都0,否则初始梯度可能受阻

本题目录

参考答案

核心回答

标准 LoRA 常让降维矩阵 A 随机初始化、升维矩阵 B 初始化为零。这样初始增量 BA=0,新分支加入时不改变基座线性层的输出,同时又能通过梯度更新逐步学出调整量。LoRA 原论文使用高斯随机初始化 A;PEFT 的常见默认实现使用 Kaiming-uniform 初始化 A、把 B 置零,两者不能混成唯一固定实现。

关键不是“A必须服从某个分布”,而是初始输出保持稳定,同时保证分支能够学习。具体初始化还要结合实现与所选变体确认。

为什么不能两个都置零

设输出为 h=W₀x+sBAx,s 是分支缩放,损失对输出的梯度为 g。忽略批次求和,分支梯度可写成:

∂L/∂B = s × g × (Ax)ᵀ
∂L/∂A = s × Bᵀ × g × xᵀ

当 B=0、A 为随机值时,首步 A 的梯度为零,但 B 通常可以获得非零梯度。B 更新后,后续步骤就能同时更新两者。若 A、B 都为零,在这个纯乘积分支中两者梯度也都为零,常规梯度更新无法把分支启动起来。

所以“第一步 A 没梯度”不等于训练失效;应检查 B 是否进入优化器、损失是否有有效信号,以及后续增量是否变化。

怎样验证初始化

固定输入、基座权重和推理模式,在未训练时比较启用与禁用适配器的输出;标准零增量初始化应在数值误差范围内一致。再用一个小批次反向传播,核对可训练参数、梯度和一次更新后的增量。验证时关闭随机丢弃等随机因素,避免将随机差异误判成初始化改变模型。

若验证的是已保存的适配器,先核对基座与适配器的配对和加载配置,避免把加载错误当成初始化问题。

其他初始化方法可能利用奇异向量或量化误差,有的还会重参数化基座;不能继续用“B 必为零”推断它们错误。先说明讨论的是标准 LoRA,再看具体配置。

对应教程

参考资料

相关面经

3 篇

快手

算法岗
一面、二面
查看原面经 →
LoRA的A、B矩阵初始化方式是什么?RMSNorm与LayerNorm的适用场景区别?AUC与GAUC指标的选用边界。

腾讯

多模态算法岗
一面、二面
查看原面经 →
LoRA权重初始化底层细节,Kaiming初始化原理

百度

端到端决策规划控制算法工程师
秋招二面
查看原面经 →
第二段实习用了LoRA微调,介绍一下LoRA微调的初始化。

收录题集

2 个来源,共8 份题集

多模态训练与微调

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

公司案例问答汇编

阿东玩 AI · AgentGuide · 2 条原题

查看题集 →

后训练章节追问

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

SFT与指令微调

阿东玩 AI · AgentGuide · 5 条原题

查看题集 →
展开其余 2 条原题

多模态与计算机视觉

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →
展开剩余 3 份题集

相关题目

4 题