LoRAMoE:缓解大模型的世界知识遗忘问题

news2024/11/17 3:39:28

人工智能咨询培训老师叶梓 转载标明出处

大模型(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通过促进专家之间的协作,有效缓解了世界知识遗忘问题,并实现了模型性能的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

加密与安全_前后端通过AES-CBC模式安全传输数据

文章目录 Pre概述前端加密是否有意义?环境准备加密方法、MODE和PADDING的选择前端后端应用:从传输到解密的全过程安全性增强动态生成密钥和初始向量1. 前端:动态生成密钥和IV2. 后端:解密动态密钥和IV 结语 Pre 加密与安全_解密A…

TMGM:欧元区通胀放缓将支持9月欧洲中央银行降息

八月份德国通胀率出乎意料的下降超过预期。欧洲中央银行可能会保持其放松的货币政策。美元/欧元矫正性下跌可能在本周结束前继续。 欧洲统计局将在周五公布八月份欧元区消费者价格(调和)指数(HICP)的预估数值,预期结果将支持9月份决策者降息的决定。 因为对经济增…

大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Python 如何进行声音处理(pydub, wave模块)

Python 是一种功能强大的编程语言,它提供了丰富的库和模块用于各种任务的执行,包括声音处理。对于声音处理,pydub 和 wave 模块是最常用的两个库。 一、Python中的声音处理基础知识 在深入探讨具体的模块之前,我们先了解一些声音…

深度学习基础--损失函数

前三章分别介绍了线性回归、浅层神经网络和深度神经网络。这些都属于函数家族,能够实现从输入到输出的映射,其具体的函数取决于模型参数 ϕ \phi ϕ。在训练这些模型时,我们的目标是找到能够为特定任务提供最优输入输出映射的参数。本章将详…

C语言 ——— 文件读取结束的判定

目录 判定文件读取结束的方式 被错误使用的feof函数 判定文件结束的正确使用 判定文件读取结束的方式 判断文本文件是否读取结束: 利用 fgetc 判断返回值是否为 EOF 利用 fgets 判断返回值是否为 NULL 判断二进制文件是否读取结束: 利用 fread 判…

00 Tkinter学习路线

Tkinter学习路线 此Tkinter以更新完毕,几乎涵盖了Tkinter所有知识点 此文章用于快速找到对应的知识点 01 Tkinter介绍 02 Tkinter窗口的管理与设置 03 Tkinter布局方式 04 Tkinter布局组件 05 Tkinter事件 06 Tkinter可变变量 07 Label 组件 08 Button 组件 09 Entr…

大模型技术 | 基于大模型构建本地知识库

前言 随着人工智能技术的发展,大模型已成为智能系统进步的关键力量。 模型以其庞大的数据容量和深度学习能力,为处理复杂任务提供了前所未有的可能性。但在特定应用场景下仍面临挑战,尤其是在需要快速、准确响应的情境中。为了克服这些限制…

.NET Razor类库-热加载 就是运行时编译

1.新建3个项目 1.1 一个.NET Standard2.1项目 IX.Sdk.SvnCICD4NuGet 1.2 一个.NET Razor类库项目 IX.Sdk.SvnCICD4NuGet.RazorWeb 1.3 一个.NET6 Web项目 IX.Sdk.SvnCICD4NuGet.Web 这3个项目的引用关系 Web引用 Razor类库 和 .NET Standard2.1 Razor类库引用.NET Standard2.1…

VBA学习(65):Excel VBA 凭证打印/SQL连接Eexcel文件/Listview控件/CommandButton命令按钮控件

本期内容信息量相当的大,内容涉及很多方面,请耐心阅读,肯定不会让你失望的!建议收藏! Excel中记账凭证的打印,几种思路 Excel表记账的缺点 最新的打印方法:勾选凭证列表,点打印即可…

OpenCV中使用金字塔LK光流法(下)

接下来通过一个demo来调用calcOpticalFlowPyrLK()实现光流计算,需要注意的是该方法适用于具有丰富特征的像素点的光流计算,平坦区域的像素点往往会得到误差较大的结果。所以我们需要先选取得到一些角点,demo中通过goodFeaturesToTrack()这个接口实现角点提取。 如下有两张图…

nvm切换node版本(windows版本)

如果是win系统,不能直接通过npm来安装nvm(npm install nvm不行!)。需要手动去nvm官网下载安装包安装nvm github官网 先卸载本地的node版本 npm ls -g --depth0 // 查看全局安装中是否有早前安装的node 1.点击进去Github上往下滑会发现有一个download。进…

IP网络协议

目录 一、IP协议简介 二、IP协议报头 三、IP网段划分(子网划分) 四、特殊的IP地址 五、IP地址的数量限制 六、私有IP地址和公网IP地址 七、路由 八、分片与组装 一、IP协议简介 IP指网际互连协议,Internet Protocol的缩写&#xff0…

Vue+ElementUI+Electron环境搭建及程序打包

一.环境 Node.js Element-ui Electron 二.Node.js 1.下载并安装Node.js 2.安装完成后,新建目录”node_cache“ ”node_global“ 3.新建及修改环境变量 4.执行如下命令 npm config set prefix "D:\Source_Install\nodejs\node_global" npm config set cache &q…

设计模式-简单工厂模式工厂方法模式

1. 简单工厂模式定义 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它通过专门定义一个类来负责创建其他类的实例,这个类通常被称为工厂类。简单工厂模式并不是一种正式的设计模式,但它确实是一种常用的…

认识Kubebuilder

认识Kubebuilder 一、什么是Kubebuilder?Kubebuilder,K8s operator创建框架controller-runtime和controller-tools库 二、Kubebuilder,举例来说开源项目kuik 三、使用 kubebuilder init 创建基础项目四、使用kubebuilder create api生成控制器CachedIma…

gitea仓库迁移新服务器 更新远程仓库地址(git remote remove origin)

文章目录 引言I 镜像部署方式迁移案例迁移容器备份gitea服务器配置II 修改​远程仓库地址set-url语法案例III 扩展基于git命令方式进行代码迁移忽略被追踪的文件(update .gitignore)see also引言 由于部署git仓库的机器不稳定,决定进行服务器迁移。更新远程仓库地址的应用场景…

传统助贷机构如何利用CRM系统转型升级

传统助贷机构在利用CRM系统(客户关系管理系统)进行转型升级时,可以遵循以下几个关键步骤和策略,以优化客户管理、提升业务效率并实现业务增长: 一、明确转型升级目标 首先,传统助贷机构需要明确利用CRM系统…

使用docker compose一键部署 Openldap

使用docker compose一键部署 Openldap LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问分布式目录服务的网络协议,OpenLDAP 是 LDAP 协议的一个开源实现,由 OpenLDAP 项目提供&#x…

python库(21):TextBlob库实现文本处理

1 TextBlob简介 TextBlob 是一个基于 Python 的文本处理库,能够让基础的自然语言处理任务变得异常简单。 它提供了一个简单直观的 API,让你能够轻松执行词性标注、名词短语提取、情感分析、文本分类和关键词提取等功能。 值得一提的是,Tex…