文 @ 不肯透露名字的小 P 同学
0 概述
混合专家体系(Mixture of Experts, MoE)是在神经网络 (Neural Network, NN) 范畴发展起来的一种集成学习(Ensemble Learning) 技能。传统的深度学习模型在练习时,关于每个输入样本,整个网络都会参与核算。随着模型越来越大,练习运用的样本数据越来越多,练习的开支越来越难以承受。而 MoE 能够动态激活部分神经网络,从而完成在不增加核算量的前提下大幅度增加模型参数量。MoE 技能目前是练习万亿参数量级模型的关键技能。MoE 将猜测建模使命分化为若干子使命,在每个子使命上练习一个专家模型(Expert Model),开发一个门控模型(Gating Model),该模型依据要猜测的输入来学习信赖哪个专家,并组合猜测结果。尽管该技能开始是运用神经网络专家和门控模型来描绘的,但它能够推行到运用任何类型的模型。
1 子使命和专家
一些猜测建模使命非常复杂,因而需求尽或许的把它们区分为子使命来处理。这是处理问题的一种分治办法,是许多猜测建模自动化办法以及更广泛地处理问题的根底。例如,能够依据问题的一些范畴常识将输入特征空间区分为子空间。然后能够在问题的每个子空间上练习模型,实际上是特定子问题的专家。然后,模型会学习调用哪个专家来猜测未来的新示例。
2 混合专家体系
混合专家体系 (Mixture of Experts),简称 MoE 或 ME,是一种集成学习技能,它完成了在猜测建模问题的子使命上练习专家的想法。在神经网络社区中,研讨人员研讨了分化输入空间的 MoE 办法,以便每个专家查看空间的不同部分,门控网络担任组合各种专家。下图描绘了 MoE 的根底架构。
在 MoE 架构中,一组专家和一个门控相互合作,经过将输入空间区分为一组嵌套的区域来处理非线性监督学习问题,如下图所示。门控对全体输入空间进行软切割,专家模型在这些区域的分区中学习特定的参数。能够运用期望最大化 (Expectation Maximization, EM) 算法来学习专家模型和门控模型中的这些参数。
上图是 MoE 的简化非线性分类示例。蓝色圆圈和赤色菱形分别属于第 1 类和第 2 类,它们呈现非线性分类示例。门控进行软区分,界说了各个专家意见可信的区域,即在门控线的右边,第一个专家担任,在门控线的左面,第二个专家担任。经过这种分治的办法,非线性分类问题已被简化为两个线性分类问题。
MoE 包括四个要素:
- 将使命区分为子使命
- 为每个子使命开发专家
- 运用门控模型来决议运用哪个专家
- 池化猜测和门控模型输出以进行猜测
子使命
第一步是将猜测建模问题区分为子使命。这一般涉及运用范畴常识。例如,能够将图画区分为独自的元素,例如背景、前景、对象、颜色、线条等。MoE 选用分治的战略,将一项复杂的使命分化为几个更简略、更小的子使命,并针对不同的子使命开发个别学习者(称为专家)进行练习。关于那些将使命区分为子使命不明显的问题,能够运用更简略、更通用的办法。例如,能够想象一种办法,将输入特征空间按列组区分,或许依据规范散布的间隔衡量、内点和反常点等来分离特征空间中的示例。在 MoE 体系中,一个关键问题是怎么找到使命的天然区分,然后从子处理方案中得出全体处理方案。
专家模型
接下来,为每个子使命规划一个专家。MoE 办法开始是在人工神经网络范畴开发和探究的,因而传统上,专家自身是用于猜测回归情况下的数值或分类情况下的类别标签的神经网络模型。专家能够是任何模型,例如:支撑向量机器 (Support Vector Machines, SVM)、高斯进程 (Gaussian processes, GP) 、隐藏马尔可夫模型(hidden Markov models, HMM)、卷积神经网络(Convolutional Neural Networks, CNN)、Transformer、ViT(Vision Transformer)。
门控模型
门控模型用于解释每个专家所做的猜测,并协助决议对给定输入信赖哪个专家。这被称为门控模型或门控网络,由于它传统上是一个神经网络模型。门控网络将供给给专家模型的输入形式作为输入,并输出每个专家在对输入进行猜测时应该做出的贡献。由门控网络确认的权重是依据给定的输入动态分配的,由于 MoE 体系有用地学习了每个集成成员学习了特征空间的哪一部分。门控网络是 MoE 的关键,并且门控模型有用地学习为给定输入挑选类型子使命,反过来,专家能够信赖以做出强有力的猜测。MoE 也能够看作是一种分类器挑选算法,其间单个分类器被练习成为特征空间某些部分的专家。当运用神经网络模型时,门控网络和专家一同练习,以便门控网络学习何时信赖每个专家进行猜测。这种练习进程传统上是运用期望最大化 (Expectation Maximization, EM) 来完成的。门控网络或许有一个 softmax 输出,它为每个专家供给相似概率的置信度分数。一般来说,练习进程试图完成两个方针:关于给定的专家,找到最优的门控函数;关于给定的门控函数,针对门控函数指定的散布练习专家。
池化办法
最后,MoE 必须做出猜测,这是经过池化或聚合机制完成的。这或许就像挑选门控网络供给的具有最大输出或置信度的专家相同简略。或许,能够进行加权和猜测,清晰地结合每个专家的猜测和门控网络估计的置信度。也或许存在其他有用运用猜测和门控网络输出的办法。然后,池化/组合体系能够挑选具有最高权重的单个分类器,或许核算每个类的分类器输出的加权和,并挑选接纳最高加权和的类。
下图是用于分类的 MoE 架构。在分类模型中,每个专家发生与分类相同多的输出。
3 层级混合专家体系
层级混合专家体系 (Hierarchical Mixtures of Experts, HME) 包括多个层级的 MoE 体系。下图是两级 MoE,在这个比如中,图中两个 MoE 底部的组件与顶部的门控组合发生 HME 体系。底部的每个 MoE 由一个门控和两个专家组成。
4 混合专家体系和决议计划树
决议计划树运用分治办法来拟合特征空间,每个子树都能够被认为是一个子模型。决议计划树具有核算可扩展性、处理混合类型数据、处理缺失值和处理不相关输入的潜在优势。然而,决议计划树的局限性是猜测精度低和方差高。MoE 能够被视为决议计划树建模的统计办法,其间决议计划被视为隐藏的多项式随机变量。因而,MoE 具有决议计划树的优势,但经过其软鸿沟、较低的方差和答应推理程序、不确认性衡量和贝叶斯办法的概率结构对它们进行了改进。决议计划树能够经过组合形成随机森林,以进步单个决议计划树的功能并进步猜测准确性,一起保持决议计划树的其他优势。相似地,MoE 能够集成门控函数(置信度函数),MoE 已经被证明能够为专家的输出供给有用的动态组合。在规划 MoE 体系时,能够选用相似的递归分化办法将猜测建模使命分化为子问题,这一般被称为 HME。HME 进程能够看作是根据树的办法的一种变体,首要差异在于树割裂不是硬决议计划,而是软概率决议计划。与决议计划树不同,将使命区分为子使命一般是清晰的和自上而下的。此外,与决议计划树不同,MoE 试图查询所有专家子模型,而不是单个模型。
5 业界研讨进展
MMoE 在引荐范畴中的运用
在引荐场景中,用户有点击、点赞、收藏、共享等一系列行为。单方针点击率(Click-Through-Rate,CTR)优化到必定程度之后,往往需求考虑经过多方针优化来进一步提高用户体会。因而将用户的多种行为归纳到一个模型里进行学习就是引荐范畴研讨的多使命学习。多使命学习中最经典的共享底部(Shared Bottom) 神经网络结构如下图所示:
在多使命学习不断改进的进程中,引荐算法的研讨人员发现将 MoE 中的多专家机制运用到多使命学习中,刚好能够处理多使命间的差异问题,而且不会增加很大的核算消耗。运用专家网络组成的神经网络结构替换掉 Shared Bottom 部分,再加上门控网络,就构成了 MoE 结构的多使命学习网络。
MMoE(Multi-gate Mixture-of-Experts)其实是 MoE 针对多使命学习的变种和优化。不同使命能够经过调整专家网络的权重完成对专家网络的挑选性运用,不同使命对应的门控网络能够学习到不同的专家组合形式,因而 MMoE 模型能够统筹子使命间的差异性和相关性。在引荐场景中取得了较大的成功。
超大规划视觉模型 V-MoE
Vision Transformers(ViT)是核算机视觉范畴闻名的模型之一,它运用从全体图片上切分出来的多个片段来作为 Transformer 的输入。稠密模型总是受核算量限制,网络规划难以大幅度提高,但增强模型的泛化能力和稳健性又离不开大模型的支撑。谷歌大脑的研讨者受 MoE 的启发,提出了一种根据稀疏专家网络的新视觉架构 V-MoE(Vision MoE),打开了视觉模型网络规划的天花板,开辟了新的研讨方向。ViT 将整个图画分成巨细相等的片段,这些片段被投影到 Transformer 的隐藏层,Transformer 首要由交替的自注意力和多层感知器(MultiLayer Perceptron,MLP)组成。MLP 有两层网络和一个激活函数 GeLU。为了扩展视觉模型的规划,V-MoE 将 ViT 架构中的一些密布前馈层(FFN)替换为独立的专家网络。路由层为图画中的每个片段挑选对应的专家。一个图画中的不同片段既或许路由到不同的专家,每个片段也或许路由到多个专家。在实践中,由于硬件的限制,运用动态巨细的缓冲区一般无法做到很高的运用效率,因而模型一般为每个专家预分配缓冲区容量。一旦缓冲区满,超出的图画片段会被丢掉。谷歌大脑的研讨人员经过将总的缓冲区容量降低到要处理的图画片段数量以下,模型被逼跳过处理专家层中的一些图画片段。V-MoE 的创新之处在于,模型学习了图画片段的重要性分数,将之前随机丢掉图画片段的形式改造成了丢掉分数较低的图画片段。这样确保高质量的猜测,一起节省了大量算力。谷歌大脑的研讨者发现,在给定练习的核算量时,稀疏模型的效果显著优于稠密模型。为了探究V-MoE 的极限,他们在 JFT-300M 扩展数据集上练习了一个具有 150 亿参数、24 个 MoE 层的模型。这个迄今为止最大的视觉模型在 ImageNet 上完成了 90.35% 的 Top-1 准确率。
FastMoE
FastMoE 是智源研讨院于 2020 年建议的超大规划预练习模型研发项目“悟道”的最新成果。它首要重视两方面的问题:(1)怎么将MoE模型练习的更快;(2)怎么使得 MoE 模型练习结构开箱即用。FastMoE 简略易用,它既能够作为 PyTorch 网络中的一个模块运用,也能够用来改造现有网络中的某些层:将选中的网络复制多份作为多个专家网络,然后再引入门网络,就变成了 MoE 网络。FastMoE 还非常灵活,既能够支撑将恣意的神经网络模块作为专家网络,也支撑恣意的神经网络模块作为门网络。在功能方面,一般来说若简略地运用 PyTorch 练习 MoE,门网络会使得批量样本被打散,GPU 算力不能被充分运用。为了提高练习功能,FastMoE 完成了以下几个战略:
- 对批量样本按照专家进行分类,使得属于每个专家的样本依然是批量的形式。
- 发掘专家之间的并行性,运用不同的 cuda stream 来核算专家网络。
- 得益于 NCCL 支撑了 p2p 和 all2all 通讯,FastMoE 运用 scatter-expert-gather 形式完成多 GPU 之间并行核算不同的专家网络。FastMoE 是以 PyTorch 插件的方式完成的,Python 部分分为三层:(1)核心层是通用的 FMoE 模块,它完成了 scatter-expert-gather 的核算形式。专家网络由用户界说,支撑恣意的神经网络模块,它的输入是某个专家网络的整个批量数据,输出的整个批量数据经过专家网络后对应的输出。(2)模型层是 FMoETransformerMLP 模块,它运用线性层 FMoELinear 完成了一个 Transformer 中的两层MLP 模块。这里既支撑自界说激活函数,也支撑自界说中间隐层的巨细。(3)支撑 Megatron 的运用层是 MegatronMLP 和 fmoefy 函数。MegatronMLP 针对 Megatron 关于 mlp 层的接口进行了适配,而 fmoefy 函数完成了将 megatron 的 model 中的 MLP层用 MegatronMLP 进行替换。此外,为了定制化同步参数,FastMoE 供给了一个额定的 DistributedDataParallel(DDP)模块来替代Megatron 或 PyTorch 的 DDP,经过一些共同的 tag 来决议梯度同步的规模。
6 总结
本文介绍了集成学习的 MoE 办法。具体来说:(1)集成学习的一种直观办法包括将使命区分为子使命并在每个子使命上练习专家。(2)MoE 是一种集成学习办法,旨在运用专家模型在子使命方面清晰处理猜测建模问题。一起,本文还介绍了 MoE 的拓展,如:用于引荐场景的 MMoE,谷歌大脑提出的超大规划视觉模型 V-MoE,智源研讨院提出的 FastMoE。
References
- 《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》
- 《Recommending What Video to Watch Next: A Multitask Ranking System》
- 《Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer》
- 《Scaling Vision with Sparse Mixture of Experts》
- 《Twenty Years of Mixture of Experts》
感谢阅读,欢迎在谈论区留言讨论哦~
P.S. 如果喜爱本篇文章,请多多 附和、喜爱、谈论、收藏,让更多的人看见我们 :D
重视 大众号「SenseParrots」,获取人工智能结构前沿业界动态与技能思考。