LoRA与完全微调:并非等效的模型调优方法

MIT研究揭示LoRA与完全微调并非等效,LoRA引入“侵入维度”影响泛化能力和持续学习。

原文标题:LoRA、完全微调到底有何不同?MIT 21页论文讲明白了

原文作者:数据派THU

冷月清谈:

MIT 的一项研究揭示了两种微调大型语言模型的方法——LoRA(低秩自适应)和完全微调——之间的关键差异。虽然 LoRA 在特定任务上可以达到与完全微调相似的性能,但其参数调整方式存在显著不同。

研究发现,LoRA 会在权重矩阵中引入新的高秩奇异向量,称为“侵入维度”,而完全微调则不会出现这种情况。这些“侵入维度”导致 LoRA 微调的模型在面对超出适应任务分布的测试时,泛化能力不如完全微调模型,并且在持续学习过程中更容易遗忘先前学习的任务。

进一步的研究表明,LoRA 的秩大小会影响模型的性能。低秩 LoRA 虽然在特定任务上表现良好,但泛化能力和持续学习能力较弱。高秩 LoRA 可以减少“侵入维度”的影响,但如果秩过高,又可能导致模型过度拟合。相比之下,完全微调在光谱上与预训练模型保持相似,具有更强的泛化能力和持续学习能力。

因此,即使 LoRA 和完全微调在特定任务上取得相似的性能,它们学习到的解决方案并不等效。选择哪种微调方法需要根据具体的应用场景和需求进行权衡。

怜星夜思:

1、除了文中提到的泛化能力和持续学习能力,LoRA 和完全微调在实际应用中还有哪些其他的优缺点?
2、文章提到了“侵入维度”的概念,有没有更通俗易懂的解释,以及它为什么会影响模型的泛化能力?
3、未来 LoRA 的研究方向有哪些?如何改进 LoRA 以克服其现有的局限性?

原文内容

图片

来源:机器之心
本文约2500字,建议阅读5分钟
本文旨在了解两种微调大型语言模型方法之间的差异:完全微调和低秩自适应 (LoRA)。


本文旨在了解两种微调大型语言模型方法之间的差异:完全微调和低秩自适应 (LoRA)。这两种方法都用于将预训练模型适应特定的下游任务,但它们却有所不同。


微调(Fine-tuning)是将经过预训练的大语言模型应用于下游任务的关键范例。最近,低秩自适应 (LoRA) 等方法已被证明可以在各种任务上达到完全微调模型的性能,同时可训练参数的数量却大大减少。


这就提出一个问题,即它们学到的解决方案真的等效吗?


带着这一疑问,来自 MIT 的研究者在论文《 LORA VS FULL FINE-TUNING: AN ILLUSION OF EQUIVALENCE 》中进行了深入探讨。


论文地址:
https://arxiv.org/pdf/2410.21228v1


作者通过分析预训练模型权重矩阵的光谱特性来研究不同的微调方法如何改变模型。


研究发现,完全微调与 LoRA 产生的权重矩阵奇异值分解结构有显著不同,并且经过微调后的模型在面对超出适应任务分布的测试时也显示出不同的泛化行为。


特别是,LoRA 训练的权重矩阵中出现了称为「侵入维度(intruder dimensions)」的新的高秩奇异向量,而在完全微调中则不会出现这种情况。


这些结果表明,即使在微调分布上表现相同,但使用 LoRA 和完全微调更新的模型访问参数空间的不同部分。


作者通过研究 LoRA 微调模型中出现侵入维度的原因、它们为什么不受欢迎,以及如何最小化这些效果来展开研究。


最后,作者给出了以下几点观察:


首先,LoRA 和完全微调在结构上产生不同的参数更新,这种差异由侵入维度的存在产生的。这些侵入维度是奇异向量,具有较大的奇异值,并且与预训练权重矩阵中的奇异向量近似正交。相比之下,完全微调模型在光谱上与预训练模型保持相似,不包含侵入维度。


其次, 从行为上看,与完全微调相比,具有侵入维度的 LoRA 微调模型会忘记更多的预训练分布,并且表现出较差的稳健连续学习能力:具有侵入维度的 LoRA 微调模型在适应任务分布之外不如完全微调模型,尽管分布准确度相当。


最后, 即使在目标任务上低秩 LoRA 表现良好,但更高秩的参数化可能仍然是可取的。低秩 LoRA(r ≤ 8)适合下游任务分布,完全微调和高秩 LoRA(r = 64)让模型泛化能力更强、自适应能力更加鲁棒。然而,为了利用更高的秩,LoRA 更新模型必须是秩稳定的。


沃顿商学院副教授 Ethan Mollick 对此评论道:事实证明,使用 LoRA 定制通用 LLM(Apple 调优其设备内置模型的方式),对 LLM 的限制远大于微调,因为它们失去了一些泛化能力。原因是 LoRA 增加了不祥的侵入维度。



LORA 和完全微调模型的差异


本文采用神经网络参数的奇异值分解 SVD 来理解微调对预训练权值的变化。


