当前位置: 首页 > news >正文

MoExtend: 模态和任务扩展调整的新专家

MoExtend: Tuning New Experts for Modality and Task Extension

GitHub - zhongshsh/MoExtend: ACL 2024 (SRW)

https://arxiv.org/pdf/2408.03511

大型语言模型(LLM)在各种任务中表现出色,然而其应用范围受限于主要在文本数据上进行训练。为了扩展LLM的功能以包括视觉语言理解,需要从头开始在多模态数据上对其进行训练,这既具有挑战性又成本高昂。目前的指令调优方法(如LLAVA)通过完全微调LLM来连接预训练的CLIP视觉编码器和LLM,以弥合不同模态之间的差距。然而,完全微调存在灾难性遗忘和高昂的训练成本问题,特别是在任务和模态不断增加的情况下。为了解决这个问题,提出了MoExtend框架,该框架旨在简化混合专家(MoE)模型对新模态适应和扩展过程。MoExtend将新专家无缝集成到预训练的MoE模型中,并赋予它们新知识,而无需对预训练模型(如MoE和视觉编码器)进行调整。这种方法能够快速适应并扩展到新的模态数据或任务,并有效地解决了在LLM中容纳新模态所面临的挑战。此外,MoExtend还避免了对预训练模型进行调整带来的灾难性遗忘风险。实验结果证明了MoExtend提升LLM多模态能力方面有效且高效,在推动多模态AI研究发展方面具有积极意义。


 

大型语言模型(LLMs)的局限性

现状:LLMs在多种任务中表现出色,但主要基于文本数据训练,限制了其应用范围。

挑战:扩展LLMs以包含视觉-语言理解能力至关重要,但从头开始训练多模态数据成本高且困难。

现有方法的不足

方法:现有指令调优方法(如LLaVA)通过全微调LLMs来连接预训练的CLIP视觉编码器和LLMs,以弥合模态差距。

问题:全微调存在灾难性遗忘(即忘记先前知识)和高训练成本的问题,特别是在任务和模态不断增加的时代。

MoExtend框架的提出

框架:MoExtend是一个有效的框架,旨在简化Mixture-of-Experts(MoE)模型的模态适应和扩展。

优势:MoExtend能够无缝地将新专家集成到预训练的MoE模型中,赋予它们新知识,而无需调整预训练的MoE和视觉编码器,从而快速适应和扩展到新的模态数据或任务。

MoExtend的核心特点

高效性:MoExtend避免了微调预训练模型,从而减轻了灾难性遗忘的风险。

灵活性:该框架支持在不改变原始MoE模型参数的情况下,仅训练新添加的专家和相应的门控层。

MoExtend的三个阶段

对齐阶段:通过预训练的视觉编码器对新添加的MLP进行训练,使用图像-描述对数据实现模态对齐。具体细节包括:

利用CLIP编码器将图像映射为视觉向量V,并将文本描述通过词嵌入映射为文本向量T。

将V和T拼接后输入到MoE模型中,进行前向传播和自注意力计算。

扩展阶段:使用Extender确定哪些MoE层需要扩展以容纳新的模态信息。关键步骤包括:

通过分析在包含视觉模态数据的训练集上MoE层专家的选择频率变化,确定哪些层需要扩展。

只在选择频率变化最大的顶层MoE层中添加新的专家FFN_{m+1}。

微调阶段:对新添加的专家部分进行微调,以完成最终的多模态信息扩展。此阶段的关键是:

在冻结其他参数的情况下,仅对新添加的专家和对应的路由层进行微调。

使用特定的指令数据集对扩展部分进行训练,以达到更好的多模态理解和任务处理能力。

关键实现细节

权重初始化:新专家的权重初始化是基于原有专家的权重分布,选择具有最高选择概率的专家进行复制。

校准模块:每个新添加的专家都配备了一个轻量级的校准模块,用于校正由于专家数量增加而导致的路由权重变化。

参数效率:通过仅在必要时添加新专家,并微调少量新参数,MoExtend在保持高效训练的同时,降低了过拟合的风险。

贡献

贡献:MoExtend的贡献包括引入了一种新的策略来增强MoE LLMs的多模态能力,显著降低了微调成本,并在推理过程中没有额外成本,同时最小化了灾难性遗忘的影响。

MoExtend的应用前景

前景:随着LLMs在更多领域的应用需求增加,MoExtend提供了一种高效且灵活的方法来扩展LLMs的模态和任务能力,具有广泛的应用前景。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Windows安装mmdet3d v0.17.1(跑通版)
  • Linux-零拷贝技术
  • glm4-9B-chat,使用提示工程激活模型最大潜力
  • AR 眼镜之-开关机定制-实现方案
  • java语言中的websocket
  • 通过AI帮我分析实现的2019销售季度对比叠加图
  • nc的多种使用场景和各种反向shell方法
  • 【MySQL】什么是事务?在高并发场景使用事务会出现什么问题,该如何解决
  • 数据结构与算法 - 图
  • EFCore中结合Dapper执行SQL任意查询
  • 初识C++:开启C++之旅
  • Angular组件概念
  • 基于 Android studio 实现停车场管理系统--原创
  • Java String 去掉特殊字符之前的内容方法
  • 实训日记day29
  • 《剑指offer》分解让复杂问题更简单
  • github指令
  • PermissionScope Swift4 兼容问题
  • PhantomJS 安装
  • spring + angular 实现导出excel
  • vue 个人积累(使用工具,组件)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 闭包--闭包之tab栏切换(四)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聚簇索引和非聚簇索引
  • 事件委托的小应用
  • 【云吞铺子】性能抖动剖析(二)
  • # 数据结构
  • #Linux(帮助手册)
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (1)Jupyter Notebook 下载及安装
  • (2)STL算法之元素计数
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (poj1.3.2)1791(构造法模拟)
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一一四)第九章编程练习
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • *p++,*(p++),*++p,(*p)++区别?
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET IoC 容器(三)Autofac
  • .net mvc部分视图
  • .Net 基于MiniExcel的导入功能接口示例
  • .net 使用ajax控件后如何调用前端脚本
  • .NET和.COM和.CN域名区别
  • @JoinTable会自动删除关联表的数据
  • @selector(..)警告提示
  • @基于大模型的旅游路线推荐方案
  • []利用定点式具实现:文件读取,完成不同进制之间的