探索多头混合专家(MH-MoE)模型的先进架构

news2024/11/23 22:27:32

在深度学习领域,大型模型如大型语言模型(LLMs)和大型多模态模型(LMMs)因其在各个领域的有效性而受到广泛关注。然而,这些模型在训练和推理时面临着巨大的计算成本。为了解决这一问题,研究者们提出了稀疏混合专家(Sparse Mixtures of Experts,简称SMoE)模型,它通过增加模型容量来提升性能,同时保持计算成本的稳定。尽管取得了成功,SMoE模型仍存在专家激活率低和缺乏对单个token内多重语义概念的细粒度分析能力的问题。针对这些问题,本文提出了一种新的模型——多头混合专家(Multi-Head Mixture-of-Experts,简称MH-MoE),并在多个任务上验证了其有效性。

 (a) 在XNLI数据集上SMoE模型中专家激活的分布情况。图中显示了SMoE模型中有大量未激活的“死亡”专家(暗色区域),而MH-MoE模型显著增加了这些专家的使用率。(b) 通过将来自语义丰富区域的子token分配给更多不同的专家,MH-MoE展示了更细粒度的理解能力。亮度表示该区域的子token被分配给了更多不同的专家。

为了进一步提升大型容量模型性能,通过增加参数数量来扩大这些模型的规模。但这样做会导致模型尺寸极大,显著降低推理速度,限制了它们的实用性。作为替代方案,SMoE模型在保持计算成本的同时实现了模型的可扩展性,通过在每个构建块中包含并行前馈神经网络(即专家),并通过路由器有策略地激活特定输入token的不同专家,从而实现了显著的效率提升。

MH-MoE架构和工作流程

MH-MoE的工作流程。
这一流程揭示了MH-MoE如何有效地利用多头机制来增强模型对数据的理解能力

Figure 2中我们可以看到MH-MoE模型如何通过其创新的多头机制来增强对视觉和语言数据的理解。这种设计使得MH-MoE能够从不同角度捕捉和解释信息,从而在各种任务中实现更高的性能和更细粒度的理解。MH-MoE模型的这种能力,为处理复杂的视觉-语言任务提供了强大的支持,也为未来的研究和应用开辟了新的可能性。

对于视觉数据,MH-MoE的工作流程开始于将输入图像分割成多个区域,这些区域被称为patches。每个patch包含了图像中的一部分信息,可以是像素值或其他特征表示。MH-MoE模型中的不同头(heads)被路由(routed)到不同的专家(experts),每个专家负责处理特定的信息。

不同的头被分配去捕捉图像patches内部的不同细节方面以及patches之间的关系。例如,一个头可能专注于捕捉纹理信息,而另一个头可能专注于捕捉形状或颜色信息。通过这种方式,每个专家可以专注于图像的一个特定方面,从而使得整个模型能够从多个角度理解和解释视觉数据。

对于语言数据,MH-MoE模型的多头机制同样发挥着关键作用。不同的头被用于捕捉不同语言中假同源词(false cognates)的变化上下文,或者是同一语言中多义词(polysemous words)的不同含义。

例如,在处理英语和意大利语的数据时,一个头可能会专注于理解在两种语言中看起来相似但实际上含义不同的词汇(如英语中的“camera”和意大利语中的“camera”)。另一个头可能会处理同一语言中具有多种含义的多义词,如英语中的“bank”可以指代金融机构,也可以指代河岸。

通过这种多头并行处理机制,MH-MoE能够更细致地捕捉语言数据中的细微差别,并在模型中为每个词汇的不同含义建立更为精确的表示。MH-MoE模型的这种设计不仅适用于单一模态的数据,还能够处理多模态数据,即将视觉信息和语言信息结合起来。在多模态场景下,模型可以同时利用对视觉细节和语言上下文的理解,以更全面地捕捉和解释输入数据。

MH-MoE核心创新的多头机制能够显著提升模型的表示能力和灵活性。首先,MH-MoE接收输入序列,并将其通过一个多头层进行处理。这一步骤涉及到将每个token分割成多个子token,这一分割操作不仅增加了模型处理信息的粒度,还允许模型从不同的角度捕捉输入数据的特征:每个token根据多头机制被分割成h个子token,这些子token在保持原有序列顺序的同时,被重新排列形成一个新特征空间。