特别是,本文测量了用 LoRA 微调过的权重矩阵中的奇异向量或完全微调过的权重矩阵中奇异向量映射到预训练权重中的奇异向量的程度,使用它们的余弦相似性。这些关系如图 1 和图 3 所示,颜色表示预训练和微调奇异向量之间的余弦相似度。




图 2 (b) 中观察到,LoRA 和完全微调的奇异向量与预训练奇异向量的相似度非常不同:与完全微调相比,使用 LoRA 微调的模型的奇异向量与预训练奇异向量的平均余弦相似度似乎要低得多。



图 2 (b) 中左下角有一个唯一的红点,作者将这些新维度命名为侵入维度,其正式定义如下:



LoRA 微调模型包含高秩侵入维度,而完全微调的模型则不包含。为了量化特定权重矩阵的侵入维度集的大小,作者使用图 4 所示的算法。



即使在 LoRA 微调模型学习效果不如完全微调的任务中,侵入维度也存在。


观察图 5b、5c 和 5d,我们可以清楚地看到,即使 LoRA 的 r=256,高秩奇异向量集中仍出现侵入维度。重要的是,当 r=2048 时没有侵入维度,而是展示了与完全微调非常相似的曲线。这支持了早先的发现:随着秩增加超过一个阈值,侵入维度会消失,LoRA 开始趋向于与完全微调相似。 



即使使用满秩矩阵执行 LoRA,完全微调更新也比 LoRA 更新具有更高的有效秩。如图 6 所示,可以观察到完全微调解决方案的有效秩明显高于通过 LoRA 学习到的解决方案的有效秩,即使 LoRA 具有更高的秩。



LORA 和完全微调之间的行为差异


在较低秩,LoRA 在持续学习过程中的适应能力较差,会忘记更多之前的任务。该研究在多个任务上按顺序训练 RoBERTa,并测量学习新任务时性能的变化程度。


该研究使用与之前相同的训练方案、数据集,但在持续学习环境中使用以下数据集(按顺序)进行微调:MNLI、QQP、SST-2、SIQA、Winogrande、FEVER。在序列中某个数据集上进行训练后,将 LoRA 权重合并到模型中,并在下一个任务训练之前重新初始化,以便不受之前任务的影响。


在对特定任务进行训练后,该研究对所有任务进行测试,对于每个任务,在测试测试集之前分别重新训练分类头。这能够检查模型在这些任务上表现如何,而无需实际更改模型本身。


结果如图 8 所示。虽然 LoRA 最初与完全微调的性能相当,但较小的 LoRA 秩在持续学习过程中始终表现出更大的性能下降。特别是,对于前三个训练数据集,当 r = 1 时 LoRA 的性能下降到预训练基线以下。随着 LoRA 秩的提高,我们可以看到这种遗忘行为减少,并且更接近于完全微调,甚至在完成持续学习后在 MNLI 上的遗忘也更少。


整体情况是微妙的:虽然在某些情况下,LoRA 似乎忘记得较少,但对于某些任务(以及某些秩)事实上,LoRA 可能会忘记更多。



对于微调到等效测试精度的 LoRA 模型,可以看到一条 U 形曲线,该曲线标识了适合下游任务的最佳等级,同时最小程度的忘记了预训练分布。


图 9 报告了测量的伪损失分数。可以看到完全微调和 r = 768 时的 LoRA 之间呈现 U 形趋势。


相对于完全微调,低秩(r = 1)和高秩(r = 768)都会导致预训练分布的遗忘更大,而对于 r = 64,遗忘较少。也就是说:当 r = 1 时,使用 LoRA 微调的模型受到侵入维度的影响,并且似乎比没有侵入维度的 r = 64 有更多的遗忘。然而,当 r = 768 时,使用 LoRA 微调的模型也表现出更糟糕的遗忘,这表明由于过度参数化,它们对适应任务过度拟合。当 r = 8 和 r = 64 时,遗忘量少于完全微调。



编辑:于腾凯

校对:林亦霖




关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。



新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

我觉得可以研究如何将 LoRA 应用于更广泛的任务,比如多模态任务或者强化学习任务,拓展 LoRA 的应用场景。

更学术一点的说法是,这些“侵入维度”与预训练模型的知识结构不兼容,导致模型在处理其他任务时无法有效利用预训练的知识,就像往一个设计精密的机器里塞了一些不匹配的零件,虽然可以让机器完成特定任务,但会影响整体的运行效率。

你可以想象一下,你为了考试突击记住了一些知识点,考试的时候可能很有用,但考试过后就很快忘记了,而且这些知识点可能对理解其他知识并没有帮助,甚至会产生干扰。“侵入维度”就像这些突击记住的知识点。

“侵入维度”可以理解为 LoRA 带来的一些“额外信息”,这些信息只对特定任务有用,但在其他任务上可能就成了干扰。就像给一个运动员训练特定肌肉,虽然可以提高特定运动的成绩,但可能会影响其他运动的灵活性。

完全微调训练时间也更长,成本更高。LoRA 可以更快地适应新的任务,这在快速迭代的场景下非常有用,比如快速上线一个新的产品功能。