矩阵的秩:大家知道, 矩阵在大多数清况下代表映射. 而矩阵的秩几何意义就是映射后的目标空间是几维的, 我们把它称为像空间 ImA
SVD定义: 给定大小为
的实数矩阵 A , 其中 m 可以等于或不等于 n ,对 A 进行 SVD 后得到的输出为
。左式表示 SVD 会将大小为
的实数矩阵 A 分解为
的正交矩阵 U 、
的对角矩阵
以及
的正交矩阵 V 。由于正交矩阵的逆就是其转置矩阵,因此
性质 1: 对于矩阵 A ,
. 从直观上是显然的, **前者成立的原因在于,从根本上将,目标空间是 m 维的,而包含在其中的 ImA 无论也不可能让自己的维度超过 m . 对于后者, 因为原空间是 n 维的,于是把空间全体通过 A 映射过去,无论如何也不可能超过自己原来的维度 n **.
性质 2: 假如矩阵 A 能分解成两个“瘦矩阵的乘积”, 既宽仅为 r 的矩阵 B 和高仅为 r 的矩阵 A 的乘积, A=BC , 则 A 的秩一定不会超过 r. 右面是例子是秩为 2 的情况.
例如地,对于 rank(A)=1 的极端清况,可以写成列向量和行向量的乘积的形式,如下所示. A=BC 在 y=Ax 的变换过程中,分成以下两步进行 第一步 z=Cx 对应 n 维向量 x “压缩”成 r 维向量 z 第二步 y=Bz 对应 r 维向量 z “扩张” 成 m 维向量 y 若矩阵可以进行这样的瓶颈型分解,则 A 的秩显然不超过 r ,只要一度被压缩到低的 r 维,无论怎么扩张,也不可能使维度增加了,因为 ImA 一定不超过 r 维,也可以说,丢失的信息就找不回来了.
举个例子 y=Ax, 假设这里 A 是一个 3×3 的矩阵, A 对应的映射为是”x所在的 3 维空间”到“y 所在的 3 维空间”的映射. 假如某个矩阵
, 大家有没有发现, 任何一个三维向量经过 A 映射后, z轴(也就是第三维度)的信息都丢了,直接地说所有的三维向量经过 A 映射后都“压缩”到 xy轴张成的平面上. 任何一个3维向量,经过上述的A 映射后,得到的虽然表面上也是三维向量,但这些得到的三维向量张成的空间是3 维向量空间中的一个 2 维线性子空间. 也就是映射后的目标空间是 2 维的, 因此 rank(A)=ImA=2 .那么,问大家一个问题, 矩阵
的秩等于多少呢? 答案是这个矩阵的秩为 1 .
意思是:在秩 r 增加的情况下,某个量级(例如矩的大小或梯度的大小)保持恒定(或变化非常缓慢,不依赖于 r)。这里的“1”表示与秩 r 无关的常数。具体举个例子,输入到 adpter 的每个条目的第 m 阶矩为
,这意味着无论秩 r 是多少,输入数据的第 m 阶矩在每个条目中都是一个常数级别的量。这表示输入的分布不会随着 r 增大而显著变化。
这个概念为了保证 adapter 在不同的秩设置下,都能保持稳定的学习和优化过程。
最终经过公式的推导(推导详见论文的 Appendix A),得到定理
考虑形式为
的LoRA 适配器,其中
初始化时满足
,A 的各个元素是独立同分布的,均值为 0,方差为
,且不依赖于 r 。当且仅当
时,所有适配器都是秩稳定的。特别地,上述结论在学习轨迹的任何点上都成立,且如果
,那么对于足够大的 r ,学习过程将是不稳定或坍塌的。
在这个定理中,
表示
需要按照
的比例缩放。这意味着当秩 r 增大时,
应该被设定为
的形式(如
,其中
是常数)。这种缩放确保了 LoRA 适配器在整个学习过程中保持稳定,防止在 r 很大时出现学习不稳定或梯度崩塌的情况。
仔细看这个公式,在训练的初始阶段,梯度的大小主要由 A 和 B 的值决定。由于在 LoRA 中,A 和 B 是通过高斯噪声和零初始化的,因此初始梯度可能非常小,导致初始梯度可能非常小,进而使微调过程的收敛速度变慢。这种现象在实验中得到了验证,观察到 LoRA 在训练的初期往往在初始点附近徘徊,浪费大量时间。如下图所示,LoRA 在相同的训练步数下,前期收敛速度明显较慢,最终未能达到一个局部最优点。
方法论 论文提出的方式很简单,对原始矩阵进行 SVD 分解,拆开成两部分: 主奇异值部分和残差奇异值部分, fine tuning 主奇异值部分,frozen 残差奇异值. 具体分解如下,其中
由奇异值小的那部分组成,A 和 B ,也就是
,要训练的那部分由奇异值大的部分组成
论文解释了这种分解方法之所以有效的原因在于:主奇异值的元素远大于残差奇异值的元素,因此可训练的适配器
包含了原始权重矩阵 W 中最重要的方向。在理想情况下,训练
可以在使用较少参数的前提下,模拟微调整个模型的效果。通过直接微调模型中最关键的部分,PiSSA 能够实现更快、更好的收敛。相比之下,LoRA 在初始化适配器 B 和 A 时,使用的是高斯噪声和零值,同时保持原始权重矩阵 W 冻结不变。因此,在微调的早期阶段,梯度要么非常小,要么呈随机分布,导致许多梯度下降步骤被浪费。此外,不良的初始化可能会使模型陷入次优的局部最小值,影响其泛化能力。
实验结果
思考:
这里有点令人疑惑。用主奇异值来初始化 B 和 A 确实可以加速收敛,但从效果上看,按照论文的说法,微调其实主要集中在调整奇异值较大的主成分。然而,这与 LoRA 原始论文的观点存在一定矛盾。在 LoRA 论文的第 7.3 节中提到,
主要是放大了 W 中未被强调的方向,也就是说 Lora 放大了下游任务中重要,但在预训练中未被强调的特征部分(也就是奇异值小的部分),这与 PiSSA 的观点是矛盾的。
上图(c) 中展示了在与 FT 和LoRA相同的设置下,合并后的DoRA权重与
之间的幅度和方向差异。从DoRA和FT的
回归线上,DoRA和FT表现出相同的负斜率。论文推测,FT倾向于负斜率是因为预训练权重已经具备了适合多种下游任务的大量知识。因此,在具有足够的学习能力时,仅通过更大幅度或方向的改变就足以进行下游适应。
论文还计算了FT、LoRA 和 DoRA 的
和
之间的相关性,发现 FT 和 DoRA 的相关性值分别为-0.62和-0.31,均为负相关。而LoRA则显示为正相关,相关性值为0.83。Anyway,DoRA展示了仅通过较小的幅度变化或相反的情况下进行显著方向调整的能力,同时其学习模式更接近FT,表明其相较于LoRA具有更强的学习能力。
思考: 感觉合乎常理, 找到一种更 match 问题特性的建模方式,这样模型不仅更容易学习,还能提高学习效果。
实验
际业务数据通常与 benchmark 数据不同,往往是预训练模型未曾见过的,这有时会激活新的模式(pattern)。在此次实验中,我们对比了 LoRA、rsLoRA 和 Dora 在三个具体下游业务任务中的表现。实验参数如下: