一文看懂混合专家模型 (MoE) 到底是什么?

当我们查看最新发布的大语言模型(LLM)时,常常会看到标题中出现 MoE 这一术语。那么,这个 MoE 代表什么?为什么这么多 LLM 都在使用它呢?

img

在这篇文章中,我们将深入探讨 MoE 的两个主要组件——专家和路由器,并了解它们在典型 LLM 架构中的应用。

1、什么是混合专家(MoE)?

混合专家(Mixture of Experts,简称 MoE)模型,是一种利用多个不同的子模型(或“专家”)来提升大语言模型(LLM)质量的技术。

MoE 架构主要由两个核心组件构成:

1.专家模块:每个前馈神经网络(FFNN)层包含一组“专家”,每次可从中选择一个子集。这些“专家”本身通常是 FFNN。

2.路由或者网关网络,决定将哪些标记(token)分配给哪些专家。

在采用 MoE 架构的大语言模型的每一层中,我们会发现这些专家模块往往具有这样的特点:

img

要知道,所谓的“专家”并不是专门针对某个领域,如“心理学”或“生物学”。最多,它只是语法层面的专家:

img

更具体来说,它们的专长是在特定的上下文中处理特定的标记。

路由器(网关网络)来选择最适合给定输入的专家(们):

img

每个专家并不是一个完整的 LLM,而是 LLM 架构中的子模型部分。

2、专家(Experts)

为了探讨专家(MoE中的E)的代表意义和它们的工作方式,我们首先需要了解 MoE 原本要替代的是什么——密集层。

2.1、 密集层 (Dense Layer)

混合专家(MoE)起始于 LLM 相对基础的功能,即前馈神经网络(FFNN)。

记住,标准的仅解码器 Transformer 架构中,FFNN 是在层归一化后应用的:

img

一个 FFNN 允许模型使用由注意力机制创建的上下文信息,并通过进一步转换这些信息来捕捉数据中更为复杂的关系。

然而,FFNN 的规模会迅速增长。为了学习这些复杂的关系,它通常会扩展它接收到的输入:

img

2.2、稀疏层 (Sparse Layers)

传统 Transformer 中的前馈神经网络(FFNN)被称为密集模型,因为所有参数(权重和偏置)都会被激活。没有任何参数被遗漏,所有参数都参与输出计算。

如果我们更仔细地观察这种密集模型,可以发现输入会在某种程度上激活所有参数:

img

与此相对,稀疏模型仅激活一部分参数,并且与混合专家(MoE)紧密相关。

为了说明这一点,我们可以将密集模型切割成多个部分(所谓的专家),重新训练它,并且在给定时间内只激活一组专家:

img

其底层思想是每个专家在训练过程中学习不同的信息。然后,在进行推理时,仅使用与给定任务最相关的特定专家。

当被问到问题时,我们可以选择最适合执行给定任务的专家:

img

3、专家(Experts)学到什么?

如前所述,专家学习的内容比整个领域更为细致。因此,称它们为“专家”有时被认为是误导性的。

img

ST-MoE 论文中编码器模型的专家专业化

然而,解码器模型中的专家似乎并没有同样类型的专业化。不过,这并不意味着所有专家都是平等的。

一个很好的例子可以在 Mixtral 8x7B 论文中找到,其中每个标记都以第一个专家的选择为颜色。

img

这个视觉图展示了专家倾向于关注语法而非特定领域。

因此,尽管解码器专家似乎没有特定的专长,但它们确实会被一致地用于某些类型的标记。

4、专家的架构

尽管将专家视为密集模型中的隐藏层并将其切分成块是很形象的做法,但它们通常本身就是完整的 FFNN:

img

由于大多数 LLM 具有多个解码器块,因此给定文本将在多个专家之间传递,直到文本生成:

img

所选的专家很可能在标记之间有所不同,这就导致了不同的“路径”被选择:

img

如果我们更新解码器块的可视化,它现在会包含更多的 FFNN(每个专家一个):

img

解码器块现在有多个 FFNN(每个都是一个“专家”),可以在推理时使用。

5、路由机制

现在我们有了一组专家,那么模型是如何知道应该使用哪些专家的呢?

