人工智能咨询培训老师叶梓 转载标明出处
大模型(LLMs)在进行SFT时,通过增加指令数据量来提升其在多个下游任务中的性能或显著改善特定任务的表现。但研究者们发现,这种大规模的数据增加可能会导致模型遗忘其预训练阶段学习到的世界知识。这种遗忘现象在封闭书籍问答等任务中尤为明显,这些任务通常用来衡量模型的世界知识水平。
为了应对这一挑战,复旦大学的研究团队提出了LoRAMoE框架。LoRAMoE是一种Mixture-of-Experts(MoE)风格的插件,它引入了多个低秩适配器(LoRAs),并通过路由器网络进行集成。该框架的核心思想是在保持模型主体不变的情况下,通过部分LoRAs来利用世界知识解决下游任务,从而缓解世界知识遗忘的问题。
论文链接:https://arxiv.org/pdf/2312.09979
项目链接:https://github.com/Ablustrund/LoRAMoE
方法
LoRAMoE的核心架构如图4所示,与标准的MoE架构相比,LoRAMoE在每个Transformer块的前馈神经(FFN)层中引入了多个LoRA(Low-Rank Adaptation)作为可适应的专家,并通过路由器来控制它们。在训练过程中,只有专家和路由器是被优化的。
标准MoE架构的工作流程如下:
- 输入数据通过一系列的嵌入层(Embedding)和Transformer块进行处理。
- 在MoE中,路由器根据数据为专家分配权重,使它们能够分工完成前向传播过程。
- LoRAMoE在此基础上进行了改进,冻结了主干模型以保持世界知识,并引入专家来利用这些知识解决任务,同时提高在多个下游任务上的性能。
在LoRAMoE中,传统的FFN层被替换为MoE风格的插件,使得专家可以协作处理任务。在训练阶段,主干模型被冻结,只更新∆W。如果考虑一个包含N个专家的LoRAMoE层,其前向过程可以表示为: 其中, 和 分别代表第i个专家和路由器。W_g 是路由网络的可训练参数矩阵。
为了提高训练和推理的效率,LoRA被用作专家的架构。专家的参数矩阵∆WE被替换为低秩格式,显著减少了可训练参数,从而提高了微调过程的效率和资源利用率。
LoRAMoE面临的一个典型问题是专家使用不平衡,如图5所示。传统的解决方案是平衡专家的使用,通过将专家重要性的变异系数作为损失函数。然而,这种方法假设所有训练样本都在同一分布下,忽略了样本可能来自不同分布的事实,如图6所示。
LoRAMoE在训练阶段引入了一种新颖的平衡专家使用的方法——Localized Balancing Constraint。这种方法通过软性约束专家专注于两个方面:一部分专家专注于通过学习相关数据集来利用世界知识,另一部分专家专注于其他下游任务。同时,解决同一方面的专家之间进行平衡。
具体来说,定义LoRAMoE层的重要性矩阵Q,其中表示第n个专家对第m个训练样本的路由器值之和。然后定义与Q相同大小的系数矩阵I,其中表示的重要性系数。通过优化损失函数,可以使得对应专家从样本中学习更多,并被路由器分配更大的权重。
最终,LoRAMoE的损失函数可以表示为:其中,L是LLMs的下一个token预测损失,β控制本地平衡约束的强度。在训练阶段,主干模型被冻结,只有LoRAMoE层中的专家和路由器的参数是可训练的。在推理过程中,路由器自动为所有专家分配权重,避免了预指定数据类型的需要。
通过这种方法,LoRAMoE不仅提高了模型在多个下游任务上的性能,同时也有效地保持了模型内部的世界知识。
想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。
加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。
实验
实验设置中,LoRAMoE仅将大型语言模型(LLM)前馈神经网络中的线性层替换为LoRAMoE层。每个LoRAMoE层初始化包含六个专家,其中三个专家专注于处理下游任务,另外三个专家负责通过学习相关任务来利用基础模型中的世界知识。控制约束强度β和不平衡程度δ的超参数均设置为0.1。对于LoRA设置,α和r分别设置为32和4。dropout设置为0.05,学习率为。训练数据集被精心设计,以确保它能够代表模型在实际应用中可能遇到的多样化挑战。基础模型的参数被冻结,只有LoRAMoE中的专家和路由器是可训练的。每个节点的批量大小设置为16。
表2展示了LoRAMoE的性能,并将其结果与直接对模型应用SFT或使用LoRA调整的结果进行了比较。结果显示,使用LoRAMoE的语言模型在世界知识基准测试和其他方面都表现良好,表明其在避免知识遗忘的同时提高了多任务处理能力。对于世界知识基准测试,与灾难性崩溃相反,LoRAMoE不仅避免了这个问题,而且还超越了仅使用CBQA数据集进行微调的模型。LoRAMoE在世界知识基准测试中的性能比纯SFT有显著提升,最高提升了63.9%,平均增长了35.3%。对于其他下游任务,LoRAMoE能够达到接近甚至超越直接SFT的性能。例如,在所有阅读理解任务(即Race、ReCoRD、multiRC)中,LoRAMoE都取得了优越的性能。另外还将LoRAMoE与单个LoRA的参数高效微调(PEFT)进行了比较。在单个LoRA调整期间也发生了知识遗忘,因为它本质上与纯SFT相同。与单个LoRA相比,LoRAMoE中的多个协作LoRAs增强了世界知识保留和多任务处理能力。
表2 显示的LoRAMoE的结果中与直接完整微调和使用LoRA调整后在世界知识基准测试中表现下降的情况不同,LoRAMoE确保了世界知识基准测试和其他下游任务的同时增长。它们在世界知识基准测试中平均提高了30.9%,在其他下游任务中平均提高了8.4%。Llbc在绝大多数任务中改善了LoRAMoE的结果,无论是世界知识基准测试还是其他任务。值得注意的是,对于阅读理解、NLI和原始CBQA数据集,这种方法的好处相当大,高达17.6%。这表明专家组的能力划分有利于多任务学习。
在参数敏感性分析部分,研究者保持其他设置不变,改变专家的数量和LoRA的秩。表3显示了在包括世界知识基准测试和所有其他下游任务在内的所有测试集上,不同参数设置下的平均性能。随着可训练参数数量的增加,性能总体上保持稳定。六个专家的数量是最有益的选择,因为更多的专家并不会导致更高的性能。虽然增加LoRA的秩在某种程度上提高了模型的能力,但它带来了可训练参数的指数级增长。
为了确认LoRAMoE在使专家专门化方面的有效性,研究者可视化了路由器在遇到下游任务数据和知识基准测试数据时分配给专家的权重,如图7所示。在处理世界知识基准测试和其他下游任务时,两种类型的专家的使用率存在明显差异。这表明路由器可以在推理阶段自动将特定任务分配给具有相应能力的专家。被要求利用世界知识的专家在世界知识基准测试中被大量使用(例如,TriviaQA、Natural Questions和HotpotQA),这强调了它们在防止世界知识遗忘中的关键作用。这与第2节中所述的事实相对应,即监督式微调通过将模型中预存的世界知识与人类指令相关联,提高了模型在这些任务中的能力。另一方面,被指派专注于提高下游任务性能的专家在遇到这些任务时被赋予了更高的突出地位。通过这种可视化结果,可以发现一些下游任务仍然需要另一种类型的专家。这是合理的。例如,在阅读理解任务中,模型在预训练期间学到的知识可以更好地协助做出事实判断。这种现象在基于语言的任务中更加明显。在WSC任务中,路由器平均分配了大约45%的注意力给负责世界知识的专家。
通过可视化专家权重的实验进一步表明,LoRAMoE通过促进专家之间的协作,有效缓解了世界知识遗忘问题,并实现了模型性能的提升。