接下来,这些子token被送入一个门控函数,该函数计算每个子token被路由到不同专家的门控值。每个专家可以视为一个独立的前馈神经网络,负责处理分配给它的子token。在这个阶段,模型只会激活具有最高门控分数的前k个专家,这样的设计旨在提高计算效率并减少不必要的计算负担。

经过专家网络处理后,子token被重新整合回原始token的形式。这一整合过程确保了模型输出的维度与输入保持一致,从而无需在后续的非并行层中引入额外的计算成本。

典型的SMoE层和提出的MH-MoE层的结构。MH-MoE层引入了额外的两个多层感知机层,即多头层和合并层,以及在这两个MLP之间的Token-Splitting-Merging (TSM)操作

MH-MoE的训练目标旨在最小化两个主要的损失函数:目标任务损失和辅助负载平衡损失。

目标任务损失(Task Specific Loss):这个损失函数与MH-MoE设计学习的具体任务相关。例如,在预训练阶段,如果任务是语言模型预测下一个词,那么损失函数将基于语言模型损失来计算。

负载平衡损失(Load Balancing Loss):由于在SMoE模型中经常会出现专家负载不平衡的问题,MH-MoE通过引入负载平衡损失来解决这一问题。该损失函数计算每个专家被分配的子token数量,并鼓励模型更均匀地分配任务给所有专家,从而提高模型的整体效率和可扩展性。

总的训练目标是联合最小化这两个损失函数,其中负载平衡损失的权重由超参数α控制。通过这种方式,MH-MoE不仅能够学习执行特定的任务,还能够确保模型的内部组件(即专家)得到有效和均衡的利用。

MH-MoE通过其创新的多头机制和训练目标,有效地提升了模型的性能和可扩展性,同时保持了计算成本的可控性。这些设计选择使得MH-MoE成为一个在多个任务上都具有潜力的强大模型。

模型性能评估

研究者采用了与X-MoE相同的Transformer解码器架构,并根据MH-MoE的设计调整了超参数,如头数(heads)和专家数量(experts)。

研究者报告了在不同预训练任务上的验证困惑度曲线和最终困惑度值。这些任务包括英语聚焦的语言建模、多语言语言建模和掩蔽多模态建模。困惑度是衡量语言模型性能的关键指标,它反映了模型预测下一个词的能力。研究者观察到,随着训练的进行,MH-MoE的困惑度始终低于基线模型,这表明MH-MoE在语言表示学习方面更为有效。增加专家数量时,MH-MoE的困惑度进一步降低,显示了模型在利用更多专家时的性能提升。

在训练阶段,针对三个预训练任务(英语聚焦的语言建模、多语言语言建模和遮蔽多模态建模)的验证数据集上的困惑度。图中显示了Dense、X-MoE和MH-MoE模型的困惑度趋势

研究者在多个下游任务上评估了MH-MoE的有效性。这些任务包括零样本基准测试、跨语言自然语言推理和视觉-语言任务。在这些任务中,MH-MoE展现了卓越的性能,无论是在理解语言的细微差别还是在整合视觉信息方面。研究者通过这些评估验证了MH-MoE模型在实际应用中的泛化能力和实用性。

在LLM评估工具下,不同模型在语言理解任务上的准确率/准确率归一化得分

研究者通过逐步移除MH-MoE中的不同组件,展示了每个组件的功能和重要性。这些组件包括多头层(multi-head layer)、合并层(merge layer)和Token-Splitting-Merging(TSM)操作。消融研究的结果揭示了MH-MoE中每个部分对整体性能的贡献,证明了MH-MoE设计的每一部分都是提升模型性能不可或缺的。

表5展示了不同头数h下,MH-MoE模型的性能比较
表6展示了MH-MoE中MLP层和Token-Splitting-Merging (TSM)操作的消融研究结果
表7展示了不同MLP层数n下,MH-MoE模型的性能比较

MH-MoE模型的深入评估

为了深入理解MH-MoE模型的性能优势,研究者进行了一系列的分析实验,旨在验证模型在细粒度理解能力方面的提升。

研究者首先关注了MH-MoE模型中专家的激活情况。通过可视化手段,他们观察了每个专家在不同层次上的激活频率。结果显示,与X-MoE相比,MH-MoE实现了更密集的专家激活,这表明MH-MoE能够更有效地利用其专家网络。这种激活模式的改变显著减少了未被激活的“死亡”专家数量,从而提高了模型的整体表达能力。