在专家之前,添加了一个路由器(也叫网关网络),它经过训练来选择哪个专家适合给定的标记。

5.1、路由器

路由器(或网关网络)也是一种前馈神经网络(FFNN),它根据特定的输入来选择专家。它输出概率,并利用这些概率来选择最匹配的专家:

img

专家层返回所选专家的输出,并乘以门值(选择概率)。

路由器与专家(其中只有少数几个被选中)一起构成了 MoE 层:

img

给定的 MoE 层有两种大小,分别是稀疏的混合专家或密集的混合专家模型。

这两者都使用路由器来选择专家,但稀疏 MoE 只选择几个,而密集 MoE 则选择所有专家,但可能以不同的分布进行选择。

img

例如,给定一组标记,MoE 会将标记分配给所有专家,而稀疏 MoE 只选择少数专家。

在当前的 LLM 状态下,当你看到“MoE”时,它通常是一个稀疏 MoE,因为它允许你使用专家子集。这在计算上更便宜,这是 LLM 的一个重要特性。

5.2、专家的选择

门控网络可以说是任何 MoE 模型中最重要的组成部分,因为它不仅决定了在推理过程中选择哪些专家,还决定了在训练过程中选择哪些专家。

在最基本的形式中,我们将输入(x)与路由器权重矩阵(W)相乘:

img

然后,我们对输出应用 SoftMax 操作,为每个专家创建概率分布 G(x):

img

路由器使用这种概率分布来选择与给定输入最匹配的专家。

最后,我们将每个路由器的输出与每个选定的专家相乘,并对结果进行求和。

img

让我们把所有内容放在一起,看看输入是如何通过路由器和专家流动的:

img

img

6、路由的复杂性

然而,这个简单的函数常常导致路由器会选择相同的专家,因为某些专家可能比其他专家学习得更快:

img

不仅会导致选择的专家分布不均,还有一些专家几乎不会被训练到,这导致在训练和推理过程中都会出现问题。

因此,我们希望在训练和推理过程中,专家之间具有相等的重要性,这就是我们所说的负载均衡。从某种意义上说,这是为了防止对同一专家的过拟合。

7、负载均衡

为了平衡专家的重要性,我们需要关注路由器,因为它是决定在特定时刻选择哪些专家的主要组成部分。

7.1、KeepTopK

负载均衡路由器的一种方法是通过一个简单的扩展,叫做 KeepTopK。通过引入可训练的(高斯)噪声,我们可以防止总是选择相同的专家:

img

然后,除了你想激活的前 k 个专家(例如 2 个)之外,其余专家的权重将被设置为 -∞:

img

通过将这些权重设置为 -∞,这些权重上的 SoftMax 输出将导致概率为 0:

img

KeepTopK 策略是许多大型语言模型仍然使用的一种方法,尽管有很多有前景的替代方案。请注意,KeepTopK 也可以在没有添加额外噪声的情况下使用。

7.2、Token 选择

KeepTopK 策略是将每个 token 路由发送到少数几个选定的专家。这种方法称为 Token Choice,允许将给定的 token 发送到一个专家(top-1 路由):

img

或发送到多个专家(top-k 路由):

img

一个主要的好处是,它允许对专家的贡献进行加权和整合。

7.3、辅助损失

为了在训练期间获得更均匀的专家分布,辅助损失(也称为负载均衡损失)被添加到网络的常规损失中。

它添加了一个约束,强制要求专家具有相等的重要性。

这个辅助损失的第一个组成部分是对整个批次中每个专家的路由器值进行求和:

img

这给出了每位专家的重要性分数,表示无论如何输入,某位专家被选择的可能性。

我们可以使用这个来计算变异系数(CV),它告诉我们不同专家之间的重要性分数差异有多大。

img

例如,如果重要性分数差异很大,CV 就会很高:

img

相反,如果所有专家的权重分数相似,CV 就会很低(这是我们希望的):

img

使用这个 CV 分数,我们可以在训练过程中更新辅助损失,目的是尽可能降低 CV 分数(从而给每个专家相等的重要性):

img

最后,辅助损失作为一个独立的损失加入到训练中进行优化。

8、专家容量

不平衡不仅存在于被选择的专家中,也存在于分配给专家的 token 分布中。

