来源:互联网 更新时间:2026-08-13 14:25
大家可能注意到了,GPT-4、DeepSeekMoE这些模型的发布,都绕不开一个话题——混合专家模型(MoE)。可以说,MoE已经成为AI社区最炙手可热的技术路线之一。2023年6月,知名黑客George Hotz透露了一个相当震撼的消息:GPT-4由8个220B的专家模型组成。如果把这8个专家模型比作比GPT-3还大的脑袋,那GPT-4就是一个八个头的超级大怪兽。
GPT-4(MoE)相比GPT-3(Transformer)和GPT-3.5(RLHF)的性能提升了一个数量级,关键很可能就在MoE架构上。过去给大模型增加参数,是在一个模型上堆层数;现在,思路变了——开始堆模型数。可以预见,未来大语言模型的研究方向,可能不再是单纯增大单一模型的向量维度和层数,而是转向增大整体架构中的模型数量。GPT-4引入MoE,几乎是一个必然选择:无论是算力、数据还是稳定性,训练一个万亿级参数的单一模型都极为困难,推理成本更是居高不下——跑万亿个参数才能算出下一个token,这笔账怎么算都不划算。所以,把若干个模型堆成一个MoE大模型,看起来是必由之路。
那么,究竟什么是MoE大模型?它又具备哪些独特的优势?
MoE,全称Mixed Expert Models,混合专家模型,说白了就是把多个专家模型混合在一起,形成一个新的模型。要理解MoE,有两个思想前提能帮上大忙。其一,现实生活里碰上一个横跨多领域知识的复杂问题,该怎么办?最简单的办法就是拆解任务,把不同领域的专家召集起来,各自攻克自己擅长的部分,最后汇总结论。这个思路跟集成学习有点像,但又有实质区别:集成学习不需要把任务拆成子任务,它是训练多个基学习器来解决同一个问题,最后简单组合它们的预测结果;而MoE是把大问题先拆开,再逐个解决小问题,然后汇总结论。其二,模型规模是提升性能的关键因素之一。在有限的计算资源下,用更少的训练步数训练一个更大的模型,往往比用更多步数训练一个较小的模型效果更好。

MoE正是基于这些理念,由多个专业化的子模型(也就是“专家”)组合而成,每个专家都有自己的擅长领域。而决定哪个专家来回答特定问题的,是一个叫“门控网络”的机制。说到门控,很多人可能先想到LSTM里的门控,但这里的门控完全不一样:LSTM的门控制信息流动,这里的门更像我们日常中的门——选择进门还是不进门,是一个控制是否启用某个专家模型的概率分布值。

MoE基于Transformer架构,主要由两部分组成:
MoE一个显著的优势是,它能在远少于稠密模型所需计算资源的情况下进行有效预训练。换句话说,在同样的计算预算下,可以显著扩大模型或数据集的规模。预训练阶段尤其明显:与稠密模型相比,混合专家模型通常能更快地达到相同的质量水平。比如Google的Switch Transformer,模型大小是T5-XXL的15倍,在相同计算资源下,它达到固定困惑度PPL的速度比T5-XXL快了4倍。
国内的DeepSeek团队开源了国内首个MoE大模型DeepSeekMoE,成绩单相当亮眼:
除此之外,MoE大模型还有这些优点:
MoE和大模型的结合,可以说是老树发新芽。MoE的崛起,本质上是因为大模型的发展已经撞上了一堵墙——包括“幻觉”问题、逻辑理解能力、数学推理能力等瓶颈。要突破这些瓶颈,就必须继续增加模型的复杂度。随着应用场景越来越复杂、越来越细分,垂直领域的碎片化程度也在加剧,想要一个模型既能回答通识问题,又能解决专业问题,尤其是在多模态大模型浪潮下,每个数据集(文本、图像、语音等)的特征各不相同,MoE无疑是一种性价比更高的选择。国内大模型已经加速向MoE方向迈进,2024年,预计会有越来越多的大模型选择MoE架构。
接下来,我们会深入探讨MoE的主要原理,以此理解MoE大模型优势背后的逻辑。
这是绝大多数MoE论文都会引用的一篇最早文章,发表于1991年。论文提出了一种新的监督学习过程——由多个独立网络组成一个系统,每个网络单独处理训练集合的一个子集。原因在于,对于多任务学习,如果使用常见的多层网络,各层之间的网络往往会产生强烈的干扰效应,导致学习变慢、泛化能力变差。为了解决这个问题,论文提出使用多个模型(即专家)来学习,同时用一个门控网络来决定每个数据应该由哪个模型来处理,从而减轻不同类型样本之间的干扰。
对于一个样本c,第i个专家的输出为,期望的输出向量为d_c,那么损失函数为:

