1991 年——34 年前——Robert Jacobs(MIT)、Michael Jordan(MIT)、Steven Nowlan(多伦多)、Geoffrey Hinton(多伦多)在Neural Computation 第 3 卷发表了一篇 9 页的论文,标题叫《Adaptive Mixtures of Local Experts》。文章不到一万字,但它在误差函数里改的那一个小动作,把多任务网络从"合作"改成了"竞争"。这一改让一组"专家网络"学会自动分工,每个专家只负责输入空间的一小块——这就是 Mixture-of-Experts(MoE)的原始诞生。33 年后——GPT-4、Claude、Gemini、Mixtral、Switch Transformer——所有万亿参数稀疏激活模型的数学骨架,就是这篇 1991 论文里的那个公式。这是 MoE 谱系的开山之作。
1991 年发表在 Neural Computation 第 3 卷 79-87 页的这篇论文,四位作者都成了深度学习史上的传奇——Hinton(图灵奖、神经网络教父)、Jordan(机器学习领域开创者,统计 ML 学派代表)、Jacobs(Hinton 的合作者,later UMass 教授)、Nowlan(Hinton 早期博士生,后来去了 Hinton 实验室)。文章的核心思想1988 年就由 Jacobs 和 Hinton 在匹兹堡 Connectionist Summer School上首次提出。33 年后这个想法支撑着GPT-4、Mixtral、Switch Transformer——但 2017 年之前,它被几乎所有深度学习社区忽略。
1991 年,Robert A. Jacobs(MIT 脑与认知科学系)、Michael I. Jordan(同 MIT,后来转去 UC Berkeley 创立机器学习领域里最重要的"贝叶斯学派")、Steven J. Nowlan(多伦多大学计算机科学系,Hinton 的早期博士生)、Geoffrey E. Hinton(同多伦多,后来获 2018 年图灵奖、被称为"深度学习教父")——四个人一起,在 Neural Computation 第 3 卷 79-87 页,发表了一篇 9 页的论文。
标题——《Adaptive Mixtures of Local Experts》——"自适应局部专家混合"。
论文一开头他们就说——"这个想法最早是 Jacobs 和 Hinton 在 1988 年匹兹堡 Connectionist Summer School 上提出的"——所以这套思想实际上 1988 年就有了雏形。3 年后他们把它完善成一篇真正的论文。
论文摘要这样写——
我们提出一种新的有监督学习过程——
它针对的系统由多个独立网络组成,
每一个学会处理训练样本里的一个子集。
这个过程可以被看作——
要么是多层有监督网络的模块化版本,
要么是联想式竞争学习的版本。
因此它在这两种看似不同的方法之间架了一座新桥。
我们演示——
这个学习过程把元音区分任务分解成合适的子任务,
每一个子任务都可以由一个非常简单的专家网络解决。
这就是 Mixture-of-Experts——后来人们叫它 MoE——第一次成形。
但这篇论文被深度学习社区忽略了 25 年。直到 2017 年 Google Brain 的 Shazeer、Hinton、Dean把它从故纸堆里翻出来,加上稀疏门控,做出 137 亿参数的语言模型——MoE 才重新成为深度学习的主角。又过了 4 年(2021),Switch Transformer 把它推到万亿参数。再过 3 年(2024),Mixtral 8x7B 把它变成所有人都能下载的开源 LLM。
1991 年的这篇论文今天值得读,不是因为它的实验结果(元音区分是个很小的任务),而是因为它把一个改变了整个深度学习未来的思想骨架立住了。
1991 年的核心痛点——"用反向传播去训练单个多层网络在不同时刻做不同子任务时,会有强烈的干扰,导致学习慢、泛化差"。一个网络一开始学子任务 A,然后切到子任务 B——B 的梯度会破坏 A 已经学到的东西。论文的观察——如果我们事先知道训练样本可以被自然分成对应不同子任务的子集——就可以用一个"专家网络"组 + 一个"门控网络"来减少干扰。门控决定每个训练样本应该用哪个专家。
论文第 1 节标题——"让联想学习具有竞争性"(Making Associative Learning Competitive)——开头就直接指出了痛点——
如果用反向传播训练单个多层网络,
在不同时刻执行不同的子任务——
一般会出现强烈的"干扰"——
导致学习慢、泛化差。
这个"干扰"是什么意思?想象一个普通的神经网络要学两件不同的事——比如同时学"识别男声"和"识别女声"。当它处理男声样本时,梯度更新会朝某个方向调整权重;当它处理女声样本时,梯度更新会朝另一个方向。两边相互拉扯,谁都学不好——也很难泛化到新数据。
论文观察到一个关键事实——
如果我们事先知道——
训练样本可以被自然地分成子集,
对应不同的子任务——
干扰可以被减少——
方法是用一个系统——
由几个不同的"专家"网络 +
一个"门控网络"组成——
门控决定每个训练样本应该用哪个专家。
核心思想——门控网络给一个新样本分配给一个或几个专家。如果输出错了,权重更新只在这几个专家(+ 门控网络)里发生。其他专家不受影响——所以它们专门负责的子任务不会被破坏。
专家在两个意义上是"局部的"——
· 权重上局部——一个专家的权重跟其他专家的权重解耦
· 空间上局部——每个专家通常只负责输入空间的一小块
这个"局部专家"的想法听起来简单——但前面已经有人尝试过(Hampshire-Waibel 1989、Jacobs 1990),都失败了。下一章我们看为什么。
Hampshire-Waibel(1989)和 Jacobs 等(1990)用过类似的"专家 + 门控"架构——但都用了错误的误差函数。他们假设最终输出是专家输出的线性组合——门控网络决定每个专家在线性组合里的比例。误差是"期望输出和这个线性组合的差距"——$E^c = \|\boldsymbol{d}^c - \sum_i p_i^c \boldsymbol{o}_i^c\|^2$。这个误差函数不鼓励"局部化"——一个专家的最优输出依赖所有其他专家在做什么。结果——专家们倾向于"合作"——每个样本由多个专家共同负责,没有谁能专门化。
论文里说——"不幸的是,Hampshire 与 Waibel 和 Jacobs 等都使用了不鼓励'局部化'的误差函数"。
这些早期方法假设——整个系统的最终输出是局部专家输出的线性组合,门控网络决定每个局部输出在这个线性组合里的比例。所以样本 $c$ 上的最终误差是——
其中——
· $\boldsymbol{o}_i^c$ 是专家 $i$ 在样本 $c$ 上的输出向量
· $p_i^c$ 是专家 $i$ 对联合输出向量的比例贡献
· $\boldsymbol{d}^c$ 是样本 $c$ 的期望输出向量
论文一针见血指出问题——"这个误差衡量把期望输出和'各局部专家输出的混合'对比"。所以要最小化误差——每个局部专家必须让自己的输出去抵消其他所有专家剩下的残差。
结果——"当一个专家的权重变化时,残差也变化——所以所有其他专家的误差导数都变了"。
专家之间这种强耦合——
让它们"合作得很好",
但倾向于产出"每个样本都用了多个专家"的解。
这就是为什么早期方法失败——网络没有学会"分工",反而学会了"合作"——每个专家都是个"小通才",每个样本都需要所有专家的协作。整个系统又退回到"单个大网络"的状态,没有解决干扰问题。
"可以通过加惩罚项鼓励竞争"——Jacobs 1990 就是这样做的——"但更简单的解药,是重新定义误差函数,让局部专家被鼓励竞争而非合作"。
这就是 1991 这篇论文真正的创新。
论文的关键创新——不是线性组合所有专家的输出,而是让门控网络做随机决定——每次只选一个专家。新的误差函数是"期望输出和实际输出的方差的期望"——$E^c = \langle \|\boldsymbol{d}^c - \boldsymbol{o}_i^c\|^2 \rangle = \sum_i p_i^c \|\boldsymbol{d}^c - \boldsymbol{o}_i^c\|^2$。这是本文最重要的一个公式——它每个专家被要求独立产出整个输出向量,不是残差。专家间的"强耦合"被打破,分工自然涌现。
论文写道——
我们想象——
门控网络做一个随机决定,
每次用哪一个专家。
误差是期望输出和实际输出向量的平方差的期望——
"注意——在这个新误差函数里,每个专家被要求独立产出整个输出向量——不是残差"。
这看起来是个小调整——但它改变了一切——
结果——"一个局部专家在某个训练样本上的目标,不再直接被其他专家的权重影响"。还有一点间接耦合——如果其他专家的权重变了,门控网络可能改分配的"责任"——但这些责任变化不能改变一个局部专家在一个训练样本上感受的误差的符号。
论文继续——如果门控网络和局部专家都用梯度下降在这个新误差函数下训练,系统倾向于把每个训练样本分给单个专家。
具体说——每当一个专家给某个样本的误差小于所有专家误差的加权平均(按门控分配的权重)——它对这个样本的"责任"就增加。这是一个自我强化循环——好的专家越被分配越好。
论文 Figure 1 展示了1991 年版本的 MoE 架构——非常清晰简单。3 个专家网络都接收同样的输入,有同样数量的输出。一个门控网络也接收同样的输入——产出 $p_j = \exp(x_j) / \sum_i \exp(x_i)$,即softmax 归一化的输出。随机选择器像一个"单输出多输入随机开关"——选中专家 $j$ 的概率是 $p_j$。这就是"stochastic one-out-of-n selector"。这个架构的核心元素——专家、门控、softmax 归一化、随机选择——33 年后仍然几乎一模一样地用在 GPT-4 和 Mixtral 里。
Figure 1 展示了完整架构——3 个专家网络+ 一个门控网络+ 一个随机选择器。
每一个专家是前馈网络。所有专家接收同样的输入,有同样数量的输出。门控网络也是前馈,通常接收和专家相同的输入。
门控网络的输出经过 softmax 归一化——
其中 $x_j$ 是门控网络的第 $j$ 个输出单元收到的总加权输入。
选择器像一个单输出多输入的随机开关——开关选择专家 $j$ 的输出的概率就是 $p_j$。
这个架构虽然图上画了 3 个专家——但本质可扩展到任意数量。在 1991 年的元音识别任务里,他们只用了几个;到 2017 年 Shazeer 团队扩展到 65,536 个专家;2021 年 Switch Transformer 用2,048 个专家组合成万亿参数;2024 年 Mixtral 用8 个专家 / 每层但每个专家本身就是 7B 参数——总参数 47B。
但核心机制完全没变——专家、门控、softmax、选择——这就是 1991 年这篇论文留下的不朽骨架。
用梯度下降对这个新误差函数训练,系统倾向于把每个训练样本指派给单个专家。机制——每当一个专家给某个样本的误差小于"所有专家误差的加权平均"(按门控权重),它对这个样本的责任就增加。这是自我强化的过程——好的专家越被分配越好。最关键的数学性质——专家间的"间接耦合"不能改变误差的符号——所以每个专家可以稳定地朝自己最擅长的方向走,不会被其他专家的变化拽偏。
论文继续——
仍有一些间接耦合——
因为如果其他专家改变它的权重,
可能导致门控网络改分配给专家们的"责任"。
但至少这些责任变化不能改变
一个局部专家在某个训练样本上感受的
误差的符号。
如果门控网络和局部专家都用梯度下降在这个新误差函数下训练——
系统就倾向于把每个训练样本指派给单个专家。
这是 1991 年论文的数学奇迹。让我换种说法——
· 旧公式下——专家 $A$ 的最优输出取决于专家 $B$、$C$ 当下在产出什么。如果 $B$ 改了,$A$ 也得跟着改。所有人都在追逐一个移动的目标。
· 新公式下——专家 $A$ 的目标永远是"把整个输出做对"。这个目标不会因为 $B$、$C$ 在做什么而移动。$A$ 可以稳定地优化自己。
· 但是——当 $A$ 真的擅长某类输入时,门控网络会把更多这类输入分给它——所以 $A$ 越擅长就越被锻炼。
这是一个正反馈循环——分工自然涌现。论文说——"每当一个专家给某个训练样本的误差比所有专家误差的加权平均更低(用门控网络的输出决定如何加权每个专家的误差)——它对这个样本的责任就增加"。
论文用元音区分任务来证明这个想法真的有效。元音的声学特征因说话人不同而显著不同——男声、女声、儿童——所以"识别元音"实际上是好几个相关但不同的子任务。论文展示——MoE 自动学会把不同说话人的声音分给不同专家,每个专家用一个非常简单的网络就能解决自己负责的那一片。这件事没有人事先告诉系统"说话人分组"——分组是自动涌现的——这正是"自适应"的精髓。
1991 年的实验设置在元音区分(vowel discrimination)任务上。这是个经典语音识别基线——给定声波特征,判断说的是哪个元音(a / e / i / o / u 等)。
这个任务有一个关键特性——同样的元音被不同人说出来时,声学特征非常不同。男声、女声、儿童——他们的基频、共振峰、谐波分布都不同。所以"识别元音"实际上是好几个相关但不同的子任务——"识别男人的元音""识别女人的元音""识别儿童的元音"。
论文摘要的最后一句很关键——
我们演示——
这个学习过程
把元音区分任务分解成合适的子任务——
每一个子任务
都可以由一个非常简单的专家网络解决。
这件事很关键——"自动分解"这件事是涌现的。没有人事先告诉系统"这里有男女儿童三个子任务"。系统通过梯度下降 + 竞争性误差函数,自己学会了这个分组。
这跟2017 年 Shazeer 团队对 137 亿参数 LSTM 语言模型的观察完全一致——他们发现专家"基于句法和语义自然变得高度专门化"。1991 年和 2017 年——同样的现象。
1991 → 2024——33 年里 MoE 的进化路径非常清晰。2017 Shazeer 加上 noisy top-k 门控 + 负载平衡损失,规模到 137B 参数。2021 Switch Transformer 简化到 top-1(k=1),引入 bfloat16 混合精度,规模到万亿参数。2024 Mixtral 8x7B 把它开源——47B 总参数、13B 激活——成为所有人都能下载的 MoE LLM。但每一代的数学骨架——专家、门控、softmax、稀疏选择——都是 Jacobs/Jordan/Nowlan/Hinton 1991 年定下的。
1991 到 2024——33 年。这个想法的进化路径让我读完后觉得非常震撼——
1991——Jacobs, Jordan, Nowlan, Hinton——原始 MoE——元音区分任务,几个专家。
2017——Shazeer, Mirhoseini, Maziarz, Davis, Le, Hinton, Dean——《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》——加上 Noisy Top-K Gating 和负载平衡损失,规模到 65,536 个专家、137 billion 参数。MoE 从故纸堆里被拉回来,成为大模型时代第一个"稀疏激活"的方法。
2021——Fedus, Zoph, Shazeer——《Switch Transformers》——把门控简化到 top-1(k=1,每个 token 只激活 1 个专家),引入 bfloat16 训练,把 MoE 推到万亿参数——比同等 dense 模型快 4-7 倍。
2024——Mistral AI——《Mixtral of Experts》——开源 8x7B Sparse MoE,47B 总参数、13B 激活——成为世界上第一个所有人都能下载、可商业化使用的 MoE 大模型。击败 Llama 2 70B 和 GPT-3.5。
但每一代的数学骨架——
· 专家 $E_i$ 接受输入产出输出
· 门控网络 $G$ softmax 输出选哪个专家
· 稀疏选择——只激活部分专家,节省计算
· 独立误差函数——每个专家被要求做整个任务,不是残差
都是 1991 年那张 Figure 1 的延续。
论文末尾有一个我读完后久久不能忘的脚注——
这个想法最早由 Jacobs 和 Hinton
在 1988 年匹兹堡 Connectionist Summer School 上提出。
1988 年——36 年前。当时的 Hinton 还没有图灵奖。Jordan 还没有创立"贝叶斯学派"。"深度学习"这个词都不存在。
但是这四个人——其中两个最终拿到了图灵奖、一个统治了 30 年的统计 ML——已经看到了未来。他们把那个未来写在了一篇 9 页的论文里,然后等了 25 年才被世界听到。
这就是学术研究最美的样子——把对的想法写下来,相信终有一天它会回来。