例如,如果输入 token 不成比例地分配给某个专家,而忽视了其他专家,那么也可能导致训练不足:

img

这里的问题不仅是哪些专家被使用,而是它们被使用的频率。

解决这个问题的一种方法是限制每个专家可以处理的 token 数量,即专家容量。当一个专家的容量达到上限时,剩余的 token 会被发送到下一个专家:

img

如果两个专家的容量都已满,那么 token 将不会被任何专家处理,而是被发送到下一层,这就是 token 溢出。

img

9、通过 Switch Transformer 简化 MoE

Switch Transformer 是第一个基于 transformer 的 MoE 模型,它处理了 MoE 中的训练不稳定性问题(如负载均衡)。它简化了架构和训练过程,同时提高了训练稳定性。

9.1、切换层

Switch Transformer 是一个 T5 模型(编码器-解码器),它用切换层替代了传统的 FFNN 层。切换层是一个稀疏 MoE 层,为每个 token 选择一个专家(Top-1 路由)。

img

路由器不进行任何特殊计算,它只是计算输入与专家权重的乘积,并取其 softmax(与之前做的操作相同)。

img

这种架构(Top-1 路由)假设每次路由只需要一个专家来学习如何路由输入。这与我们之前看到的有所不同,后者假设 token 应该路由到多个专家(Top-k 路由)来学习路由行为。

9.2、容量因子

容量因子是一个重要值,它决定了每个专家可以处理多少 token。Switch Transformer 扩展了这一点,引入了一个直接影响专家容量的容量因子。

img

专家容量的组成部分非常直接:

img

如果我们增加容量因子,每个专家就能处理更多的 token。

img

然而,如果容量因子过大,我们就浪费计算资源。相反,如果容量因子过小,由于 token 溢出,模型性能将下降。

9.3、辅助损失

为了进一步防止丢失 token,引入了辅助损失的简化版本。

与其计算变异系数,这个简化的损失衡量了每个专家的 token 分派比例与路由器概率分布之间的比率:

img

由于目标是让 N 个专家之间的路由统一,我们希望向量 P 和 f 的值为 1/N。

α 是一个超参数,我们可以用它来微调训练过程中这个损失函数的权重。过高的值会超越主损失函数,过低的值对负载均衡几乎没有作用。

10、视觉模型中的混合专家(MoE)

MoE 不仅是语言模型独有的技术。视觉模型(如 ViT)利用基于 transformer 的架构,因此也有可能使用 MoE。

简要回顾一下,ViT(视觉 transformer)是一种将图像分割为图像块并像 token 一样处理的架构。

img

这些图像块(或 token)随后被映射为嵌入(并添加了额外的位置嵌入),然后再输入到常规编码器中:

img

当这些图像块进入编码器时,它们就像 token 一样被处理,这使得该架构能够很好地利用 MoE。

10.1、Vision-MoE

Vision-MoE(V-MoE)是 MoE 在图像模型中的首次实现之一。它以我们之前看到的 ViT 为基础,并将编码器中的密集 FFNN 替换为稀疏 MoE。

img

这使得通常比语言模型小的 ViT 模型可以通过添加专家来进行大规模扩展。

为了减少硬件约束,每个专家使用了小的预定义专家容量,因为图像通常有很多图像块。然而,低容量往往会导致图像块丢失(类似于 token 溢出)。

img

为了保持容量低,网络会为图像块分配重要性分数,并优先处理那些重要性较高的图像块,这叫做批处理优先路由。

img

因此,如果 token 的百分比下降,我们仍然应该看到重要的图像块被路由。

img

优先路由使得我们能集中处理最重要的图像块,从而减少处理的图像块数量。

10.2、从稀疏混合专家到软混合专家

在 V-MoE 中,优先级评分器帮助区分更重要和不太重要的图像块。然而,图像块被分配给每个专家后,未处理的图像块中的信息会丢失。

软 MoE 旨在通过混合图像块,从离散到软图像块(token)分配。

在第一步中,我们将输入 x(图像块嵌入)与可学习的矩阵 Φ 相乘。这为我们提供了路由信息,告诉我们某个 token 与给定专家的相关性。

img

