LoRA 学得少,但忘得也少
https://arxiv.org/abs/2405.09673
一句话总结
LoRA方法的表现不如全微调方法(学的少),但LoRA方法具有良好的正则化效果,能够更好地保持基础模型在目标领域之外的任务上的表现(忘得也少)。
摘要
低秩自适应(LoRA)是一种广泛使用的大型语言模型参数高效微调方法。LoRA 通过仅训练选定权重矩阵的低秩扰动来节省内存。论文在编程和数学这两个目标领域上,分别使用指令微调(IFT)和持续预训练(CPT)两种训练方案比较了 LoRA 和完全微调的性能。
结果表明,在大多数情况下,LoRA 不如完全微调。但 LoRA 仍展现出了一种理想的正则化形式:它更好地保持基础模型在目标领域之外任务上的表现。此外,与常见的正则化技术相比,如权重衰减和dropout,LoRA方法提供了更强的正则化效果,并有助于维护更多样化的生成。
实验
上图展示了不同目标域上不同训练方案所使用的数据集。在 Llama-2-7B(13B)模型上进行实验,论文得出了以下几个结论:
LoRA 在代码方面的表现往往不如完全微调;在数学方面,LoRA 能够更好地缩小差距,但需要更长的训练时间。
至于为什么 LoRA 在数学任务上表现良好,而在代码任务上表现不佳?
论文给出了两种可能的原因:第一个原因是,数学数据集涉及较小的领域转移(它们包含更多的英语内容),从而减少遗忘;第二个原因是,GSM8K 评估过于简单,未能捕捉到微调过程中所学习的大学水平数学。
作者将“遗忘”定义为 OpenLLM Leaderboard 基准测试 WinoGrande、HellaSwag 和 ARC-challenge 中的能力下降。实验表明相比于指令微调和持续预训练,LoRA 并没有提供了更好的学习-遗忘权衡,但LoRA 遗忘会更少。
与权重衰减和注意力丢失相比,LoRA 提供了更强的正则化。
通过奇异值分解分析了全量微调和LoRA在权重扰动的秩上的差异,发现全量微调学习的扰动秩比典型的LoRA配置高出10-100倍,这可能是导致性能差异的原因之一。
如何更好地使用LoRA
LoRA对学习率非常敏感,找到能稳定训练的最高学习率十分重要。
选择合适的模块(比如注意力 + MLP)比更高的秩更加重要。