其中是门控网络分配给第i个专家的权重。
但作者很快发现,这个损失函数可能导致专家网络之间出现强烈的耦合——所有专家的权重加在一起来计算损失,一个专家权重的变化会影响其他专家的loss。这种耦合导致多个专家被频繁用于处理同一条样本,而不是各自专注自己的子任务。为了解决这个问题,论文重新定义了损失函数,鼓励专家之间的竞争:先让不同专家单独计算loss,再加权求和。这意味着每个专家在处理特定样本时的目标独立于其他专家。如果门控网络和专家都使用这个新loss进行梯度下降训练,系统会倾向于把某类特定样本分配给特定的专家——当某个专家在给定样本上的loss小于所有专家的平均loss时,它对该样本的门控score会增加;反之则会减少。这种机制鼓励竞争而非合作,从而提高了学习效率和泛化能力。
2010到2015年间,两个独立的研究领域为MoE的后续发展做出了重要贡献:
2017年,Shazeer等人将这些概念应用于137B的LSTM。通过引入稀疏性,在保持极高规模的同时实现了快速推理速度,仅在牺牲极少计算效率的情况下就把模型规模提升了1000多倍。这项工作发表在论文《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》中。与1991年的工作相比,这里的Sparsely-Gated MoE有两个关键区别:
如上图所示,每个token都会经过一层MoE Layer,每个MoE层包含多个专家,同时有一个门控网络会根据当前token选择少数几个专家来进行计算。
门控网络的设计和实现是Sparsely-Gated MoE层的核心。它负责为每个输入token选择一个稀疏的专家组合。最简单的门控网络就是概率分布形式,让系统根据概率做出选择。在深度学习中,最简单的方式就是设定门控网络为一个简单的前馈神经网络,最后接一层softmax,作为每个专家的使用权重。
设G(x)和E_i(x)分别是门控网络和第i个专家的输出,那么在输入x下,输出就是所有专家的加权和:
典型的门控网络就是一个带softmax的简单网络,它学会将输入发送给哪个专家。但在这种设置下,所有专家都会对输入进行运算,再通过门控网络的输出加权求和。如果专家数量太大,计算量也会非常可观。如果能想办法让某些专家的门控网络输出为0,就无需对它们进行计算,从而节省资源。其中效果比较好的方法包括带噪声的TopK门控(Noisy Top-K Gating)。它引入可调整的噪声,然后保留前k个值。具体来说:先添加一些噪声,再选择保留前k个值,最后应用Softmax函数。对于非TopK的部分,值被设为负无穷,Softmax之后变成0,不会被选中。噪声的存在还能让不同专家的负载更加均衡。实际应用中,作者使用的k值为2到4。
在MoE模型中加入噪声,主要有以下几点原因:
理解专家负载均衡,可以从batch size角度切入。一般来说,较大的batch size推理性能更好,但由于样本在MoE层激活专家时需要并行,每个专家的实际batch size会减少。举个例子:假设当前batch有10个token,其中5个被路由到某个专家网络,另外5个被路由到其他5个不同的专家网络,这就会导致各专家网络的batch size极不均匀——一个专家的计算量是另一个的5倍,算力利用率自然就低了。
更严重的是,如果把所有token都发给少数几个头部专家,训练效率会非常低下。因为在训练中,门控网络会逐渐收敛到只选择这些少数专家,进而形成自我强化的循环:受青睐的专家训练得更快,效果更好,所以被选中的频率越来越高。最终,这几个专家过度负载,每次要处理大量token,而其他专家则被闲置,导致模型失衡,性能下降。因此,控制专家均衡是MoE模型必须解决的问题。上文提到的噪声机制,某种程度上就是为了让门控在做出选择时跳过几个最优专家,去选择其他专家,从而让它们协同工作。
除此之外,还可以通过添加辅助损失来鼓励模型给予所有专家同等重视。论文提出了一种软约束方法:定义专家相对于一批训练样本的"重要性"Importance(X)——即该专家在这批样本中门控值的总和。然后定义一个额外的损失函数L_Importance(X),添加到模型的整体损失中。这个损失函数等于重要性集合的变异系数CV的平方,再乘以一个手动调整的缩放因子w_Importance。这个额外的损失鼓励所有专家具有相等的重要性,从而保证每个专家都能接收到大致数量相当的训练样本。
GShard是谷歌2021年在论文《GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding》中提出的方法,首次将MoE思想拓展到Transformer上。具体做法是:在Transformer的encoder和decoder中,每隔一个FFN层,就替换成使用Top-2门控的MoE层。
上图展示了编码器部分的结构。这种架构对大规模计算非常有效:当扩展到多个设备时,MoE层在不同设备间共享,而其他层则在每个设备上复制。GShard MoE层中的专家网络被分布在不同的设备上,每个专家处理一部分输入数据,每个token根据门控机制的输出被分配到一个或两个专家网络中。这样,整个MoE层的计算就被分散到多个设备上,每个设备只负责一部分。
实现MoE跨设备分片的关键在于结合模型并行化和数据并行化。在模型并行化中,模型的不同部分(MoE层的专家网络)被分配到不同设备;在数据并行化中,输入数据被分割成多个部分,每个部分分配给不同设备处理。由于专家被分配到不同设备,可以并行计算,大大提升了计算效率——这也就解释了为什么MoE能实现更大的模型参数和更低的训练成本。
为了保持负载平衡和训练效率,GShard的作者除了引入Sparsely-Gated MoE中的辅助loss外,还做了几个关键调整:
注意:推理过程中,有些计算是共享的,比如自注意力机制适用于所有token。这就解释了为什么Mixtral 8×7B不是56B,而是47B。同样,如果采用Top-2门控,模型会用14B的参数,但由于自注意力操作(专家间共享)的存在,实际运行时使用的参数数量是12B。
2022年,Google推出Switch Transformers,对MoE大模型的复杂性、通信成本以及训练微调过程中的不稳定性进行了优化。Switch Transformers是一个1.6万亿参数的MoE,拥有2048个专家,可以用transformers库运行。
Switch Transformers简化了MoE路由算法,设计了直观的改进模型,降低了通信和计算成本。它的训练方法减轻了不稳定性,并且首次展示了用较低精度(bfloat16)格式训练大型稀疏模型的可行性。
上图显示,模型参数随着专家数量的增加而增加,而在保持相同计算成本的条件下,loss逐渐降低。这表明模型在保持计算效率的同时,能够利用更多参数来提高性能。
上图比较了相同计算资源下,Switch Transformer和T5-Base的PPL。可以看到,Switch Transformer模型在相同计算资源条件下,相比T5-Base有显著提升,而且专家数越多(模型参数越多、越稀疏),效果越好。
Switch Transformer在设计上有一个明确的指导原则:尽可能把Transformer模型的参数量做大!——也就是说加专家数量、堆叠专家模型!
与其他MoE模型的一个显著不同是,Switch Transformer的门控网络每次只路由到1个专家,即每次只选取Top1的专家。这样做的好处是,MoE层的计算效率最高,同时降低了通信成本。
作者尝试了混合精度来改进预训练,因为较低的精度可以减少处理器间的通信成本、计算成本和存储tensor的内存。然而在最初实验中,当专家和门控网络都用bfloat16精度训练时,出现了训练不稳定的现象。这种不稳定性主要由门控计算引起,因为门控涉及指数函数等对精度要求较高的操作。为了保持稳定性,门控过程使用了全精度。下表显示了混合精度训练的效果:将路由器输入转换为float32,同时保持其他部分为bfloat16,使模型在几乎与bfloat16相同的训练速度下,实现了与float32相当的稳定性。
深度学习中,适当的权重初始化对训练成功至关重要。作者观察到,在Switch Transformer中这一点尤为明显。为了提高稳定性,他们建议减少默认的Transformer初始化规模。在Transformer中,权重矩阵通常从一个正态分布开始初始化。作者建议将这个初始化正态分布标准差的超参数s从默认值1.0减少10倍到0.1,模型的效果和稳定性都得到了提升。
为了解决Fine-Tuning过程中的过拟合问题,作者提出增加dropout的策略,特别是在专家层中,称之为"expert dropout"——在Fine-Tuning时只在专家层增加dropout率。通过这种策略,有效减少了过拟合风险,同时保持了模型在下游任务上的性能。这种正则化方法对于处理具有大量参数的稀疏模型特别有用。
在论文《ST-MOE: Designing Stable and Transferable Sparse Expert Models》中,作者提出了一种新的辅助损失函数,称为Router z-loss,用于提高稀疏模型的训练稳定性,同时保持或稍微提升模型质量。这个损失函数专门针对稀疏专家模型中的路由器设计,它鼓励路由器产生较小的logits值,因为较大的logits值会在softmax激活函数中导致较大的梯度,引发训练不稳定。
Router z-loss的定义如下:其中B是batch中的token数量,N是专家数量,x是门控的logits值。这个损失函数通过惩罚较大的logits值来工作,帮助减少训练过程中的不稳定性。它有两大作用:一是稳定梯度更新——过大的logits值可能导致梯度消失或爆炸,适当减小logits幅度能使梯度更新更平稳;二是提高泛化能力——过大的logits值可能导致模型对训练集中的某些特征过度敏感,惩罚机制能使模型更谨慎地做出预测,避免过拟合。
此外,ST-MOE的作者还提到了两个关于MoE模型的有趣现象:
稠密模型和稀疏模型在过拟合的动态表现上存在显著差异。稀疏模型更易于过拟合,因此在处理这些模型时,尝试更强的内部正则化措施是很有必要的,比如使用更高比例的dropout。举例来说,可以为稠密层设置一个较低的dropout率,而为稀疏层设置更高的dropout率,从而优化模型性能。
另一种可行的Fine-Tuning策略是尝试冻结所有非专家层的权重。但实验发现这会导致性能大幅下降。反过来,可以尝试只冻结MoE层的参数。实验结果显示,这种方法几乎与更新所有参数的效果相当,同时还能加速Fine-Tuning过程并降低显存需求。
Fine-Tuning时还需要注意一点:稀疏模型有需要特殊设置的超参数。例如,它们往往更适合使用较小的batch size和较高的学习率,这样可以获得更好的训练效果。
论文《MoEs Meets Instruction Tuning》(2023年7月)做了几个对比实验:非MoE模型微调、MoE模型微调、非MoE模型指令微调、MoE模型指令微调。结论是:MoE模型指令微调 > 非MoE模型指令微调 > 非MoE模型微调 > MoE模型微调。并且,子任务类型越多,MoE模型指令微调的效果就越好。
MoE模型有几个值得探索的方向:
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
腾讯ima怎么把微信内容一键导入知识库?
腾讯ima怎么创建共享知识库?
今日比特币暴涨分析:Metaplanet的比特币BTC投资推动股价上涨17%
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
2026热门直线加速赛车手游推荐:高人气、爽快加速体验的精品榜单
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
Windy卫星云图怎么看?云层变化识别技巧
kimi提示词专家使用方法新手指南
原神霜月三处月灵龛具体位置汇总
《幻兽帕鲁》不触发通缉捕捉传说商人方法
短剧《史上最强洪荒修为》剧情介绍
Aptos(APT)币是什么?APT代币经济学、价格预测及投资前景
9条破亿视频,新号涨粉百万,过去半年谁在制造AI爆款?
如何修复Edge浏览器无法通过微软账号进行身份验证?
为什么推特KOL都在BRC20赚钱 我一冲就亏?
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc