WheatField
WheatField

MoE 中的 TopK 算法为什么要添加噪音?

August 1, 20241266 words, 7 min read
Authors

很多人了解到 MoE 应该都是从 Mixtral 8x7B 模型出圈之后,开始回看《Outrageously large neural networks: the sparsely-gated mixture-of-experts layer》这篇论文的,但 MoE 其实有比较久的历史,早在 1991 年就已经有相关的研究了。

先回顾一下 MoE 的基本结构,一个 MoE 系统 S={G,E}S=\{G, E\} 由两块组成,其中:

  • E={E1,...,En}E= \{ E_1, ..., E_n \} 是专家网络集合,每一个都是神经网络(例如,FFN),每一个网络参数都不相同。
  • GG 指的是门控网络(gating network, GN),目标是为了根据不同的输入xx 选择不同的专家。GN 可以通过训练获得,也可以固定,后者就对应于静态路由。

MoE 模块的输出可表示为: y=i=1nG(x)[i]Ei(x)y=\sum\limits_{i=1}^n G(x)[i] \cdot E_i(x),其中 G(x)[i]G(x)[i] (原文符号 G(x)iG(x)_i,但我觉得 G(x)[i]G(x)[i] 更直观一些)是 GN 第 ii 维的输出,Ei(x)E_i(x)ii 个专家的输出。 如果把 GN 看作是选择专家的概率分布,那么模型的输出就是不同专家的加权组合。

MoE 本质上属于条件计算(conditional computation) 的一种,核心的思想是根据输入样本的特征,仅激活模型的一部分参数,而非全部参数(区别于 dense layer)。目标是在不增加计算量的情况下尽可能增加模型的容量,换句话是在保持计算效率的前提下增强模型的表达能力。关于条件计算的原则与趋势,可阅读《[2403.07965] Conditional computation in neural networks: principles and research trends》

模型的容量是增加了,但对应的专家数也随之增多。一个 MoE 层可能包含数百个甚至数千个专家,那一个样本该如何选择专家呢?这就是门控网络要解决的问题。

Gating network

门控网络根据输入数据生成一个概率分布,用于选择最合适的专家。常见的方法包括 Softmax 门控和噪声 Top-k 门控。

Softmax 门控

Softmax 门控通过 Softmax 函数生成概率分布,简单直观一些就是直接训练一个权重矩阵 WgW_g,然后通过 softmax 激活函数得到一个 nn 维稀疏向量:

Gσ(X)=σ(XWg)(1)G_\sigma(X) = \sigma(X \cdot W_g) \tag{1}

其中 σ\sigma 是 softmax 函数。Softmax 门控思路非常简单直观,但它会给每个专家都分配一个非零概率,这意味着每个专家都会参与计算,这样会增加计算量。一个解决方案是引入稀疏性,即只选择少数几个专家参与计算。也就是:

Gσ(X)=σ(Topk(XWg))(2)G_\sigma(X) = \sigma(\text{Topk}(X \cdot W_g)) \tag{2}

如此就保证了稀疏性,但仅有这一点还是不够的,实际训练时会遇到一个问题:就是专家之间负载不均衡的问题。 门控网络往往倾向于选择少数几个受欢迎的专家,这会导致这些专家过载,而其他专家几乎不被使用。因此需要某种方法,去打破这种偏好,确保所有专家都(相对)均匀地去处理训练样本,从而实现负载均衡。

带噪声的 TopK 门控

在选择时,如果引入一点随机性,就可以在一定程度上打破这种选择偏好,这个思路的一个具体应用就是 noisy top-k gating network:

G(x=σ(Topk(H(x)))jj(3) G(x)=\sigma(\text{Topk}(H(x))) \tag{3}jj

其中 H(x)[i]=xWg)[i]+ϕlog(1+exWnoise)[i]H(x)[i] = (x \cdot W_g)[i] + \phi \cdot \log(1 + e^{x \cdot W_\text{noise}})[i]ϕ\phi 表示高斯分布。这个公式的后半部分就是 MoE 模型引入的辅助损失函数,用来平衡各个专家的负载,在训练时鼓励所有专家均匀地接收输入数据,这样的训练出来的专家侧重于不同的特征。

Quick quiz

一个小问题,MoE 看起来也是只使用部分网络,那跟 Dropout 有什么差异?

首先从目的上,作为条件计算的一种形式,MoE 的主要目的是显著增加模型的容量,学习和存储更多的信息以提高性能,同时兼顾计算效率,而 Dropout 是正则化技术,为了防止过拟合,提高泛化。

从实现上对比,MoE 由多个专家网络和一个门控网络组成。门控网络负责为输入样本选择一个稀疏的专家集合。这意味着对于每个输入,只有一小部分专家被激活,而其他专家则不被使用。Dropout 层每个神经元连接在训练迭代中以一定的概率被设置为零。这是一种随机过程,每次迭代中哪些神经元被丢弃都是不确定的。

小结

MoE 通过引入门控网络及专家网络来增加了模型的容量,提高模型的表达能力。在专家选择算法中,Top-k 算法通过 sparse gating network 保证稀疏性,减少了计算量。同时通过往 gating network 中引入噪声,保证了专家网络的负载均衡。

参考