LoRALow-Rank Adaptation中必须把其中一个矩阵通常是 B初始化为 0的核心原因是为了让微调在第0步刚加载预训练权重时不改变原模型的任何输出也就是实现“从预训练模型精确起步”。这不是可有可无的trick而是LoRA设计中最关键的工程细节之一。为什么一定要 ΔW 0 在初始化时刻LoRA 的更新形式是h W₀ x ΔW x W₀ x (B A) x通常再乘一个缩放因子 α/r在训练刚开始的那一刻如果 ΔW ≠ 0就会立刻给原模型引入一个随机偏移这会导致输出突然跳变 → 损失剧烈震荡早期梯度不稳定容易跑偏或梯度爆炸/消失破坏了预训练模型已经非常好的初始化这是最昂贵的部分而把 B 初始化为全零矩阵无论 A 是什么高斯随机、Kaiming、Xavier 随便都有B A 0矩阵乘法性质任何矩阵乘以零矩阵都得零矩阵于是 ΔW 0 → h W₀ x完美保持原模型行为。为什么不把 A 和 B 都初始化为 0初始化方式ΔW 初始化时是否为 0梯度是否为 0早期训练稳定性实际效果主流实践A0, B0是是对称性问题极差基本学不动梯度对称坍缩A随机, B随机否随机大偏移正常差早期震荡大难收敛A随机, B0主流是正常很好最稳定推荐A0, B随机是正常较好比主流稍差一些全零→ 所有神经元对称梯度相同 → 学不动经典的 zero init 灾难都随机→ 相当于突然给预训练权重加了一个随机低秩扰动 → 相当于从一个很差的起点开始微调浪费了预训练的优势所以主流包括原论文、PEFT库、绝大多数开源实现都选A 随机小方差初始化 B 0。2024–2025 年的新研究其实不“必须”了最近一些工作尤其是 infinite-width 理论分析 大量实验发现如果把 A 和 B都用很小的非零值初始化比如缩小标准差训练其实也能正常进行甚至在某些情况下特别小 learning rate 时更鲁棒微调不一定非要从精确的预训练模型开始加一点小的随机噪声通常不影响最终性能代表工作“Investigating the Impact of Non-Zero Initialization on LoRA Fine-Tuning Dynamics” (ICML 2025)结论非零初始化可以提升对次优学习率的鲁棒性且最终精度往往不差甚至略好但目前工程界仍然强烈推荐 B 初始化为 0原因主要是最稳early training 几乎不会炸最可复现和绝大多数已有 checkpoint / 教程 / huggingface peft 代码一致总结一句话LoRA 把 B 初始化为 0 的根本目的是让低秩适配器在训练第0步“什么都不做”从而最大限度地继承预训练模型的优秀初始化和稳定性。这是工程上“稳”压倒一切的典型案例。如果你现在做实验想最稳 → 继续用 B0想探索极限 / 小学习率场景 → 可以试试双随机小方差初始化注意要配合更小的初始学习率你是在 debug LoRA 训练不稳定还是在准备面试/写论文想深入理解这个细节可以告诉我具体场景我再给你更针对性的建议