在 LoRA 论文及其标准实现中,矩阵 $A$ 通常采用标准的随机初始化方法(如 Kaiming 或 Xavier 均匀分布),而矩阵 $B$ 则被显式地初始化为零矩阵。这种设计并非偶然,而是出于对训练稳定性与优化效率的综合考量。
LoRA 所引入的权重增量 $\Delta W$ 被定义为两个低秩矩阵的乘积:
$$\Delta W = B A$$
该更新项叠加在原始预训练模型的权重 $W$ 上,形成新的有效权重 $W' = W + \Delta W$。接下来将详细解释为何选择这样的初始化策略。
[此处为图片1]
**为何将 $B$ 矩阵初始化为零?**
将 $B$ 初始化为零的核心目的在于:确保在训练初始阶段,LoRA 模块对基座模型的行为不造成任何扰动。由于 $\Delta W = B A$,当 $B = 0$ 时,无论 $A$ 取何值,都有:
$$\Delta W = 0 \cdot A = 0$$
因此,在第一次前向传播中,模型的有效权重仍为原始预训练权重 $W$,即 $W' = W + 0 = W$。
这一做法带来了显著优势:
- 保证了训练起点的**稳定性**,延续了预训练模型已收敛的良好状态;
- 避免因随机参数注入而导致输出剧烈波动;
- 减少初期梯度震荡,保护模型已有知识不被破坏。
[此处为图片2]
**为什么不将 $A$ 初始化为零?**
从结果上看,若将 $A$ 初始化为零,同样可得 $\Delta W = B \cdot 0 = 0$,也能实现初始无干扰的效果。然而,这种初始化方式会对后续的梯度传播造成不利影响。
考虑 LoRA 的结构路径:输入信号先经过矩阵 $A$,再通过矩阵 $B$ 输出。若 $A$ 初始为零,则其输出恒为零向量,导致传递给 $B$ 的激活值也为零。在反向传播过程中,由于链式法则依赖前层输出作为梯度计算的基础,$B$ 层接收到的梯度将趋近于零——这意味着 $B$ 的参数在训练初期几乎无法更新。
尽管 $A$ 自身可能接收到非零梯度(来自后向传播),但由于其输出始终为零,整个 LoRA 分支的数据流和梯度流均受到严重抑制,形成**信息瓶颈**,从而拖慢甚至阻碍训练进程。
[此处为图片3]
**总结对比**
| 矩阵 | 初始化方式 | 主要目的 |
|------|------------|----------|
| $A$ 矩阵 | 随机初始化(如 Kaiming/Xavier) | 保障 LoRA 路径具备有效的非零数据流动,使 $A$ 和 $B$ 均能获得合理的梯度信号,提升训练效率 |
| $B$ 矩阵 | 零矩阵 | 确保 $\Delta W = 0$,让训练从原始预训练模型的状态平稳启动,维持初始稳定性 |
综上所述,$A$ 的随机初始化保障了梯度通路畅通,而 $B$ 的零初始化则确保了行为一致性,二者协同作用,在不影响预训练性能的前提下,实现了高效、稳定的微调过程。


雷达卡



京公网安备 11010802022788号







