Skip to content

LoRA 与 LoRA-GA 的数学分析

本文将系统分析低秩适应(LoRA, Low-Rank Adaptation)及其增强版本LoRA-GA(LoRA with Gradient Alignment)的数学基础,重点探讨LoRA的一般模式、预填充初始化方法以及为何引入梯度对齐(Gradient Alignment)机制能够提升LoRA的性能。

1. 低秩适应(LoRA)

1.1 一般的LoRA模式

LoRA基于一个核心假设,即在微调过程中,模型参数的更新往往呈现低秩特性。具体而言,考虑预训练模型中的某一权重矩阵 \(W_0 \in \mathbb{R}^{m \times n}\),LoRA通过引入两个低秩矩阵 \(A \in \mathbb{R}^{r \times n}\)\(B \in \mathbb{R}^{m \times r}\) 来表示参数的增量更新。数学表达式如下:

\[ W' = W_0 + \Delta W = W_0 + \frac{\alpha}{r} BA = W_0 + \eta BA \]

其中: - \(W' \in \mathbb{R}^{m \times n}\) 为微调后的权重矩阵。 - \(\alpha\) 为缩放因子,控制更新幅度。 - \(r \ll \min(m, n)\) 确保 \(A\)\(B\) 为低秩矩阵。 - \(\eta = \frac{\alpha}{r}\) 为进一步的缩放因子。

在训练过程中,\(W_0\) 保持冻结,仅训练 \(A\)\(B\)

1.2 LoRA的初始化方法

在标准的LoRA初始化方案中: - 矩阵 \(A\) 通常采用正态分布(例如Kaiming均匀初始化)进行初始化。 - 矩阵 \(B\) 被初始化为全零矩阵。

因此,初始时刻:

\[ BA = 0 \quad \Rightarrow \quad W' = W_0 \]

这确保了在微调的初始阶段,模型参数保持不变,避免了初始阶段的不稳定性。

1.3 接入预填充的LoRA变体

在某些情况下,为了更好地控制初始参数,\(\Delta W\) 可以被初始化为非零值。这种做法可以通过调整冻结的权重来实现:

\[ W' = \left(W_0 - \eta B_0 A_0\right) + \eta BA = W_{\text{fz}} + \eta BA \]

其中: - \(W_{\text{fz}} = W_0 - \eta B_0 A_0\) 为冻结的权重。 - \(B_0\)\(A_0\) 为初始化时的可训练参数。

这种初始化方式确保了即使在 \(BA\) 非零时,初始的 \(W'\) 依然等于 \(W_0\),保持了模型初始性能的一致性。

2. 梯度对齐(Gradient Alignment)与LoRA-GA

2.1 问题动机

虽然LoRA通过低秩矩阵有效减少了需要训练的参数数量,但其参数更新方向可能与全参数微调存在一定偏差。为了使LoRA的更新方向更接近全参数微调,提出了梯度对齐机制,形成LoRA-GA。

2.2 梯度对齐的数学表述

在微调过程中,理想情况下,LoRA的参数更新应与全参数微调的更新方向对齐。设全参数微调的权重更新为 \(\Delta W\),则希望LoRA的更新满足:

\[ \eta \Delta (BA) \approx \zeta \Delta W \]

其中,\(\zeta\) 为缩放因子。为了实现这一目标,定义优化问题:

\[ \min_{A_0, B_0} \| \eta k \Delta (BA) - \Delta W \|_F \]

其中,\(k\) 是依赖于模型尺寸和低秩 \(r\) 的缩放因子。

在近似条件下(如学习率较小,更新量微小),上述优化问题可以简化为:

\[ \min_{A_{\text{init}}, B_{\text{init}}} \| \eta^2 \nabla_W W_0 \cdot A_{\text{init}}^T A_{\text{init}} + \eta^2 B_{\text{init}} B_{\text{init}}^T \cdot \nabla_W W_0 - \zeta \nabla_W W_0 \|_F \]

2.3 LoRA-GA的初始化策略

根据上述优化问题,通过奇异值分解(SVD)对梯度矩阵进行分解,得到以下初始化方案:

\(\nabla_W W_0 = USV^T\),则初始化 \(A_{\text{init}}\)\(B_{\text{init}}\) 为:

\[ A_{\text{init}} = \frac{\sqrt{\zeta}}{\eta} V_{[1:r]}^T, \quad B_{\text{init}} = \frac{\sqrt{\zeta}}{\eta} U_{[r+1:2r]} \]

其中,\(V_{[1:r]}\)\(U_{[r+1:2r]}\) 分别为 \(V\)\(U\) 的前 \(r\) 个和后 \(r\) 个奇异向量。

通过上述初始化,LoRA-GA确保了初始阶段LoRA的梯度更新方向与全参数微调方向高度一致,从而加速收敛并提升微调效果。

2.4 尺度稳定性

为了确保LoRA-GA在前向传播和反向传播过程中的稳定性,引入了尺度稳定性定义:

尺度稳定性定义:

\(m, n, r \to \infty\) 时,适配器 \(\eta BA\) 具有以下两种尺度稳定性:

  1. 前向稳定性:若适配器的输入为独立同分布(i.i.d.)且具有二阶矩 \(\mathcal{O}(1)\),则适配器的输出的二阶矩仍为 \(\mathcal{O}(1)\)
  2. 反向稳定性:若损失函数对适配器输出的梯度为 \(\mathcal{O}(1)\),则损失函数对适配器输入的梯度保持 \(\mathcal{O}(1)\)

尺度因子的选择:

根据尺度稳定性理论,选择合适的 \(\zeta\) 可以保证LoRA-GA的稳定性:

\[ \zeta = \mathcal{O}\left(\frac{\sqrt{m}}{r}\right) \quad \text{(前向稳定性)} \]

\[ \zeta = \mathcal{O}\left(\frac{\sqrt{n}}{r}\right) \quad \text{(反向稳定性)} \]

在实际应用中,选择 \(\zeta = \mathcal{O}\left(\frac{\sqrt{m}}{r}\right)\) 通常能够同时满足大多数模型的前向和反向尺度稳定性需求。

3. LoRA 与 LoRA-GA 的数学对比

3.1 更新方向对齐

  • LoRA 的参数更新方向依赖于随机初始化的 \(A\)\(B\),可能与全参数微调的方向存在偏差。
  • LoRA-GA 通过优化 \(A_{\text{init}}\)\(B_{\text{init}}\),确保参数更新方向与全参数微调方向对齐,即:

$$ \eta BA \approx \zeta \Delta W $$

3.2 初始化策略

  • LoRA:通常使用 \(A\) 从正态分布初始化,\(B\) 初始化为零矩阵,确保初始 \(W' = W_0\)
  • LoRA-GA:基于梯度的奇异值分解结果初始化 \(A_{\text{init}}\)\(B_{\text{init}}\),并调整冻结权重 \(W_{\text{fz}}\),以保证初始 \(W' = W_0\) 且梯度方向对齐。

3.3 尺度稳定性

  • LoRA:依赖于初始化方法,可能在某些情况下存在尺度不稳定的问题,影响训练稳定性和收敛速度。
  • LoRA-GA:通过精确选择缩放因子 \(\zeta\),确保前向和反向传播的尺度稳定性,提升训练过程的稳定性和效率。

4. 为什么LoRA-GA 有效

4.1 梯度方向的一致性

通过梯度对齐,LoRA-GA确保了低秩矩阵 \(BA\) 的更新方向与全参数微调的梯度方向一致。这种一致性有助于: - 加速收敛:更新方向接近最优路径,减少迭代次数。 - 提高性能:更有效地利用参数更新,提升模型在下游任务中的表现。

4.2 尺度稳定性保障

适当选择 \(\zeta\) 确保了模型在前向传播和反向传播过程中的尺度稳定性,避免了梯度爆炸或消失的问题。这对于深层模型尤为重要,能够保证训练过程的稳定性和模型的鲁棒性。

4.3 有效利用梯度信息

通过基于梯度的SVD初始化,LoRA-GA有效利用了当前任务的梯度信息,为低秩适应提供了更有针对性的参数初始化,进一步提升了微调的效果。

5. 总结

LoRA通过引入低秩矩阵实现参数高效微调,显著降低了训练参数量。然而,标准LoRA在参数更新方向和尺度稳定性方面可能存在不足。LoRA-GA通过引入梯度对齐机制,优化了低秩矩阵的初始化,使其更新方向更接近全参数微调方向,并通过合理选择缩放因子保证了尺度稳定性。这些改进共同提升了微调过程的收敛速度和最终模型性能,使LoRA-GA成为一种更为高效和稳健的模型微调方法。