先这样答
结论是,B 矩阵置零,A 矩阵采用高斯初始化。这样在训练开始时,BA 的乘积就是零。LoRA 产生的增量因此也是零,模型的初始状态等价于原模型,不会破坏预训练能力。
如果两个矩阵都随机初始化,BA 的乘积通常不会是零。模型一开始就会被注入随机扰动。此时微调不是从原模型本身开始,而是从一个已经加入随机变化的状态开始。零初始化可以避免这个问题。
A 使用高斯初始化,是为了配合 B 的置零状态,让 BA 在起点保持为零。面试时可以把重点放在 B 上:B 为零决定了 adapter 初始无害。这个初始化方式也解释了 LoRA 为什么能即插即用。adapter 加入模型时先不改变原模型,后续再通过微调产生作用。
面试官会怎么追问
-
「为什么是 B 置零,而不是 A 置零?」 B 置零后,BA 的乘积为零。这样可以直接保证 adapter 在初始化时不改变原模型。A 则使用高斯初始化。
-
「如果两个矩阵都随机初始化,会发生什么?」 BA 的乘积通常不为零。模型在训练一开始就会受到随机扰动。微调起点也就不再等价于原模型。
-
「这个初始化和 LoRA 即插即用有什么关系?」 零初始化保证 adapter 加入时不会改变原模型。adapter 可以先无害地接入,训练后再产生作用。这就是它能即插即用的原因。
回答的坑
- 不要只说“为了稳定训练”,要明确说出 B 置零后 BA 初始为零,以及模型仍等价于原模型。
- 不要把 A 和 B 都说成随机初始化,否则会否定 LoRA 无害起步和即插即用的关键。
同系列的题
这家公司的面经实录
—— 本题完 ——