趋近智
门控网络和专家网络是高层组成部分,它们可以被组合成一个精确的数学模型。这个模型详细说明了单个token通过稀疏MoE层的完整前向计算过程,概述了具体的计算步骤。
该过程始于门控网络,也称作路由器。它的作用是确定哪些专家应处理当前的输入token。输入是一个token嵌入,表示为一个向量 ,其中是模型的隐藏维度。
门控网络本身是一个简单的线性层,由一个权重矩阵 定义,其中是专家总数。该层将输入token投射到一个维空间,为每个专家生成一个logit值。
得到的向量包含个原始得分。为了将这些得分转换为概率分布,我们应用softmax函数:
输出是一个稠密的维向量,其中每个元素表示路由器将token分配给专家的置信度。中所有元素的和为1。
一个稠密的向量意味着每个专家都会对输出做出贡献,这与MoE计算效率的目标相悖。为了强制稀疏性,我们采用TopK操作。不使用所有专家,我们选择得分最高的专家中的一小部分固定数量。
对于给定的token,我们识别出中Top 个值的索引,并将所有其他门控值设为零。这就创建了一个稀疏门控向量。的选择是一个重要超参数。在Switch Transformers中,,意味着每个token被路由到一个专家。更常见的选择是,这为学习更复杂的函数提供了途径,并增加了一定程度的冗余。
这一操作有效地修剪了每个token的计算图。如果且我们有个专家,我们只需对其中2个进行前向计算,忽略其余62个。
个专家中的每一个通常是一个独立的自前馈网络(FFN)。尽管它们都共享相同的架构,但它们不共享权重。每个专家都有一套自己的参数。一个标准的双层FFN专家可以表示为:
这里,和分别是专家的第一和第二线性层的权重矩阵。正是这种独立的专家权重集合导致模型总参数量大幅增加。
我们现在可以结合这些步骤来定义MoE层的最终输出。输出是来自所选专家的输出的加权和,使用TopK操作得到的稀疏门控权重。
因为是稀疏的,只有个非零值,这个求和是计算高效的。我们只需计算路由器选择的个专家的。
单个token的完整数据流可以如下所示:
单个token通过MoE层的数据流。输入
x被送往门控网络以生成稀疏权重,并同时送往所选专家进行处理。
TopK函数是不可微分的,这给反向传播带来了问题。实际中,这通过直通估计器处理。在前向计算时,我们应用离散的TopK选择。在反向传播时,我们使梯度通过顶部个门,就好像选择是一个简单的乘法。稠密门控输出用于计算门控权重的梯度。
此外,从初始softmax输出中选择Top 个值后,它们的和不再保证为1。为了形成一个合适的凸组合,这些个值通常会被重新归一化。这通常通过仅对中选定的Top 个logit应用第二次softmax来完成。这确保了最终求和中使用的权重准确反映其相对重要性并和为1。
这种表述提供了一个参数量庞大的模型,但每个token的计算成本是恒定的,由而非决定。然而,这种精巧的结构带来了一个重大挑战:如果门控网络学习到将大多数token路由到少数几个专家,其他专家将不会收到训练信号。这导致了专家退化问题,我们接下来通过引入负载均衡损失来解决。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造