然后,通过对路由信息矩阵(列)进行 softmax 操作,我们更新每个图像块的嵌入。

img

更新后的图像块嵌入实际上是所有图像块嵌入的加权平均值。

img

从视觉上看,就好像所有图像块都被混合了。这些合成的图像块然后被发送到每个专家。生成输出后,它们再次与路由矩阵相乘。

img

路由矩阵在 token 层面影响输入,在专家层面影响输出。

最终,我们得到的是“软”图像块/token,而不是离散输入。

我的DeepSeek部署资料已打包好(自取↓)
https://pan.quark.cn/s/7e0fa45596e4

但如果你想知道这个工具为什么能“听懂人话”、写出代码 甚至预测市场趋势——答案就藏在大模型技术里!

❗️为什么你必须了解大模型?

1️⃣ 薪资爆炸:应届大模型工程师年薪40万起步,懂“Prompt调教”的带货主播收入翻3倍

2️⃣ 行业重构:金融、医疗、教育正在被AI重塑,不用大模型的公司3年内必淘汰

3️⃣ 零门槛上车:90%的进阶技巧不需写代码!会说话就能指挥AI

(附深度求索BOSS招聘信息)
在这里插入图片描述

⚠️警惕:当同事用DeepSeek 3小时干完你3天的工作时,淘汰倒计时就开始了。

那么,如何系统的去学习大模型LLM?

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?老师啊,我自学没有方向怎么办?老师,这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!当然这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!
在这里插入图片描述

