markdown
04-AdaLoRA、DoRA、IA³ 等 LoRA 扩展方法
概述
LoRA 自 2021 年提出后,催生了大量扩展方法。这些方法针对 LoRA 的不同局限性(固定 rank、表达能力有限、缺乏对权重更新的细粒度控制等)进行了改进。本章介绍最重要的几种扩展。
1. AdaLoRA(Adaptive LoRA)
论文信息
- 标题:Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning
- 作者:Zhang et al., 2023
动机
标准 LoRA 对所有目标层使用相同的 rank,但不同层对下游任务的重要性差异很大。注意力层可能需要较大的 rank,而某些 FFN 层可能几乎不需要适配。均匀分配 rank 是次优的。
核心思想
AdaLoRA 将 LoRA 的 rank 视为可学习的资源,在训练过程中自适应地调整每层的 rank:
- 将奇异值参数化:AdaLoRA 不直接学习 A 和 B 矩阵,而是将低秩更新表示为 SVD 形式 ,其中 是对角奇异值矩阵。
- 学习奇异值的重要性:训练过程中同时学习奇异值本身和对应的重要性分数。
- 基于重要性剪枝:对重要性低的奇异值进行剪枝(置零),将参数预算重新分配到更重要的层。
- 正则化:使用一个预算约束项鼓励总 rank 不超过预设上限。
工作流程
初始化:每层 LoRA rank = r_max(最大可能 rank)
↓
训练中:估计每个奇异值的重要性分数
↓
周期性剪枝:移除低重要性的奇异值,降低该层 rank
↓
收敛:各层 rank 自然收敛到合适的值
与标准 LoRA 对比
| 特性 | LoRA | AdaLoRA |
|---|---|---|
| rank 分配 | 均匀固定 | 自适应调整 |
| 参数预算利用 | 次优 | 更优 |
| 调参复杂度 | 需手动选 rank | 自动搜索 |
| 训练开销 | 低 | 略高(额外的重要性估计) |
| 效果 | 好 | 通常更好(同等参数预算下) |
适用场景
- 模型层数多、层间异质性大时
- 不确定最优 rank 配置时
- 对参数预算有严格限制时
2. DoRA(Weight-Decomposed Low-Rank Adaptation)
论文信息
- 标题:DoRA: Weight-Decomposed Low-Rank Adaptation
- 作者:Liu et al., 2024(NVIDIA)
- 地位:2024 年最受关注的 LoRA 变体之一
动机
全参微调中,梯度更新同时改变权重的方向和幅度。LoRA 的低秩更新将两者混在一起,限制了表达能力。DoRA 的洞察是:将这两个维度分离,可以获得更精细的控制。
核心思想
将预训练权重 分解为**幅度(magnitude)和方向(direction)**两个分量:
其中:
- 是每列的幅度向量
- 是方向矩阵
- 表示列范数
然后:
- 方向分量用标准 LoRA 适配:
- 幅度分量用可学习向量适配:
更新后的权重:
为什么有效
- 更接近全参微调的更新模式:全参微调的梯度可以分解为方向变化和幅度变化,DoRA 显式建模了两者。
- 幅度向量几乎不增加参数: 的维度是 ,远小于 的方向矩阵。
- 作为 LoRA 的直接替换:可以无缝替代 LoRA,几乎不需要额外调参。
性能
论文报告在多项 benchmark 上:
- Commonsense Reasoning:+1~3% vs LoRA
- MMLU:+1~2% vs LoRA
- GSM8K(数学推理):+2~5% vs LoRA
- 在某些场景下甚至超过全参微调
局限
- 比 LoRA 略多显存(额外的幅度向量 + 方向归一化计算)
- 训练速度略慢(约 5-10%)
- 2024 年初发表,生态支持仍在成熟中
3. IA³(Infused Adapter by Inhibiting and Amplifying Inner Activations)
论文信息
- 标题:Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning
- 作者:Liu et al., 2022(HuggingFace + BigScience)
- 场景:专为少样本学习设计
核心思想
不添加低秩矩阵,而是注入 rank-1 缩放向量,对 Transformer 内部的激活值进行逐元素缩放:
其中 是可学习的缩放向量, 是逐元素乘法。
注入位置
IA³ 在三个关键位置注入缩放向量:
- 注意力 Key 缩放:
- 注意力 Value 缩放:
- FFN 激活缩放:
参数量
每个注入点只有一个缩放向量(维度 = hidden_dim),不改变权重的维度:
| 方法 | 每层新增参数量 |
|---|---|
| LoRA(rank=8, q+v) | |
| IA³(k+v+ff) |
IA³ 的参数量约为 LoRA rank=8 的 1/10。
优势与局限
- 优势:极其轻量;少样本场景表现优异;训练速度极快
- 局限:表达能力有限;在数据量充足的任务上不如 LoRA/DoRA;不适合复杂的多任务微调
4. LoRA+
论文信息
- 作者:Hayou et al., 2024
核心改进
为 LoRA 的 A 和 B 矩阵设置不同的学习率:
- (降维矩阵):使用较高的学习率
- (升维矩阵):使用较低的学习率 ,其中
理论分析表明,这种非对称学习率可以更好地匹配预训练权重的分布特征,提升收敛速度和最终性能。
实践效果
在相同 rank 下比标准 LoRA 提升 1-2%,且无额外显存开销。
5. rsLoRA(Rank-Stabilized LoRA)
动机
标准 LoRA 使用 作为缩放因子。当 rank 增大时,这个缩放因子线性减小,可能导致训练不稳定。
改进
将缩放因子改为 ,使得更新幅度不会随 rank 增大而快速衰减。这使得使用更大的 rank 变得更加稳定。
6. PiSSA(Principal Singular Values and Singular Vectors Adaptation)
核心思想
与 LoRA 的思路"反过来":
- LoRA 让 A 初始化为随机、B 初始化为零,训练从零更新开始
- PiSSA 对 进行 SVD 分解,将主成分(最大的奇异值和奇异向量)分配给可训练的 A 和 B,将残差留在冻结权重中
效果:训练从一个已经包含"最重要信息"的状态开始,收敛更快、效果更好。
方法总结对比
| 方法 | 核心思想 | 参数量 | 表达能力 | 推荐场景 |
|---|---|---|---|---|
| LoRA | 低秩分解 BA | 低 | 中等 | 通用场景 |
| AdaLoRA | 自适应 rank | 低(更高效) | 中高 | 异构模型、预算受限 |
| DoRA | 幅度+方向分解 | 低中 | 高 | 追求最优质量 |
| IA³ | rank-1 缩放向量 | 极低 | 低 | 少样本、极低资源 |
| LoRA+ | 非对称学习率 | 低 | 中高 | LoRA 直接升级 |
| rsLoRA | rank-stable 缩放 | 低 | 中等 | 大 rank 场景 |
| PiSSA | 主成分初始化 | 低 | 高 | 快速收敛需求 |
参考:DoRA 论文 — https://arxiv.org/abs/2402.09353 参考:AdaLoRA 论文 — https://arxiv.org/abs/2303.10512 参考:IA³ 论文 — https://arxiv.org/abs/2205.05638
---