使用稀疏门控的混合专家系统构建超大规模神经网络.

神经网络的容量(capacity)体现在网络的参数量,通常具有更多参数量的神经网络具有更强的特征表示能力。

条件计算(conditional computation)是一种特殊的神经网络设计方式,其实现方法是针对每个输入样本,激活网络中的部分子网络进行计算,理论上能够显著提升模型容量。常见的条件计算方法有混合专家系统(mixture of expert, MoE),这是指设置一些全连接神经网络作为专家(expert),并通过门控网络选择每次使用哪些专家。

作者使用稀疏门控的混合专家系统设计了一种超大规模的神经网络,用于解决语言建模和机器翻译任务。具体地,在多层LSTM层之间设置MoE层,每一个MoE层包括上千个全连接层(专家),门控网络计算这些专家的稀疏组合作为输出结果。每调用一次MoE层,会选择不同的专家。

该模型具有$1370$亿的参数量,实现了$1000$倍的容量提升,但仍具有较低的运算量,且具有更好的表现。

本文选用全连接神经网络作为专家,在每个MoE层设置$2048$个专家,记为$E_1,E_2,…,E_n$。额外使用一个门控网络$G$,输出长度为$n$的稀疏向量,用于选择使用的专家。当给定输入$x$,MoE层的输出表示为:

\[y=\sum_{i=1}^{n}G(x)_iE_i(x)\]

可学习的门控网络是通过softmax函数实现的:

\[G(x) = \text{softmax}(x \cdot W_g)\]

不同专家接收的样本数量可能具有较大差异,即某些专家接收到的样本较少,而另一些专家接收到的样本较多,导致负载不均衡。因此在门口网络中引入可学习的高斯噪声,用于调整负载均衡(load balancing):

\[G(x) = \text{softmax}(H(x) \cdot W_g)\] \[H(x)_i = (x \cdot W_g)_i+\text{StandardNormal}()\cdot \text{Softplus}((x \cdot W_{\text{noise}})_i)\]

上述门控机制不是稀疏的,在每次激活时会用到大量专家,导致较高的计算量;作者使用稀疏的门控机制以降低计算资源。具体地,只保留前$K$个较大的门控激活值:

\[G(x) = \text{softmax}(\text{KeepTopK}(H(x)) \cdot W_g)\] \[\text{KeepTopK}(v,k)_i = \begin{cases} v_i, & \text{if } v_i\text{ is in the top } k\text{ elements of }v \\ - ∞, & \text{otherwise} \end{cases}\]

在实践中发现门控网络倾向于收敛到少量专家具有较大权重的状态。随着更好的专家不断训练,它们更有可能被门控网络选中,导致不平衡的正反馈。作者使用一种软性约束,定义在一次批量训练样本$X$下的专家重要度,计算为该专家在该批次上的门控输出值总和:

\[\text{Importance}(X)=\sum_{x \in X}^{}G(x)\]

额外引入重要度损失用于促使所有专家具有相同的重要度,计算为重要度的方差平方:

\[L_{\text{importance}}(X)= w_{\text{importance}} \cdot CV(\text{Importance})(X))^2\]

实验表明该方法提高了模型的总参数量,但具有较低的运算量,因为每次激活的专家数量是稀疏的,且具有更好的表现。