<think>嗯,用户问什么是混合专家模型(Mixture of Experts,MoE),我需要先理解这个概念,然后组织一个清晰的解释。混合专家模型听起来像是多个专家合作处理问题,但具体是怎么运作的呢? 首先,我应该回忆一下机器学习中的相关模型。可能涉及到集成学习,但MoE有不同之处。记得MoE的核心是每个专家处理不同的子任务,然后通过门控网络组合结果。需要确认这一点是否正确。 接下来,用户可能想知道MoE的结构,比如门控网络专家网络如何协作。需要解释这两个主要部分的功能,以及训练过程是如何进行的。可能需要举一个例子,比如在自然语言处理中的应用,如GPT-4可能使用了类似的技术。 还要区分MoE与传统集成学习的差异,比如动态路由和参数共享。用户可能对应用场景感兴趣,比如大规模模型训练中的计算效率。此外,优缺点也很重要,比如MoE在扩展性上的优势,但可能存在训练难度和过拟合的风险。 需要确保用中文解释,避免技术术语过于复杂,但又要准确。可能需要结构化回答,分点说明,比如核心思想、结构组成、工作流程、应用场景、优缺点。同时,检查是否有遗漏的关键点,比如MoE的历史背景(如最早的提出者),或者当前的应用实例,如Switch Transformer。 最后,确认是否需要用LaTeX格式,用户之前的提问中有提到数学表达式要用$...$,所以如果有公式,比如门控网络的计算,需要用正确的格式。例如,门控函数g(x)用softmax,可以写成$g(x) = \text{softmax}(W_g x)$。同时,独立公式用$$...$$,比如整体输出公式。 需要确保回答结构清晰,逐步引导用户理解,从定义到结构,再到工作流程和应用,最后优缺点。可能用户是刚开始学习机器学习,所以需要避免过于晦涩,用类比或例子帮助理解。例如,将门控网络比作协调员,专家网络比作不同领域的专家,这样更形象。 总结一下,回答应包括: 1. 定义和核心思想 2. 结构组成(门控+专家) 3. 工作流程(输入处理、门控分配、结果整合) 4. 与传统方法的区别 5. 应用场景(大规模模型、多任务学习) 6. 优缺点 7. 实际应用例子 需要检查技术细节的准确性,比如MoE是否真的在训练时联合优化门控和专家网络,是否有条件计算的特点(每次激活部分参数),以及稀疏性的好处。可能还要提到MoE在计算资源上的优化,比如减少每次推理的计算量,但增加参数量。 最后,用中文总结关键点,确保用户能够逐步理解混合专家模型的概念和应用价值。</think>混合专家模型(Mixture of Experts, **MoE**)是一种通过**组合多个专业化子模型专家)**来处理复杂任务的机器学习架构。它的核心思想是“**分治**”——将输入数据动态分配给最适合处理它的专家,最终结果由这些专家的输出加权组合而成。 --- ### 一、核心结构 MoE 由两部分组成: 1. **专家网络(Experts)** - 多个独立的神经网络,每个专家专注于学习输入数据的特定模式(例如图像分类中的不同物体类别) - 公式表示:$$E_1(x), E_2(x), \dots, E_n(x)$$ 2. **门控网络(Gating Network)** - 一个轻量级网络,负责根据输入 $x$ 计算权重,决定如何组合专家的输出 - 输出权重通常通过 softmax 归一化: $$g(x) = \text{softmax}(W_g x)$$ --- ### 二、工作流程 1. **输入分配** 输入数据 $x$ 同时送入门控网络和所有专家网络。 2. **权重计算** 门控网络生成权重向量 $g(x) = [g_1, g_2, \dots, g_n]$,满足 $\sum g_i = 1$。 3. **结果整合** 最终输出为各专家输出的加权和: $$y = \sum_{i=1}^n g_i(x) \cdot E_i(x)$$ ![MoE示意图](https://miro.medium.com/v2/resize:fit:720/format:webp/1*7mI7UuV0w6Q1VxooW4xMSA.png) --- ### 三、关键特性 | 特性 | 说明 | |-----------------------|----------------------------------------------------------------------| | **动态路由** | 根据输入数据自动选择相关专家(例如文本生成时激活不同领域专家) | | **条件计算** | 每次推理仅激活部分专家,大幅降低计算量 | | **可扩展性** | 通过增加专家数量(而非深度)提升模型容量 | | **稀疏性** | 门控网络通常产生稀疏权重(例如Top-K选择),适合分布式训练 | --- ### 四、与传统方法的对比 | | 传统神经网络 | MoE | |------------------|--------------------------|-----------------------------| | **参数使用** | 所有数据共享全部参数 | 不同数据激活不同参数子集 | | **计算效率** | 固定计算成本 | 动态调整计算量 | | **任务适配** | 单一模型处理所有输入 | 专家专业化处理特定输入模式 | --- ### 五、典型应用场景 1. **大规模语言模型** - 如 Google 的 **Switch Transformer**(万亿参数级),仅激活部分专家 - GPT-4 疑似采用类似架构 2. **多模态任务** - 为图像、文本、语音分配不同专家 3. **资源受限场景** - 在移动端动态选择轻量专家 --- ### 六、优缺点分析 **✅ 优势** - 突破单一模型容量瓶颈 - 计算效率高(稀疏激活) - 易于并行化 **❌ 挑战** - 门控网络的训练稳定性(需避免专家垄断) - 通信开销(分布式训练中专家可能位于不同设备) - 模型体积较大(存储所有专家参数) --- ### 代码示例(简化版) ```python import torch import torch.nn as nn class Expert(nn.Module): def __init__(self, dim): super().__init__() self.net = nn.Sequential( nn.Linear(dim, 4*dim), nn.ReLU(), nn.Linear(4*dim, dim) ) def forward(self, x): return self.net(x) class MoE(nn.Module): def __init__(self, num_experts=8, dim=512): super().__init__() self.experts = nn.ModuleList([Expert(dim) for _ in range(num_experts)]) self.gate = nn.Linear(dim, num_experts) def forward(self, x): # 计算门控权重 gates = torch.softmax(self.gate(x), dim=-1) # [B, num_experts] # 加权组合专家输出 expert_outputs = torch.stack([e(x) for e in self.experts], dim=1) # [B, num_experts, D] return torch.einsum('bij,bi->bj', expert_outputs, gates) ``` --- ### 七、最新进展 1. **路由算法优化** - 引入负载均衡损失(如 Google 的 **Switch Transformer**) 2. **层级MoE结构** - 在Transformer的FFN层替换为MoE(如 **GShard**) 3. **跨设备专家** - 专家分布在不同GPU/TPU(如 **DeepSpeed-MoE**) 混合专家模型正在成为**超大规模AI系统**的核心组件,它通过“术业有专攻”的设计理念,在保持计算效率的同时持续扩展模型能力边界。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值