为何 LoRA 初始化 B=0 而 A 为高斯分布初始化?

📅 发布时间:2026/7/5 16:11:20 👁️ 浏览次数:
为何 LoRA 初始化 B=0 而 A 为高斯分布初始化?
回答首先肯定不能A和B全部都为0的全部都为0的话梯度是没有的所以需要一部分为0初始化一部分正常初始化这样的目的是可以保证模型初始化的时候和原模型一样的输出如果A不为0且B也不为0会导致模型初始化就相对于原先的模型产生了扰动引入了噪声会导致后续训练的时候收敛性没有一个初始化为0的好。而且理论上证明还是A初始化为0的效果好原因如下Init[A] 允许使用比 Init[B] 更大的学习率。Init[A] 可能导致一种“内部不稳定性”在这种情况下对于某些输入 z特征 Az 很大但 LoRA 输出 BAz 很小。这种不稳定性允许更有效的特征学习。我们识别了这种情况下的特征学习/稳定性权衡并用实证结果支持它。Init[B] 不会引起任何不稳定性但在这种情况下训练是次优的矩阵 B 训练不足。实证结果证实了理论并表明 Init[A] 通常比 Init[B] 带来更好的性能参考文献论文The Impact of Initialization on LoRA Finetuning Dynamics