1. 背景介绍
这是2017年Google Brain团队发表的一篇比较经典的论文, 可以做为MOE在大语言模型上应用的第一篇, MOE全称是混合专家(Mixture of Experts). 这里的每个Expert都是一个更小的神经网络, 比如最简单就是FC全连接网络, MOE整体不是一个完整的网络结构, 而是作为layer层嵌入到别的网络中.
首先介绍这篇论文的背景, 模型的学习能力强弱跟模型的参数量有关, 即模型越大参数量越多那么模型效果越好, 同时存在个问题就是按之前稠密模型的设计, 模型参数量越大计算量也越大, 计算越慢. 有没有一种方式既可以增大模型参数量又能使得计算量控制在一定范围内(对应有个名词叫条件计算conditional computation
), 这就是这次论文讨论的重点. 本文中基于LSTM堆栈基础上应用了MOE结果使得参数量提升至137B大小, 相比之前模型容量提升了有1000倍, 但是计算量只增加了一少部分, 具体数据和效果看最后.
2. 网络介绍
一个完整的MoE由n
个专家网络( $ E_1, …, E_n $, )和一个门控网络 G G G 组成. 每个专家网络定义为一样的前向网络结构, 参数不同, 接收相同大小的输入, 输出规模保持一致; 门控网络的输出是一个n
维的向量, 用来表示选择对应的专家. 如图中所示, 分别以 G ( x ) G(x) G(x) 与 E i ( x ) E_i(x) Ei(x) 做为门控网络的输出与第i
个专家的输出, x x x 是输入, 最终输出 y = ∑ i = 1 n G ( x ) i E i ( x ) y = \sum^n_{i=1} G(x)_i E_i(x) y=∑i=1nG(x)iEi(x) . 门控网络输出 G ( x ) G(x) G(x) 是稀疏向量, 表示选择专家的权重, G ( x ) i = 0 G(x)_i=0 G(x)i=0 时, 就不用计算 E i ( x ) E_i(x) E