这篇论文介绍了一种名为CURLoRA的新型方法,它用于对大语言模型(LLMs)进行微调。CURLoRA利用了CUR矩阵分解技术,并结合了低秩适应(LoRA)的概念。这种方法主要解决了在持续学习过程中,如何减少模型的灾难性遗忘以及如何减少可训练参数数量这两个关键挑战。
- GitHub:https://github.com/mnoorfawi/curlora
主要功能:
CURLoRA的主要功能是在对大型语言模型进行微调时,减少模型对原有知识的遗忘(灾难性遗忘),同时减少所需的计算资源和可训练参数的数量。
主要特点:
- 使用CUR矩阵分解: CURLoRA通过将预训练的权重矩阵分解为C、U、R三个矩阵,而不是随机初始化低秩矩阵A或B,来进行微调。
- 改进的CUR分解过程: 它使用倒置概率来选择列和行,这作为一种隐式正则化,有助于限制微调调整的幅度。
- 减少可训练参数: 通过仅微调U矩阵,而保持C和R矩阵固定,显著减少了可训练参数的数量。
- 保持模型稳定性: 在跨任务微调过程中,CURLoRA能够保持模型性能和稳定性,同时维持基础模型的困惑度得分。
工作原理: CURLoRA的工作原理基于以下几个关键步骤:
- 计算概率和倒置概率: 首先计算每个列的概率,然后倒置这些概率,以便在采样时选择具有较低影响力的列和行。
- 采样列和行: 根据倒置概率,从原始权重矩阵中采样出列和行,构建C和R矩阵。
- 初始化U矩阵: 将U矩阵初始化为零矩阵,然后在微调过程中仅更新U矩阵。
- 微调: 在微调过程中,只有U矩阵被更新,而C和R矩阵保持固定,这有助于保持微调过程的稳定性。
具体应用场景:
- 资源受限环境: 在计算资源有限的环境中,CURLoRA可以有效地对大型语言模型进行微调,而不需要大量的计算资源。
- 多任务学习: 在需要模型连续学习并执行多个任务的场景中,CURLoRA有助于减少模型在新任务上微调时对原有任务知识的遗忘。
- 个性化模型调整: 当需要根据特定任务或数据集对预训练模型进行定制化调整时,CURLoRA提供了一种高效的微调方法。
总的来说,CURLoRA提供了一种在保持模型原有知识的同时,对大型语言模型进行有效微调的新方法,特别适用于资源受限和需要持续学习的场景。
0条评论