随着模型头部数量的增加,观察到专家激活频率也随之增加。这意味着,当模型分配更多的头部时,它能更好地分配任务给不同的专家,进一步增强了模型的表示能力。

在增加专家数量时,X-MoE和MH-MoE在上游困惑度和下游任务性能上的变化

研究者进一步分析了MH-MoE在处理语言数据中的多义词和假同源词时的性能。通过使用GPT-4 API来识别这些复杂词汇,研究者发现MH-MoE的多头机制能够将这些词汇的子token分配给更多不同的专家。这种分配策略使得模型能够从不同的角度捕捉和理解每个词汇的多重含义,从而提高了对语言细微差别的敏感性。

 比较了来自多义词和假同源词(P&F tokens)与非P&F tokens的子token分配多样性

在图像数据方面,研究者分析了模型在训练过程中如何对不同区域的语义信息进行处理。他们发现,随着训练的进行,MH-MoE倾向于将来自图像中复杂纹理区域的子token分配给更多样的专家。这种策略使得模型能够更细致地理解图像中的视觉信息,尤其是在处理包含丰富语义信息的区域时。

在不同训练步骤下,从视觉数据中不同区域分割出的子token的分配多样性变化

MH-MoE模型通过引入多头机制,不仅实现了更密集的专家激活,而且显著提升了模型对语言和视觉数据中复杂概念的理解能力。MH-MoE的实现简单直观,且无需额外的计算成本,这使得它可以轻松地与其他SMoE框架集成,进一步提高性能。

MH-MoE模型的提出和验证,展示了通过创新的模型设计和训练策略,可以有效提升深度学习模型的性能和应用范围。随着进一步的研究和开发,MH-MoE模型有望在未来的AI领域发挥更加重要的作用,为解决复杂的实际问题提供更加强大和灵活的解决方案。

论文链接:https://arxiv.org/abs/2404.15045

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

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

相关文章

【Python】深入认识Python数据类型和变量

​​​​ 文章目录 1. 引言数据类型的重要性Python中的数据类型概述 2. 数字类型整型(int)浮点型(float)复数(complex) 3. 字符串类型字符串的定义与使用字符串操作方法 4. 布尔类型布尔值和布尔运算 5. 列…

【RK3568】制作Android11开机动画

Android 开机 logo 分为两种:静态显示和动态显示。静态显示就是循环显示一张图片;动态显示就是以特定帧率顺序显示多张图片 1.准备 android logo 图片 Android logo最好是png格式的,因为同一张图片的情况下,png 格式的比 jpg和b…

kafka命令--简单粗暴有效

zookeeper bin目录下执行 启动:./zkServer.sh start 停止:./zkServer.sh stop 重启:./zkServer.sh restart 状态:./zkServer.sh status kafka bin目录下执行 启动:./kafka-server-start.sh -daemon …/config/server.…

三款强大的Node.js版本控制工具推荐

在Web开发领域,Node.js无疑是一个热门的JavaScript运行时环境,它允许开发者使用JavaScript来构建服务器端应用程序。随着Node.js版本的不断更新,管理多个Node.js版本变得尤为重要。以下是三款实用的Node.js版本管理工具,它们可以帮…

VS2015安装模块时报错:安装包丢失或损坏,,,,,无效的驱动器

解决: 1、解压.iso文件; 2、替换目录 替换为解压后的对应的目录,点击重试即可。

二说springboot3的自动配置机制

大家好,这里是教授.F 目录 SpringBootApplication: EableAutoConfiguration: 上一篇文章粗略的讲了自动配置机制,二说系列将从源码的角度进行讲解。 SpringBootApplication: 首先我们还是得从SpringBootApplication…

大数据之HDFS磁盘扩容(linux磁盘扩容)

之所以扩容,是因为当前大数据平台已经接入了不同来源的数据,当执行mapreduce任务时,会发生磁盘爆满,导致hdfs爆红 具体扩容方案如下: 1、查看云磁盘分区情况 fdisk -l . 可以从图看出: /dev/vda 数据盘磁盘容量为21.5GB,包含/dev/vda1分区 /dev/vdb 数…

GD32F4XX的ISP方式下载程序时的串口选择

官方资料 详细信息可参考GD32F4xx的用户手册,第 1.4 章节 引导配置 。 版本是 :GD32F4xx_User_Manual_Rev3.0_CN 资料链接: https://www.gd32mcu.com/cn/download/6?kwGD32F4

Vue3【八】ref创建基本类型的响应式数据

ref创建基本类型的响应式数据 在setup中直接声明变量不是实时变化的响应式数据 要想使基本类型数据变成响应式数据&#xff0c;需要用到ref()函数 案例截图 案例目录 案例代码 Person <template><div class"person"><h1>我是Person组件</h1&g…

数据结构~~排序

目录 一、排序的概念 二、插入排序 直接插入排序 希尔排序 三、选择排序 选择排序 堆排序 四、交换排序 冒泡排序 快速排序 递归实现 非递归实现 五、归并排序 递归 非递归 六、非比较排序&#xff08;计数排序&#xff09; 七、其他排序 基数排序 桶排序 八…

使用JMeter软件压测接口配置说明

1、下载完该软件https://blog.csdn.net/wust_lh/article/details/86095924 2.点击bin文件中jmeter.bat脚本https://blog.csdn.net/wust_lh/article/details/86095924 3.官网地址https://jmeter.apache.org/download_jmeter.cgi 通过 【Options】->【Choose Language】变更为…

uniapp uni-popup内容被隐藏问题

今天开发新需求的时候发现uni-popup 过一会就被隐藏掉只留下遮罩(css被更改了)&#xff0c;作者进行了如下调试。 1.讲uni-popup放入其他节点内 失败&#xff01; 2.在生成dom后在打开 失败&#xff01; 3.uni-popup将该节点在包裹一层 然后将统计设置样式&#xff0c;v-if v-s…

如何格式化SQL语句(以MySQL和SQLynx为例)

目录 1 SQLynx 格式化MySQL的SQL 语句功能介绍 1.1 主要特点 1.2 使用步骤 1.3 操作示例 2 结论 SQLynx 是一款功能强大的 SQL 集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了多种工具和功能来提高用户的生产力和代码质量。其中&#xff0c;SQL 语句的格式…

上心师傅的思路分享(二)

Druid monitor 与Springboot常见报错界面渗透小技巧 目录 前言 1.Druid monitor介绍 2.Druid未授权(1rank) 3.druid弱口令 4.Druid进一步利用 4.1 URL监控 4.2 Session监控 利用思路 EditThisCookie(小饼干插件) 5.SpringBoot Actuator未授权访问漏洞 5.1 简介 5…

实验11 OSPF协议配置

实验11 OSPF协议配置 一、OSPF单区域配置&#xff08;一&#xff09;原理描述&#xff08;二&#xff09;实验目的&#xff08;三&#xff09;实验内容&#xff08;四&#xff09;实验配置&#xff08;五&#xff09;实验步骤 二、OSPF多区域配置&#xff08;一&#xff09;原理…

外贸软件解决食品行业管理难点降本增效

食品进出口贸易&#xff0c;指的是非自己国家的品牌或着生产的食品&#xff0c;通俗讲就是从别的国家和地区进行采购&#xff0c;甚至是在别的国家和地区生产&#xff0c;在国内再进行分包装的。随着全球化贸易的发展&#xff0c;食品行业国际化贸易的渠道和种类&#xff0c;都…

Java | Leetcode Java题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; class Solution {public int sumNumbers(TreeNode root) {if (root null) {return 0;}int sum 0;Queue<TreeNode> nodeQueue new LinkedList<TreeNode>();Queue<Integer> numQueue new LinkedList<Integer>();…

OS摘录1

目录 第二章第四章什么是物理地址、线性地址、虚拟地址&#xff1f;为什么要使用保护模式&#xff1f;个人理解&#xff1a;中断表无法处理&#xff1a; 第二章 即使内存条大小没有超过地址总线的范围&#xff0c;也不会全都能被访问到&#xff0c;毕竟要预留一些地址用来访问…

2024年中国质量协会六西格玛考试报名即将启动!

亲爱的考生们&#xff0c;2024年中国质量协会六西格玛考试的报名时间现已正式公布&#xff01;为方便广大考生&#xff0c;本次报名将全程采用网络方式进行&#xff0c;确保每位考生都能轻松、快捷地完成报名流程。 一、报名信息概览 报名网站&#xff1a;中国质量协会质量专…

慎投!Hindawi这本SCI还在检,这里已被踢!新增14本Scopus期刊被剔除!

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 3天内初审录用&#xff0c;随即出版&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0…