标准稠密神经网络基于完全激活的原理运行。对于每个输入,模型中的每个参数都会参与计算。这种方法非常成功,但随着模型参数量达到数千亿,它会遇到一个显著瓶颈。计算成本(以浮点运算次数FLOPs衡量)与参数数量成正比增长,使得训练和推理成本极高。稀疏门控专家混合(MoE)架构通过采用条件计算,提供了一条更高效的扩展路径。其核心思想简单而有效:对于每个输入,我们不再激活整个网络,而是仅激活一小部分相关内容。MoE模型通过维持大量“专家”子网络,并使用一个轻量级“门控网络”来动态选择哪些专家应处理每个输入标记,从而实现此目标。这使得模型容量(总参数)可以大幅增加,同时保持单次前向传播的计算成本相对恒定。稀疏门控MoE层的架构由两个主要组成部分构成。专家网络专家是MoE层的主要工作单元。每个专家本身就是一个神经网络,通常是一个简单的全连接前馈网络(FFN),它学习专注于处理特定类型的信息。例如,在一个大型语言模型中,一个专家可能擅长处理Python代码中的语法,而另一个则可能专注于法语习语。由于一个输入标记只被路由到少数几个专家(通常只有一个或两个),模型可以包含大量专家。一个模型可能有8个、64个甚至更多的专家,但对于任何给定标记,只有一小部分被使用。这是这种架构高效的原因。总参数数量是所有专家参数(加上小型的门控网络)的总和,但单次前向传播的活跃参数数量保持较小。门控网络(路由器)门控网络,也称为路由器,充当交通控制器。它的作用是检查传入的标记,并决定哪些可用专家最适合处理它。门控网络通常是一个小的线性层,然后是一个softmax函数。它接收标记的输入表示 $x$,并生成覆盖所有 $N$ 个专家的概率分布。$$ \text{对数几率} = W_g \cdot x $$ $$ \text{门控值} = \text{softmax}(\text{对数几率}) $$这里,$W_g$ 是门控网络的可学习权重矩阵。生成的门控值向量包含决定选择哪些专家的分数。为了强制稀疏性,对此向量应用一个top-k函数。例如,如果 $k=2$,则只选择分数最高的两个专家。所有其他专家的分数都被设置为零,从而有效地禁用了它们对于当前标记的作用。信息流动单个标记的完整前向传播涉及门控网络和专家之间的协调流程。标记被发送到门控网络,以确定激活哪些专家。同时,标记被传递给选定的专家进行处理。最后,活跃专家的输出以加权和的形式结合,使用门控分数作为权重。digraph MoEArchitecture { rankdir=TB; graph [fontname="sans-serif", splines=ortho]; node [shape=box, style="rounded,filled", fontname="sans-serif", margin="0.3,0.2"]; edge [fontname="sans-serif", fontsize=10]; Input [label="输入标记\n表示 (x)", fillcolor="#e9ecef", width=2]; Gating [label="门控网络\n(路由器)", shape=parallelogram, fillcolor="#a5d8ff", width=2]; Input -> Gating; subgraph cluster_experts { label="专家池"; style="rounded,dashed"; node [shape=box, fillcolor="#b2f2bb", style="rounded,filled"]; E1 [label="专家 1"]; E2 [label="专家 2"]; E_dots [label="...", shape=plaintext, fillcolor=none]; EN [label="专家 N"]; } Combine [label="加权和\n组合器", shape=circle, fillcolor="#ffd8a8", width=1.5]; Output [label="输出标记\n表示 (y)", fillcolor="#e9ecef", width=2]; Gating -> Combine [label="g(x) 权重", style=dashed, color="#1c7ed6", fontcolor="#1c7ed6"]; edge [style=dashed, color="#adb5bd"]; Input -> E1; Input -> EN; edge [style=solid, color="#37b24d", penwidth=2]; Input -> E2 [label=" 路由标记", fontcolor="#37b24d"]; E2 -> Combine [label=" E₂(x) 输出", fontcolor="#37b24d"]; edge [style=dashed, color="#adb5bd"]; E1 -> Combine; EN -> Combine; Combine -> Output; }标记通过MoE层的流动过程。输入标记被发送到门控网络,门控网络输出所有专家的分数。根据这些分数(例如,top-k),标记被路由到一小部分活跃专家(此处为专家2)。活跃专家的输出被聚合以生成最终输出。不活跃的专家不执行任何计算。这种稀疏激活是该架构的决定性特征。在Transformer模型中,MoE层通常用于替换自注意力机制之后出现的稠密前馈网络(FFN)模块。通过这样做,我们可以大幅扩展模型FFN部分的参数数量,而不会导致计算需求相应激增,从而为更强大、更高效的大规模模型提供可能。在接下来的章节中,我们将查看此流程的数学细节、它带来的挑战以及用于解决这些挑战的技术。