LoRA

设原始的全连接层权重为 $W_0 \in \mathbb{R}^{d \times k}$,在LoRA中,其更新方式变为:

\[
W = W_0 + \Delta W
\]

其中 $\Delta W$ 是引入的可训练参数,用以调整预训练模型的行为。LoRA使用低秩矩阵分解的方法对 $\Delta W$ 建模:

\[
\Delta W = B A
\]

其中 $B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,$r \ll \min(d, k)$ 是秩约束参数,显著减少了可训练参数的数量。

通常还会引入一个缩放因子 $\alpha$:

\[
\Delta W = \frac{\alpha}{r} B A
\]

该缩放项是为了防止低秩更新对模型产生过大的扰动。

\subsubsection{标准初始化策略}

根据目前主流实现和论文规范,LoRA 的标准初始化方式如下:

\begin{itemize}
    \item 矩阵 $A$ 使用高斯分布随机初始化,如 $A \sim \mathcal{N}(0, \sigma^2)$;
    \item 矩阵 $B$ 初始化为全零:$B = 0$;
    \item 整体结构被缩放:$\Delta W = \frac{\alpha}{r} B A$。
\end{itemize}

在这种初始化下,有以下性质:

\[
\Delta W = \frac{\alpha}{r} \cdot 0 \cdot A = 0
\]

因此,模型的输出在训练开始时与原始模型完全一致,不引入任何扰动。

\subsubsection{为什么 B 初始化为 0,A 随机初始化?}

\paragraph{训练初期保持模型稳定性}

由于 $B=0$,即使 $A$ 为非零,整体 $\Delta W = 0$,保证了初始输出与原模型一致,不对下游任务造成额外偏移或扰动。

这种策略的优势在于:

\begin{itemize}
    \item \textbf{防止预训练知识在训练初期被覆盖};
    \item \textbf{保证训练一开始是“安全”的};
    \item \textbf{类似于残差连接中的“恒等映射”}。
\end{itemize}

\paragraph{有效的梯度传播机制}

从反向传播的角度分析,设损失函数为 $L$,我们计算对 $B$ 和 $A$ 的梯度:

\[
\frac{\partial L}{\partial B} = \frac{\partial L}{\partial \Delta W} \cdot A^\top
\]

\[
\frac{\partial L}{\partial A} = B^\top \cdot \frac{\partial L}{\partial \Delta W}
\]

此时,$B = 0$,但 $A$ 是非零,因此:

\begin{itemize}
    \item $\frac{\partial L}{\partial B} \ne 0$,\textbf{$B$可以立即开始更新};
    \item 虽然 $\frac{\partial L}{\partial A} = 0$,\textbf{但 $B$ 更新后即可带动 $A$};
    \item \textbf{梯度传播“激活路径”畅通无阻,避免梯度消失}。
\end{itemize}

\paragraph{打破对称性,促进收敛}

如果 $A$ 初始化为全零,则所有输出方向在初始时刻完全相同,参数没有“特异性”:

\[
B \cdot 0 = 0
\]

此时无论如何更新 $B$,在第一次前向传播中 $\Delta W$ 恒为零,造成参数退化、学习停滞。因此,\textbf{$A$ 的随机初始化是打破对称性、推动训练启动的关键}。

\subsubsection{反例分析:若 A=0, B 随机初始化,会发生什么?}

这种“反转初始化”虽然理论上仍满足 $\Delta W = 0$,但训练效率极低,甚至可能失败。

\paragraph{梯度消失现象}

如前所述:

\[
\frac{\partial L}{\partial B} = \frac{\partial L}{\partial \Delta W} \cdot A^\top
\]

若 $A = 0$,则 $\frac{\partial L}{\partial B} = 0$,导致 $B$ 无法更新。尽管:

\[
\frac{\partial L}{\partial A} = B^\top \cdot \frac{\partial L}{\partial \Delta W} \ne 0
\]

但 $A$ 更新依赖于随机初始化的 $B$,且不能形成有效的优化路径。最终导致:

\begin{itemize}
    \item \textbf{训练初期 $B$ 完全静止};
    \item \textbf{$A$ 更新方向混乱、不稳定};
    \item \textbf{收敛缓慢甚至震荡};
    \item \textbf{模型性能退化}。
\end{itemize}

\paragraph{破坏协同优化机制}

LoRA 设计的核心是通过 $B A$ 的低秩表示实现权重更新,其前提是 $A$ 与 $B$ 能够协同学习。当 $A = 0$ 时,这种协同被打破,整个系统训练变成了单向学习,极易陷入局部最优或学习失败。

\subsubsection{另一种情况:A 和 B 都随机初始化是否可行?}

这在某些场景下也是一种做法,但存在如下问题:

\begin{itemize}
    \item \textbf{初始 $\Delta W \ne 0$,扰动模型输出};
    \item \textbf{$\Delta W$ 的方差不易控制,易引入过大噪声};
    \item \textbf{与 LoRA 的“残差学习”理念相违背}。
\end{itemize}

虽然该策略在特定任务上可能表现良好(尤其是小模型),但不具有普适性。对于大模型和复杂任务,推荐使用 $A$ 随机、$B = 0$ 的标准方式。

\subsubsection{缩放因子 $\alpha$ 的作用}

为了缓解秩约束过低带来的表达能力下降,LoRA 使用缩放因子:

\[
\Delta W = \frac{\alpha}{r} B A
\]

其中 $\alpha$ 一般为正整数,$r$ 是秩。缩放的作用有:

\begin{itemize}
    \item \textbf{维持 $\Delta W$ 的值域稳定};
    \item \textbf{提高低秩分解的表达力};
    \item \textbf{避免 $r$ 过小时模型能力受限};
    \item \textbf{平衡原模型输出与LoRA更新的比重}。
\end{itemize}

实验中通常设置 $\alpha \in [8, 64]$,根据任务复杂度与模型大小调整。

\subsubsection{工程实践建议}

\begin{enumerate}
    \item \textbf{初始化选择}:始终选择 $A$ 随机,$B=0$ 作为默认策略;
    \item \textbf{缩放因子设置}:推荐 $\alpha/r$ 在 $[1, 8]$ 范围内试验;
    \item \textbf{秩选择}:任务复杂度高、参数少时可提高 $r$,但需配合合理 $\alpha$;
    \item \textbf{训练起始期观察}:关注初期 loss 是否震荡,是否快速下降;
    \item \textbf{稳定性调优}:必要时可添加 LayerNorm 或 Dropout;
\end{enumerate}

\subsubsection{总结}

LoRA 的成功不仅来自其结构设计的巧妙,更关键的是合理的初始化策略。通过将 $B$ 初始化为零,$A$ 随机初始化,LoRA 实现了训练初期不扰动模型输出、而梯度又可流动的理想平衡。这种设计兼顾了稳定性与可训练性,是工程与理论的完美结合。

错误的初始化(如 $A=0$ 或全随机)则可能导致训练冷启动失败、收敛缓慢、模型性能下降。因此,理解并正确应用初始化原则是使用LoRA的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值